Merge tag 'android14-5.15.153_r00' into 'android14-5.15'

This catches the android14-5.15 branch up with the 5.15.153 LTS release.
Included in here are the following commits:

* 8517b7fac5 ANDROID: GKI: Update .stg file due to internal io_uring changes
* 80c0158e86 ANDROID: cpufreq: brcmstb-avs-cpufreq: fix build error
* 6a87f57d6b Revert "bpf: Defer the free of inner map when necessary"
*   8c23052a2a Merge 5.15.153 into android14-5.15-lts
|\
| * 9465fef4ae Linux 5.15.153
| * d180150ea7 remoteproc: stm32: fix incorrect optional pointers
| * 85e26c4a74 regmap: Add missing map->bus check
| * c10fed329c spi: spi-mt65xx: Fix NULL pointer access in interrupt handler
| * 839308cf79 net: dsa: mt7530: fix handling of all link-local frames
| * cb302aa994 net: dsa: mt7530: fix link-local frames that ingress vlan filtering ports
| * 70424a8f45 net: dsa: mt7530: fix handling of 802.1X PAE frames
| * c210fb3c45 net: dsa: mt7530: fix handling of LLDP frames
| * 387daae8b0 bpf: report RCU QS in cpumap kthread
| * 2f1d402dcc net: report RCU QS on threaded NAPI repolling
| * 083657dc7c rcu: add a helper to report consolidated flavor QS
| * 640dbf688b netfilter: nf_tables: do not compare internal table flags on updates
| * 362508506b netfilter: nft_set_pipapo: release elements in clone only from destroy path
| * 772f18ded0 octeontx2-af: Use separate handlers for interrupts
| * 8ffcd3ccdb net/bnx2x: Prevent access to a freed page in page_pool
| * f1e560cdb1 net: phy: fix phy_read_poll_timeout argument type in genphy_loopback
| * 5deee0f7c2 hsr: Handle failures in module init
| * 8c378cc522 rds: introduce acquire/release ordering in acquire/release_in_xmit()
| * d691be84ab wireguard: receive: annotate data-race around receiving_counter.counter
| * 2b2f8d166f vdpa/mlx5: Allow CVQ size changes
| * 4d61084c5c net: dsa: mt7530: prevent possible incorrect XTAL frequency selection
| * f85c87a803 net: veth: do not manipulate GRO when using XDP
| * d35b62c224 packet: annotate data-races around ignore_outgoing
| * 9fcadd1250 net: ethernet: mtk_eth_soc: fix PPE hanging issue
| * 448cc8b5f7 net: mediatek: mtk_eth_soc: clear MAC_MCR_FORCE_LINK only when MAC is up
| * c5c0760adc net: mtk_eth_soc: move MAC_MCR setting to mac_finish()
| * a809bbfd0e hsr: Fix uninit-value access in hsr_get_node()
| * ccafa081be soc: fsl: dpio: fix kcalloc() argument order
| * 4b9d72498d s390/vtime: fix average steal time calculation
| * 8fdc7b408a octeontx2-af: Use matching wake_up API variant in CGX command interface
| * aa5ab5ce34 nouveau: reset the bo resource bus info after an eviction
| * deb5946255 io_uring: don't save/restore iowait state
| * 1049fa4d02 usb: gadget: net2272: Use irqflags in the call to net2272_probe_fin
| * 463c429bdd staging: greybus: fix get_channel_from_mode() failure path
| * 6c619223aa serial: 8250_exar: Don't remove GPIO device on suspend
| * f867ba8ea1 rtc: mt6397: select IRQ_DOMAIN instead of depending on it
| * 04dd61330f kconfig: fix infinite loop when expanding a macro at the end of file
| * 3019ad4a02 arm64: dts: broadcom: bcmbca: bcm4908: drop invalid switch cells
| * c220378081 tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT
| * e6011abe0c serial: max310x: fix syntax error in IRQ error message
| * 19b2131837 tty: vt: fix 20 vs 0x20 typo in EScsiignore
| * ea34c1c1f3 remoteproc: stm32: Fix incorrect type assignment returned by stm32_rproc_get_loaded_rsc_tablef
| * dd68756ae3 remoteproc: stm32: Fix incorrect type in assignment for va
| * a48c24ccc6 remoteproc: stm32: use correct format strings on 64-bit
| * da0ad1bdc6 comedi: comedi_test: Prevent timers rescheduling during deletion
| * a6ffae61ad afs: Revert "afs: Hide silly-rename files from userspace"
| * fa3ac8b1a2 f2fs: compress: fix reserve_cblocks counting error when out of space
| * 6ca2ea698d NFS: Fix an off by one in root_nfs_cat()
| * 704dc01387 watchdog: stm32_iwdg: initialize default timeout
| * 446f55d0d4 NFSv4.2: fix listxattr maximum XDR buffer size
| * 9d52865ff2 NFSv4.2: fix nfs4_listxattr kernel BUG at mm/usercopy.c:102
| * 6233dbe9ca net: sunrpc: Fix an off by one in rpc_sockaddr2uaddr()
| * 83edcda1d8 scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn
| * 16a5bed6d2 RDMA/rtrs-clt: Check strnlen return len in sysfs mpath_policy_store()
| * ed3e66d86e RDMA/device: Fix a race between mad_client and cm_client init
| * a27984f631 scsi: csiostor: Avoid function pointer casts
| * 4a411fc336 f2fs: compress: fix to check unreleased compressed cluster
| * 7d420eaaa1 f2fs: compress: fix to cover normal cluster write with cp_rwsem
| * ed22aef701 f2fs: reduce stack memory cost by using bitfield in struct f2fs_io_info
| * b2713af17a f2fs: invalidate meta pages only for post_read required inode
| * 6117d8b79f f2fs: fix to invalidate META_MAPPING before DIO write
| * 5d553a56de f2fs: replace congestion_wait() calls with io_schedule_timeout()
| * bc7e7e7d64 f2fs: invalidate META_MAPPING before IPU/DIO write
| * 4a543790fd f2fs: multidevice: support direct IO
| * 6413e78086 RDMA/srpt: Do not register event handler until srpt device is fully setup
| * 9af1658ba2 ALSA: usb-audio: Stop parsing channels bits when all channels are found.
| * e9fbee0673 ALSA: hda/realtek: fix ALC285 issues on HP Envy x360 laptops
| * 01511ac7be clk: zynq: Prevent null pointer dereference caused by kmalloc failure
| * 0efb9ef6fb clk: Fix clk_core_get NULL dereference
| * d83d70b25d sparc32: Fix section mismatch in leon_pci_grpci
| * e4723c6b3e backlight: lp8788: Fully initialize backlight_properties during probe
| * 73f547f259 backlight: lm3639: Fully initialize backlight_properties during probe
| * d01286f991 backlight: da9052: Fully initialize backlight_properties during probe
| * 28e37f97b1 backlight: lm3630a: Don't set bl->props.brightness in get_brightness
| * a80fb03dda backlight: lm3630a: Initialize backlight_properties on init
| * f28b72162f leds: sgm3140: Add missing timer cleanup and flash gpio control
| * 663dea0305 leds: aw2013: Unlock mutex before destroying it
| * d63abda6c8 powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc.
| * 6a3d4afc54 modules: wait do_free_init correctly
| * a91eef04a7 module: Add support for default value for module async_probe
| * 6304ed1603 drm/msm/dpu: add division of drm_display_mode's hskew parameter
| * f4108b28dc powerpc/hv-gpci: Fix the H_GET_PERF_COUNTER_INFO hcall return value checks
| * 9beec711a1 drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip
| * e5aaa9f8db media: mediatek: vcodec: avoid -Wcast-function-type-strict warning
| * 24e51d6eb5 media: ttpci: fix two memleaks in budget_av_attach
| * 790fa2c04d media: go7007: fix a memleak in go7007_load_encoder
| * d20b64f156 media: dvb-frontends: avoid stack overflow warnings with clang
| * eb6e9dce97 media: pvrusb2: fix uaf in pvr2_context_set_notify
| * d8e83a625c drm/amdgpu: Fix missing break in ATOM_ARG_IMM Case of atom_get_src_int()
| * 815d1f1c67 HID: amd_sfh: Update HPD sensor structure elements
| * 8abf014e0c ASoC: meson: axg-tdm-interface: add frame rate constraint
| * 8441012261 ASoC: meson: axg-tdm-interface: fix mclk setup without mclk-fs
| * e3adf12624 mtd: rawnand: lpc32xx_mlc: fix irq handler prototype
| * 7178a27249 mtd: maps: physmap-core: fix flash size larger than 32-bit
| * 3ae4bd815f drm/tidss: Fix initial plane zpos values
| * 9cc746346d crypto: arm/sha - fix function cast warnings
| * 010cf12f59 mfd: altera-sysmgr: Call of_node_put() only when of_parse_phandle() takes a ref
| * 1d50e29578 mfd: syscon: Call of_node_put() only when of_parse_phandle() takes a ref
| * 240c4f1159 drm/tegra: put drm_gem_object ref on error in tegra_fb_create
| * 3f8445f1c7 clk: hisilicon: hi3559a: Fix an erroneous devm_kfree()
| * 62d92b3507 clk: hisilicon: hi3519: Release the correct number of gates in hi3519_clk_unregister()
| * 118a7113db PCI: Mark 3ware-9650SE Root Port Extended Tags as broken
| * 7546460128 drm/mediatek: dsi: Fix DSI RGB666 formats and definitions
| * 4e37c53422 clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times
| * fe68cf2739 media: pvrusb2: fix pvr2_stream_callback casts
| * 4f2a1657f9 media: pvrusb2: remove redundant NULL check
| * 8e19050ab9 media: go7007: add check of return value of go7007_read_addr()
| * b1d0eebaf8 media: imx: csc/scaler: fix v4l2_ctrl_handler memory leak
| * f27bcdae57 media: sun8i-di: Fix chroma difference threshold
| * de09db4e5d media: sun8i-di: Fix power on/off sequences
| * 4bdc1b352e media: sun8i-di: Fix coefficient writes
| * a62b9f3d7b NTB: fix possible name leak in ntb_register_device()
| * 87d306cdeb NTB: EPF: fix possible memory leak in pci_vntb_probe()
| * e2b6ef72b7 PCI: endpoint: Support NTB transfer between RC and EP
| * caf5cf0990 powerpc: Force inlining of arch_vmap_p{u/m}d_supported()
| * 4eb47ae93f ASoC: meson: t9015: fix function pointer type mismatch
| * a3fec47446 ASoC: meson: aiu: fix function pointer type mismatch
| * a26425b762 ASoC: meson: Use dev_err_probe() helper
| * 3d1d029734 perf stat: Avoid metric-only segv
| * 3cae4f4153 ALSA: seq: fix function cast warnings
| * 7378234eee drm/radeon/ni: Fix wrong firmware size logging in ni_init_microcode()
| * abb9bea45b perf thread_map: Free strlist on normal path in thread_map__new_by_tid_str()
| * 03e6d4e948 crypto: xilinx - call finalize with bh disabled
| * ce6e3c0411 PCI: switchtec: Fix an error handling path in switchtec_pci_probe()
| * 0bdb56eae2 PCI/P2PDMA: Fix a sleeping issue in a RCU read section
| * 56cad01c54 quota: Fix rcu annotations of inode dquot pointers
| * 1ca72a3de9 quota: Fix potential NULL pointer dereference
| * f2ddd8103f quota: simplify drop_dquot_ref()
| * f630ba2386 clk: qcom: reset: Ensure write completion on reset de/assertion
| * e5bb4f4324 clk: qcom: reset: Commonize the de/assert functions
| * e8c71db0d8 pinctrl: mediatek: Drop bogus slew rate register range for MT8192
| * 0d3fe80b6d media: edia: dvbdev: fix a use-after-free
| * dc866b69cc media: v4l2-mem2mem: fix a memleak in v4l2_m2m_register_entity
| * 770a57922c media: v4l2-tpg: fix some memleaks in tpg_alloc
| * e9d05d5d84 media: em28xx: annotate unchecked call to media_device_register()
| * a03ed00787 clk: meson: Add missing clocks to axg_clk_regmaps
| * 54985391de perf evsel: Fix duplicate initialization of data->id in evsel__parse_sample()
| * 6ac7c7a3a9 drm/amd/display: Fix potential NULL pointer dereferences in 'dcn10_set_output_transfer_func()'
| * 440f059837 drm/amd/display: Fix a potential buffer overflow in 'dp_dsc_clock_en_read()'
| * d54877c835 HID: lenovo: Add middleclick_workaround sysfs knob for cptkbd
| * d9f8bbc6d7 perf record: Fix possible incorrect free in record__switch_output()
| * 87658f1608 PCI/DPC: Print all TLP Prefixes, not just the first
| * b8505a1aee media: tc358743: register v4l2 async device only after successful setup
| * 4c309e06aa dmaengine: tegra210-adma: Update dependency to ARCH_TEGRA
| * 746606d37d drm/lima: fix a memleak in lima_heap_alloc
| * 1bb5fea94e drm/rockchip: lvds: do not print scary message when probing defer
| * f3afb53618 drm/rockchip: lvds: do not overwrite error code
| * 03b1072616 drm/vmwgfx: fix a memleak in vmw_gmrid_man_get_node
| * 5eaa1597e2 drm/ttm: add ttm_resource_fini v2
| * 2fa491a1f4 drm: Don't treat 0 as -1 in drm_fixp2int_ceil
| * c780f00854 drm/rockchip: inno_hdmi: Fix video timing
| * 13c1212799 drm/tegra: output: Fix missing i2c_put_adapter() in the error handling paths of tegra_output_probe()
| * 5c8dc26e31 drm/tegra: rgb: Fix missing clk_put() in the error handling paths of tegra_dc_rgb_probe()
| * 7ec1d3cab9 drm/tegra: rgb: Fix some error handling paths in tegra_dc_rgb_probe()
| * 527bf2adf0 drm/tegra: dc: rgb: Allow changing PLLD rate on Tegra30+
| * bfd52f7df6 drm/tegra: dsi: Fix missing pm_runtime_disable() in the error handling path of tegra_dsi_probe()
| * 1d2f14eb47 drm/tegra: dsi: Fix some error handling paths in tegra_dsi_probe()
| * 26827907c2 drm/tegra: dsi: Make use of the helper function dev_err_probe()
| * 56ec754fd7 drm/tegra: dpaux: Fix PM disable depth imbalance in tegra_dpaux_probe
| * 49ebcae0b9 drm/tegra: dpaux: Populate AUX bus
| * 93128052bf drm/tegra: dsi: Add missing check for of_find_device_by_node
| * 03ad5ad53e dm: call the resume method on internal suspend
| * 8517729711 dm raid: fix false positive for requeue needed during reshape
| * 0d387dc503 nfp: flower: handle acti_netdevs allocation failure
| * 3538d11d2a net/x25: fix incorrect parameter validation in the x25_getsockopt() function
| * 382df231ab net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function
| * 3a32dce1ad udp: fix incorrect parameter validation in the udp_lib_getsockopt() function
| * 6482113f9c l2tp: fix incorrect parameter validation in the pppol2tp_getsockopt() function
| * 3988110ecf ipmr: fix incorrect parameter validation in the ip_mroute_getsockopt() function
| * 71ce163f3e bpf: net: Change do_ip_getsockopt() to take the sockptr_t argument
| * 07aa35a50f bpf: net: Change sk_getsockopt() to take the sockptr_t argument
| * 25e5c9b20e net: Change sock_getsockopt() to take the sk ptr instead of the sock ptr
| * 4002985023 tcp: fix incorrect parameter validation in the do_tcp_getsockopt() function
| * c09fc67777 OPP: debugfs: Fix warning around icc_get_name()
| * 78a60f9103 net: phy: dp83822: Fix RGMII TX delay configuration
| * fedd8c7d29 net: phy: DP83822: enable rgmii mode if phy_interface_is_rgmii
| * f82d65e8f7 net: hns3: fix port duplex configure error in IMP reset
| * 23ec1cec24 net: hns3: fix kernel crash when 1588 is received on HIP08 devices
| * 0e939a002c net: phy: fix phy_get_internal_delay accessing an empty array
| * 5c03387021 net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv()
| * 65fb1d271c ipv6: fib6_rules: flush route cache when rule is changed
| * ca1f06e72d bpf: Fix stackmap overflow check on 32-bit arches
| * 3b08cfc65f bpf: Fix hashtab overflow check on 32-bit arches
| * c826502bed bpf: Fix DEVMAP_HASH overflow check on 32-bit arches
| * 276873ae26 sr9800: Add check for usbnet_get_endpoints
| * 2e845867b4 Bluetooth: hci_core: Fix possible buffer overflow
| * 89c69e83ff Bluetooth: hci_qca: don't use IS_ERR_OR_NULL() with gpiod_get_optional()
| * 9609476b3a Bluetooth: hci_qca: Add support for QTI Bluetooth chip wcn6855
| * 88f846f352 Bluetooth: Remove superfluous call to hci_conn_check_pending()
| * 4b5dc615f1 igb: Fix missing time sync events
| * 5cd7afd64b igb: move PEROUT and EXTTS isr logic to separate functions
| * d70f1c8511 iommu/vt-d: Don't issue ATS Invalidation request when device is disconnected
| * 626b03daea PCI: Make pci_dev_is_disconnected() helper public for other drivers
| * 4137f25b53 wifi: rtw88: 8821c: Fix false alarm count
| * 250a78863c mmc: wmt-sdmmc: remove an incorrect release_mem_region() call in the .remove function
| * dd292e884c SUNRPC: fix some memleaks in gssx_dec_option_array
| * c7cff97802 x86, relocs: Ignore relocations in .notes section
| * 40876d07d2 ACPI: scan: Fix device check notification handling
| * 10e607fbc9 ACPI: resource: Add MAIBENBEN X577 to irq1_edge_low_force_override
| * cc06efd8a6 ACPI: resource: Do IRQ override on Lunnen Ground laptops
| * b539858261 ACPI: resource: Add Infinity laptops to irq1_edge_low_force_override
| * 95531c0d37 arm64: dts: marvell: reorder crypto interrupts on Armada SoCs
| * 941c6ee6f7 ARM: dts: imx6dl-yapp4: Move the internal switch PHYs under the switch node
| * ff54c712f0 ARM: dts: imx6dl-yapp4: Fix typo in the QCA switch register address
| * 3ebcd8f11a ARM: dts: imx6dl-yapp4: Move phy reset into switch node
| * ce92a8c7cf arm64: dts: renesas: r8a779a0: Correct avb[01] reg sizes
| * a022251c2f arm64: dts: renesas: r8a779a0: Update to R-Car Gen4 compatible values
| * 3c0cc753d7 ARM: dts: arm: realview: Fix development chip ROM compatible value
| * 276f4abe4e net: ena: Remove ena_select_queue
| * 90613c76f7 wifi: brcmsmac: avoid function pointer casts
| * b96bc1b259 iommu/amd: Mark interrupt as managed
| * 6a87552d0a bus: tegra-aconnect: Update dependency to ARCH_TEGRA
| * 1cbaf4c793 ACPI: processor_idle: Fix memory leak in acpi_processor_power_exit()
| * fe20e3d56b wifi: wilc1000: prevent use-after-free on vif when cleaning up all interfaces
| * 0454915c83 wireless: Remove redundant 'flush_workqueue()' calls
| * 487eff913e bpf: Mark bpf_spin_{lock,unlock}() helpers with notrace correctly
| * fcd58c69a3 arm64: dts: mediatek: mt7622: add missing "device_type" to memory nodes
| * e66285df73 arm64: dts: mt8183: Move CrosEC base detection node to kukui-based DTs
| * 657633a0b5 arm64: dts: mt8183: kukui: Split out keyboard node and describe detachables
| * ecec357981 arm64: dts: mt8183: kukui: Add Type C node
| * 9d159d6637 ipv6: mcast: remove one synchronize_net() barrier in ipv6_mc_down()
| * a6a50788b4 s390/vdso: drop '-fPIC' from LDFLAGS
| * f94625ec57 wifi: iwlwifi: mvm: don't set replay counters to 0xff
| * 4745cba370 pwm: sti: Fix capture for st,pwm-num-chan < st,capture-num-chan
| * 55908ea981 pwm: sti: Implement .apply() callback
| * e888c4461e wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer()
| * d20d45631f net: blackhole_dev: fix build warning for ethh set but not used
| * 95ac8e3ef2 pwm: atmel-hlcdc: Fix clock imbalance related to suspend support
| * a1716999f8 pwm: atmel-hlcdc: Use consistent variable naming
| * 81f0b319f0 pwm: atmel-hlcdc: Convert to platform remove callback returning void
| * 98b0d46939 arm64: dts: imx8mm-venice-gw71xx: fix USB OTG VBUS
| * 128a7fb7e8 wifi: iwlwifi: fix EWRD table validity check
| * 96aa407616 wifi: iwlwifi: dbg-tlv: ensure NUL termination
| * 3a5d424cff wifi: iwlwifi: mvm: report beacon protection failures
| * f8ff4b4df7 wifi: ath9k: delay all of ath9k_wmi_event_tasklet() until init is complete
| * 4287534cb5 arm64: dts: imx8mm-kontron: Disable pull resistors for SD card signals on BL board
| * d01012b6d6 arm64: dts: imx8mm-kontron: Use the VSELECT signal to switch SD card IO voltage
| * 41af98f220 arm64: dts: imx8mm-kontron: Add support for ultra high speed modes on SD card
| * db25bbd2c2 arm64: dts: imx8mm-kontron: Disable pullups for onboard UART signals on BL board
| * f7e55ad752 arm64: dts: imx8mm-kontron: Disable pullups for I2C signals on SL/BL i.MX8MM
| * d7fcdcf4ec cpufreq: mediatek-hw: Don't error out if supply is not found
| * 8a029ee1e3 af_unix: Annotate data-race of gc_in_progress in wait_for_unix_gc().
| * e0d29c4def bpftool: Silence build warning about calloc()
| * 3b71a6981e inet_diag: annotate data-races around inet_diag_table[]
| * 00d40ab2c0 sock_diag: annotate data-races around sock_diag_handlers[family]
| * 0f632a6880 cpufreq: mediatek-hw: Wait for CPU supplies before probing
| * 2cb670b272 cpufreq: Explicitly include correct DT includes
| * d951cf510f cpufreq: brcmstb-avs-cpufreq: add check for cpufreq_cpu_get's return value
| * f75e3536db wifi: mwifiex: debugfs: Drop unnecessary error check for debugfs_create_dir()
| * df78377485 wifi: wilc1000: fix multi-vif management when deleting a vif
| * ac512507ac wifi: rtl8xxxu: add cancel_work_sync() for c2hcmd_work
| * d80fc43675 wifi: wilc1000: fix RCU usage in connect path
| * 11b564991b wifi: wilc1000: fix declarations ordering
| * bc4bc74646 wifi: b43: Disable QoS for bcm4331
| * 66ef38ad97 wifi: b43: Stop correct queue in DMA worker when QoS is disabled
| * b05f6cd6c0 wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is disabled
| * 04a2b6eff2 wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is disabled
| * 4c4e592266 wifi: ath10k: fix NULL pointer dereference in ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev()
| * b10ff1130f sched/fair: Take the scheduling domain into account in select_idle_core()
| * 3c1122aee9 timekeeping: Fix cross-timestamp interpolation for non-x86
| * aa74fd5ccb timekeeping: Fix cross-timestamp interpolation corner case decision
| * 48c70f35f6 timekeeping: Fix cross-timestamp interpolation on counter wrap
| * 7dd09fa80b aoe: fix the potential use-after-free problem in aoecmd_cfg_pkts
| * 53609f5c05 rtc: test: Fix invalid format specifier.
| * 3eafb6816d time: test: Fix incorrect format specifier
| * 770332c1fd lib/cmdline: Fix an invalid format specifier in an assertion msg
| * 01db522d00 md: Don't clear MD_CLOSING when the raid is about to stop
| * 25d99f7baa fs/select: rework stack allocation hack for clang
| * 98e60b538e nbd: null check for nla_nest_start
| * edbdb0d941 s390/dasd: fix double module refcount decrement
| * bb126ed29f s390/dasd: Use dev_*() for device log messages
| * 3404d535bd s390/dasd: add autoquiesce feature
| * 932600a295 s390/dasd: add copy pair setup
| * 2c42dab80a s390/dasd: add query PPRC function
| * 815348211f s390/dasd: put block allocation in separate function
| * 423b6bdf19 do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak
| * 50982ce0f1 ASoC: wm8962: Fix up incorrect error message in wm8962_set_fll
| * 2a239a9487 ASoC: wm8962: Enable both SPKOUTR_ENA and SPKOUTL_ENA in mono mode
| * 648bd8ef21 ASoC: wm8962: Enable oscillator if selecting WM8962_FLL_OSC
| * aa345a4d9b Input: gpio_keys_polled - suppress deferred probe error for gpio
| * 4bd9d06bdf ASoC: Intel: bytcr_rt5640: Add an extra entry for the Chuwi Vi8 tablet
| * 91b4bfed82 firewire: core: use long bus reset on gap count error
| * 8d1753973f Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security
| * 9a1de3adf7 drm/amdgpu: Enable gpu reset for S3 abort cases on Raven series
| * c4e2f60815 ALSA: hda/realtek - ALC285 reduce pop noise from Headphone port
| * d157b06c10 scsi: mpt3sas: Prevent sending diag_reset when the controller is ready
| * 0c255fb9b1 dm-verity, dm-crypt: align "struct bvec_iter" correctly
| * f6cbb4843c block: sed-opal: handle empty atoms when parsing response
| * d7c5c0335a parisc/ftrace: add missing CONFIG_DYNAMIC_FTRACE check
| * 59be50a37f net/iucv: fix the allocation size of iucv_path_table array
| * e8a67fe34b x86/mm: Disallow vsyscall page read for copy_from_kernel_nofault()
| * e2d5cf0dcb x86/mm: Move is_vsyscall_vaddr() into asm/vsyscall.h
| * 7e13a78e2b riscv: dts: sifive: add missing #interrupt-cells to pmic
| * cf71090a59 RDMA/mlx5: Relax DEVX access upon modify commands
| * 60ba938a8b RDMA/mlx5: Fix fortify source warning while accessing Eth segment
| * e524979a8a gen_compile_commands: fix invalid escape sequence warning
| * 802eb0254f HID: multitouch: Add required quirk for Synaptics 0xcddc device
| * 581d99d2f6 MIPS: Clear Cause.BD in instruction_pointer_set
| * 8082bccb7a x86/xen: Add some null pointer checking to smp.c
| * 333de5a975 ASoC: rt5645: Make LattePanda board DMI match more precise
| * 0d7cfe2ef5 selftests: tls: use exact comparison in recv_partial
| * 37d98fb9c3 bpf: Defer the free of inner map when necessary
| * d8140159a2 rcu-tasks: Provide rcu_trace_implies_rcu_gp()
| * d909d381c3 io_uring: drop any code related to SCM_RIGHTS
| * 9dd3863e3f io_uring/unix: drop usage of io_uring socket
* | f937385430 Merge branch 'android14-5.15' into branch 'android14-5.15-lts'
* | 68b21b6f85 ANDROID: GKI: add sg_copy_from/to_buffer to virtual device symbol list
* | 8c9fedf246 Revert "regmap: allow to define reg_update_bits for no bus configuration"
* | c89027ceea Revert "regmap: Add bulk read/write callbacks into regmap_config"
* | c00231146f Revert "serial: max310x: make accessing revision id interface-agnostic"
* | e42b90b592 Revert "serial: max310x: fix IO data corruption in batched operations"
* | bff2c70560 Revert "ALSA: usb-audio: Refcount multiple accesses on the single clock"
* | f41d29ad04 Revert "ALSA: usb-audio: Clear fixed clock rate at closing EP"
* | 7c2694fa40 Revert "ALSA: usb-audio: Split endpoint setups for hw_params and prepare (take#2)"
* | fb3086b8e6 Revert "ALSA: usb-audio: Properly refcounting clock rate"
* | 195c12ce77 Revert "ALSA: usb-audio: Apply mutex around snd_usb_endpoint_set_params()"
* | 3285ea33f4 Revert "ALSA: usb-audio: Correct the return code from snd_usb_endpoint_set_params()"
* | cf9556ce0b Revert "ALSA: usb-audio: Avoid superfluous endpoint setup"
* | a3c598c3ac Revert "ALSA: usb-audio: Add quirk for Tascam Model 12"
* | 16f74f5669 Revert "ALSA: usb-audio: Add new quirk FIXED_RATE for JBL Quantum810 Wireless"
* | 22609e4015 Revert "ALSA: usb-audio: Fix microphone sound on Nexigo webcam."
* | 9951a3b756 Revert "ALSA: usb-audio: add quirk for RODE NT-USB+"
* | 9c86f89c6c Revert "ALSA: usb-audio: Fix wrong kfree issue in snd_usb_endpoint_free_all"
* | 7dcba26902 Revert "ALSA: usb-audio: Always initialize fixed_rate in snd_usb_find_implicit_fb_sync_format()"
* | c799355799 Revert "ALSA: usb-audio: Add FIXED_RATE quirk for JBL Quantum610 Wireless"
* | a73846e1f1 Revert "ALSA: usb-audio: Sort quirk table entries"
* | 7f4aa22da9 Merge 5.15.152 into android14-5.15-lts
|\|
| * b95c01af21 Linux 5.15.152
| * a1211bbf78 serial: max310x: fix IO data corruption in batched operations
| * 0ba485f90d serial: max310x: make accessing revision id interface-agnostic
| * 31642219f2 regmap: Add bulk read/write callbacks into regmap_config
| * fbddd48f14 regmap: allow to define reg_update_bits for no bus configuration
| * cad6da86ca ALSA: usb-audio: Sort quirk table entries
| * 36dba3f4cd ALSA: usb-audio: Add FIXED_RATE quirk for JBL Quantum610 Wireless
| * bfd36b1d18 ALSA: usb-audio: Always initialize fixed_rate in snd_usb_find_implicit_fb_sync_format()
| * a6f53df52b ALSA: usb-audio: Fix wrong kfree issue in snd_usb_endpoint_free_all
| * fd63fb84ed fs/proc: do_task_stat: move thread_group_cputime_adjusted() outside of lock_task_sighand()
| * 9b3834276b proc: Use task_is_running() for wchan in /proc/$pid/stat
| * 3c1b2776ef getrusage: use sig->stats_lock rather than lock_task_sighand()
| * ef2734e57c getrusage: use __for_each_thread()
| * 18c7394e46 getrusage: move thread_group_cputime_adjusted() outside of lock_task_sighand()
| * c5579e7280 getrusage: add the "signal_struct *sig" local variable
| * 63e09c1f46 drm/amd/display: Increase frame-larger-than for all display_mode_vba files
| * f4442513e4 drm/amd/display: remove DML Makefile duplicate lines
| * b4bab46400 drm/amd/display: move calcs folder into DML
| * b00e4d44ac drm/amd/display: Re-arrange FPU code structure for dcn2x
| * b6d46f306b hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed
| * c4cfa93e50 hv_netvsc: use netif_is_bond_master() instead of open code
| * 760d0df3ad selftests: mptcp: decrease BW in simult flows
| * 9a9d00c23d drm/amdgpu: Reset IH OVERFLOW_CLEAR bit
| * f574318960 drm/amd/pm: do not expose the API used internally only in kv_dpm.c
| * 0afbf40c01 serial: max310x: prevent infinite while() loop in port startup
| * 2fbf2c767b serial: max310x: use a separate regmap for each port
| * 2161c5411d serial: max310x: use regmap methods for SPI batch operations
| * 2aa7bcfdbb xhci: handle isoc Babble and Buffer Overrun events properly
| * 56e9aeb205 xhci: process isoc TD properly when there was a transaction error mid TD.
| * 0d29b474fb selftests: mm: fix map_hugetlb failure on 64K page size systems
| * 0b08eb6372 selftests/mm: switch to bash from sh
| * fdfc5fabe8 nfp: flower: add hardware offload check for post ct entry
| * 245332d4e7 nfp: flower: add goto_chain_index for ct entry
| * 666334fdf4 drm/amd/display: Fix uninitialized variable usage in core_link_ 'read_dpcd() & write_dpcd()' functions
| * f354086d1b ALSA: usb-audio: add quirk for RODE NT-USB+
| * 80326ce1eb ALSA: usb-audio: Fix microphone sound on Nexigo webcam.
| * f1a68c6a41 ALSA: usb-audio: Add new quirk FIXED_RATE for JBL Quantum810 Wireless
| * d16ae91186 ALSA: usb-audio: Add quirk for Tascam Model 12
| * 7ce0a888d6 ALSA: usb-audio: Avoid superfluous endpoint setup
| * 3191a00dbe ALSA: usb-audio: Correct the return code from snd_usb_endpoint_set_params()
| * 06b6de69cf ALSA: usb-audio: Apply mutex around snd_usb_endpoint_set_params()
| * 539493f147 ALSA: usb-audio: Properly refcounting clock rate
| * 56e28371fa ALSA: usb-audio: Split endpoint setups for hw_params and prepare (take#2)
| * 8ca3315bd8 ALSA: usb-audio: Clear fixed clock rate at closing EP
| * 9830e7383f ALSA: usb-audio: Refcount multiple accesses on the single clock
| * 0866afaff1 netrom: Fix data-races around sysctl_net_busy_read
| * c558e54f77 netrom: Fix a data-race around sysctl_netrom_link_fails_count
| * f9c4d42464 netrom: Fix a data-race around sysctl_netrom_routing_control
| * 4eacb242e2 netrom: Fix a data-race around sysctl_netrom_transport_no_activity_timeout
| * 489e05c614 netrom: Fix a data-race around sysctl_netrom_transport_requested_window_size
| * 85f34d352f netrom: Fix a data-race around sysctl_netrom_transport_busy_delay
| * 33081e0f34 netrom: Fix a data-race around sysctl_netrom_transport_acknowledge_delay
| * f84f770948 netrom: Fix a data-race around sysctl_netrom_transport_maximum_tries
| * b8006cb0a3 netrom: Fix a data-race around sysctl_netrom_transport_timeout
| * 775ed35498 netrom: Fix data-races around sysctl_netrom_network_ttl_initialiser
| * b3f0bc3a31 netrom: Fix a data-race around sysctl_netrom_obsolescence_count_initialiser
| * bbc21f134b netrom: Fix a data-race around sysctl_netrom_default_path_quality
| * 101277e37d erofs: apply proper VMA alignment for memory mapped files on THP
| * b3c0f55382 netfilter: nf_conntrack_h323: Add protection for bmp length out of range
| * bd9c90927a netfilter: nft_ct: fix l3num expectations with inet pseudo family
| * b562ebe21e net/rds: fix WARNING in rds_conn_connect_if_down
| * f0363af961 cpumap: Zero-initialise xdp_rxq_info struct before running XDP program
| * cae3303257 net/ipv6: avoid possible UAF in ip6_route_mpath_notify()
| * 8d95465d9a net: ice: Fix potential NULL pointer dereference in ice_bridge_setlink()
| * e46274df11 net: sparx5: Fix use after free inside sparx5_del_mact_entry
| * e77e0b0f2a geneve: make sure to pull inner header in geneve_rx()
| * be3be07d23 tracing/net_sched: Fix tracepoints that save qdisc_dev() as a string
| * e72b4e5e16 i40e: disable NAPI right after disabling irqs when handling xsk_pool
| * 533953fa90 ixgbe: {dis, en}able irqs in ixgbe_txrx_ring_{dis, en}able
| * ea4e938d2c net: lan78xx: fix runtime PM count underflow on link stop
| * 5ae5060e17 mmc: mmci: stm32: fix DMA API overlapping mappings warning
| * 287093040f mmc: mmci: stm32: use a buffer for unaligned DMA requests
* | 5e761a5e91 Merge 5.15.151 into android14-5.15-lts
|\|
| * 5743626485 Linux 5.15.151
| * 4a4eeb6912 mptcp: fix double-free on socket dismantle
| * cc5e34bc5b Revert "tls: rx: move counting TlsDecryptErrors for sync"
| * 9d5932275b net: tls: fix async vs NIC crypto offload
| * 68dbe92d67 bpf: Derive source IP addr via bpf_*_fib_lookup()
| * 39b4ee40d2 bpf: Add table ID to bpf_fib_lookup BPF helper
| * 75ca92271d bpf: Add BPF_FIB_LOOKUP_SKIP_NEIGH for bpf_fib_lookup
| * 20f5aafe52 Revert "interconnect: Teach lockdep about icc_bw_lock order"
| * fe549d8e97 Revert "interconnect: Fix locking for runpm vs reclaim"
| * ead6852245 gpio: fix resource unwinding order in error path
| * ea514ac5f1 gpiolib: Fix the error path order in gpiochip_add_data_with_key()
| * c21b5ad4e7 gpio: 74x164: Enable output pins after registers are reset
| * 6c480d0f13 af_unix: Drop oob_skb ref before purging queue in GC.
| * 2f3ae0905a Revert "drm/bridge: lt8912b: Register and attach our DSI device at probe"
| * 22850c9950 fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super
| * 94965be37a cachefiles: fix memory leak in cachefiles_add_cache()
| * cc32ba2fdf mptcp: fix possible deadlock in subflow diag
| * af46c8a0d8 mptcp: push at DSS boundaries
| * 5101e9f11a mptcp: add needs_id for netlink appending addr
| * 4ba8702b23 mptcp: clean up harmless false expressions
| * f431a58cb9 selftests: mptcp: add missing kconfig for NF Filter in v6
| * 5d7f2e7d21 selftests: mptcp: add missing kconfig for NF Filter
| * 55366b9ae9 mptcp: rename timer related helper to less confusing names
| * 833d068e77 mptcp: process pending subflow error on close
| * 305078c274 mptcp: move __mptcp_error_report in protocol.c
| * fbd16a1e4b x86/cpu/intel: Detect TME keyid bits before setting MTRR mask registers
| * 0779521576 pmdomain: qcom: rpmhpd: Fix enabled_corner aggregation
| * 5f6e8930ca mmc: sdhci-xenon: fix PHY init clock stability
| * f4fae0a76e mmc: sdhci-xenon: add timeout for PHY init complete
| * 52af4f26c0 mmc: core: Fix eMMC initialization with 1-bit bus connection
| * 4529c084a3 dmaengine: fsl-qdma: init irq after reg initialization
| * 2dee8895a2 dmaengine: ptdma: use consistent DMA masks
| * 106c1ac953 dmaengine: fsl-qdma: fix SoC may hang on 16 byte unaligned read
| * ab2d68655d btrfs: dev-replace: properly validate device names
| * 063715c33b wifi: nl80211: reject iftype change with mesh ID change
| * 9376d059a7 gtp: fix use-after-free and null-ptr-deref in gtp_newlink()
| * cbf67001d6 ALSA: firewire-lib: fix to check cycle continuity
| * 7d930a4da1 tomoyo: fix UAF write bug in tomoyo_write_control()
| * 5941a90c55 riscv: Sparse-Memory/vmemmap out-of-bounds fix
| * 80b1534649 afs: Fix endless loop in directory parsing
| * 20a4b5214f fbcon: always restore the old font data in fbcon_do_set_font()
| * 5eac17127e ALSA: Drop leftover snd-rtctimer stuff from Makefile
| * e601ae8191 power: supply: bq27xxx-i2c: Do not free non existing IRQ
| * 4b73473c05 efi/capsule-loader: fix incorrect allocation size
| * 5bc8810b78 tls: decrement decrypt_pending if no async completion will be called
| * 9ae48288fc tls: rx: use async as an in-out argument
| * bdb7fb2923 tls: rx: assume crypto always calls our callback
| * 2ec59e1655 tls: rx: move counting TlsDecryptErrors for sync
| * b61dbb5ef4 tls: rx: don't track the async count
| * 4fd23a600b tls: rx: factor out writing ContentType to cmsg
| * 9876554897 tls: rx: wrap decryption arguments in a structure
| * d6c9c2a66c tls: rx: don't report text length from the bowels of decrypt
| * ffc8a2b821 tls: rx: drop unnecessary arguments from tls_setup_from_iter()
| * 1abd49fa1f tls: hw: rx: use return value of tls_device_decrypted() to carry status
| * 432d40036f tls: rx: refactor decrypt_skb_update()
| * 17d8bda2a6 tls: rx: don't issue wake ups when data is decrypted
| * de0970d258 tls: rx: don't store the decryption status in socket context
| * 4c68bf84d1 tls: rx: don't store the record type in socket context
| * f1e7190937 igb: extend PTP timestamp adjustments to i211
| * a1227b27fc rtnetlink: fix error logic of IFLA_BRIDGE_FLAGS writing back
| * 7c3f285996 netfilter: bridge: confirm multicast packets before passing them up the stack
| * 3e9cd89136 netfilter: let reset rules clean out conntrack entries
| * c3a84f83d9 netfilter: make function op structures const
| * 2cb39bea70 netfilter: core: move ip_ct_attach indirection to struct nf_ct_hook
| * 84d3baab4b netfilter: nfnetlink_queue: silence bogus compiler warning
| * 4225152bfb netfilter: nf_tables: allow NFPROTO_INET in nft_(match/target)_validate()
| * af1a9a925e Bluetooth: Enforce validation on max value of connection interval
| * c3df637266 Bluetooth: hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST
| * 4cd28dae82 Bluetooth: hci_event: Fix wrongly recorded wakeup BD_ADDR
| * da4569d450 Bluetooth: Avoid potential use-after-free in hci_error_reset
| * 8e99556301 stmmac: Clear variable when destroying workqueue
| * 28bbdb4e19 uapi: in6: replace temporary label with rfc9486
| * 1e2cbdbdfa net: usb: dm9601: fix wrong return value in dm9601_mdio_read
| * 9b1f5c0032 veth: try harder when allocating queue memory
| * 914c73e787 net: enable memcg accounting for veth queues
| * 8d4d26f51e lan78xx: enable auto speed configuration for LAN7850 if no EEPROM is detected
| * 8a54834c03 ipv6: fix potential "struct net" leak in inet6_rtm_getaddr()
| * f011c103e6 net: veth: clear GRO when clearing XDP even when down
| * bf3f0c4169 cpufreq: intel_pstate: fix pstate limits enforcement for adjust_perf call back
| * cbfd27689b tun: Fix xdp_rxq_info's queue_index when detaching
| * afec0c5cd2 net: ip_tunnel: prevent perpetual headroom growth
| * c71ed29d15 netlink: Fix kernel-infoleak-after-free in __skb_datagram_iter
| * 386bb2537e mtd: spinand: gigadevice: Fix the get ecc status issue
| * 00b19ee0dc netfilter: nf_tables: disallow timeout for anonymous sets
* | 0b46d0d139 Merge branch 'android14-5.15' into branch 'android14-5.15-lts'
* | c9bf6f2822 ANDROID: add blk_mq_freeze_queue and blk_mq_unfreeze_queue to virtual device symbol list
* | 9593a93b85 Revert "net: dev: Convert sa_data to flexible array in struct sockaddr"
* | 8efd374b4e Revert "arp: Prevent overflow in arp_req_get()."
* | f2df20f4c1 Revert "usb: roles: fix NULL pointer issue when put module's reference"
* | 784572c0eb Revert "usb: roles: don't get/set_role() when usb_role_switch is unregistered"
* | 28752f0260 Revert "mptcp: fix lockless access in subflow ULP diag"
* | 7a5094aac5 Revert "xhci: cleanup xhci_hub_control port references"
* | 14d24110f6 Revert "xhci: move port specific items such as state completions to port structure"
* | f7f70f0d86 Revert "xhci: rename resume_done to resume_timestamp"
* | 4e98a48adc Revert "xhci: clear usb2 resume related variables in one place."
* | 09b0a696c5 Revert "xhci: decouple usb2 port resume and get_port_status request handling"
* | d6a30b0b4e Revert "xhci: track port suspend state correctly in unsuccessful resume cases"
* | 792aa870d5 Revert "posix-timers: Ensure timer ID search-loop limit is valid"
* | 05c0bbb7b1 Merge 5.15.150 into android14-5.15-lts
|/
* 80efc62652 Linux 5.15.150
* da6cabc198 r8169: use new PM macros
* b7f3fac6d3 netfilter: nf_tables: can't schedule in nft_chain_validate
* a4efc62cd1 ext4: avoid bb_free and bb_fragments inconsistency in mb_free_blocks()
* c1317822e2 ext4: regenerate buddy after block freeing failed if under fc replay
* d82ec7529c netfilter: nf_tables: fix scheduling-while-atomic splat
* 97eaa2955d arp: Prevent overflow in arp_req_get().
* d7b6fa97ec fs/aio: Restrict kiocb_set_cancel_fn() to I/O submitted via libaio
* df31d05f06 cifs: fix mid leak during reconnection after timeout threshold
* aade859419 i2c: imx: when being a target, mark the last read as processed
* cb21407f0b i2c: imx: Add timer for handling the stop condition
* 33f649f1b1 drm/amd/display: Fix memory leak in dm_sw_fini()
* 9a03126588 drm/syncobj: call drm_syncobj_fence_add_wait when WAIT_AVAILABLE flag is set
* 13b57b5cd5 netfilter: nft_flow_offload: release dst in case direct xmit path is used
* 4c167af9f6 netfilter: nft_flow_offload: reset dst in route object after setting up flow
* 7c71b83122 netfilter: flowtable: simplify route logic
* 664264a5c5 netfilter: nf_tables: set dormant flag on hook register failure
* 4338032aa9 tls: stop recv() if initial process_rx_list gave us non-DATA
* ea845237a3 tls: rx: drop pointless else after goto
* 8b32e43a80 tls: rx: jump to a more appropriate label
* 39603a6d4e s390: use the correct count for __iowrite64_copy()
* 8cae520f21 octeontx2-af: Consider the action set by PF
* 6dae096960 drm/nouveau/instmem: fix uninitialized_var.cocci warning
* 4d3b2bd995 net: dev: Convert sa_data to flexible array in struct sockaddr
* d65ec3e48f packet: move from strlcpy with unused retval to strscpy
* 91b020aaa1 ipv6: sr: fix possible use-after-free and null-ptr-deref
* e56662160f afs: Increase buffer size in afs_update_volume_status()
* 5268bb0210 bpf: Fix racing between bpf_timer_cancel_and_free and bpf_timer_cancel
* 6800ad7417 ata: ahci_ceva: fix error handling for Xilinx GT PHY support
* 7fcc31a3a7 ata: libahci_platform: Introduce reset assertion/deassertion methods
* ddac2e0e65 ata: libahci_platform: Convert to using devm bulk clocks API
* 302b92b373 ipv6: properly combine dev_base_seq and ipv6.dev_addr_genid
* a75b495478 ipv4: properly combine dev_base_seq and ipv4.dev_addr_genid
* 2a7b878a7d net: stmmac: Fix incorrect dereference in interrupt handlers
* a41d9142d2 nouveau: fix function cast warnings
* 1087c284fd scsi: jazz_esp: Only build if SCSI core is builtin
* 4e395fb89e bpf, scripts: Correct GPL license name
* cd6070d9f5 RDMA/srpt: fix function pointer cast warnings
* 656bd1702f arm64: dts: rockchip: set num-cs property for spi on px30
* 135e5465fe RDMA/qedr: Fix qedr_create_user_qp error flow
* 989af2f293 RDMA/srpt: Support specifying the srpt_service_guid parameter
* b6e660e076 RDMA/irdma: Add AE for too many RNRS
* 056ed95bef RDMA/irdma: Set the CQ read threshold for GEN 1
* a95d4cf827 RDMA/irdma: Validate max_send_wr and max_recv_wr
* 635d79aa47 RDMA/irdma: Fix KASAN issue with tasklet
* aeb5ac1c9d RDMA/bnxt_re: Return error for SRQ resize
* 52de5805c1 IB/hfi1: Fix a memleak in init_credit_return
* 48c63a1744 cifs: add a warning when the in-flight count goes negative
* 6538b6d13c xhci: track port suspend state correctly in unsuccessful resume cases
* 8839d5728b xhci: decouple usb2 port resume and get_port_status request handling
* 8af9de2a5b xhci: clear usb2 resume related variables in one place.
* a99c8f1abe xhci: rename resume_done to resume_timestamp
* 63f0e79cf3 xhci: move port specific items such as state completions to port structure
* ea6c19c736 xhci: cleanup xhci_hub_control port references
* 95973afc87 ACPI: resource: Skip IRQ override on ASUS ExpertBook B1502CBA
* 4f080b6487 ACPI: resource: Skip IRQ override on Asus Expertbook B2402CBA
* c2a9376d50 ACPI: resource: Add Asus ExpertBook B2502 to Asus quirks
* 1b64ff947a ACPI: resource: Skip IRQ override on Asus Vivobook S5602ZA
* f3607954f2 ACPI: resource: Add ASUS model S5402ZA to quirks
* 27e99d7857 ACPI: video: Add backlight=native DMI quirk for Apple iMac12,1 and iMac12,2
* cb1003c07e ARM: dts: BCM53573: Describe on-SoC BCM53125 rev 4 switch
* 28e5e3e59b arm64: dts: rockchip: add SPDIF node for ROCK Pi 4
* 99c8b2e997 arm64: dts: rockchip: add ES8316 codec for ROCK Pi 4
* 371036bf76 arm64: dts: rockchip: fix regulator name on rk3399-rock-4
* 92dcd7d6c6 exfat: support dynamic allocate bh for exfat_entry_set_cache
* b4dc693b29 wifi: iwlwifi: mvm: avoid baid size integer overflow
* fa92c463eb igb: Fix igb_down hung on surprise removal
* 16f653776c wifi: wext-core: Fix -Wstringop-overflow warning in ioctl_standard_iw_point()
* 7552020e3a devlink: report devlink_port_type_warn source device
* 819ca25444 bpf: Address KCSAN report on bpf_lru_list
* f97832620d wifi: ath11k: fix registration of 6Ghz-only phy without the full channel range
* 3cb43222ba sched/fair: Don't balance task to its current running CPU
* 621619f626 arm64: mm: fix VA-range sanity check
* 0bd309f226 arm64: set __exception_irq_entry with __irq_entry as a default
* dd0802f0a9 ACPI: video: Add backlight=native DMI quirk for Lenovo ThinkPad X131e (3371 AMD version)
* 3cc2d66b12 ACPI: video: Add backlight=native DMI quirk for Apple iMac11,3
* 54da51be3b ACPI: button: Add lid disable DMI quirk for Nextbook Ares 8A
* fa33b70513 btrfs: add xxhash to fast checksum implementations
* ef535e0315 posix-timers: Ensure timer ID search-loop limit is valid
* 84a578961b md/raid10: prevent soft lockup while flush writes
* 6b03364b29 md: fix data corruption for raid456 when reshape restart while grow up
* 638eaac374 nbd: Add the maximum limit of allocated index in nbd_dev_add
* 173e191012 debugobjects: Recheck debug_objects_enabled before reporting
* de2efb42d6 netfilter: nf_tables: add rescheduling points during loop detection walks
* a022c339af net/sched: Refactor qdisc_graft() for ingress and clsact Qdiscs
* 65acad6791 Input: iqs269a - do not poll during ATI
* 13b1dee7e1 Input: iqs269a - do not poll during suspend or resume
* f33ba1ec4a Input: iqs269a - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr()
* dba0691272 PM: core: Remove static qualifier in DEFINE_SIMPLE_DEV_PM_OPS macro
* 995e77b873 mmc: mxc: Use the new PM macros
* 8bc597732c mmc: jz4740: Use the new PM macros
* 75d4f92d87 PM: core: Add new *_PM_OPS macros, deprecate old ones
* 53f7337519 PM: core: Redefine pm_ptr() macro
* a51c253d83 powerpc/eeh: Set channel state after notifying the drivers
* 4570db06b7 powerpc/eeh: Small refactor of eeh_handle_normal_event()
* 12dd4a0848 powerpc/rtas: ensure 4KB alignment for rtas_data_buf
* 8afaf74307 powerpc/rtas: make all exports GPL
* 2240f4c5f5 net: ethernet: ti: add missing of_node_put before return
* 18721a8373 dt-bindings: clocks: imx8mp: Add ID for usb suspend clock
* fb100de778 clk: imx8mp: add clkout1/2 support
* 3c8a513f0f clk: imx8mp: Add DISP2 pixel clock
* 3517b6d614 serial: 8250: Remove serial_rs485 sanitization from em485
* 54974aad4a cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl()
* 15c3ddd118 kernel/sched: Remove dl_boosted flag comment
* a1733ffd88 drm/i915/dg1: Update DMC_DEBUG3 register
* 8102416c05 f2fs: write checkpoint during FG_GC
* cfd5d011d6 f2fs: don't set GC_FAILURE_PIN for background GC
* 56b522f466 drm/amdgpu: init iommu after amdkfd device init
* 572ee5086e tools/virtio: fix build
* 80f2a24622 perf beauty: Update copy of linux/socket.h with the kernel sources
* 47b6345ddb tools headers UAPI: Sync linux/fscrypt.h with the kernel sources
* c65a23e98e ARM: dts: BCM53573: Drop nonexistent "default-off" LED trigger
* 2eb3d2a54a acpi: property: Let args be NULL in __acpi_node_get_property_reference
* 7abdd666a0 platform/x86: asus-wmi: Document the dgpu_disable sysfs attribute
* 7de3c1535b clk: linux/clk-provider.h: fix kernel-doc warnings and typos
* b184742d27 RDMA/siw: Correct wrong debug message
* 6f6ec8aff2 RDMA/siw: Balance the reference of cep->kref in the error path
* 71475bcee0 ARM: dts: BCM53573: Drop nonexistent #usb-cells
* 832cf206df selftests: net: vrf-xfrm-tests: change authentication and encryption algos
* 14e1f63b39 vdpa/mlx5: Don't clear mr struct on destroy MR
* 5b4f6c5ff6 MIPS: vpe-mt: drop physical_memsize
* 1be5de5b64 MIPS: SMP-CPS: fix build error when HOTPLUG_CPU not set
* cc24b32d7d powerpc/pseries/lpar: add missing RTAS retry status handling
* 3212606148 powerpc/perf/hv-24x7: add missing RTAS retry status handling
* e3835122ea powerpc/pseries/lparcfg: add missing RTAS retry status handling
* 228d3c4919 clk: Honor CLK_OPS_PARENT_ENABLE in clk_core_is_enabled()
* d0e4a44455 clk: qcom: gpucc-sdm845: fix clk_dis_wait being programmed for CX GDSC
* e7076cfb72 clk: qcom: gpucc-sc7180: fix clk_dis_wait being programmed for CX GDSC
* 83c043b92b powerpc/powernv/ioda: Skip unallocated resources when mapping to PE
* 8c373aa1f7 Input: ads7846 - don't check penirq immediately for 7845
* 6a37a429b3 Input: ads7846 - always set last command to PWRDOWN
* 199e666477 clk: imx: avoid memory leak
* 94957e54dc clk: renesas: cpg-mssr: Remove superfluous check in resume code
* 2d89ed2e06 Input: ads7846 - don't report pressure for ads7845
* f992d1afd1 clk: renesas: cpg-mssr: Fix use after free if cpg_mssr_common_init() failed
* d73cf59d24 Input: iqs269a - increase interrupt handler return delay
* db06a2ae07 Input: iqs269a - configure device with a single block write
* fdbceead4a Input: iqs269a - drop unused device node references
* d93c68661a RISC-V: fix funct4 definition for c.jalr in parse_asm.h
* 5c5c02b069 mtd: rawnand: sunxi: Fix the size of the last OOB region
* 11fcd28df8 clk: qcom: gcc-qcs404: fix names of the DSI clocks used as parents
* 9fcba5e7bb clk: qcom: gcc-qcs404: disable gpll[04]_out_aux parents
* 7602e5e1bd clk: imx: imx8mp: add shared clk gate for usb suspend clk
* 7d6e8d7ee1 mptcp: fix lockless access in subflow ULP diag
* 256c3e6192 usb: roles: don't get/set_role() when usb_role_switch is unregistered
* ef982fc410 usb: roles: fix NULL pointer issue when put module's reference
* 2cb66b62a5 usb: gadget: ncm: Avoid dropping datagrams of properly parsed NTBs
* 3a2a909942 usb: cdns3: fix memory double free when handle zero packet
* 4e5c73b15d usb: cdns3: fixed memory use after free at cdns3_gadget_ep_disable()
* f4928121f7 usb: cdnsp: fixed issue with incorrect detecting CDNSP family controllers
* 7c532fb96a usb: cdnsp: blocked some cdns3 specific code
* c98f2d25f8 usb: dwc3: gadget: Don't disconnect if not started
* f4fab74cb8 serial: amba-pl011: Fix DMA transmission in RS485 mode
* 2c62c8984b x86/alternative: Make custom return thunk unconditional
* b0c9fcacf2 Revert "x86/alternative: Make custom return thunk unconditional"
* ae815291f0 x86/returnthunk: Allow different return thunks
* 5ca1f6adac x86/ftrace: Use alternative RET encoding
* b9d69bfff6 x86/ibt,paravirt: Use text_gen_insn() for paravirt_patch()
* b810c58d8b x86/text-patching: Make text_gen_insn() play nice with ANNOTATE_NOENDBR
* 8943e3c944 Revert "x86/ftrace: Use alternative RET encoding"
* eec6cbbfa1 ARM: ep93xx: Add terminator to gpiod_lookup_table
* 0da15a7039 l2tp: pass correct message length to ip6_append_data
* 9d71d7a9f2 PCI/MSI: Prevent MSI hardware interrupt number truncation
* a576308800 gtp: fix use-after-free and null-ptr-deref in gtp_genl_dump_pdp()
* d81e2dc203 KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table()
* 4deb8413ec KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler
* e20b24b175 platform/x86: touchscreen_dmi: Allow partial (prefix) matches for ACPI names
* 79d7504a24 platform/x86: intel-vbtn: Stop calling "VBDL" from notify_handler
* 1a4371db68 dm-crypt: don't modify the data when using authenticated encryption
* d580f0dcb5 drm/ttm: Fix an invalid freeing on already freed page in error path
* 47ae64df23 IB/hfi1: Fix sdma.h tx->num_descs off-by-one error
* 77cbc04a1a erofs: fix lz4 inplace decompression
* fbb662ffa0 pmdomain: renesas: r8a77980-sysc: CR7 must be always on
* 43ea43b6fa ksmbd: free aux buffer if ksmbd_iov_pin_rsp_read fails
* 475426ad1a pmdomain: mediatek: fix race conditions with genpd
* 2a52590ac5 virtio-blk: Ensure no requests in virtqueues before deleting vqs.
* b9a61ee2bb drm/amdgpu: reset gpu for s3 suspend abort case
* afc74fda2b drm/amdgpu: skip to program GFXDEC registers for suspend abort
* dcd33edd85 firewire: core: send bus reset promptly on gap count error
* a74270a1b7 scsi: lpfc: Use unsigned type for num_sge
* 26b8bdb556 hwmon: (coretemp) Enlarge per package core count limit
* a2f99731ab efi: Don't add memblocks for soft-reserved memory
* 4aa36b62c3 efi: runtime: Fix potential overflow of soft-reserved region size
* 262dc4fb15 wifi: mac80211: adding missing drv_mgd_complete_tx() call
* a585faf059 fs/ntfs3: Fix oob in ntfs_listxattr
* 0a3548e824 fs/ntfs3: Update inode->i_size after success write into compressed file
* c39c689a82 fs/ntfs3: Correct function is_rst_area_valid
* 54142e95df fs/ntfs3: Prevent generic message "attempt to access beyond end of device"
* 095d6a66bc fs/ntfs3: use non-movable memory for ntfs3 MFT buffer cache
* 3f3a6ebf6a fs/ntfs3: Disable ATTR_LIST_ENTRY size check
* ee8db6475c fs/ntfs3: Add NULL ptr dereference checking at the end of attr_allocate_frame()
* 56dacb722b fs/ntfs3: Fix detected field-spanning write (size 8) of single field "le->name"
* 3532bceaed fs/ntfs3: Print warning while fixing hard links count
* f14132b883 fs/ntfs3: Correct hard links updating when dealing with DOS names
* cd465584d5 fs/ntfs3: Improve ntfs_dir_count
* 3f7920b36d fs/ntfs3: Modified fix directory element type detection
* b4663b406a Input: i8042 - add Fujitsu Lifebook U728 to i8042 quirk table
* 9b1e3cf9ed ext4: correct the hole length returned by ext4_map_blocks()
* 46e64b9a4b nvmet-fc: take ref count on tgtport before delete assoc
* 5e0bc09a52 nvmet-fc: avoid deadlock on delete association path
* f323185c79 nvmet-fc: abort command when there is no binding
* 59b4ca71ab nvmet-fc: hold reference on hostport match
* 8fd604d4b0 nvmet-fc: defer cleanup using RCU properly
* 8f7104e18f nvmet-fc: release reference on target port
* 071f116416 nvmet-fcloop: swap the list_add_tail arguments
* 0bf567d6d9 nvme-fc: do not wait in vain when unloading module
* 75e34de642 ALSA: usb-audio: Ignore clock selector errors for single connection
* a75d89666c netfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in sctp_new
* 4a5ed46972 Input: xpad - add Lenovo Legion Go controllers
* 1e9af43d5d spi: sh-msiof: avoid integer overflow in constants
* ef1e3f277a ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616
* e59905cfb1 ALSA: usb-audio: Check presence of valid altsetting control
* 065da538e6 nvmet-tcp: fix nvme tcp ida memory leak
* f8dee8e489 regulator: pwm-regulator: Add validity checks in continuous .get_voltage
* 4fe4e5adc7 dmaengine: ti: edma: Add some null pointer checks to the edma_probe
* 8de8305a25 ext4: avoid allocating blocks from corrupted group in ext4_mb_find_by_goal()
* 4c21fa60a6 ext4: avoid allocating blocks from corrupted group in ext4_mb_try_best_found()
* 687061cfaa ext4: avoid dividing by 0 in mb_update_avg_fragment_size() when block bitmap corrupt
* 3700475e09 platform/x86: touchscreen_dmi: Add info for the TECLAST X16 Plus tablet
* 343c198168 MIPS: reserve exception vector space ONLY ONCE
* b4c13deff3 ahci: add 43-bit DMA address quirk for ASMedia ASM1061 controllers
* 1a8bd62449 ahci: asm1166: correct count of reported ports
* 0399d7eba4 spi: hisi-sfc-v3xx: Return IRQ_NONE if no interrupts were detected
* df6e2088c6 fbdev: sis: Error out if pixclock equals zero
* 8c54acf33e fbdev: savage: Error out if pixclock equals zero
* 88c18fd066 wifi: mac80211: fix race condition on enabling fast-xmit
* 212f20d5b1 wifi: cfg80211: fix missing interfaces when dumping
* 37d82e6ac9 dmaengine: fsl-qdma: increase size of 'irq_name'
* 3692c6f2b5 dmaengine: shdma: increase size of 'dev_id'
* a9849b67b4 scsi: target: core: Add TMF to tmr_list handling
* 0766e7317a sched/rt: Disallow writing invalid values to sched_rt_period_us
* 5295b5f2e5 sched/rt: Fix sysctl_sched_rr_timeslice intial value
* 8bd3eee772 x86/fpu: Stop relying on userspace for info to fault in xsave buffer
* c017fbf105 zonefs: Improve error handling
* bbc432e632 userfaultfd: fix mmap_changing checking in mfill_atomic_hugetlb
* 4bbb93ad84 bpf: Remove trace_printk_lock
* 4b349c55bb bpf: Do cleanup in bpf_bprintf_cleanup only when needed
* bcbaeb081a bpf: Add struct for bin_args arg in bpf_bprintf_prepare
* 8495c34dff bpf: Merge printk and seq_printf VARARG max macros
* ab2e127896 PCI: dwc: Fix a 64bit bug in dw_pcie_ep_raise_msix_irq()
* 5034989393 sched/rt: sysctl_sched_rr_timeslice show default timeslice after reset
* ee0fb9baa7 smb: client: fix parsing of SMB3.1.1 POSIX create context
* 890bc4fac3 smb: client: fix potential OOBs in smb2_parse_contexts()
* 858e73ff25 smb: client: fix OOB in receive_encrypted_standard()
* 6e5e93fd51 net/sched: Retire dsmark qdisc
* c3fdf76849 net/sched: Retire ATM qdisc
* 78bac52c29 net/sched: Retire CBQ qdisc

Change-Id: Ifc5593f64dc2c4fee8d345cd0e475050629f6498
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2024-06-28 15:35:23 +00:00
committed by Matthias Männich
635 changed files with 8173 additions and 7015 deletions

View File

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

View File

@@ -1088,8 +1088,12 @@
nopku [X86] Disable Memory Protection Keys CPU feature found
in some Intel CPUs.
<module>.async_probe [KNL]
Enable asynchronous probe on this module.
<module>.async_probe[=<bool>] [KNL]
If no <bool> value is specified or if the value
specified is not a valid <bool>, enable asynchronous
probe on this module. Otherwise, enable/disable
asynchronous probe on this module as indicated by the
<bool> value. See also: module.async_probe
early_ioremap_debug [KNL]
Enable debug messages in early_ioremap support. This
@@ -3185,6 +3189,15 @@
For details see:
Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
module.async_probe=<bool>
[KNL] When set to true, modules will use async probing
by default. To enable/disable async probing for a
specific module, use the module specific control that
is documented under <module>.async_probe. When both
module.async_probe and <module>.async_probe are
specified, <module>.async_probe takes precedence for
the specific module.
module.sig_enforce
[KNL] When CONFIG_MODULE_SIG is set, this means that
modules without (valid) signatures will fail to load.

View File

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

View File

@@ -35362,11 +35362,6 @@ member {
id: 0x20748443
type_id: 0x0efc611f
}
member {
id: 0x2082f479
type_id: 0x0d25bd0f
offset: 11520
}
member {
id: 0x2098ac9a
type_id: 0x0d4ccc92
@@ -35568,6 +35563,11 @@ member {
id: 0x27e3d457
type_id: 0x10a1214c
}
member {
id: 0x28012bb9
type_id: 0x2f2ac20c
offset: 11520
}
member {
id: 0x28026f1f
type_id: 0x2f27cc6c
@@ -78175,10 +78175,10 @@ member {
offset: 576
}
member {
id: 0xcbce1938
id: 0xcbce1148
name: "exit_work"
type_id: 0x1f3c8679
offset: 1408
offset: 1344
}
member {
id: 0x154265da
@@ -79228,10 +79228,10 @@ member {
offset: 10248
}
member {
id: 0x2bc8fdc9
id: 0x2bc8f5ab
name: "fallback_llist"
type_id: 0x0bf3e543
offset: 256
offset: 192
}
member {
id: 0x1e0adfa4
@@ -79239,10 +79239,10 @@ member {
type_id: 0x214d9bc0
}
member {
id: 0xfa3ad6ea
id: 0xfa3ad186
name: "fallback_work"
type_id: 0xf1159c31
offset: 320
offset: 256
}
member {
id: 0x5261bd5a
@@ -91024,10 +91024,9 @@ member {
type_id: 0x92233392
}
member {
id: 0xdd1ec771
id: 0xdd1ec390
name: "hash_map"
type_id: 0x3e2fe44b
offset: 64
}
member {
id: 0xa31ad885
@@ -100708,16 +100707,16 @@ member {
offset: 320
}
member {
id: 0x3dd488c8
id: 0x3dd48315
name: "iowq_limits"
type_id: 0x5eeb4a25
offset: 2176
offset: 2112
}
member {
id: 0x15478239
id: 0x15478e55
name: "iowq_limits_set"
type_id: 0x6d7f5ff6
offset: 2240
offset: 2176
}
member {
id: 0xd364d156
@@ -116917,10 +116916,10 @@ member {
offset: 11328
}
member {
id: 0xf2c3c54a
id: 0xf2c3c441
name: "mm_account"
type_id: 0x1b36c7a2
offset: 192
offset: 128
}
member {
id: 0x8a013cf5
@@ -147770,10 +147769,10 @@ member {
offset: 1728
}
member {
id: 0x859f0dbd
id: 0x859f077e
name: "ref_comp"
type_id: 0x3fcbf304
offset: 1920
offset: 1856
}
member {
id: 0x53e1405b
@@ -153148,11 +153147,6 @@ member {
type_id: 0x4585663f
offset: 864
}
member {
id: 0x55fafd4f
name: "ring_sock"
type_id: 0x106029c6
}
member {
id: 0x7633aeb9
name: "rings"
@@ -174365,10 +174359,10 @@ member {
offset: 256
}
member {
id: 0x3660523a
id: 0x3660536c
name: "tctx_list"
type_id: 0xd3c80119
offset: 1792
offset: 1728
}
member {
id: 0x43a6cfb9
@@ -183953,18 +183947,18 @@ member {
type_id: 0x181ee594
offset: 1408
}
member {
id: 0x042a2402
name: "user"
type_id: 0x181ee594
offset: 64
}
member {
id: 0x042a27fc
name: "user"
type_id: 0x181ee594
offset: 1024
}
member {
id: 0x042a2921
name: "user"
type_id: 0x181ee594
offset: 128
}
member {
id: 0x042a2c60
name: "user"
@@ -192543,24 +192537,6 @@ struct_union {
member_id: 0xadaeae8c
}
}
struct_union {
id: 0x0d25bd0f
kind: STRUCT
definition {
bytesize: 288
member_id: 0x55fafd4f
member_id: 0xdd1ec771
member_id: 0x042a2921
member_id: 0xf2c3c54a
member_id: 0x2bc8fdc9
member_id: 0xfa3ad6ea
member_id: 0xcbce1938
member_id: 0x3660523a
member_id: 0x859f0dbd
member_id: 0x3dd488c8
member_id: 0x15478239
}
}
struct_union {
id: 0x0d2844e8
kind: STRUCT
@@ -194305,6 +194281,23 @@ struct_union {
member_id: 0x6ec6b7fe
}
}
struct_union {
id: 0x2f2ac20c
kind: STRUCT
definition {
bytesize: 280
member_id: 0xdd1ec390
member_id: 0x042a2402
member_id: 0xf2c3c441
member_id: 0x2bc8f5ab
member_id: 0xfa3ad186
member_id: 0xcbce1148
member_id: 0x3660536c
member_id: 0x859f077e
member_id: 0x3dd48315
member_id: 0x15478e55
}
}
struct_union {
id: 0x2f802e01
kind: STRUCT
@@ -216478,7 +216471,7 @@ struct_union {
member_id: 0x296b856d
member_id: 0x5c36e689
member_id: 0x22694cf6
member_id: 0x2082f479
member_id: 0x28012bb9
}
}
struct_union {

View File

@@ -18,6 +18,8 @@
bpf_trace_run4
bpf_trace_run5
bpf_trace_run6
blk_mq_freeze_queue
blk_mq_unfreeze_queue
bt_err
bt_info
bt_warn
@@ -1428,6 +1430,8 @@
_raw_write_lock
_raw_write_unlock
set_capacity
sg_copy_from_buffer
sg_copy_to_buffer
sock_efree
sysfs_streq
tty_hangup

View File

@@ -435,7 +435,7 @@
/* Direct-mapped development chip ROM */
pb1176_rom@10200000 {
compatible = "direct-mapped";
compatible = "mtd-rom";
reg = <0x10200000 0x4000>;
bank-width = <1>;
};

View File

@@ -26,7 +26,6 @@
wlan {
label = "bcm53xx:blue:wlan";
gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
linux,default-trigger = "default-off";
};
system {

View File

@@ -26,7 +26,6 @@
5ghz {
label = "bcm53xx:blue:5ghz";
gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "default-off";
};
system {
@@ -42,7 +41,6 @@
2ghz {
label = "bcm53xx:blue:2ghz";
gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "default-off";
};
};

View File

@@ -159,8 +159,6 @@
};
ohci: usb@d000 {
#usb-cells = <0>;
compatible = "generic-ohci";
reg = <0xd000 0x1000>;
interrupt-parent = <&gic>;
@@ -183,6 +181,24 @@
gmac0: ethernet@5000 {
reg = <0x5000 0x1000>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
switch: switch@1e {
compatible = "brcm,bcm53125";
reg = <0x1e>;
status = "disabled";
/* ports are defined in board DTS */
ports {
#address-cells = <1>;
#size-cells = <0>;
};
};
};
};
gmac1: ethernet@b000 {

View File

@@ -105,8 +105,6 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet>;
phy-mode = "rgmii-id";
phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
phy-reset-duration = <20>;
phy-supply = <&sw2_reg>;
status = "okay";
@@ -119,17 +117,10 @@
#address-cells = <1>;
#size-cells = <0>;
phy_port2: phy@1 {
reg = <1>;
};
phy_port3: phy@2 {
reg = <2>;
};
switch@10 {
compatible = "qca,qca8334";
reg = <10>;
reg = <0x10>;
reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
switch_ports: ports {
#address-cells = <1>;
@@ -150,15 +141,30 @@
eth2: port@2 {
reg = <2>;
label = "eth2";
phy-mode = "internal";
phy-handle = <&phy_port2>;
};
eth1: port@3 {
reg = <3>;
label = "eth1";
phy-mode = "internal";
phy-handle = <&phy_port3>;
};
};
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy_port2: ethernet-phy@1 {
reg = <1>;
};
phy_port3: ethernet-phy@2 {
reg = <2>;
};
};
};
};
};

View File

@@ -24,8 +24,8 @@
#include "sha256_glue.h"
asmlinkage void sha256_block_data_order(u32 *digest, const void *data,
unsigned int num_blks);
asmlinkage void sha256_block_data_order(struct sha256_state *state,
const u8 *data, int num_blks);
int crypto_sha256_arm_update(struct shash_desc *desc, const u8 *data,
unsigned int len)
@@ -33,23 +33,20 @@ int crypto_sha256_arm_update(struct shash_desc *desc, const u8 *data,
/* make sure casting to sha256_block_fn() is safe */
BUILD_BUG_ON(offsetof(struct sha256_state, state) != 0);
return sha256_base_do_update(desc, data, len,
(sha256_block_fn *)sha256_block_data_order);
return sha256_base_do_update(desc, data, len, sha256_block_data_order);
}
EXPORT_SYMBOL(crypto_sha256_arm_update);
static int crypto_sha256_arm_final(struct shash_desc *desc, u8 *out)
{
sha256_base_do_finalize(desc,
(sha256_block_fn *)sha256_block_data_order);
sha256_base_do_finalize(desc, sha256_block_data_order);
return sha256_base_finish(desc, out);
}
int crypto_sha256_arm_finup(struct shash_desc *desc, const u8 *data,
unsigned int len, u8 *out)
{
sha256_base_do_update(desc, data, len,
(sha256_block_fn *)sha256_block_data_order);
sha256_base_do_update(desc, data, len, sha256_block_data_order);
return crypto_sha256_arm_final(desc, out);
}
EXPORT_SYMBOL(crypto_sha256_arm_finup);

View File

@@ -25,27 +25,25 @@ MODULE_ALIAS_CRYPTO("sha512");
MODULE_ALIAS_CRYPTO("sha384-arm");
MODULE_ALIAS_CRYPTO("sha512-arm");
asmlinkage void sha512_block_data_order(u64 *state, u8 const *src, int blocks);
asmlinkage void sha512_block_data_order(struct sha512_state *state,
u8 const *src, int blocks);
int sha512_arm_update(struct shash_desc *desc, const u8 *data,
unsigned int len)
{
return sha512_base_do_update(desc, data, len,
(sha512_block_fn *)sha512_block_data_order);
return sha512_base_do_update(desc, data, len, sha512_block_data_order);
}
static int sha512_arm_final(struct shash_desc *desc, u8 *out)
{
sha512_base_do_finalize(desc,
(sha512_block_fn *)sha512_block_data_order);
sha512_base_do_finalize(desc, sha512_block_data_order);
return sha512_base_finish(desc, out);
}
int sha512_arm_finup(struct shash_desc *desc, const u8 *data,
unsigned int len, u8 *out)
{
sha512_base_do_update(desc, data, len,
(sha512_block_fn *)sha512_block_data_order);
sha512_base_do_update(desc, data, len, sha512_block_data_order);
return sha512_arm_final(desc, out);
}

View File

@@ -337,6 +337,7 @@ static struct gpiod_lookup_table ep93xx_i2c_gpiod_table = {
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
GPIO_LOOKUP_IDX("G", 0, NULL, 1,
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
{ }
},
};

View File

@@ -180,9 +180,6 @@
brcm,num-gphy = <5>;
brcm,num-rgmii-ports = <2>;
#address-cells = <1>;
#size-cells = <0>;
ports: ports {
#address-cells = <1>;
#size-cells = <0>;

View File

@@ -191,8 +191,10 @@
};
&usdhc2 {
pinctrl-names = "default";
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc2>;
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
vmmc-supply = <&reg_vdd_3v3>;
vqmmc-supply = <&reg_nvcc_sd>;
cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
@@ -275,8 +277,8 @@
pinctrl_i2c4: i2c4grp {
fsl,pins = <
MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c3
MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA 0x400001c3
MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL 0x40000083
MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA 0x40000083
>;
};
@@ -288,19 +290,19 @@
pinctrl_uart1: uart1grp {
fsl,pins = <
MX8MM_IOMUXC_SAI2_RXC_UART1_DCE_RX 0x140
MX8MM_IOMUXC_SAI2_RXFS_UART1_DCE_TX 0x140
MX8MM_IOMUXC_SAI2_RXD0_UART1_DCE_RTS_B 0x140
MX8MM_IOMUXC_SAI2_TXFS_UART1_DCE_CTS_B 0x140
MX8MM_IOMUXC_SAI2_RXC_UART1_DCE_RX 0x0
MX8MM_IOMUXC_SAI2_RXFS_UART1_DCE_TX 0x0
MX8MM_IOMUXC_SAI2_RXD0_UART1_DCE_RTS_B 0x0
MX8MM_IOMUXC_SAI2_TXFS_UART1_DCE_CTS_B 0x0
>;
};
pinctrl_uart2: uart2grp {
fsl,pins = <
MX8MM_IOMUXC_SAI3_TXFS_UART2_DCE_RX 0x140
MX8MM_IOMUXC_SAI3_TXC_UART2_DCE_TX 0x140
MX8MM_IOMUXC_SAI3_RXD_UART2_DCE_RTS_B 0x140
MX8MM_IOMUXC_SAI3_RXC_UART2_DCE_CTS_B 0x140
MX8MM_IOMUXC_SAI3_TXFS_UART2_DCE_RX 0x0
MX8MM_IOMUXC_SAI3_TXC_UART2_DCE_TX 0x0
MX8MM_IOMUXC_SAI3_RXD_UART2_DCE_RTS_B 0x0
MX8MM_IOMUXC_SAI3_RXC_UART2_DCE_CTS_B 0x0
>;
};
@@ -312,13 +314,40 @@
pinctrl_usdhc2: usdhc2grp {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x90
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x019
MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x19
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xd0
>;
};
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x94
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x19
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xd0
>;
};
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x96
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x19
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xd0
>;
};
};

View File

@@ -220,8 +220,8 @@
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3
MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3
MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL 0x40000083
MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA 0x40000083
>;
};

View File

@@ -40,17 +40,6 @@
gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
status = "okay";
};
reg_usb_otg1_vbus: regulator-usb-otg1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_usb1_en>;
compatible = "regulator-fixed";
regulator-name = "usb_otg1_vbus";
gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;
enable-active-high;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
};
};
/* off-board header */
@@ -102,9 +91,10 @@
};
&usbotg1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg1>;
dr_mode = "otg";
over-current-active-low;
vbus-supply = <&reg_usb_otg1_vbus>;
status = "okay";
};
@@ -156,14 +146,6 @@
>;
};
pinctrl_reg_usb1_en: regusb1grp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x41
MX8MM_IOMUXC_GPIO1_IO12_GPIO1_IO12 0x141
MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x41
>;
};
pinctrl_spi2: spi2grp {
fsl,pins = <
MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0xd6
@@ -186,4 +168,11 @@
MX8MM_IOMUXC_UART3_TXD_UART3_DCE_TX 0x140
>;
};
pinctrl_usbotg1: usbotg1grp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO12_GPIO1_IO12 0x141
MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x41
>;
};
};

View File

@@ -414,14 +414,14 @@
crypto: crypto@90000 {
compatible = "inside-secure,safexcel-eip97ies";
reg = <0x90000 0x20000>;
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "mem", "ring0", "ring1",
"ring2", "ring3", "eip";
<GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "ring0", "ring1", "ring2",
"ring3", "eip", "mem";
clocks = <&nb_periph_clk 15>;
};

View File

@@ -506,14 +506,14 @@
CP11X_LABEL(crypto): crypto@800000 {
compatible = "inside-secure,safexcel-eip197b";
reg = <0x800000 0x200000>;
interrupts = <87 IRQ_TYPE_LEVEL_HIGH>,
<88 IRQ_TYPE_LEVEL_HIGH>,
interrupts = <88 IRQ_TYPE_LEVEL_HIGH>,
<89 IRQ_TYPE_LEVEL_HIGH>,
<90 IRQ_TYPE_LEVEL_HIGH>,
<91 IRQ_TYPE_LEVEL_HIGH>,
<92 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "mem", "ring0", "ring1",
"ring2", "ring3", "eip";
<92 IRQ_TYPE_LEVEL_HIGH>,
<87 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "ring0", "ring1", "ring2", "ring3",
"eip", "mem";
clock-names = "core", "reg";
clocks = <&CP11X_LABEL(clk) 1 26>,
<&CP11X_LABEL(clk) 1 17>;

View File

@@ -71,6 +71,7 @@
memory@40000000 {
reg = <0 0x40000000 0 0x40000000>;
device_type = "memory";
};
reg_1p8v: regulator-1p8v {

View File

@@ -57,6 +57,7 @@
memory@40000000 {
reg = <0 0x40000000 0 0x20000000>;
device_type = "memory";
};
reg_1p8v: regulator-1p8v {

View File

@@ -4,6 +4,8 @@
*/
#include "mt8183-kukui.dtsi"
/* Must come after mt8183-kukui.dtsi to modify cros_ec */
#include <arm/cros-ec-keyboard.dtsi>
/ {
panel: panel {

View File

@@ -372,6 +372,16 @@
};
};
&cros_ec {
cbas {
compatible = "google,cros-cbas";
};
keyboard-controller {
compatible = "google,cros-ec-keyb-switches";
};
};
&qca_wifi {
qcom,ath10k-calibration-variant = "GO_KAKADU";
};

View File

@@ -338,6 +338,16 @@
};
};
&cros_ec {
cbas {
compatible = "google,cros-cbas";
};
keyboard-controller {
compatible = "google,cros-ec-keyb-switches";
};
};
&qca_wifi {
qcom,ath10k-calibration-variant = "GO_KODAMA";
};

View File

@@ -342,6 +342,16 @@
};
};
&cros_ec {
cbas {
compatible = "google,cros-cbas";
};
keyboard-controller {
compatible = "google,cros-ec-keyb-switches";
};
};
&qca_wifi {
qcom,ath10k-calibration-variant = "LE_Krane";
};

View File

@@ -828,8 +828,18 @@
google,usb-port-id = <0>;
};
cbas {
compatible = "google,cros-cbas";
typec {
compatible = "google,cros-ec-typec";
#address-cells = <1>;
#size-cells = <0>;
usb_c0: connector@0 {
compatible = "usb-c-connector";
reg = <0>;
power-role = "dual";
data-role = "host";
try-power-role = "sink";
};
};
};
};
@@ -917,5 +927,4 @@
};
};
#include <arm/cros-ec-keyboard.dtsi>
#include <arm/cros-ec-sbs.dtsi>

View File

@@ -583,8 +583,8 @@
avb0: ethernet@e6800000 {
compatible = "renesas,etheravb-r8a779a0",
"renesas,etheravb-rcar-gen3";
reg = <0 0xe6800000 0 0x800>;
"renesas,etheravb-rcar-gen4";
reg = <0 0xe6800000 0 0x1000>;
interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>,
@@ -631,8 +631,8 @@
avb1: ethernet@e6810000 {
compatible = "renesas,etheravb-r8a779a0",
"renesas,etheravb-rcar-gen3";
reg = <0 0xe6810000 0 0x800>;
"renesas,etheravb-rcar-gen4";
reg = <0 0xe6810000 0 0x1000>;
interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
@@ -679,7 +679,7 @@
avb2: ethernet@e6820000 {
compatible = "renesas,etheravb-r8a779a0",
"renesas,etheravb-rcar-gen3";
"renesas,etheravb-rcar-gen4";
reg = <0 0xe6820000 0 0x1000>;
interrupts = <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
@@ -727,7 +727,7 @@
avb3: ethernet@e6830000 {
compatible = "renesas,etheravb-r8a779a0",
"renesas,etheravb-rcar-gen3";
"renesas,etheravb-rcar-gen4";
reg = <0 0xe6830000 0 0x1000>;
interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>,
@@ -775,7 +775,7 @@
avb4: ethernet@e6840000 {
compatible = "renesas,etheravb-r8a779a0",
"renesas,etheravb-rcar-gen3";
"renesas,etheravb-rcar-gen4";
reg = <0 0xe6840000 0 0x1000>;
interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>,
@@ -823,7 +823,7 @@
avb5: ethernet@e6850000 {
compatible = "renesas,etheravb-r8a779a0",
"renesas,etheravb-rcar-gen3";
"renesas,etheravb-rcar-gen4";
reg = <0 0xe6850000 0 0x1000>;
interrupts = <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH>,
@@ -935,7 +935,7 @@
msiof0: spi@e6e90000 {
compatible = "renesas,msiof-r8a779a0",
"renesas,rcar-gen3-msiof";
"renesas,rcar-gen4-msiof";
reg = <0 0xe6e90000 0 0x0064>;
interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 618>;
@@ -950,7 +950,7 @@
msiof1: spi@e6ea0000 {
compatible = "renesas,msiof-r8a779a0",
"renesas,rcar-gen3-msiof";
"renesas,rcar-gen4-msiof";
reg = <0 0xe6ea0000 0 0x0064>;
interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 619>;
@@ -965,7 +965,7 @@
msiof2: spi@e6c00000 {
compatible = "renesas,msiof-r8a779a0",
"renesas,rcar-gen3-msiof";
"renesas,rcar-gen4-msiof";
reg = <0 0xe6c00000 0 0x0064>;
interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 620>;
@@ -980,7 +980,7 @@
msiof3: spi@e6c10000 {
compatible = "renesas,msiof-r8a779a0",
"renesas,rcar-gen3-msiof";
"renesas,rcar-gen4-msiof";
reg = <0 0xe6c10000 0 0x0064>;
interrupts = <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 621>;
@@ -995,7 +995,7 @@
msiof4: spi@e6c20000 {
compatible = "renesas,msiof-r8a779a0",
"renesas,rcar-gen3-msiof";
"renesas,rcar-gen4-msiof";
reg = <0 0xe6c20000 0 0x0064>;
interrupts = <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 622>;
@@ -1010,7 +1010,7 @@
msiof5: spi@e6c28000 {
compatible = "renesas,msiof-r8a779a0",
"renesas,rcar-gen3-msiof";
"renesas,rcar-gen4-msiof";
reg = <0 0xe6c28000 0 0x0064>;
interrupts = <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 623>;

View File

@@ -585,6 +585,7 @@
clock-names = "spiclk", "apb_pclk";
dmas = <&dmac 12>, <&dmac 13>;
dma-names = "tx", "rx";
num-cs = <2>;
pinctrl-names = "default";
pinctrl-0 = <&spi0_clk &spi0_csn &spi0_miso &spi0_mosi>;
#address-cells = <1>;
@@ -600,6 +601,7 @@
clock-names = "spiclk", "apb_pclk";
dmas = <&dmac 14>, <&dmac 15>;
dma-names = "tx", "rx";
num-cs = <2>;
pinctrl-names = "default";
pinctrl-0 = <&spi1_clk &spi1_csn0 &spi1_csn1 &spi1_miso &spi1_mosi>;
#address-cells = <1>;

View File

@@ -36,6 +36,29 @@
reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
};
sound {
compatible = "audio-graph-card";
label = "Analog";
dais = <&i2s0_p0>;
};
sound-dit {
compatible = "audio-graph-card";
label = "SPDIF";
dais = <&spdif_p0>;
};
spdif-dit {
compatible = "linux,spdif-dit";
#sound-dai-cells = <0>;
port {
dit_p0_0: endpoint {
remote-endpoint = <&spdif_p0_0>;
};
};
};
vcc12v_dcin: dc-12v {
compatible = "regulator-fixed";
regulator-name = "vcc12v_dcin";
@@ -98,24 +121,25 @@
vin-supply = <&vcc5v0_sys>;
};
vcc5v0_typec: vcc5v0-typec-regulator {
vbus_typec: vbus-typec-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_typec_en>;
regulator-name = "vcc5v0_typec";
regulator-name = "vbus_typec";
regulator-always-on;
vin-supply = <&vcc5v0_sys>;
};
vcc_lan: vcc3v3-phy-regulator {
vcc3v3_lan: vcc3v3-lan-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_lan";
regulator-name = "vcc3v3_lan";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vcc3v3_sys>;
};
vdd_log: vdd-log {
@@ -162,7 +186,7 @@
assigned-clocks = <&cru SCLK_RMII_SRC>;
assigned-clock-parents = <&clkin_gmac>;
clock_in_out = "input";
phy-supply = <&vcc_lan>;
phy-supply = <&vcc3v3_lan>;
phy-mode = "rgmii";
pinctrl-names = "default";
pinctrl-0 = <&rgmii_pins>;
@@ -267,8 +291,8 @@
};
};
vcc1v8_codec: LDO_REG1 {
regulator-name = "vcc1v8_codec";
vcca1v8_codec: LDO_REG1 {
regulator-name = "vcca1v8_codec";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
@@ -278,8 +302,8 @@
};
};
vcc1v8_hdmi: LDO_REG2 {
regulator-name = "vcc1v8_hdmi";
vcca1v8_hdmi: LDO_REG2 {
regulator-name = "vcca1v8_hdmi";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
@@ -336,8 +360,8 @@
};
};
vcc0v9_hdmi: LDO_REG7 {
regulator-name = "vcc0v9_hdmi";
vcca0v9_hdmi: LDO_REG7 {
regulator-name = "vcca0v9_hdmi";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <900000>;
@@ -422,6 +446,20 @@
i2c-scl-rising-time-ns = <300>;
i2c-scl-falling-time-ns = <15>;
status = "okay";
es8316: codec@11 {
compatible = "everest,es8316";
reg = <0x11>;
clocks = <&cru SCLK_I2S_8CH_OUT>;
clock-names = "mclk";
#sound-dai-cells = <0>;
port {
es8316_p0_0: endpoint {
remote-endpoint = <&i2s0_p0_0>;
};
};
};
};
&i2c3 {
@@ -441,6 +479,14 @@
rockchip,capture-channels = <2>;
rockchip,playback-channels = <2>;
status = "okay";
i2s0_p0: port {
i2s0_p0_0: endpoint {
dai-format = "i2s";
mclk-fs = <256>;
remote-endpoint = <&es8316_p0_0>;
};
};
};
&i2s1 {
@@ -456,7 +502,7 @@
status = "okay";
bt656-supply = <&vcc_3v0>;
audio-supply = <&vcc1v8_codec>;
audio-supply = <&vcca1v8_codec>;
sdmmc-supply = <&vcc_sdio>;
gpio1830-supply = <&vcc_3v0>;
};
@@ -602,6 +648,15 @@
status = "okay";
};
&spdif {
spdif_p0: port {
spdif_p0_0: endpoint {
remote-endpoint = <&dit_p0_0>;
};
};
};
&tcphy0 {
status = "okay";
};

View File

@@ -8,16 +8,11 @@
#define __ASM_EXCEPTION_H
#include <asm/esr.h>
#include <asm/kprobes.h>
#include <asm/ptrace.h>
#include <linux/interrupt.h>
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
#define __exception_irq_entry __irq_entry
#else
#define __exception_irq_entry __kprobes
#endif
static inline unsigned long disr_to_esr(u64 disr)
{

View File

@@ -462,6 +462,9 @@ static int its_sync_lpi_pending_table(struct kvm_vcpu *vcpu)
}
irq = vgic_get_irq(vcpu->kvm, NULL, intids[i]);
if (!irq)
continue;
raw_spin_lock_irqsave(&irq->irq_lock, flags);
irq->pending_latch = pendmask & (1U << bit_nr);
vgic_queue_irq_unlock(vcpu->kvm, irq, flags);
@@ -1427,6 +1430,8 @@ static int vgic_its_cmd_handle_movall(struct kvm *kvm, struct vgic_its *its,
for (i = 0; i < irq_count; i++) {
irq = vgic_get_irq(kvm, NULL, intids[i]);
if (!irq)
continue;
update_affinity(irq, vcpu2);

View File

@@ -440,7 +440,7 @@ static phys_addr_t pgd_pgtable_alloc(int shift)
static void __init create_mapping_noalloc(phys_addr_t phys, unsigned long virt,
phys_addr_t size, pgprot_t prot)
{
if ((virt >= PAGE_END) && (virt < VMALLOC_START)) {
if (virt < PAGE_OFFSET) {
pr_warn("BUG: not creating mapping for %pa at 0x%016lx - outside kernel range\n",
&phys, virt);
return;
@@ -467,7 +467,7 @@ void __init create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
static void update_mapping_prot(phys_addr_t phys, unsigned long virt,
phys_addr_t size, pgprot_t prot)
{
if ((virt >= PAGE_END) && (virt < VMALLOC_START)) {
if (virt < PAGE_OFFSET) {
pr_warn("BUG: not updating mapping for %pa at 0x%016lx - outside kernel range\n",
&phys, virt);
return;

View File

@@ -60,6 +60,7 @@ static inline void instruction_pointer_set(struct pt_regs *regs,
unsigned long val)
{
regs->cp0_epc = val;
regs->cp0_cause &= ~CAUSEF_BD;
}
/* Query offset/name of register from its name/offset */

View File

@@ -102,7 +102,6 @@ struct vpe_control {
struct list_head tc_list; /* Thread contexts */
};
extern unsigned long physical_memsize;
extern struct vpe_control vpecontrol;
extern const struct file_operations vpe_fops;

View File

@@ -424,9 +424,11 @@ static void cps_shutdown_this_cpu(enum cpu_death death)
wmb();
}
} else {
pr_debug("Gating power to core %d\n", core);
/* Power down the core */
cps_pm_enter_state(CPS_PM_POWER_GATED);
if (IS_ENABLED(CONFIG_HOTPLUG_CPU)) {
pr_debug("Gating power to core %d\n", core);
/* Power down the core */
cps_pm_enter_state(CPS_PM_POWER_GATED);
}
}
}

View File

@@ -2001,7 +2001,13 @@ unsigned long vi_handlers[64];
void reserve_exception_space(phys_addr_t addr, unsigned long size)
{
memblock_reserve(addr, size);
/*
* reserve exception space on CPUs other than CPU0
* is too late, since memblock is unavailable when APs
* up
*/
if (smp_processor_id() == 0)
memblock_reserve(addr, size);
}
void __init *set_except_vector(int n, void *addr)

View File

@@ -92,12 +92,11 @@ int vpe_run(struct vpe *v)
write_tc_c0_tchalt(read_tc_c0_tchalt() & ~TCHALT_H);
/*
* The sde-kit passes 'memsize' to __start in $a3, so set something
* here... Or set $a3 to zero and define DFLT_STACK_SIZE and
* DFLT_HEAP_SIZE when you compile your program
* We don't pass the memsize here, so VPE programs need to be
* compiled with DFLT_STACK_SIZE and DFLT_HEAP_SIZE defined.
*/
mttgpr(7, 0);
mttgpr(6, v->ntcs);
mttgpr(7, physical_memsize);
/* set up VPE1 */
/*

View File

@@ -22,12 +22,6 @@
DEFINE_SPINLOCK(ebu_lock);
EXPORT_SYMBOL_GPL(ebu_lock);
/*
* This is needed by the VPE loader code, just set it to 0 and assume
* that the firmware hardcodes this value to something useful.
*/
unsigned long physical_memsize = 0L;
/*
* this struct is filled by the soc specific detection code and holds
* information about the specific soc type, revision and name

View File

@@ -81,7 +81,7 @@ void notrace __hot ftrace_function_trampoline(unsigned long parent,
#endif
}
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
#if defined(CONFIG_DYNAMIC_FTRACE) && defined(CONFIG_FUNCTION_GRAPH_TRACER)
int ftrace_enable_ftrace_graph_caller(void)
{
return 0;

View File

@@ -7,14 +7,14 @@
#ifdef CONFIG_HAVE_ARCH_HUGE_VMAP
#define arch_vmap_pud_supported arch_vmap_pud_supported
static inline bool arch_vmap_pud_supported(pgprot_t prot)
static __always_inline bool arch_vmap_pud_supported(pgprot_t prot)
{
/* HPT does not cope with large pages in the vmalloc area */
return radix_enabled();
}
#define arch_vmap_pmd_supported arch_vmap_pmd_supported
static inline bool arch_vmap_pmd_supported(pgprot_t prot)
static __always_inline bool arch_vmap_pmd_supported(pgprot_t prot)
{
return radix_enabled();
}

View File

@@ -1054,45 +1054,46 @@ void eeh_handle_normal_event(struct eeh_pe *pe)
}
pr_info("EEH: Recovery successful.\n");
} else {
/*
* About 90% of all real-life EEH failures in the field
* are due to poorly seated PCI cards. Only 10% or so are
* due to actual, failed cards.
*/
pr_err("EEH: Unable to recover from failure from PHB#%x-PE#%x.\n"
"Please try reseating or replacing it\n",
pe->phb->global_number, pe->addr);
goto out;
}
eeh_slot_error_detail(pe, EEH_LOG_PERM);
/*
* About 90% of all real-life EEH failures in the field
* are due to poorly seated PCI cards. Only 10% or so are
* due to actual, failed cards.
*/
pr_err("EEH: Unable to recover from failure from PHB#%x-PE#%x.\n"
"Please try reseating or replacing it\n",
pe->phb->global_number, pe->addr);
/* Notify all devices that they're about to go down. */
eeh_set_channel_state(pe, pci_channel_io_perm_failure);
eeh_set_irq_state(pe, false);
eeh_pe_report("error_detected(permanent failure)", pe,
eeh_report_failure, NULL);
eeh_slot_error_detail(pe, EEH_LOG_PERM);
/* Mark the PE to be removed permanently */
eeh_pe_state_mark(pe, EEH_PE_REMOVED);
/* Notify all devices that they're about to go down. */
eeh_set_irq_state(pe, false);
eeh_pe_report("error_detected(permanent failure)", pe,
eeh_report_failure, NULL);
eeh_set_channel_state(pe, pci_channel_io_perm_failure);
/*
* Shut down the device drivers for good. We mark
* all removed devices correctly to avoid access
* the their PCI config any more.
*/
if (pe->type & EEH_PE_VF) {
eeh_pe_dev_traverse(pe, eeh_rmv_device, NULL);
eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
} else {
eeh_pe_state_clear(pe, EEH_PE_PRI_BUS, true);
eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
/* Mark the PE to be removed permanently */
eeh_pe_state_mark(pe, EEH_PE_REMOVED);
pci_lock_rescan_remove();
pci_hp_remove_devices(bus);
pci_unlock_rescan_remove();
/* The passed PE should no longer be used */
return;
}
/*
* Shut down the device drivers for good. We mark
* all removed devices correctly to avoid access
* the their PCI config any more.
*/
if (pe->type & EEH_PE_VF) {
eeh_pe_dev_traverse(pe, eeh_rmv_device, NULL);
eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
} else {
eeh_pe_state_clear(pe, EEH_PE_PRI_BUS, true);
eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
pci_lock_rescan_remove();
pci_hp_remove_devices(bus);
pci_unlock_rescan_remove();
/* The passed PE should no longer be used */
return;
}
out:
@@ -1188,10 +1189,10 @@ void eeh_handle_special_event(void)
/* Notify all devices to be down */
eeh_pe_state_clear(pe, EEH_PE_PRI_BUS, true);
eeh_set_channel_state(pe, pci_channel_io_perm_failure);
eeh_pe_report(
"error_detected(permanent failure)", pe,
eeh_report_failure, NULL);
eeh_set_channel_state(pe, pci_channel_io_perm_failure);
pci_lock_rescan_remove();
list_for_each_entry(hose, &hose_list, list_node) {

View File

@@ -68,10 +68,10 @@ struct rtas_t rtas = {
EXPORT_SYMBOL(rtas);
DEFINE_SPINLOCK(rtas_data_buf_lock);
EXPORT_SYMBOL(rtas_data_buf_lock);
EXPORT_SYMBOL_GPL(rtas_data_buf_lock);
char rtas_data_buf[RTAS_DATA_BUF_SIZE] __cacheline_aligned;
EXPORT_SYMBOL(rtas_data_buf);
char rtas_data_buf[RTAS_DATA_BUF_SIZE] __aligned(SZ_4K);
EXPORT_SYMBOL_GPL(rtas_data_buf);
unsigned long rtas_rmo_buf;
@@ -80,7 +80,7 @@ unsigned long rtas_rmo_buf;
* This is done like this so rtas_flash can be a module.
*/
void (*rtas_flash_term_hook)(int);
EXPORT_SYMBOL(rtas_flash_term_hook);
EXPORT_SYMBOL_GPL(rtas_flash_term_hook);
/* RTAS use home made raw locking instead of spin_lock_irqsave
* because those can be called from within really nasty contexts
@@ -328,7 +328,7 @@ void rtas_progress(char *s, unsigned short hex)
spin_unlock(&progress_lock);
}
EXPORT_SYMBOL(rtas_progress); /* needed by rtas_flash module */
EXPORT_SYMBOL_GPL(rtas_progress); /* needed by rtas_flash module */
int rtas_token(const char *service)
{
@@ -338,7 +338,7 @@ int rtas_token(const char *service)
tokp = of_get_property(rtas.dev, service, NULL);
return tokp ? be32_to_cpu(*tokp) : RTAS_UNKNOWN_SERVICE;
}
EXPORT_SYMBOL(rtas_token);
EXPORT_SYMBOL_GPL(rtas_token);
int rtas_service_present(const char *service)
{
@@ -498,7 +498,7 @@ int rtas_call(int token, int nargs, int nret, int *outputs, ...)
}
return ret;
}
EXPORT_SYMBOL(rtas_call);
EXPORT_SYMBOL_GPL(rtas_call);
/* For RTAS_BUSY (-2), delay for 1 millisecond. For an extended busy status
* code of 990n, perform the hinted delay of 10^n (last digit) milliseconds.
@@ -533,7 +533,7 @@ unsigned int rtas_busy_delay(int status)
return ms;
}
EXPORT_SYMBOL(rtas_busy_delay);
EXPORT_SYMBOL_GPL(rtas_busy_delay);
static int rtas_error_rc(int rtas_rc)
{
@@ -579,7 +579,7 @@ int rtas_get_power_level(int powerdomain, int *level)
return rtas_error_rc(rc);
return rc;
}
EXPORT_SYMBOL(rtas_get_power_level);
EXPORT_SYMBOL_GPL(rtas_get_power_level);
int rtas_set_power_level(int powerdomain, int level, int *setlevel)
{
@@ -597,7 +597,7 @@ int rtas_set_power_level(int powerdomain, int level, int *setlevel)
return rtas_error_rc(rc);
return rc;
}
EXPORT_SYMBOL(rtas_set_power_level);
EXPORT_SYMBOL_GPL(rtas_set_power_level);
int rtas_get_sensor(int sensor, int index, int *state)
{
@@ -615,7 +615,7 @@ int rtas_get_sensor(int sensor, int index, int *state)
return rtas_error_rc(rc);
return rc;
}
EXPORT_SYMBOL(rtas_get_sensor);
EXPORT_SYMBOL_GPL(rtas_get_sensor);
int rtas_get_sensor_fast(int sensor, int index, int *state)
{
@@ -676,7 +676,7 @@ int rtas_set_indicator(int indicator, int index, int new_value)
return rtas_error_rc(rc);
return rc;
}
EXPORT_SYMBOL(rtas_set_indicator);
EXPORT_SYMBOL_GPL(rtas_set_indicator);
/*
* Ignoring RTAS extended delay

View File

@@ -79,9 +79,8 @@ static u32 phys_coresperchip; /* Physical cores per chip */
*/
void read_24x7_sys_info(void)
{
int call_status, len, ntypes;
spin_lock(&rtas_data_buf_lock);
const s32 token = rtas_token("ibm,get-system-parameter");
int call_status;
/*
* Making system parameter: chips and sockets and cores per chip
@@ -91,32 +90,27 @@ void read_24x7_sys_info(void)
phys_chipspersocket = 1;
phys_coresperchip = 1;
call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
NULL,
PROCESSOR_MODULE_INFO,
__pa(rtas_data_buf),
RTAS_DATA_BUF_SIZE);
do {
spin_lock(&rtas_data_buf_lock);
call_status = rtas_call(token, 3, 1, NULL, PROCESSOR_MODULE_INFO,
__pa(rtas_data_buf), RTAS_DATA_BUF_SIZE);
if (call_status == 0) {
int ntypes = be16_to_cpup((__be16 *)&rtas_data_buf[2]);
int len = be16_to_cpup((__be16 *)&rtas_data_buf[0]);
if (len >= 8 && ntypes != 0) {
phys_sockets = be16_to_cpup((__be16 *)&rtas_data_buf[4]);
phys_chipspersocket = be16_to_cpup((__be16 *)&rtas_data_buf[6]);
phys_coresperchip = be16_to_cpup((__be16 *)&rtas_data_buf[8]);
}
}
spin_unlock(&rtas_data_buf_lock);
} while (rtas_busy_delay(call_status));
if (call_status != 0) {
pr_err("Error calling get-system-parameter %d\n",
call_status);
} else {
len = be16_to_cpup((__be16 *)&rtas_data_buf[0]);
if (len < 8)
goto out;
ntypes = be16_to_cpup((__be16 *)&rtas_data_buf[2]);
if (!ntypes)
goto out;
phys_sockets = be16_to_cpup((__be16 *)&rtas_data_buf[4]);
phys_chipspersocket = be16_to_cpup((__be16 *)&rtas_data_buf[6]);
phys_coresperchip = be16_to_cpup((__be16 *)&rtas_data_buf[8]);
}
out:
spin_unlock(&rtas_data_buf_lock);
}
/* Domains for which more than one result element are returned for each event. */

View File

@@ -164,6 +164,20 @@ static unsigned long single_gpci_request(u32 req, u32 starting_index,
ret = plpar_hcall_norets(H_GET_PERF_COUNTER_INFO,
virt_to_phys(arg), HGPCI_REQ_BUFFER_SIZE);
/*
* ret value as 'H_PARAMETER' with detail_rc as 'GEN_BUF_TOO_SMALL',
* specifies that the current buffer size cannot accommodate
* all the information and a partial buffer returned.
* Since in this function we are only accessing data for a given starting index,
* we don't need to accommodate whole data and can get required count by
* accessing first entry data.
* Hence hcall fails only incase the ret value is other than H_SUCCESS or
* H_PARAMETER with detail_rc value as GEN_BUF_TOO_SMALL(0x1B).
*/
if (ret == H_PARAMETER && be32_to_cpu(arg->params.detail_rc) == 0x1B)
ret = 0;
if (ret) {
pr_devel("hcall failed: 0x%lx\n", ret);
goto out;
@@ -228,6 +242,7 @@ static int h_gpci_event_init(struct perf_event *event)
{
u64 count;
u8 length;
unsigned long ret;
/* Not our event */
if (event->attr.type != event->pmu->type)
@@ -258,13 +273,23 @@ static int h_gpci_event_init(struct perf_event *event)
}
/* check if the request works... */
if (single_gpci_request(event_get_request(event),
ret = single_gpci_request(event_get_request(event),
event_get_starting_index(event),
event_get_secondary_index(event),
event_get_counter_info_version(event),
event_get_offset(event),
length,
&count)) {
&count);
/*
* ret value as H_AUTHORITY implies that partition is not permitted to retrieve
* performance information, and required to set
* "Enable Performance Information Collection" option.
*/
if (ret == H_AUTHORITY)
return -EPERM;
if (ret) {
pr_devel("gpci hcall failed\n");
return -EINVAL;
}

View File

@@ -100,9 +100,6 @@ static void __init linkstation_init_IRQ(void)
mpic_init(mpic);
}
extern void avr_uart_configure(void);
extern void avr_uart_send(const char);
static void __noreturn linkstation_restart(char *cmd)
{
local_irq_disable();

View File

@@ -156,4 +156,7 @@ int mpc10x_disable_store_gathering(struct pci_controller *hose);
/* For MPC107 boards that use the built-in openpic */
void mpc10x_set_openpic(void);
void avr_uart_configure(void);
void avr_uart_send(const char c);
#endif /* __PPC_KERNEL_MPC10X_H */

View File

@@ -2334,7 +2334,8 @@ static void pnv_ioda_setup_pe_res(struct pnv_ioda_pe *pe,
int index;
int64_t rc;
if (!res || !res->flags || res->start > res->end)
if (!res || !res->flags || res->start > res->end ||
res->flags & IORESOURCE_UNSET)
return;
if (res->flags & IORESOURCE_IO) {

View File

@@ -1434,22 +1434,22 @@ static inline void __init check_lp_set_hblkrm(unsigned int lp,
void __init pseries_lpar_read_hblkrm_characteristics(void)
{
const s32 token = rtas_token("ibm,get-system-parameter");
unsigned char local_buffer[SPLPAR_TLB_BIC_MAXLENGTH];
int call_status, len, idx, bpsize;
if (!firmware_has_feature(FW_FEATURE_BLOCK_REMOVE))
return;
spin_lock(&rtas_data_buf_lock);
memset(rtas_data_buf, 0, RTAS_DATA_BUF_SIZE);
call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
NULL,
SPLPAR_TLB_BIC_TOKEN,
__pa(rtas_data_buf),
RTAS_DATA_BUF_SIZE);
memcpy(local_buffer, rtas_data_buf, SPLPAR_TLB_BIC_MAXLENGTH);
local_buffer[SPLPAR_TLB_BIC_MAXLENGTH - 1] = '\0';
spin_unlock(&rtas_data_buf_lock);
do {
spin_lock(&rtas_data_buf_lock);
memset(rtas_data_buf, 0, RTAS_DATA_BUF_SIZE);
call_status = rtas_call(token, 3, 1, NULL, SPLPAR_TLB_BIC_TOKEN,
__pa(rtas_data_buf), RTAS_DATA_BUF_SIZE);
memcpy(local_buffer, rtas_data_buf, SPLPAR_TLB_BIC_MAXLENGTH);
local_buffer[SPLPAR_TLB_BIC_MAXLENGTH - 1] = '\0';
spin_unlock(&rtas_data_buf_lock);
} while (rtas_busy_delay(call_status));
if (call_status != 0) {
pr_warn("%s %s Error calling get-system-parameter (0x%x)\n",

View File

@@ -322,6 +322,7 @@ static void parse_mpp_x_data(struct seq_file *m)
*/
static void parse_system_parameter_string(struct seq_file *m)
{
const s32 token = rtas_token("ibm,get-system-parameter");
int call_status;
unsigned char *local_buffer = kmalloc(SPLPAR_MAXLENGTH, GFP_KERNEL);
@@ -331,16 +332,15 @@ static void parse_system_parameter_string(struct seq_file *m)
return;
}
spin_lock(&rtas_data_buf_lock);
memset(rtas_data_buf, 0, SPLPAR_MAXLENGTH);
call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
NULL,
SPLPAR_CHARACTERISTICS_TOKEN,
__pa(rtas_data_buf),
RTAS_DATA_BUF_SIZE);
memcpy(local_buffer, rtas_data_buf, SPLPAR_MAXLENGTH);
local_buffer[SPLPAR_MAXLENGTH - 1] = '\0';
spin_unlock(&rtas_data_buf_lock);
do {
spin_lock(&rtas_data_buf_lock);
memset(rtas_data_buf, 0, SPLPAR_MAXLENGTH);
call_status = rtas_call(token, 3, 1, NULL, SPLPAR_CHARACTERISTICS_TOKEN,
__pa(rtas_data_buf), RTAS_DATA_BUF_SIZE);
memcpy(local_buffer, rtas_data_buf, SPLPAR_MAXLENGTH);
local_buffer[SPLPAR_MAXLENGTH - 1] = '\0';
spin_unlock(&rtas_data_buf_lock);
} while (rtas_busy_delay(call_status));
if (call_status != 0) {
printk(KERN_INFO

View File

@@ -70,6 +70,7 @@
interrupt-parent = <&gpio>;
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
interrupt-controller;
#interrupt-cells = <2>;
regulators {
vdd_bcore1: bcore1 {

View File

@@ -128,7 +128,7 @@
#define FUNCT3_C_J 0xa000
#define FUNCT3_C_JAL 0x2000
#define FUNCT4_C_JR 0x8000
#define FUNCT4_C_JALR 0xf000
#define FUNCT4_C_JALR 0x9000
#define FUNCT12_SRET 0x10200000

View File

@@ -58,7 +58,7 @@
* Define vmemmap for pfn_to_page & page_to_pfn calls. Needed if kernel
* is configured with CONFIG_SPARSEMEM_VMEMMAP enabled.
*/
#define vmemmap ((struct page *)VMEMMAP_START)
#define vmemmap ((struct page *)VMEMMAP_START - (phys_ram_base >> PAGE_SHIFT))
#define PCI_IO_SIZE SZ_16M
#define PCI_IO_END VMEMMAP_START

View File

@@ -78,6 +78,7 @@ typedef struct dasd_information2_t {
* 0x040: give access to raw eckd data
* 0x080: enable discard support
* 0x100: enable autodisable for IFCC errors (default)
* 0x200: enable requeue of all requests on autoquiesce
*/
#define DASD_FEATURE_READONLY 0x001
#define DASD_FEATURE_USEDIAG 0x002
@@ -88,6 +89,7 @@ typedef struct dasd_information2_t {
#define DASD_FEATURE_USERAW 0x040
#define DASD_FEATURE_DISCARD 0x080
#define DASD_FEATURE_PATH_AUTODISABLE 0x100
#define DASD_FEATURE_REQUEUEQUIESCE 0x200
#define DASD_FEATURE_DEFAULT DASD_FEATURE_PATH_AUTODISABLE
#define DASD_PARTN_BITS 2

View File

@@ -22,7 +22,7 @@ KBUILD_AFLAGS_32 += -m31 -s
KBUILD_CFLAGS_32 := $(filter-out -m64,$(KBUILD_CFLAGS))
KBUILD_CFLAGS_32 += -m31 -fPIC -shared -fno-common -fno-builtin
LDFLAGS_vdso32.so.dbg += -fPIC -shared -soname=linux-vdso32.so.1 \
LDFLAGS_vdso32.so.dbg += -shared -soname=linux-vdso32.so.1 \
--hash-style=both --build-id=sha1 -melf_s390 -T
$(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_32)

View File

@@ -26,7 +26,7 @@ KBUILD_AFLAGS_64 += -m64 -s
KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS))
KBUILD_CFLAGS_64 += -m64 -fPIC -fno-common -fno-builtin
ldflags-y := -fPIC -shared -soname=linux-vdso64.so.1 \
ldflags-y := -shared -soname=linux-vdso64.so.1 \
--hash-style=both --build-id=sha1 -T
$(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64)

View File

@@ -211,13 +211,13 @@ void vtime_flush(struct task_struct *tsk)
virt_timer_expire();
steal = S390_lowcore.steal_timer;
avg_steal = S390_lowcore.avg_steal_timer / 2;
avg_steal = S390_lowcore.avg_steal_timer;
if ((s64) steal > 0) {
S390_lowcore.steal_timer = 0;
account_steal_time(cputime_to_nsecs(steal));
avg_steal += steal;
}
S390_lowcore.avg_steal_timer = avg_steal;
S390_lowcore.avg_steal_timer = avg_steal / 2;
}
static u64 vtime_delta(void)

View File

@@ -228,7 +228,7 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res,
/* combine single writes by using store-block insn */
void __iowrite64_copy(void __iomem *to, const void *from, size_t count)
{
zpci_memcpy_toio(to, from, count);
zpci_memcpy_toio(to, from, count * 8);
}
static void __iomem *__ioremap(phys_addr_t addr, size_t size, pgprot_t prot)

View File

@@ -696,7 +696,7 @@ err1:
return err;
}
static const struct of_device_id grpci1_of_match[] __initconst = {
static const struct of_device_id grpci1_of_match[] = {
{
.name = "GAISLER_PCIFBRG",
},

View File

@@ -887,7 +887,7 @@ err1:
return err;
}
static const struct of_device_id grpci2_of_match[] __initconst = {
static const struct of_device_id grpci2_of_match[] = {
{
.name = "GAISLER_GRPCI2",
},

View File

@@ -207,6 +207,8 @@ extern void srso_alias_untrain_ret(void);
extern void entry_untrain_ret(void);
extern void entry_ibpb(void);
extern void (*x86_return_thunk)(void);
#ifdef CONFIG_RETPOLINE
typedef u8 retpoline_thunk_t[RETPOLINE_THUNK_SIZE];

View File

@@ -95,25 +95,41 @@ union text_poke_insn {
} __attribute__((packed));
};
static __always_inline
void __text_gen_insn(void *buf, u8 opcode, const void *addr, const void *dest, int size)
{
union text_poke_insn *insn = buf;
BUG_ON(size < text_opcode_size(opcode));
/*
* Hide the addresses to avoid the compiler folding in constants when
* referencing code, these can mess up annotations like
* ANNOTATE_NOENDBR.
*/
OPTIMIZER_HIDE_VAR(insn);
OPTIMIZER_HIDE_VAR(addr);
OPTIMIZER_HIDE_VAR(dest);
insn->opcode = opcode;
if (size > 1) {
insn->disp = (long)dest - (long)(addr + size);
if (size == 2) {
/*
* Ensure that for JMP8 the displacement
* actually fits the signed byte.
*/
BUG_ON((insn->disp >> 31) != (insn->disp >> 7));
}
}
}
static __always_inline
void *text_gen_insn(u8 opcode, const void *addr, const void *dest)
{
static union text_poke_insn insn; /* per instance */
int size = text_opcode_size(opcode);
insn.opcode = opcode;
if (size > 1) {
insn.disp = (long)dest - (long)(addr + size);
if (size == 2) {
/*
* Ensure that for JMP9 the displacement
* actually fits the signed byte.
*/
BUG_ON((insn.disp >> 31) != (insn.disp >> 7));
}
}
__text_gen_insn(&insn, opcode, addr, dest, text_opcode_size(opcode));
return &insn.text;
}

View File

@@ -4,6 +4,7 @@
#include <linux/seqlock.h>
#include <uapi/asm/vsyscall.h>
#include <asm/page_types.h>
#ifdef CONFIG_X86_VSYSCALL_EMULATION
extern void map_vsyscall(void);
@@ -24,4 +25,13 @@ static inline bool emulate_vsyscall(unsigned long error_code,
}
#endif
/*
* The (legacy) vsyscall page is the long page in the kernel portion
* of the address space that has user-accessible permissions.
*/
static inline bool is_vsyscall_vaddr(unsigned long vaddr)
{
return unlikely((vaddr & PAGE_MASK) == VSYSCALL_ADDR);
}
#endif /* _ASM_X86_VSYSCALL_H */

View File

@@ -521,6 +521,7 @@ void __init_or_module noinline apply_retpolines(s32 *start, s32 *end)
}
#ifdef CONFIG_RETHUNK
/*
* Rewrite the compiler generated return thunk tail-calls.
*
@@ -536,14 +537,18 @@ static int patch_return(void *addr, struct insn *insn, u8 *bytes)
{
int i = 0;
if (cpu_feature_enabled(X86_FEATURE_RETHUNK))
return -1;
if (cpu_feature_enabled(X86_FEATURE_RETHUNK)) {
if (x86_return_thunk == __x86_return_thunk)
return -1;
bytes[i++] = RET_INSN_OPCODE;
i = JMP32_INSN_SIZE;
__text_gen_insn(bytes, JMP32_INSN_OPCODE, addr, x86_return_thunk, i);
} else {
bytes[i++] = RET_INSN_OPCODE;
}
for (; i < insn->length;)
bytes[i++] = INT3_INSN_OPCODE;
return i;
}

View File

@@ -181,6 +181,90 @@ static bool bad_spectre_microcode(struct cpuinfo_x86 *c)
return false;
}
#define MSR_IA32_TME_ACTIVATE 0x982
/* Helpers to access TME_ACTIVATE MSR */
#define TME_ACTIVATE_LOCKED(x) (x & 0x1)
#define TME_ACTIVATE_ENABLED(x) (x & 0x2)
#define TME_ACTIVATE_POLICY(x) ((x >> 4) & 0xf) /* Bits 7:4 */
#define TME_ACTIVATE_POLICY_AES_XTS_128 0
#define TME_ACTIVATE_KEYID_BITS(x) ((x >> 32) & 0xf) /* Bits 35:32 */
#define TME_ACTIVATE_CRYPTO_ALGS(x) ((x >> 48) & 0xffff) /* Bits 63:48 */
#define TME_ACTIVATE_CRYPTO_AES_XTS_128 1
/* Values for mktme_status (SW only construct) */
#define MKTME_ENABLED 0
#define MKTME_DISABLED 1
#define MKTME_UNINITIALIZED 2
static int mktme_status = MKTME_UNINITIALIZED;
static void detect_tme_early(struct cpuinfo_x86 *c)
{
u64 tme_activate, tme_policy, tme_crypto_algs;
int keyid_bits = 0, nr_keyids = 0;
static u64 tme_activate_cpu0 = 0;
rdmsrl(MSR_IA32_TME_ACTIVATE, tme_activate);
if (mktme_status != MKTME_UNINITIALIZED) {
if (tme_activate != tme_activate_cpu0) {
/* Broken BIOS? */
pr_err_once("x86/tme: configuration is inconsistent between CPUs\n");
pr_err_once("x86/tme: MKTME is not usable\n");
mktme_status = MKTME_DISABLED;
/* Proceed. We may need to exclude bits from x86_phys_bits. */
}
} else {
tme_activate_cpu0 = tme_activate;
}
if (!TME_ACTIVATE_LOCKED(tme_activate) || !TME_ACTIVATE_ENABLED(tme_activate)) {
pr_info_once("x86/tme: not enabled by BIOS\n");
mktme_status = MKTME_DISABLED;
return;
}
if (mktme_status != MKTME_UNINITIALIZED)
goto detect_keyid_bits;
pr_info("x86/tme: enabled by BIOS\n");
tme_policy = TME_ACTIVATE_POLICY(tme_activate);
if (tme_policy != TME_ACTIVATE_POLICY_AES_XTS_128)
pr_warn("x86/tme: Unknown policy is active: %#llx\n", tme_policy);
tme_crypto_algs = TME_ACTIVATE_CRYPTO_ALGS(tme_activate);
if (!(tme_crypto_algs & TME_ACTIVATE_CRYPTO_AES_XTS_128)) {
pr_err("x86/mktme: No known encryption algorithm is supported: %#llx\n",
tme_crypto_algs);
mktme_status = MKTME_DISABLED;
}
detect_keyid_bits:
keyid_bits = TME_ACTIVATE_KEYID_BITS(tme_activate);
nr_keyids = (1UL << keyid_bits) - 1;
if (nr_keyids) {
pr_info_once("x86/mktme: enabled by BIOS\n");
pr_info_once("x86/mktme: %d KeyIDs available\n", nr_keyids);
} else {
pr_info_once("x86/mktme: disabled by BIOS\n");
}
if (mktme_status == MKTME_UNINITIALIZED) {
/* MKTME is usable */
mktme_status = MKTME_ENABLED;
}
/*
* KeyID bits effectively lower the number of physical address
* bits. Update cpuinfo_x86::x86_phys_bits accordingly.
*/
c->x86_phys_bits -= keyid_bits;
}
static void early_init_intel(struct cpuinfo_x86 *c)
{
u64 misc_enable;
@@ -332,6 +416,13 @@ static void early_init_intel(struct cpuinfo_x86 *c)
*/
if (detect_extended_topology_early(c) < 0)
detect_ht_early(c);
/*
* Adjust the number of physical bits early because it affects the
* valid bits of the MTRR mask registers.
*/
if (cpu_has(c, X86_FEATURE_TME))
detect_tme_early(c);
}
static void bsp_init_intel(struct cpuinfo_x86 *c)
@@ -492,90 +583,6 @@ static void srat_detect_node(struct cpuinfo_x86 *c)
#endif
}
#define MSR_IA32_TME_ACTIVATE 0x982
/* Helpers to access TME_ACTIVATE MSR */
#define TME_ACTIVATE_LOCKED(x) (x & 0x1)
#define TME_ACTIVATE_ENABLED(x) (x & 0x2)
#define TME_ACTIVATE_POLICY(x) ((x >> 4) & 0xf) /* Bits 7:4 */
#define TME_ACTIVATE_POLICY_AES_XTS_128 0
#define TME_ACTIVATE_KEYID_BITS(x) ((x >> 32) & 0xf) /* Bits 35:32 */
#define TME_ACTIVATE_CRYPTO_ALGS(x) ((x >> 48) & 0xffff) /* Bits 63:48 */
#define TME_ACTIVATE_CRYPTO_AES_XTS_128 1
/* Values for mktme_status (SW only construct) */
#define MKTME_ENABLED 0
#define MKTME_DISABLED 1
#define MKTME_UNINITIALIZED 2
static int mktme_status = MKTME_UNINITIALIZED;
static void detect_tme(struct cpuinfo_x86 *c)
{
u64 tme_activate, tme_policy, tme_crypto_algs;
int keyid_bits = 0, nr_keyids = 0;
static u64 tme_activate_cpu0 = 0;
rdmsrl(MSR_IA32_TME_ACTIVATE, tme_activate);
if (mktme_status != MKTME_UNINITIALIZED) {
if (tme_activate != tme_activate_cpu0) {
/* Broken BIOS? */
pr_err_once("x86/tme: configuration is inconsistent between CPUs\n");
pr_err_once("x86/tme: MKTME is not usable\n");
mktme_status = MKTME_DISABLED;
/* Proceed. We may need to exclude bits from x86_phys_bits. */
}
} else {
tme_activate_cpu0 = tme_activate;
}
if (!TME_ACTIVATE_LOCKED(tme_activate) || !TME_ACTIVATE_ENABLED(tme_activate)) {
pr_info_once("x86/tme: not enabled by BIOS\n");
mktme_status = MKTME_DISABLED;
return;
}
if (mktme_status != MKTME_UNINITIALIZED)
goto detect_keyid_bits;
pr_info("x86/tme: enabled by BIOS\n");
tme_policy = TME_ACTIVATE_POLICY(tme_activate);
if (tme_policy != TME_ACTIVATE_POLICY_AES_XTS_128)
pr_warn("x86/tme: Unknown policy is active: %#llx\n", tme_policy);
tme_crypto_algs = TME_ACTIVATE_CRYPTO_ALGS(tme_activate);
if (!(tme_crypto_algs & TME_ACTIVATE_CRYPTO_AES_XTS_128)) {
pr_err("x86/mktme: No known encryption algorithm is supported: %#llx\n",
tme_crypto_algs);
mktme_status = MKTME_DISABLED;
}
detect_keyid_bits:
keyid_bits = TME_ACTIVATE_KEYID_BITS(tme_activate);
nr_keyids = (1UL << keyid_bits) - 1;
if (nr_keyids) {
pr_info_once("x86/mktme: enabled by BIOS\n");
pr_info_once("x86/mktme: %d KeyIDs available\n", nr_keyids);
} else {
pr_info_once("x86/mktme: disabled by BIOS\n");
}
if (mktme_status == MKTME_UNINITIALIZED) {
/* MKTME is usable */
mktme_status = MKTME_ENABLED;
}
/*
* KeyID bits effectively lower the number of physical address
* bits. Update cpuinfo_x86::x86_phys_bits accordingly.
*/
c->x86_phys_bits -= keyid_bits;
}
static void init_cpuid_fault(struct cpuinfo_x86 *c)
{
u64 msr;
@@ -712,9 +719,6 @@ static void init_intel(struct cpuinfo_x86 *c)
init_ia32_feat_ctl(c);
if (cpu_has(c, X86_FEATURE_TME))
detect_tme(c);
init_intel_misc_features(c);
split_lock_init();

View File

@@ -246,12 +246,13 @@ static int __restore_fpregs_from_user(void __user *buf, u64 xrestore,
* Attempt to restore the FPU registers directly from user memory.
* Pagefaults are handled and any errors returned are fatal.
*/
static int restore_fpregs_from_user(void __user *buf, u64 xrestore,
bool fx_only, unsigned int size)
static int restore_fpregs_from_user(void __user *buf, u64 xrestore, bool fx_only)
{
struct fpu *fpu = &current->thread.fpu;
int ret;
/* Restore enabled features only. */
xrestore &= xfeatures_mask_all & XFEATURE_MASK_USER_SUPPORTED;
retry:
fpregs_lock();
pagefault_disable();
@@ -278,7 +279,7 @@ retry:
if (ret != -EFAULT)
return -EINVAL;
if (!fault_in_readable(buf, size))
if (!fault_in_readable(buf, fpu_user_xstate_size))
goto retry;
return -EFAULT;
}
@@ -303,7 +304,6 @@ retry:
static int __fpu_restore_sig(void __user *buf, void __user *buf_fx,
bool ia32_fxstate)
{
int state_size = fpu_kernel_xstate_size;
struct task_struct *tsk = current;
struct fpu *fpu = &tsk->thread.fpu;
struct user_i387_ia32_struct env;
@@ -319,7 +319,6 @@ static int __fpu_restore_sig(void __user *buf, void __user *buf_fx,
return ret;
fx_only = !fx_sw_user.magic1;
state_size = fx_sw_user.xstate_size;
user_xfeatures = fx_sw_user.xfeatures;
} else {
user_xfeatures = XFEATURE_MASK_FPSSE;
@@ -332,8 +331,7 @@ static int __fpu_restore_sig(void __user *buf, void __user *buf_fx,
* faults. If it does, fall back to the slow path below, going
* through the kernel buffer with the enabled pagefault handler.
*/
return restore_fpregs_from_user(buf_fx, user_xfeatures, fx_only,
state_size);
return restore_fpregs_from_user(buf_fx, user_xfeatures, fx_only);
}
/*

View File

@@ -367,10 +367,8 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size)
goto fail;
ip = trampoline + size;
/* The trampoline ends with ret(q) */
if (cpu_feature_enabled(X86_FEATURE_RETHUNK))
memcpy(ip, text_gen_insn(JMP32_INSN_OPCODE, ip, &__x86_return_thunk), JMP32_INSN_SIZE);
__text_gen_insn(ip, JMP32_INSN_OPCODE, ip, x86_return_thunk, JMP32_INSN_SIZE);
else
memcpy(ip, retq, sizeof(retq));

View File

@@ -58,29 +58,12 @@ static void paravirt_BUG(void)
BUG();
}
struct branch {
unsigned char opcode;
u32 delta;
} __attribute__((packed));
static unsigned paravirt_patch_call(void *insn_buff, const void *target,
unsigned long addr, unsigned len)
{
const int call_len = 5;
struct branch *b = insn_buff;
unsigned long delta = (unsigned long)target - (addr+call_len);
if (len < call_len) {
pr_warn("paravirt: Failed to patch indirect CALL at %ps\n", (void *)addr);
/* Kernel might not be viable if patching fails, bail out: */
BUG_ON(1);
}
b->opcode = 0xe8; /* call */
b->delta = delta;
BUILD_BUG_ON(sizeof(*b) != call_len);
return call_len;
__text_gen_insn(insn_buff, CALL_INSN_OPCODE,
(void *)addr, target, CALL_INSN_SIZE);
return CALL_INSN_SIZE;
}
#ifdef CONFIG_PARAVIRT_XXL

View File

@@ -52,7 +52,7 @@ static void __ref __static_call_transform(void *insn, enum insn_type type,
case RET:
if (cpu_feature_enabled(X86_FEATURE_RETHUNK))
code = text_gen_insn(JMP32_INSN_OPCODE, insn, &__x86_return_thunk);
code = text_gen_insn(JMP32_INSN_OPCODE, insn, x86_return_thunk);
else
code = &retinsn;
break;

View File

@@ -787,15 +787,6 @@ show_signal_msg(struct pt_regs *regs, unsigned long error_code,
show_opcodes(regs, loglvl);
}
/*
* The (legacy) vsyscall page is the long page in the kernel portion
* of the address space that has user-accessible permissions.
*/
static bool is_vsyscall_vaddr(unsigned long vaddr)
{
return unlikely((vaddr & PAGE_MASK) == VSYSCALL_ADDR);
}
static void
__bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
unsigned long address, u32 pkey, int si_code)

View File

@@ -3,6 +3,8 @@
#include <linux/uaccess.h>
#include <linux/kernel.h>
#include <asm/vsyscall.h>
#ifdef CONFIG_X86_64
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
{
@@ -15,6 +17,14 @@ bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
if (vaddr < TASK_SIZE_MAX + PAGE_SIZE)
return false;
/*
* Reading from the vsyscall page may cause an unhandled fault in
* certain cases. Though it is at an address above TASK_SIZE_MAX, it is
* usually considered as a user space address.
*/
if (is_vsyscall_vaddr(vaddr))
return false;
/*
* Allow everything during early boot before 'x86_virt_bits'
* is initialized. Needed for instruction decoding in early

View File

@@ -411,7 +411,7 @@ static void emit_return(u8 **pprog, u8 *ip)
u8 *prog = *pprog;
if (cpu_feature_enabled(X86_FEATURE_RETHUNK)) {
emit_jump(&prog, &__x86_return_thunk, ip);
emit_jump(&prog, x86_return_thunk, ip);
} else {
EMIT1(0xC3); /* ret */
if (IS_ENABLED(CONFIG_SLS))

View File

@@ -599,6 +599,14 @@ static void print_absolute_relocs(void)
if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) {
continue;
}
/*
* Do not perform relocations in .notes section; any
* values there are meant for pre-boot consumption (e.g.
* startup_xen).
*/
if (sec_applies->shdr.sh_type == SHT_NOTE) {
continue;
}
sh_symtab = sec_symtab->symtab;
sym_strtab = sec_symtab->link->strtab;
for (j = 0; j < sec->shdr.sh_size/sizeof(Elf_Rel); j++) {

View File

@@ -65,6 +65,8 @@ int xen_smp_intr_init(unsigned int cpu)
char *resched_name, *callfunc_name, *debug_name;
resched_name = kasprintf(GFP_KERNEL, "resched%d", cpu);
if (!resched_name)
goto fail_mem;
per_cpu(xen_resched_irq, cpu).name = resched_name;
rc = bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
cpu,
@@ -77,6 +79,8 @@ int xen_smp_intr_init(unsigned int cpu)
per_cpu(xen_resched_irq, cpu).irq = rc;
callfunc_name = kasprintf(GFP_KERNEL, "callfunc%d", cpu);
if (!callfunc_name)
goto fail_mem;
per_cpu(xen_callfunc_irq, cpu).name = callfunc_name;
rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_VECTOR,
cpu,
@@ -90,6 +94,9 @@ int xen_smp_intr_init(unsigned int cpu)
if (!xen_fifo_events) {
debug_name = kasprintf(GFP_KERNEL, "debug%d", cpu);
if (!debug_name)
goto fail_mem;
per_cpu(xen_debug_irq, cpu).name = debug_name;
rc = bind_virq_to_irqhandler(VIRQ_DEBUG, cpu,
xen_debug_interrupt,
@@ -101,6 +108,9 @@ int xen_smp_intr_init(unsigned int cpu)
}
callfunc_name = kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu);
if (!callfunc_name)
goto fail_mem;
per_cpu(xen_callfuncsingle_irq, cpu).name = callfunc_name;
rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR,
cpu,
@@ -114,6 +124,8 @@ int xen_smp_intr_init(unsigned int cpu)
return 0;
fail_mem:
rc = -ENOMEM;
fail:
xen_smp_intr_free(cpu);
return rc;

View File

@@ -66,6 +66,7 @@ enum opal_response_token {
#define SHORT_ATOM_BYTE 0xBF
#define MEDIUM_ATOM_BYTE 0xDF
#define LONG_ATOM_BYTE 0xE3
#define EMPTY_ATOM_BYTE 0xFF
#define OPAL_INVAL_PARAM 12
#define OPAL_MANUFACTURED_INACTIVE 0x08

View File

@@ -895,16 +895,20 @@ static int response_parse(const u8 *buf, size_t length,
token_length = response_parse_medium(iter, pos);
else if (pos[0] <= LONG_ATOM_BYTE) /* long atom */
token_length = response_parse_long(iter, pos);
else if (pos[0] == EMPTY_ATOM_BYTE) /* empty atom */
token_length = 1;
else /* TOKEN */
token_length = response_parse_token(iter, pos);
if (token_length < 0)
return token_length;
if (pos[0] != EMPTY_ATOM_BYTE)
num_entries++;
pos += token_length;
total -= token_length;
iter++;
num_entries++;
}
resp->num = num_entries;

View File

@@ -77,6 +77,15 @@ static const struct dmi_system_id dmi_lid_quirks[] = {
},
.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_DISABLED,
},
{
/* Nextbook Ares 8A tablet, _LID device always reports lid closed */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"),
DMI_MATCH(DMI_BIOS_VERSION, "M882"),
},
.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_DISABLED,
},
{
/*
* Lenovo Yoga 9 14ITL5, initial notification of the LID device

View File

@@ -1424,6 +1424,8 @@ int acpi_processor_power_exit(struct acpi_processor *pr)
acpi_processor_registered--;
if (acpi_processor_registered == 0)
cpuidle_unregister_driver(&acpi_idle_driver);
kfree(dev);
}
pr->flags.power_setup_done = 0;

View File

@@ -639,6 +639,7 @@ acpi_fwnode_get_named_child_node(const struct fwnode_handle *fwnode,
* @index: Index of the reference to return
* @num_args: Maximum number of arguments after each reference
* @args: Location to store the returned reference with optional arguments
* (may be NULL)
*
* Find property with @name, verifify that it is a package containing at least
* one object reference and if so, store the ACPI device object pointer to the
@@ -697,6 +698,9 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
if (ret)
return ret == -ENODEV ? -EINVAL : ret;
if (!args)
return 0;
args->fwnode = acpi_fwnode_handle(device);
args->nargs = 0;
return 0;

View File

@@ -421,6 +421,41 @@ static const struct dmi_system_id asus_laptop[] = {
DMI_MATCH(DMI_BOARD_NAME, "K3502ZA"),
},
},
{
.ident = "Asus Vivobook S5402ZA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "S5402ZA"),
},
},
{
.ident = "Asus Vivobook S5602ZA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "S5602ZA"),
},
},
{
.ident = "Asus ExpertBook B1502CBA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "B1502CBA"),
},
},
{
.ident = "Asus ExpertBook B2402CBA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "B2402CBA"),
},
},
{
.ident = "Asus ExpertBook B2502",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "B2502CBA"),
},
},
{ }
};
@@ -511,6 +546,39 @@ static const struct dmi_system_id lg_laptop[] = {
DMI_MATCH(DMI_BOARD_NAME, "17U70P"),
},
},
{
/* Infinity E15-5A165-BM */
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "GM5RG1E0009COM"),
},
},
{
/* Infinity E15-5A305-1M */
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "GM5RGEE0016COM"),
},
},
{
/* Lunnen Ground 15 / AMD Ryzen 5 5500U */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Lunnen"),
DMI_MATCH(DMI_BOARD_NAME, "LLL5DAW"),
},
},
{
/* Lunnen Ground 16 / AMD Ryzen 7 5800U */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Lunnen"),
DMI_MATCH(DMI_BOARD_NAME, "LL6FA"),
},
},
{
/* MAIBENBEN X577 */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "MAIBENBEN"),
DMI_MATCH(DMI_BOARD_NAME, "X577"),
},
},
{ }
};

View File

@@ -315,18 +315,14 @@ static int acpi_scan_device_check(struct acpi_device *adev)
* again).
*/
if (adev->handler) {
dev_warn(&adev->dev, "Already enumerated\n");
return -EALREADY;
dev_dbg(&adev->dev, "Already enumerated\n");
return 0;
}
error = acpi_bus_scan(adev->handle);
if (error) {
dev_warn(&adev->dev, "Namespace scan failure\n");
return error;
}
if (!adev->handler) {
dev_warn(&adev->dev, "Enumeration failure\n");
error = -ENODEV;
}
} else {
error = acpi_scan_device_not_present(adev);
}

View File

@@ -341,6 +341,40 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "82BK"),
},
},
{
.callback = video_detect_force_native,
/* Lenovo ThinkPad X131e (3371 AMD version) */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "3371"),
},
},
{
.callback = video_detect_force_native,
/* Apple iMac11,3 */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "iMac11,3"),
},
},
{
/* https://gitlab.freedesktop.org/drm/amd/-/issues/1838 */
.callback = video_detect_force_native,
/* Apple iMac12,1 */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "iMac12,1"),
},
},
{
/* https://gitlab.freedesktop.org/drm/amd/-/issues/2753 */
.callback = video_detect_force_native,
/* Apple iMac12,2 */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "iMac12,2"),
},
},
{
/* https://bugzilla.redhat.com/show_bug.cgi?id=1217249 */
.callback = video_detect_force_native,

View File

@@ -49,6 +49,7 @@ enum {
enum board_ids {
/* board IDs by feature in alphabetical order */
board_ahci,
board_ahci_43bit_dma,
board_ahci_ign_iferr,
board_ahci_low_power,
board_ahci_no_debounce_delay,
@@ -129,6 +130,13 @@ static const struct ata_port_info ahci_port_info[] = {
.udma_mask = ATA_UDMA6,
.port_ops = &ahci_ops,
},
[board_ahci_43bit_dma] = {
AHCI_HFLAGS (AHCI_HFLAG_43BIT_ONLY),
.flags = AHCI_FLAG_COMMON,
.pio_mask = ATA_PIO4,
.udma_mask = ATA_UDMA6,
.port_ops = &ahci_ops,
},
[board_ahci_ign_iferr] = {
AHCI_HFLAGS (AHCI_HFLAG_IGN_IRQ_IF_ERR),
.flags = AHCI_FLAG_COMMON,
@@ -598,11 +606,11 @@ static const struct pci_device_id ahci_pci_tbl[] = {
{ PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */
{ PCI_VDEVICE(PROMISE, 0x3781), board_ahci }, /* FastTrak TX8660 ahci-mode */
/* Asmedia */
/* ASMedia */
{ PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */
{ PCI_VDEVICE(ASMEDIA, 0x0602), board_ahci }, /* ASM1060 */
{ PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci }, /* ASM1061 */
{ PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1062 */
{ PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci_43bit_dma }, /* ASM1061 */
{ PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci_43bit_dma }, /* ASM1061/1062 */
{ PCI_VDEVICE(ASMEDIA, 0x0621), board_ahci }, /* ASM1061R */
{ PCI_VDEVICE(ASMEDIA, 0x0622), board_ahci }, /* ASM1062R */
@@ -658,6 +666,11 @@ MODULE_PARM_DESC(mobile_lpm_policy, "Default LPM policy for mobile chipsets");
static void ahci_pci_save_initial_config(struct pci_dev *pdev,
struct ahci_host_priv *hpriv)
{
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && pdev->device == 0x1166) {
dev_info(&pdev->dev, "ASM1166 has only six ports\n");
hpriv->saved_port_map = 0x3f;
}
if (pdev->vendor == PCI_VENDOR_ID_JMICRON && pdev->device == 0x2361) {
dev_info(&pdev->dev, "JMB361 has only one port\n");
hpriv->force_port_map = 1;
@@ -950,11 +963,20 @@ static int ahci_pci_device_resume(struct device *dev)
#endif /* CONFIG_PM */
static int ahci_configure_dma_masks(struct pci_dev *pdev, int using_dac)
static int ahci_configure_dma_masks(struct pci_dev *pdev,
struct ahci_host_priv *hpriv)
{
const int dma_bits = using_dac ? 64 : 32;
int dma_bits;
int rc;
if (hpriv->cap & HOST_CAP_64) {
dma_bits = 64;
if (hpriv->flags & AHCI_HFLAG_43BIT_ONLY)
dma_bits = 43;
} else {
dma_bits = 32;
}
/*
* If the device fixup already set the dma_mask to some non-standard
* value, don't extend it here. This happens on STA2X11, for example.
@@ -1932,7 +1954,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
ahci_gtf_filter_workaround(host);
/* initialize adapter */
rc = ahci_configure_dma_masks(pdev, hpriv->cap & HOST_CAP_64);
rc = ahci_configure_dma_masks(pdev, hpriv);
if (rc)
return rc;

View File

@@ -39,7 +39,6 @@
enum {
AHCI_MAX_PORTS = 32,
AHCI_MAX_CLKS = 5,
AHCI_MAX_SG = 168, /* hardware max is 64K */
AHCI_DMA_BOUNDARY = 0xffffffff,
AHCI_MAX_CMDS = 32,
@@ -244,6 +243,7 @@ enum {
AHCI_HFLAG_IGN_NOTSUPP_POWER_ON = BIT(27), /* ignore -EOPNOTSUPP
from phy_power_on() */
AHCI_HFLAG_NO_SXS = BIT(28), /* SXS not supported */
AHCI_HFLAG_43BIT_ONLY = BIT(29), /* 43bit DMA addr limit */
/* ap->flags bits */
@@ -342,7 +342,9 @@ struct ahci_host_priv {
u32 em_msg_type; /* EM message type */
u32 remapped_nvme; /* NVMe remapped device count */
bool got_runtime_pm; /* Did we do pm_runtime_get? */
struct clk *clks[AHCI_MAX_CLKS]; /* Optional */
unsigned int n_clks;
struct clk_bulk_data *clks; /* Optional */
unsigned int f_rsts;
struct reset_control *rsts; /* Optional */
struct regulator **target_pwrs; /* Optional */
struct regulator *ahci_regulator;/* Optional */

View File

@@ -88,7 +88,6 @@ struct ceva_ahci_priv {
u32 axicc;
bool is_cci_enabled;
int flags;
struct reset_control *rst;
};
static unsigned int ceva_ahci_read_id(struct ata_device *dev,
@@ -189,6 +188,60 @@ static struct scsi_host_template ahci_platform_sht = {
AHCI_SHT(DRV_NAME),
};
static int ceva_ahci_platform_enable_resources(struct ahci_host_priv *hpriv)
{
int rc, i;
rc = ahci_platform_enable_regulators(hpriv);
if (rc)
return rc;
rc = ahci_platform_enable_clks(hpriv);
if (rc)
goto disable_regulator;
/* Assert the controller reset */
rc = ahci_platform_assert_rsts(hpriv);
if (rc)
goto disable_clks;
for (i = 0; i < hpriv->nports; i++) {
rc = phy_init(hpriv->phys[i]);
if (rc)
goto disable_rsts;
}
/* De-assert the controller reset */
ahci_platform_deassert_rsts(hpriv);
for (i = 0; i < hpriv->nports; i++) {
rc = phy_power_on(hpriv->phys[i]);
if (rc) {
phy_exit(hpriv->phys[i]);
goto disable_phys;
}
}
return 0;
disable_rsts:
ahci_platform_deassert_rsts(hpriv);
disable_phys:
while (--i >= 0) {
phy_power_off(hpriv->phys[i]);
phy_exit(hpriv->phys[i]);
}
disable_clks:
ahci_platform_disable_clks(hpriv);
disable_regulator:
ahci_platform_disable_regulators(hpriv);
return rc;
}
static int ceva_ahci_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
@@ -203,47 +256,19 @@ static int ceva_ahci_probe(struct platform_device *pdev)
return -ENOMEM;
cevapriv->ahci_pdev = pdev;
cevapriv->rst = devm_reset_control_get_optional_exclusive(&pdev->dev,
NULL);
if (IS_ERR(cevapriv->rst))
dev_err_probe(&pdev->dev, PTR_ERR(cevapriv->rst),
"failed to get reset\n");
hpriv = ahci_platform_get_resources(pdev, 0);
if (IS_ERR(hpriv))
return PTR_ERR(hpriv);
if (!cevapriv->rst) {
rc = ahci_platform_enable_resources(hpriv);
if (rc)
return rc;
} else {
int i;
hpriv->rsts = devm_reset_control_get_optional_exclusive(&pdev->dev,
NULL);
if (IS_ERR(hpriv->rsts))
return dev_err_probe(&pdev->dev, PTR_ERR(hpriv->rsts),
"failed to get reset\n");
rc = ahci_platform_enable_clks(hpriv);
if (rc)
return rc;
/* Assert the controller reset */
reset_control_assert(cevapriv->rst);
for (i = 0; i < hpriv->nports; i++) {
rc = phy_init(hpriv->phys[i]);
if (rc)
return rc;
}
/* De-assert the controller reset */
reset_control_deassert(cevapriv->rst);
for (i = 0; i < hpriv->nports; i++) {
rc = phy_power_on(hpriv->phys[i]);
if (rc) {
phy_exit(hpriv->phys[i]);
return rc;
}
}
}
rc = ceva_ahci_platform_enable_resources(hpriv);
if (rc)
return rc;
if (of_property_read_bool(np, "ceva,broken-gen2"))
cevapriv->flags = CEVA_FLAG_BROKEN_GEN2;
@@ -252,52 +277,60 @@ static int ceva_ahci_probe(struct platform_device *pdev)
if (of_property_read_u8_array(np, "ceva,p0-cominit-params",
(u8 *)&cevapriv->pp2c[0], 4) < 0) {
dev_warn(dev, "ceva,p0-cominit-params property not defined\n");
return -EINVAL;
rc = -EINVAL;
goto disable_resources;
}
if (of_property_read_u8_array(np, "ceva,p1-cominit-params",
(u8 *)&cevapriv->pp2c[1], 4) < 0) {
dev_warn(dev, "ceva,p1-cominit-params property not defined\n");
return -EINVAL;
rc = -EINVAL;
goto disable_resources;
}
/* Read OOB timing value for COMWAKE from device-tree*/
if (of_property_read_u8_array(np, "ceva,p0-comwake-params",
(u8 *)&cevapriv->pp3c[0], 4) < 0) {
dev_warn(dev, "ceva,p0-comwake-params property not defined\n");
return -EINVAL;
rc = -EINVAL;
goto disable_resources;
}
if (of_property_read_u8_array(np, "ceva,p1-comwake-params",
(u8 *)&cevapriv->pp3c[1], 4) < 0) {
dev_warn(dev, "ceva,p1-comwake-params property not defined\n");
return -EINVAL;
rc = -EINVAL;
goto disable_resources;
}
/* Read phy BURST timing value from device-tree */
if (of_property_read_u8_array(np, "ceva,p0-burst-params",
(u8 *)&cevapriv->pp4c[0], 4) < 0) {
dev_warn(dev, "ceva,p0-burst-params property not defined\n");
return -EINVAL;
rc = -EINVAL;
goto disable_resources;
}
if (of_property_read_u8_array(np, "ceva,p1-burst-params",
(u8 *)&cevapriv->pp4c[1], 4) < 0) {
dev_warn(dev, "ceva,p1-burst-params property not defined\n");
return -EINVAL;
rc = -EINVAL;
goto disable_resources;
}
/* Read phy RETRY interval timing value from device-tree */
if (of_property_read_u16_array(np, "ceva,p0-retry-params",
(u16 *)&cevapriv->pp5c[0], 2) < 0) {
dev_warn(dev, "ceva,p0-retry-params property not defined\n");
return -EINVAL;
rc = -EINVAL;
goto disable_resources;
}
if (of_property_read_u16_array(np, "ceva,p1-retry-params",
(u16 *)&cevapriv->pp5c[1], 2) < 0) {
dev_warn(dev, "ceva,p1-retry-params property not defined\n");
return -EINVAL;
rc = -EINVAL;
goto disable_resources;
}
/*
@@ -335,7 +368,7 @@ static int __maybe_unused ceva_ahci_resume(struct device *dev)
struct ahci_host_priv *hpriv = host->private_data;
int rc;
rc = ahci_platform_enable_resources(hpriv);
rc = ceva_ahci_platform_enable_resources(hpriv);
if (rc)
return rc;

View File

@@ -163,7 +163,6 @@ static int ahci_da850_probe(struct platform_device *pdev)
struct ahci_host_priv *hpriv;
void __iomem *pwrdn_reg;
struct resource *res;
struct clk *clk;
u32 mpy;
int rc;
@@ -172,36 +171,28 @@ static int ahci_da850_probe(struct platform_device *pdev)
return PTR_ERR(hpriv);
/*
* Internally ahci_platform_get_resources() calls clk_get(dev, NULL)
* when trying to obtain the functional clock. This SATA controller
* uses two clocks for which we specify two connection ids. If we don't
* have the functional clock at this point - call clk_get() again with
* con_id = "fck".
* Internally ahci_platform_get_resources() calls the bulk clocks
* get method or falls back to using a single clk_get_optional().
* This AHCI SATA controller uses two clocks: functional clock
* with "fck" connection id and external reference clock with
* "refclk" id. If we haven't got all of them re-try the clocks
* getting procedure with the explicitly specified ids.
*/
if (!hpriv->clks[0]) {
clk = clk_get(dev, "fck");
if (IS_ERR(clk))
return PTR_ERR(clk);
if (hpriv->n_clks < 2) {
hpriv->clks = devm_kcalloc(dev, 2, sizeof(*hpriv->clks), GFP_KERNEL);
if (!hpriv->clks)
return -ENOMEM;
hpriv->clks[0] = clk;
hpriv->clks[0].id = "fck";
hpriv->clks[1].id = "refclk";
hpriv->n_clks = 2;
rc = devm_clk_bulk_get(dev, hpriv->n_clks, hpriv->clks);
if (rc)
return rc;
}
/*
* The second clock used by ahci-da850 is the external REFCLK. If we
* didn't get it from ahci_platform_get_resources(), let's try to
* specify the con_id in clk_get().
*/
if (!hpriv->clks[1]) {
clk = clk_get(dev, "refclk");
if (IS_ERR(clk)) {
dev_err(dev, "unable to obtain the reference clock");
return -ENODEV;
}
hpriv->clks[1] = clk;
}
mpy = ahci_da850_calculate_mpy(clk_get_rate(hpriv->clks[1]));
mpy = ahci_da850_calculate_mpy(clk_get_rate(hpriv->clks[1].clk));
if (mpy == 0) {
dev_err(dev, "invalid REFCLK multiplier value: 0x%x", mpy);
return -EINVAL;

View File

@@ -69,12 +69,12 @@ static int ahci_dm816_phy_init(struct ahci_host_priv *hpriv, struct device *dev)
* keep-alive clock and the external reference clock. We need the
* rate of the latter to calculate the correct value of MPY bits.
*/
if (!hpriv->clks[1]) {
if (hpriv->n_clks < 2) {
dev_err(dev, "reference clock not supplied\n");
return -EINVAL;
}
refclk_rate = clk_get_rate(hpriv->clks[1]);
refclk_rate = clk_get_rate(hpriv->clks[1].clk);
if ((refclk_rate % 100) != 0) {
dev_err(dev, "reference clock rate must be divisible by 100\n");
return -EINVAL;

View File

@@ -97,28 +97,14 @@ EXPORT_SYMBOL_GPL(ahci_platform_disable_phys);
* ahci_platform_enable_clks - Enable platform clocks
* @hpriv: host private area to store config values
*
* This function enables all the clks found in hpriv->clks, starting at
* index 0. If any clk fails to enable it disables all the clks already
* enabled in reverse order, and then returns an error.
* This function enables all the clks found for the AHCI device.
*
* RETURNS:
* 0 on success otherwise a negative error code
*/
int ahci_platform_enable_clks(struct ahci_host_priv *hpriv)
{
int c, rc;
for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) {
rc = clk_prepare_enable(hpriv->clks[c]);
if (rc)
goto disable_unprepare_clk;
}
return 0;
disable_unprepare_clk:
while (--c >= 0)
clk_disable_unprepare(hpriv->clks[c]);
return rc;
return clk_bulk_prepare_enable(hpriv->n_clks, hpriv->clks);
}
EXPORT_SYMBOL_GPL(ahci_platform_enable_clks);
@@ -126,19 +112,54 @@ EXPORT_SYMBOL_GPL(ahci_platform_enable_clks);
* ahci_platform_disable_clks - Disable platform clocks
* @hpriv: host private area to store config values
*
* This function disables all the clks found in hpriv->clks, in reverse
* order of ahci_platform_enable_clks (starting at the end of the array).
* This function disables all the clocks enabled before
* (bulk-clocks-disable function is supposed to do that in reverse
* from the enabling procedure order).
*/
void ahci_platform_disable_clks(struct ahci_host_priv *hpriv)
{
int c;
for (c = AHCI_MAX_CLKS - 1; c >= 0; c--)
if (hpriv->clks[c])
clk_disable_unprepare(hpriv->clks[c]);
clk_bulk_disable_unprepare(hpriv->n_clks, hpriv->clks);
}
EXPORT_SYMBOL_GPL(ahci_platform_disable_clks);
/**
* ahci_platform_deassert_rsts - Deassert/trigger platform resets
* @hpriv: host private area to store config values
*
* This function deasserts or triggers all the reset lines found for
* the AHCI device.
*
* RETURNS:
* 0 on success otherwise a negative error code
*/
int ahci_platform_deassert_rsts(struct ahci_host_priv *hpriv)
{
if (hpriv->f_rsts & AHCI_PLATFORM_RST_TRIGGER)
return reset_control_reset(hpriv->rsts);
return reset_control_deassert(hpriv->rsts);
}
EXPORT_SYMBOL_GPL(ahci_platform_deassert_rsts);
/**
* ahci_platform_assert_rsts - Assert/rearm platform resets
* @hpriv: host private area to store config values
*
* This function asserts or rearms (for self-deasserting resets) all
* the reset controls found for the AHCI device.
*
* RETURNS:
* 0 on success otherwise a negative error code
*/
int ahci_platform_assert_rsts(struct ahci_host_priv *hpriv)
{
if (hpriv->f_rsts & AHCI_PLATFORM_RST_TRIGGER)
return reset_control_rearm(hpriv->rsts);
return reset_control_assert(hpriv->rsts);
}
EXPORT_SYMBOL_GPL(ahci_platform_assert_rsts);
/**
* ahci_platform_enable_regulators - Enable regulators
* @hpriv: host private area to store config values
@@ -236,18 +257,18 @@ int ahci_platform_enable_resources(struct ahci_host_priv *hpriv)
if (rc)
goto disable_regulator;
rc = reset_control_deassert(hpriv->rsts);
rc = ahci_platform_deassert_rsts(hpriv);
if (rc)
goto disable_clks;
rc = ahci_platform_enable_phys(hpriv);
if (rc)
goto disable_resets;
goto disable_rsts;
return 0;
disable_resets:
reset_control_assert(hpriv->rsts);
disable_rsts:
ahci_platform_assert_rsts(hpriv);
disable_clks:
ahci_platform_disable_clks(hpriv);
@@ -274,7 +295,7 @@ void ahci_platform_disable_resources(struct ahci_host_priv *hpriv)
{
ahci_platform_disable_phys(hpriv);
reset_control_assert(hpriv->rsts);
ahci_platform_assert_rsts(hpriv);
ahci_platform_disable_clks(hpriv);
@@ -292,8 +313,6 @@ static void ahci_platform_put_resources(struct device *dev, void *res)
pm_runtime_disable(dev);
}
for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++)
clk_put(hpriv->clks[c]);
/*
* The regulators are tied to child node device and not to the
* SATA device itself. So we can't use devm for automatically
@@ -374,8 +393,8 @@ static int ahci_platform_get_regulator(struct ahci_host_priv *hpriv, u32 port,
* 1) mmio registers (IORESOURCE_MEM 0, mandatory)
* 2) regulator for controlling the targets power (optional)
* regulator for controlling the AHCI controller (optional)
* 3) 0 - AHCI_MAX_CLKS clocks, as specified in the devs devicetree node,
* or for non devicetree enabled platforms a single clock
* 3) all clocks specified in the devicetree node, or a single
* clock for non-OF platforms (optional)
* 4) resets, if flags has AHCI_PLATFORM_GET_RESETS (optional)
* 5) phys (optional)
*
@@ -385,11 +404,10 @@ static int ahci_platform_get_regulator(struct ahci_host_priv *hpriv, u32 port,
struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,
unsigned int flags)
{
int child_nodes, rc = -ENOMEM, enabled_ports = 0;
struct device *dev = &pdev->dev;
struct ahci_host_priv *hpriv;
struct clk *clk;
struct device_node *child;
int i, enabled_ports = 0, rc = -ENOMEM, child_nodes;
u32 mask_port_map = 0;
if (!devres_open_group(dev, NULL, GFP_KERNEL))
@@ -409,25 +427,38 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,
goto err_out;
}
for (i = 0; i < AHCI_MAX_CLKS; i++) {
/*
* For now we must use clk_get(dev, NULL) for the first clock,
* because some platforms (da850, spear13xx) are not yet
* converted to use devicetree for clocks. For new platforms
* this is equivalent to of_clk_get(dev->of_node, 0).
*/
if (i == 0)
clk = clk_get(dev, NULL);
else
clk = of_clk_get(dev->of_node, i);
/*
* Bulk clocks getting procedure can fail to find any clock due to
* running on a non-OF platform or due to the clocks being defined in
* bypass of the DT firmware (like da850, spear13xx). In that case we
* fallback to getting a single clock source right from the dev clocks
* list.
*/
rc = devm_clk_bulk_get_all(dev, &hpriv->clks);
if (rc < 0)
goto err_out;
if (IS_ERR(clk)) {
rc = PTR_ERR(clk);
if (rc == -EPROBE_DEFER)
goto err_out;
break;
if (rc > 0) {
/* Got clocks in bulk */
hpriv->n_clks = rc;
} else {
/*
* No clock bulk found: fallback to manually getting
* the optional clock.
*/
hpriv->clks = devm_kzalloc(dev, sizeof(*hpriv->clks), GFP_KERNEL);
if (!hpriv->clks) {
rc = -ENOMEM;
goto err_out;
}
hpriv->clks->clk = devm_clk_get_optional(dev, NULL);
if (IS_ERR(hpriv->clks->clk)) {
rc = PTR_ERR(hpriv->clks->clk);
goto err_out;
} else if (hpriv->clks->clk) {
hpriv->clks->id = "ahci";
hpriv->n_clks = 1;
}
hpriv->clks[i] = clk;
}
hpriv->ahci_regulator = devm_regulator_get(dev, "ahci");
@@ -449,6 +480,8 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,
rc = PTR_ERR(hpriv->rsts);
goto err_out;
}
hpriv->f_rsts = flags & AHCI_PLATFORM_RST_TRIGGER;
}
/*

View File

@@ -420,13 +420,16 @@ aoecmd_cfg_pkts(ushort aoemajor, unsigned char aoeminor, struct sk_buff_head *qu
rcu_read_lock();
for_each_netdev_rcu(&init_net, ifp) {
dev_hold(ifp);
if (!is_aoe_netif(ifp))
goto cont;
if (!is_aoe_netif(ifp)) {
dev_put(ifp);
continue;
}
skb = new_skb(sizeof *h + sizeof *ch);
if (skb == NULL) {
printk(KERN_INFO "aoe: skb alloc failure\n");
goto cont;
dev_put(ifp);
continue;
}
skb_put(skb, sizeof *h + sizeof *ch);
skb->dev = ifp;
@@ -441,9 +444,6 @@ aoecmd_cfg_pkts(ushort aoemajor, unsigned char aoeminor, struct sk_buff_head *qu
h->major = cpu_to_be16(aoemajor);
h->minor = aoeminor;
h->cmd = AOECMD_CFG;
cont:
dev_put(ifp);
}
rcu_read_unlock();
}

View File

@@ -64,6 +64,7 @@ tx(int id) __must_hold(&txlock)
pr_warn("aoe: packet could not be sent on %s. %s\n",
ifp ? ifp->name : "netif",
"consider increasing tx_queue_len");
dev_put(ifp);
spin_lock_irq(&txlock);
}
return 0;

View File

@@ -1715,7 +1715,8 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
if (err == -ENOSPC)
err = -EEXIST;
} else {
err = idr_alloc(&nbd_index_idr, nbd, 0, 0, GFP_KERNEL);
err = idr_alloc(&nbd_index_idr, nbd, 0,
(MINORMASK >> part_shift) + 1, GFP_KERNEL);
if (err >= 0)
index = err;
}
@@ -2343,6 +2344,12 @@ static int nbd_genl_status(struct sk_buff *skb, struct genl_info *info)
}
dev_list = nla_nest_start_noflag(reply, NBD_ATTR_DEVICE_LIST);
if (!dev_list) {
nlmsg_free(reply);
ret = -EMSGSIZE;
goto out;
}
if (index == -1) {
ret = idr_for_each(&nbd_index_idr, &status_cb, reply);
if (ret) {

View File

@@ -991,14 +991,15 @@ static int virtblk_freeze(struct virtio_device *vdev)
{
struct virtio_blk *vblk = vdev->priv;
/* Ensure no requests in virtqueues before deleting vqs. */
blk_mq_freeze_queue(vblk->disk->queue);
/* Ensure we don't receive any more interrupts */
vdev->config->reset(vdev);
/* Make sure no work handler is accessing the device. */
flush_work(&vblk->config_work);
blk_mq_quiesce_queue(vblk->disk->queue);
vdev->config->del_vqs(vdev);
kfree(vblk->vqs);
@@ -1016,7 +1017,7 @@ static int virtblk_restore(struct virtio_device *vdev)
virtio_device_ready(vdev);
blk_mq_unquiesce_queue(vblk->disk->queue);
blk_mq_unfreeze_queue(vblk->disk->queue);
return 0;
}
#endif

View File

@@ -566,6 +566,9 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
config.type = ELF_TYPE_PATCH;
snprintf(config.fwname, sizeof(config.fwname),
"qca/msbtfw%02x.mbn", rom_ver);
} else if (soc_type == QCA_WCN6855) {
snprintf(config.fwname, sizeof(config.fwname),
"qca/hpbtfw%02x.tlv", rom_ver);
} else {
snprintf(config.fwname, sizeof(config.fwname),
"qca/rampatch_%08x.bin", soc_ver);
@@ -600,6 +603,9 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
else if (soc_type == QCA_WCN6750)
snprintf(config.fwname, sizeof(config.fwname),
"qca/msnv%02x.bin", rom_ver);
else if (soc_type == QCA_WCN6855)
snprintf(config.fwname, sizeof(config.fwname),
"qca/hpnv%02x.bin", rom_ver);
else
snprintf(config.fwname, sizeof(config.fwname),
"qca/nvm_%08x.bin", soc_ver);
@@ -637,11 +643,17 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
return err;
}
if (soc_type == QCA_WCN3991 || soc_type == QCA_WCN6750) {
switch (soc_type) {
case QCA_WCN3991:
case QCA_WCN6750:
case QCA_WCN6855:
/* get fw build info */
err = qca_read_fw_build_info(hdev);
if (err < 0)
return err;
break;
default:
break;
}
bt_dev_info(hdev, "QCA setup on UART is completed");

View File

@@ -145,6 +145,7 @@ enum qca_btsoc_type {
QCA_WCN3991,
QCA_QCA6390,
QCA_WCN6750,
QCA_WCN6855,
};
#if IS_ENABLED(CONFIG_BT_QCA)
@@ -166,6 +167,10 @@ static inline bool qca_is_wcn6750(enum qca_btsoc_type soc_type)
{
return soc_type == QCA_WCN6750;
}
static inline bool qca_is_wcn6855(enum qca_btsoc_type soc_type)
{
return soc_type == QCA_WCN6855;
}
#else
@@ -204,6 +209,11 @@ static inline bool qca_is_wcn6750(enum qca_btsoc_type soc_type)
return false;
}
static inline bool qca_is_wcn6855(enum qca_btsoc_type soc_type)
{
return false;
}
static inline int qca_send_pre_shutdown_cmd(struct hci_dev *hdev)
{
return -EOPNOTSUPP;

View File

@@ -1315,7 +1315,8 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate)
/* Give the controller time to process the request */
if (qca_is_wcn399x(qca_soc_type(hu)) ||
qca_is_wcn6750(qca_soc_type(hu)))
qca_is_wcn6750(qca_soc_type(hu)) ||
qca_is_wcn6855(qca_soc_type(hu)))
usleep_range(1000, 10000);
else
msleep(300);
@@ -1392,7 +1393,8 @@ static unsigned int qca_get_speed(struct hci_uart *hu,
static int qca_check_speeds(struct hci_uart *hu)
{
if (qca_is_wcn399x(qca_soc_type(hu)) ||
qca_is_wcn6750(qca_soc_type(hu))) {
qca_is_wcn6750(qca_soc_type(hu)) ||
qca_is_wcn6855(qca_soc_type(hu))) {
if (!qca_get_speed(hu, QCA_INIT_SPEED) &&
!qca_get_speed(hu, QCA_OPER_SPEED))
return -EINVAL;
@@ -1426,7 +1428,8 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type)
* changing the baudrate of chip and host.
*/
if (qca_is_wcn399x(soc_type) ||
qca_is_wcn6750(soc_type))
qca_is_wcn6750(soc_type) ||
qca_is_wcn6855(soc_type))
hci_uart_set_flow_control(hu, true);
if (soc_type == QCA_WCN3990) {
@@ -1444,7 +1447,8 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type)
error:
if (qca_is_wcn399x(soc_type) ||
qca_is_wcn6750(soc_type))
qca_is_wcn6750(soc_type) ||
qca_is_wcn6855(soc_type))
hci_uart_set_flow_control(hu, false);
if (soc_type == QCA_WCN3990) {
@@ -1680,7 +1684,8 @@ static int qca_power_on(struct hci_dev *hdev)
return 0;
if (qca_is_wcn399x(soc_type) ||
qca_is_wcn6750(soc_type)) {
qca_is_wcn6750(soc_type) ||
qca_is_wcn6855(soc_type)) {
ret = qca_regulator_init(hu);
} else {
qcadev = serdev_device_get_drvdata(hu->serdev);
@@ -1721,7 +1726,8 @@ static int qca_setup(struct hci_uart *hu)
bt_dev_info(hdev, "setting up %s",
qca_is_wcn399x(soc_type) ? "wcn399x" :
(soc_type == QCA_WCN6750) ? "wcn6750" : "ROME/QCA6390");
(soc_type == QCA_WCN6750) ? "wcn6750" :
(soc_type == QCA_WCN6855) ? "wcn6855" : "ROME/QCA6390");
qca->memdump_state = QCA_MEMDUMP_IDLE;
@@ -1733,7 +1739,8 @@ retry:
clear_bit(QCA_SSR_TRIGGERED, &qca->flags);
if (qca_is_wcn399x(soc_type) ||
qca_is_wcn6750(soc_type)) {
qca_is_wcn6750(soc_type) ||
qca_is_wcn6855(soc_type)) {
set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
ret = qca_read_soc_version(hdev, &ver, soc_type);
@@ -1754,7 +1761,8 @@ retry:
}
if (!(qca_is_wcn399x(soc_type) ||
qca_is_wcn6750(soc_type))) {
qca_is_wcn6750(soc_type) ||
qca_is_wcn6855(soc_type))) {
/* Get QCA version information */
ret = qca_read_soc_version(hdev, &ver, soc_type);
if (ret)
@@ -1880,6 +1888,20 @@ static const struct qca_device_data qca_soc_data_wcn6750 = {
.capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
};
static const struct qca_device_data qca_soc_data_wcn6855 = {
.soc_type = QCA_WCN6855,
.vregs = (struct qca_vreg []) {
{ "vddio", 5000 },
{ "vddbtcxmx", 126000 },
{ "vddrfacmn", 12500 },
{ "vddrfa0p8", 102000 },
{ "vddrfa1p7", 302000 },
{ "vddrfa1p2", 257000 },
},
.num_vregs = 6,
.capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
};
static void qca_power_shutdown(struct hci_uart *hu)
{
struct qca_serdev *qcadev;
@@ -1909,7 +1931,7 @@ static void qca_power_shutdown(struct hci_uart *hu)
host_set_baudrate(hu, 2400);
qca_send_power_pulse(hu, false);
qca_regulator_disable(qcadev);
} else if (soc_type == QCA_WCN6750) {
} else if (soc_type == QCA_WCN6750 || soc_type == QCA_WCN6855) {
gpiod_set_value_cansleep(qcadev->bt_en, 0);
msleep(100);
qca_regulator_disable(qcadev);
@@ -2044,7 +2066,8 @@ static int qca_serdev_probe(struct serdev_device *serdev)
if (data &&
(qca_is_wcn399x(data->soc_type) ||
qca_is_wcn6750(data->soc_type))) {
qca_is_wcn6750(data->soc_type) ||
qca_is_wcn6855(data->soc_type))) {
qcadev->btsoc_type = data->soc_type;
qcadev->bt_power = devm_kzalloc(&serdev->dev,
sizeof(struct qca_power),
@@ -2064,14 +2087,18 @@ static int qca_serdev_probe(struct serdev_device *serdev)
qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
GPIOD_OUT_LOW);
if (IS_ERR_OR_NULL(qcadev->bt_en) && data->soc_type == QCA_WCN6750) {
if (IS_ERR(qcadev->bt_en) &&
(data->soc_type == QCA_WCN6750 ||
data->soc_type == QCA_WCN6855)) {
dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n");
power_ctrl_enabled = false;
}
qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",
GPIOD_IN);
if (IS_ERR_OR_NULL(qcadev->sw_ctrl) && data->soc_type == QCA_WCN6750)
if (IS_ERR(qcadev->sw_ctrl) &&
(data->soc_type == QCA_WCN6750 ||
data->soc_type == QCA_WCN6855))
dev_warn(&serdev->dev, "failed to acquire SW_CTRL gpio\n");
qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL);
@@ -2093,7 +2120,7 @@ static int qca_serdev_probe(struct serdev_device *serdev)
qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
GPIOD_OUT_LOW);
if (IS_ERR_OR_NULL(qcadev->bt_en)) {
if (IS_ERR(qcadev->bt_en)) {
dev_warn(&serdev->dev, "failed to acquire enable gpio\n");
power_ctrl_enabled = false;
}
@@ -2147,8 +2174,9 @@ static void qca_serdev_remove(struct serdev_device *serdev)
struct qca_power *power = qcadev->bt_power;
if ((qca_is_wcn399x(qcadev->btsoc_type) ||
qca_is_wcn6750(qcadev->btsoc_type)) &&
power->vregs_on)
qca_is_wcn6750(qcadev->btsoc_type) ||
qca_is_wcn6855(qcadev->btsoc_type)) &&
power->vregs_on)
qca_power_shutdown(&qcadev->serdev_hu);
else if (qcadev->susclk)
clk_disable_unprepare(qcadev->susclk);
@@ -2332,6 +2360,7 @@ static const struct of_device_id qca_bluetooth_of_match[] = {
{ .compatible = "qcom,wcn3991-bt", .data = &qca_soc_data_wcn3991},
{ .compatible = "qcom,wcn3998-bt", .data = &qca_soc_data_wcn3998},
{ .compatible = "qcom,wcn6750-bt", .data = &qca_soc_data_wcn6750},
{ .compatible = "qcom,wcn6855-bt", .data = &qca_soc_data_wcn6855},
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, qca_bluetooth_of_match);

View File

@@ -175,11 +175,12 @@ config SUNXI_RSB
config TEGRA_ACONNECT
tristate "Tegra ACONNECT Bus Driver"
depends on ARCH_TEGRA_210_SOC
depends on ARCH_TEGRA
depends on OF && PM
help
Driver for the Tegra ACONNECT bus which is used to interface with
the devices inside the Audio Processing Engine (APE) for Tegra210.
the devices inside the Audio Processing Engine (APE) for
Tegra210 and later.
config TEGRA_GMI
tristate "Tegra Generic Memory Interface bus driver"

View File

@@ -253,6 +253,17 @@ static bool clk_core_is_enabled(struct clk_core *core)
}
}
/*
* This could be called with the enable lock held, or from atomic
* context. If the parent isn't enabled already, we can't do
* anything here. We can also assume this clock isn't enabled.
*/
if ((core->flags & CLK_OPS_PARENT_ENABLE) && core->parent)
if (!clk_core_is_enabled(core->parent)) {
ret = false;
goto done;
}
ret = core->ops->is_enabled(core->hw);
done:
if (core->rpm_enabled)
@@ -416,6 +427,9 @@ static struct clk_core *clk_core_get(struct clk_core *core, u8 p_index)
if (IS_ERR(hw))
return ERR_CAST(hw);
if (!hw)
return NULL;
return hw->core;
}

View File

@@ -130,7 +130,7 @@ static void hi3519_clk_unregister(struct platform_device *pdev)
of_clk_del_provider(pdev->dev.of_node);
hisi_clk_unregister_gate(hi3519_gate_clks,
ARRAY_SIZE(hi3519_mux_clks),
ARRAY_SIZE(hi3519_gate_clks),
crg->clk_data);
hisi_clk_unregister_mux(hi3519_mux_clks,
ARRAY_SIZE(hi3519_mux_clks),

View File

@@ -491,7 +491,6 @@ static void hisi_clk_register_pll(struct hi3559av100_pll_clock *clks,
clk = clk_register(NULL, &p_clk->hw);
if (IS_ERR(clk)) {
devm_kfree(dev, p_clk);
dev_err(dev, "%s: failed to register clock %s\n",
__func__, clks[i].name);
continue;

View File

@@ -17,6 +17,7 @@
static u32 share_count_nand;
static u32 share_count_media;
static u32 share_count_usb;
static const char * const pll_ref_sels[] = { "osc_24m", "dummy", "dummy", "dummy", };
static const char * const audio_pll1_bypass_sels[] = {"audio_pll1", "audio_pll1_ref_sel", };
@@ -354,7 +355,7 @@ static const char * const imx8mp_media_mipi_phy1_ref_sels[] = {"osc_24m", "sys_p
"clk_ext2", "audio_pll2_out",
"video_pll1_out", };
static const char * const imx8mp_media_disp1_pix_sels[] = {"osc_24m", "video_pll1_out", "audio_pll2_out",
static const char * const imx8mp_media_disp_pix_sels[] = {"osc_24m", "video_pll1_out", "audio_pll2_out",
"audio_pll1_out", "sys_pll1_800m",
"sys_pll2_1000m", "sys_pll3_out", "clk_ext4", };
@@ -395,6 +396,11 @@ static const char * const imx8mp_sai7_sels[] = {"osc_24m", "audio_pll1_out", "au
static const char * const imx8mp_dram_core_sels[] = {"dram_pll_out", "dram_alt_root", };
static const char * const imx8mp_clkout_sels[] = {"audio_pll1_out", "audio_pll2_out", "video_pll1_out",
"dummy", "dummy", "gpu_pll_out", "vpu_pll_out",
"arm_pll_out", "sys_pll1", "sys_pll2", "sys_pll3",
"dummy", "dummy", "osc_24m", "dummy", "osc_32k"};
static struct clk_hw **hws;
static struct clk_hw_onecell_data *clk_hw_data;
@@ -513,6 +519,15 @@ static int imx8mp_clocks_probe(struct platform_device *pdev)
hws[IMX8MP_SYS_PLL2_500M] = imx_clk_hw_fixed_factor("sys_pll2_500m", "sys_pll2_500m_cg", 1, 2);
hws[IMX8MP_SYS_PLL2_1000M] = imx_clk_hw_fixed_factor("sys_pll2_1000m", "sys_pll2_out", 1, 1);
hws[IMX8MP_CLK_CLKOUT1_SEL] = imx_clk_hw_mux2("clkout1_sel", anatop_base + 0x128, 4, 4,
imx8mp_clkout_sels, ARRAY_SIZE(imx8mp_clkout_sels));
hws[IMX8MP_CLK_CLKOUT1_DIV] = imx_clk_hw_divider("clkout1_div", "clkout1_sel", anatop_base + 0x128, 0, 4);
hws[IMX8MP_CLK_CLKOUT1] = imx_clk_hw_gate("clkout1", "clkout1_div", anatop_base + 0x128, 8);
hws[IMX8MP_CLK_CLKOUT2_SEL] = imx_clk_hw_mux2("clkout2_sel", anatop_base + 0x128, 20, 4,
imx8mp_clkout_sels, ARRAY_SIZE(imx8mp_clkout_sels));
hws[IMX8MP_CLK_CLKOUT2_DIV] = imx_clk_hw_divider("clkout2_div", "clkout2_sel", anatop_base + 0x128, 16, 4);
hws[IMX8MP_CLK_CLKOUT2] = imx_clk_hw_gate("clkout2", "clkout2_div", anatop_base + 0x128, 24);
hws[IMX8MP_CLK_A53_DIV] = imx8m_clk_hw_composite_core("arm_a53_div", imx8mp_a53_sels, ccm_base + 0x8000);
hws[IMX8MP_CLK_A53_SRC] = hws[IMX8MP_CLK_A53_DIV];
hws[IMX8MP_CLK_A53_CG] = hws[IMX8MP_CLK_A53_DIV];
@@ -547,6 +562,7 @@ static int imx8mp_clocks_probe(struct platform_device *pdev)
hws[IMX8MP_CLK_AHB] = imx8m_clk_hw_composite_bus_critical("ahb_root", imx8mp_ahb_sels, ccm_base + 0x9000);
hws[IMX8MP_CLK_AUDIO_AHB] = imx8m_clk_hw_composite_bus("audio_ahb", imx8mp_audio_ahb_sels, ccm_base + 0x9100);
hws[IMX8MP_CLK_MIPI_DSI_ESC_RX] = imx8m_clk_hw_composite_bus("mipi_dsi_esc_rx", imx8mp_mipi_dsi_esc_rx_sels, ccm_base + 0x9200);
hws[IMX8MP_CLK_MEDIA_DISP2_PIX] = imx8m_clk_hw_composite("media_disp2_pix", imx8mp_media_disp_pix_sels, ccm_base + 0x9300);
hws[IMX8MP_CLK_IPG_ROOT] = imx_clk_hw_divider2("ipg_root", "ahb_root", ccm_base + 0x9080, 0, 1);
@@ -608,7 +624,7 @@ static int imx8mp_clocks_probe(struct platform_device *pdev)
hws[IMX8MP_CLK_USDHC3] = imx8m_clk_hw_composite("usdhc3", imx8mp_usdhc3_sels, ccm_base + 0xbc80);
hws[IMX8MP_CLK_MEDIA_CAM1_PIX] = imx8m_clk_hw_composite("media_cam1_pix", imx8mp_media_cam1_pix_sels, ccm_base + 0xbd00);
hws[IMX8MP_CLK_MEDIA_MIPI_PHY1_REF] = imx8m_clk_hw_composite("media_mipi_phy1_ref", imx8mp_media_mipi_phy1_ref_sels, ccm_base + 0xbd80);
hws[IMX8MP_CLK_MEDIA_DISP1_PIX] = imx8m_clk_hw_composite("media_disp1_pix", imx8mp_media_disp1_pix_sels, ccm_base + 0xbe00);
hws[IMX8MP_CLK_MEDIA_DISP1_PIX] = imx8m_clk_hw_composite("media_disp1_pix", imx8mp_media_disp_pix_sels, ccm_base + 0xbe00);
hws[IMX8MP_CLK_MEDIA_CAM2_PIX] = imx8m_clk_hw_composite("media_cam2_pix", imx8mp_media_cam2_pix_sels, ccm_base + 0xbe80);
hws[IMX8MP_CLK_MEDIA_LDB] = imx8m_clk_hw_composite("media_ldb", imx8mp_media_ldb_sels, ccm_base + 0xbf00);
hws[IMX8MP_CLK_MEMREPAIR] = imx8m_clk_hw_composite_critical("mem_repair", imx8mp_memrepair_sels, ccm_base + 0xbf80);
@@ -667,7 +683,8 @@ static int imx8mp_clocks_probe(struct platform_device *pdev)
hws[IMX8MP_CLK_UART2_ROOT] = imx_clk_hw_gate4("uart2_root_clk", "uart2", ccm_base + 0x44a0, 0);
hws[IMX8MP_CLK_UART3_ROOT] = imx_clk_hw_gate4("uart3_root_clk", "uart3", ccm_base + 0x44b0, 0);
hws[IMX8MP_CLK_UART4_ROOT] = imx_clk_hw_gate4("uart4_root_clk", "uart4", ccm_base + 0x44c0, 0);
hws[IMX8MP_CLK_USB_ROOT] = imx_clk_hw_gate4("usb_root_clk", "hsio_axi", ccm_base + 0x44d0, 0);
hws[IMX8MP_CLK_USB_ROOT] = imx_clk_hw_gate2_shared2("usb_root_clk", "hsio_axi", ccm_base + 0x44d0, 0, &share_count_usb);
hws[IMX8MP_CLK_USB_SUSP] = imx_clk_hw_gate2_shared2("usb_suspend_clk", "osc_32k", ccm_base + 0x44d0, 0, &share_count_usb);
hws[IMX8MP_CLK_USB_PHY_ROOT] = imx_clk_hw_gate4("usb_phy_root_clk", "usb_phy_ref", ccm_base + 0x44f0, 0);
hws[IMX8MP_CLK_USDHC1_ROOT] = imx_clk_hw_gate4("usdhc1_root_clk", "usdhc1", ccm_base + 0x4510, 0);
hws[IMX8MP_CLK_USDHC2_ROOT] = imx_clk_hw_gate4("usdhc2_root_clk", "usdhc2", ccm_base + 0x4520, 0);

View File

@@ -201,9 +201,10 @@ static int __init imx_clk_disable_uart(void)
clk_disable_unprepare(imx_uart_clocks[i]);
clk_put(imx_uart_clocks[i]);
}
kfree(imx_uart_clocks);
}
kfree(imx_uart_clocks);
return 0;
}
late_initcall_sync(imx_clk_disable_uart);

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