Linux 5.18.11
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.18.11 kernel.
All users of the 5.18 kernel series must upgrade.
The updated 5.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.18.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml | 2 MAINTAINERS | 11 Makefile | 2 arch/arm/boot/dts/at91-sam9x60ek.dts | 3 arch/arm/boot/dts/at91-sama5d2_icp.dts | 6 arch/arm/boot/dts/stm32mp151.dtsi | 4 arch/arm/configs/mxs_defconfig | 1 arch/arm/mach-at91/pm.c | 10 arch/arm/mach-meson/platsmp.c | 2 arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 58 +- arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-rdk.dts | 48 - arch/arm64/boot/dts/qcom/msm8992-lg-bullhead.dtsi | 2 arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts | 2 arch/arm64/boot/dts/qcom/msm8994.dtsi | 4 arch/arm64/boot/dts/qcom/sdm845.dtsi | 2 arch/arm64/boot/dts/qcom/sm8450.dtsi | 4 arch/powerpc/platforms/powernv/rng.c | 16 arch/x86/kernel/acpi/cppc.c | 10 drivers/acpi/bus.c | 39 - drivers/acpi/cppc_acpi.c | 29 - drivers/base/core.c | 13 drivers/base/power/runtime.c | 34 - drivers/cxl/cxlmem.h | 8 drivers/cxl/mem.c | 7 drivers/cxl/pmem.c | 6 drivers/dma/at_xdmac.c | 5 drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 8 drivers/dma/idxd/device.c | 5 drivers/dma/imx-sdma.c | 4 drivers/dma/lgm/lgm-dma.c | 3 drivers/dma/pl330.c | 2 drivers/dma/qcom/bam_dma.c | 39 - drivers/dma/ti/dma-crossbar.c | 5 drivers/i2c/busses/i2c-cadence.c | 1 drivers/i2c/busses/i2c-piix4.c | 16 drivers/iommu/intel/dmar.c | 2 drivers/iommu/intel/iommu.c | 24 drivers/iommu/intel/pasid.c | 69 -- drivers/iommu/intel/pasid.h | 1 drivers/misc/cardreader/rtsx_usb.c | 27 drivers/net/can/grcan.c | 1 drivers/net/can/m_can/m_can.c | 8 drivers/net/can/rcar/rcar_canfd.c | 5 drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 6 drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c | 22 drivers/net/can/usb/gs_usb.c | 23 drivers/net/can/usb/kvaser_usb/kvaser_usb.h | 25 drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 285 +++++----- drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 4 drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 119 ++-- drivers/net/dsa/qca8k.c | 23 drivers/net/ethernet/ibm/ibmvnic.c | 9 drivers/net/ethernet/intel/i40e/i40e.h | 16 drivers/net/ethernet/intel/i40e/i40e_main.c | 73 ++ drivers/net/ethernet/intel/i40e/i40e_register.h | 13 drivers/net/ethernet/intel/i40e/i40e_type.h | 1 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 13 drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 8 drivers/net/ethernet/microchip/lan966x/lan966x_main.h | 1 drivers/net/ethernet/realtek/r8169_main.c | 10 drivers/net/usb/usbnet.c | 17 drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | 10 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 2 drivers/soc/atmel/soc.c | 12 drivers/video/fbdev/core/fbcon.c | 33 + drivers/video/fbdev/core/fbmem.c | 16 fs/fscache/cookie.c | 15 fs/fscache/volume.c | 4 fs/io_uring.c | 14 include/acpi/cppc_acpi.h | 1 include/linux/acpi.h | 4 include/linux/fbcon.h | 4 include/linux/fscache.h | 1 include/linux/intel-iommu.h | 3 include/linux/memregion.h | 2 include/linux/pm_runtime.h | 5 include/linux/rtsx_usb.h | 2 include/net/act_api.h | 3 include/net/flow_offload.h | 1 include/net/pkt_cls.h | 6 include/video/of_display_timing.h | 2 kernel/bpf/verifier.c | 113 +-- kernel/rcu/srcutree.c | 6 lib/idr.c | 3 net/can/bcm.c | 18 net/mptcp/options.c | 3 net/mptcp/pm_netlink.c | 16 net/mptcp/protocol.c | 9 net/mptcp/protocol.h | 1 net/netfilter/nf_tables_api.c | 9 net/netfilter/nft_set_pipapo.c | 48 + net/rose/rose_route.c | 4 net/sched/act_api.c | 4 net/sched/act_csum.c | 3 net/sched/act_ct.c | 3 net/sched/act_gact.c | 3 net/sched/act_gate.c | 3 net/sched/act_mirred.c | 3 net/sched/act_mpls.c | 3 net/sched/act_pedit.c | 3 net/sched/act_police.c | 20 net/sched/act_sample.c | 3 net/sched/act_skbedit.c | 3 net/sched/act_tunnel_key.c | 3 net/sched/act_vlan.c | 3 net/sched/cls_api.c | 16 net/sched/cls_flower.c | 6 net/sched/cls_matchall.c | 6 net/xdp/xsk_buff_pool.c | 1 sound/pci/cs46xx/cs46xx.c | 22 sound/pci/hda/patch_realtek.c | 1 sound/soc/codecs/rt700.c | 16 sound/soc/codecs/rt711-sdca.c | 27 sound/soc/codecs/rt711.c | 25 sound/soc/qcom/qdsp6/q6apm-dai.c | 6 sound/soc/sof/intel/hda-pcm.c | 74 -- sound/soc/sof/intel/hda-stream.c | 94 +++ sound/soc/sof/intel/hda.h | 3 sound/soc/sof/ipc3-topology.c | 23 sound/usb/quirks.c | 4 tools/testing/selftests/net/forwarding/lib.sh | 6 tools/testing/selftests/net/udpgro.sh | 2 tools/testing/selftests/net/udpgro_bench.sh | 2 tools/testing/selftests/net/udpgro_frglist.sh | 2 tools/testing/selftests/net/udpgro_fwd.sh | 2 tools/testing/selftests/net/veth.sh | 6 127 files changed, 1178 insertions(+), 813 deletions(-)
Alison Schofield (1):
cxl/mbox: Use __le32 in get,set_lsa mailbox structures
Andrei Lalaev (1):
pinctrl: sunxi: sunxi_pconf_set: use correct offset
Caleb Connolly (1):
dmaengine: qcom: bam_dma: fix runtime PM underflow
Charles Keepax (2):
ASoC: rt711: Add endianness flag in snd_soc_component_driver
ASoC: rt711-sdca: Add endianness flag in snd_soc_component_driver
Christian Marangi (1):
net: dsa: qca8k: reset cpu port on MTU change
Christophe JAILLET (1):
dmaengine: lgm: Fix an error handling path in intel_ldma_probe()
Claudiu Beznea (3):
ARM: at91: pm: use proper compatible for sama5d2's rtc
ARM: at91: pm: use proper compatibles for sam9x60's rtc and rtt
ARM: at91: pm: use proper compatibles for sama7g5's rtc and rtt
Dan Williams (1):
memregion: Fix memregion_free() fallback definition
Daniel Borkmann (2):
bpf: Fix incorrect verifier simulation around jmp32's jeq/jne
bpf: Fix insufficient bounds propagation from adjust_scalar_min_max_vals
Dave Jiang (1):
dmaengine: idxd: force wq context cleanup on device disable path
David Howells (1):
fscache: Fix invalidation/lookup race
Dmitry Baryshkov (1):
arm64: dts: qcom: sdm845: use dispcc AHB clock for mdss node
Dmitry Osipenko (1):
dmaengine: pl330: Fix lockdep warning about non-static key
Duoming Zhou (1):
net: rose: fix UAF bug caused by rose_t0timer_expiry
Duy Nguyen (1):
can: rcar_canfd: Fix data transmission failed on R-Car V3U
Dylan Yudaken (1):
io_uring: fix provided buffer import
Emil Renner Berthing (1):
dmaengine: dw-axi-dmac: Fix RMW on channel suspend register
Eugen Hristev (2):
ARM: dts: at91: sam9x60ek: fix eeprom compatible and size
ARM: dts: at91: sama5d2_icp: fix eeprom compatibles
Fabio Estevam (1):
ARM: mxs_defconfig: Enable the framebuffer
Fabrice Gasnier (1):
ARM: dts: stm32: add missing usbh clock and fix clk order on stm32mp15
Greg Kroah-Hartman (1):
Linux 5.18.11
Guiling Deng (1):
fbdev: fbmem: Fix logo center image dx issue
Hangbin Liu (1):
selftests/net: fix section name when using xdp_dummy.o
Heiner Kallweit (1):
r8169: fix accessing unset transport header
Helge Deller (3):
fbmem: Check virtual screen sizes in fb_set_var()
fbcon: Disallow setting font bigger than screen size
fbcon: Prevent that screen size is smaller than font size
Hsin-Yi Wang (1):
video: of_display_timing.h: include errno.h
Ido Schimmel (2):
net/sched: act_api: Add extack to offload_act_setup() callback net/sched: act_police: Add extack messages for offload failure
Ivan Malov (1):
xsk: Clear page contiguity bit when unmapping pool
Jason A. Donenfeld (1):
powerpc/powernv: delay rng platform device creation until later in boot
Jean Delvare (1):
i2c: piix4: Fix a memory leak in the EFCH MMIO support
Jimmy Assarsson (3):
can: kvaser_usb: replace run-time checks with struct kvaser_usb_driver_info
can: kvaser_usb: kvaser_usb_leaf: fix CAN clock frequency regression
can: kvaser_usb: kvaser_usb_leaf: fix bittiming limits
Joerg Roedel (1):
MAINTAINERS: Remove [email protected]
Jonathan Cameron (1):
cxl: Fix cleanup of port devices on failure to probe driver.
Konrad Dybcio (1):
arm64: dts: qcom: msm8994: Fix CPU6/7 reg values
Liang He (1):
can: grcan: grcan_probe(): remove extra of_node_get()
Linus Torvalds (1):
ida: don't use BUG_ON() for debugging
Lu Baolu (1):
iommu/vt-d: Fix RID2PASID setup/teardown failure
Lukasz Cieplicki (1):
i40e: Fix dropped jumbo frames statistics
Marc Kleine-Budde (5):
can: m_can: m_can_chip_config(): actually enable internal timestamping
can: m_can: m_can_{read_fifo,echo_tx_event}(): shift timestamp to full 32 bits
can: mcp251xfd: mcp251xfd_stop(): add missing hrtimer_cancel()
can: mcp251xfd: mcp251xfd_register_get_dev_id(): use correct length to read dev_id
can: mcp251xfd: mcp251xfd_register_get_dev_id(): fix endianness conversion
Mario Limonciello (2):
ACPI: CPPC: Only probe for _CPC if CPPC v2 is acked
ACPI: CPPC: Don't require _OSC if X86_FEATURE_CPPC is supported
Mat Martineau (2):
mptcp: Avoid acquiring PM lock for subflow priority changes
mptcp: Acquire the subflow socket lock before modifying MP_PRIO flags
Miaoqian Lin (3):
ARM: meson: Fix refcount leak in meson_smp_prepare_cpus
dmaengine: ti: Fix refcount leak in ti_dra7_xbar_route_allocate
dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate
Michael Walle (2):
net: lan966x: hardcode the number of external ports
dmaengine: at_xdma: handle errors of at_xdmac_alloc_desc() correctly
Mihai Sain (1):
ARM: at91: fix soc detection for SAM9X60 SiPs
Norbert Zulinski (1):
i40e: Fix VF's MAC Address change on VM
Oliver Hartkopp (1):
can: bcm: use call_rcu() instead of costly synchronize_rcu()
Oliver Neukum (1):
usbnet: fix memory leak in error case
Pablo Neira Ayuso (2):
netfilter: nft_set_pipapo: release elements in clone from abort path
netfilter: nf_tables: stricter validation of element data
Paolo Abeni (1):
mptcp: fix local endpoint accounting
Paul E. McKenney (1):
srcu: Tighten cleanup_srcu_struct() GP checks
Peng Fan (10):
arm64: dts: imx8mp-evk: correct mmc pad settings
arm64: dts: imx8mp-evk: correct gpio-led pad settings
arm64: dts: imx8mp-evk: correct vbus pad settings
arm64: dts: imx8mp-evk: correct eqos pad settings
arm64: dts: imx8mp-evk: correct I2C5 pad settings
arm64: dts: imx8mp-evk: correct I2C1 pad settings
arm64: dts: imx8mp-evk: correct I2C3 pad settings
arm64: dts: imx8mp-phyboard-pollux-rdk: correct uart pad settings
arm64: dts: imx8mp-phyboard-pollux-rdk: correct eqos pad settings
arm64: dts: imx8mp-phyboard-pollux-rdk: correct i2c2 & mmc settings
Peter Robinson (1):
dmaengine: imx-sdma: Allow imx8m for imx7 FW revs
Peter Ujfalusi (2):
ASoC: SOF: ipc3-topology: Move and correct size checks in sof_ipc3_control_load_bytes()
ASoC: SOF: Intel: hda: Fix compressed stream position tracking
Pierre Gondois (2):
ACPI: CPPC: Check _OSC for flexible address space
ACPI: bus: Set CPPC _OSC bits for all and when CPPC_LIB is supported
Pierre-Louis Bossart (1):
ASoC: codecs: rt700/rt711/rt711-sdca: resume bus/codec in .set_jack_detect
Rafael J. Wysocki (2):
PM: runtime: Redefine pm_runtime_release_supplier()
PM: runtime: Fix supplier device management during consumer probe
Rhett Aultman (1):
can: gs_usb: gs_usb_open/close(): fix memory leak
Rick Lindsley (1):
ibmvnic: Properly dispose of all skbs during a failover.
Samuel Holland (2):
pinctrl: sunxi: a83t: Fix NAND function name for some pins
dt-bindings: dma: allwinner,sun50i-a64-dma: Fix min/max typo
Sascha Hauer (1):
dmaengine: imx-sdma: only restart cyclic channel when enabled
Satish Nagireddy (1):
i2c: cadence: Unregister the clk notifier in error path
Sherry Sun (1):
arm64: dts: imx8mp-evk: correct the uart2 pinctl value
Shuah Khan (3):
misc: rtsx_usb: fix use of dma mapped buffer for usb bulk transfer
misc: rtsx_usb: use separate command and response buffers
misc: rtsx_usb: set return value in rsp_buf alloc err path
Srinivas Kandagatla (1):
ASoC: qdsp6: q6apm-dai: unprepare stream if its already prepared
Stephan Gerhold (1):
arm64: dts: qcom: msm8992-*: Fix vdd_lvs1_2-supply typo
Takashi Iwai (2):
ALSA: usb-audio: Workarounds for Behringer UMC 204/404 HD
ALSA: cs46xx: Fix missing snd_card_free() call at probe error
Thomas Kopp (2):
can: mcp251xfd: mcp251xfd_regmap_crc_read(): improve workaround handling for mcp2517fd
can: mcp251xfd: mcp251xfd_regmap_crc_read(): update workaround broken CRC on TBC register
Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo L140PU
Vlad Buslov (2):
net/mlx5e: Fix matchall police parameters validation net/sched: act_police: allow 'continue' action offload
Vladimir Oltean (3):
selftests: forwarding: fix flood_unicast_test when h2 supports IFF_UNICAST_FLT
selftests: forwarding: fix learning_test when h1 supports IFF_UNICAST_FLT
selftests: forwarding: fix error message in learning_test
Vladimir Zapolskiy (1):
arm64: dts: qcom: sm8450: fix interconnects property of UFS node
Yian Chen (1):
iommu/vt-d: Fix PCI bus rescan device hot add
Yue Hu (1):
fscache: Fix if condition in fscache_wait_on_volume_collision()
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml +1 -1
@@ -64,7 +64,7 @@ if: then: properties: clocks: - maxItems: 2 + minItems: 2 required: - clock-names
MAINTAINERS +0 -11
@@ -426,7 +426,6 @@ F: drivers/acpi/*thermal* ACPI VIOT DRIVER M: Jean-Philippe Brucker <[email protected]> L: [email protected] -L: [email protected] L: [email protected] S: Maintained F: drivers/acpi/viot.c
@@ -960,7 +959,6 @@ F: drivers/video/fbdev/geode/ AMD IOMMU (AMD-VI) M: Joerg Roedel <[email protected]> R: Suravee Suthikulpanit <[email protected]> -L: [email protected] L: [email protected] S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
@@ -5899,7 +5897,6 @@ DMA MAPPING HELPERS M: Christoph Hellwig <[email protected]> M: Marek Szyprowski <[email protected]> R: Robin Murphy <[email protected]> -L: [email protected] L: [email protected] S: Supported W: http://git.infradead.org/users/hch/dma-mapping.git
@@ -5912,7 +5909,6 @@ F: kernel/dma/ DMA MAPPING BENCHMARK M: Xiang Chen <[email protected]> -L: [email protected] L: [email protected] F: kernel/dma/map_benchmark.c F: tools/testing/selftests/dma/
@@ -7479,7 +7475,6 @@ F: drivers/gpu/drm/exynos/exynos_dp* EXYNOS SYSMMU (IOMMU) driver M: Marek Szyprowski <[email protected]> -L: [email protected] L: [email protected] S: Maintained F: drivers/iommu/exynos-iommu.c
@@ -9879,7 +9874,6 @@ F: drivers/hid/intel-ish-hid/ INTEL IOMMU (VT-d) M: David Woodhouse <[email protected]> M: Lu Baolu <[email protected]> -L: [email protected] L: [email protected] S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
@@ -10258,7 +10252,6 @@ F: include/linux/iomap.h IOMMU DRIVERS M: Joerg Roedel <[email protected]> M: Will Deacon <[email protected]> -L: [email protected] L: [email protected] S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
@@ -12375,7 +12368,6 @@ F: drivers/i2c/busses/i2c-mt65xx.c MEDIATEK IOMMU DRIVER M: Yong Wu <[email protected]> -L: [email protected] L: [email protected] L: [email protected] (moderated for non-subscribers) S: Supported
@@ -16361,7 +16353,6 @@ F: drivers/i2c/busses/i2c-qcom-cci.c QUALCOMM IOMMU M: Rob Clark <[email protected]> -L: [email protected] L: [email protected] L: [email protected] S: Maintained
@@ -18947,7 +18938,6 @@ F: arch/x86/boot/video* SWIOTLB SUBSYSTEM M: Christoph Hellwig <[email protected]> -L: [email protected] L: [email protected] S: Supported W: http://git.infradead.org/users/hch/dma-mapping.git
@@ -21618,7 +21608,6 @@ XEN SWIOTLB SUBSYSTEM M: Juergen Gross <[email protected]> M: Stefano Stabellini <[email protected]> L: [email protected] (moderated for non-subscribers) -L: [email protected] L: [email protected] S: Supported F: arch/x86/xen/*swiotlb*
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 18 -SUBLEVEL = 10 +SUBLEVEL = 11 EXTRAVERSION = NAME = Superb Owl
arch/arm/boot/dts/at91-sam9x60ek.dts +1 -2
@@ -233,10 +233,9 @@ i2c0: i2c@600 { status = "okay"; eeprom@53 { - compatible = "atmel,24c32"; + compatible = "atmel,24c02"; reg = <0x53>; pagesize = <16>; - size = <128>; status = "okay"; }; };
arch/arm/boot/dts/at91-sama5d2_icp.dts +3 -3
@@ -329,21 +329,21 @@ &i2c1 { status = "okay"; eeprom@50 { - compatible = "atmel,24c32"; + compatible = "atmel,24c02"; reg = <0x50>; pagesize = <16>; status = "okay"; }; eeprom@52 { - compatible = "atmel,24c32"; + compatible = "atmel,24c02"; reg = <0x52>; pagesize = <16>; status = "disabled"; }; eeprom@53 { - compatible = "atmel,24c32"; + compatible = "atmel,24c02"; reg = <0x53>; pagesize = <16>; status = "disabled";
arch/arm/boot/dts/stm32mp151.dtsi +2 -2
@@ -1474,7 +1474,7 @@ stmmac_axi_config_0: stmmac-axi-config { usbh_ohci: usb@5800c000 { compatible = "generic-ohci"; reg = <0x5800c000 0x1000>; - clocks = <&rcc USBH>, <&usbphyc>; + clocks = <&usbphyc>, <&rcc USBH>; resets = <&rcc USBH_R>; interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; status = "disabled";
@@ -1483,7 +1483,7 @@ usbh_ohci: usb@5800c000 { usbh_ehci: usb@5800d000 { compatible = "generic-ehci"; reg = <0x5800d000 0x1000>; - clocks = <&rcc USBH>; + clocks = <&usbphyc>, <&rcc USBH>; resets = <&rcc USBH_R>; interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; companion = <&usbh_ohci>;
arch/arm/configs/mxs_defconfig +1 -0
@@ -93,6 +93,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_DRM=y CONFIG_DRM_PANEL_SEIKO_43WVF1G=y CONFIG_DRM_MXSFB=y +CONFIG_FB=y CONFIG_FB_MODE_HELPERS=y CONFIG_LCD_CLASS_DEVICE=y CONFIG_BACKLIGHT_CLASS_DEVICE=y
arch/arm/mach-at91/pm.c +5 -5
@@ -146,7 +146,7 @@ static const struct wakeup_source_info ws_info[] = {static const struct of_device_id sama5d2_ws_ids[] = { { .compatible ="atmel,sama5d2-gem" , .data = &ws_info[0 ] }, - { .compatible ="atmel,at91rm9200-rtc" , .data = &ws_info[1 ] }, + { .compatible ="atmel,sama5d2-rtc" , .data = &ws_info[1 ] }, { .compatible ="atmel,sama5d3-udc" , .data = &ws_info[2 ] }, { .compatible ="atmel,at91rm9200-ohci" , .data = &ws_info[2 ] }, { .compatible ="usb-ohci" , .data = &ws_info[2 ] },
@@ -157,24 +157,24 @@ static const struct of_device_id sama5d2_ws_ids[] = { };static const struct of_device_id sam9x60_ws_ids[] = { - { .compatible ="atmel,at91sam9x5-rtc" , .data = &ws_info[1 ] }, + { .compatible ="microchip,sam9x60-rtc" , .data = &ws_info[1 ] }, { .compatible ="atmel,at91rm9200-ohci" , .data = &ws_info[2 ] }, { .compatible ="usb-ohci" , .data = &ws_info[2 ] }, { .compatible ="atmel,at91sam9g45-ehci" , .data = &ws_info[2 ] }, { .compatible ="usb-ehci" , .data = &ws_info[2 ] }, - { .compatible ="atmel,at91sam9260-rtt" , .data = &ws_info[4 ] }, + { .compatible ="microchip,sam9x60-rtt" , .data = &ws_info[4 ] }, { .compatible ="cdns,sam9x60-macb" , .data = &ws_info[5 ] }, {/* sentinel */ } };static const struct of_device_id sama7g5_ws_ids[] = { - { .compatible ="atmel,at91sam9x5-rtc" , .data = &ws_info[1 ] }, + { .compatible ="microchip,sama7g5-rtc" , .data = &ws_info[1 ] }, { .compatible ="microchip,sama7g5-ohci" , .data = &ws_info[2 ] }, { .compatible ="usb-ohci" , .data = &ws_info[2 ] }, { .compatible ="atmel,at91sam9g45-ehci" , .data = &ws_info[2 ] }, { .compatible ="usb-ehci" , .data = &ws_info[2 ] }, { .compatible ="microchip,sama7g5-sdhci" , .data = &ws_info[3 ] }, - { .compatible ="atmel,at91sam9260-rtt" , .data = &ws_info[4 ] }, + { .compatible ="microchip,sama7g5-rtt" , .data = &ws_info[4 ] }, {/* sentinel */ } };
arch/arm/mach-meson/platsmp.c +2 -0
@@ -71,6 +71,7 @@ static void __init meson_smp_prepare_cpus(const char *scu_compatible, } sram_base =of_iomap (node,0 ); +of_node_put (node);if (!sram_base) {pr_err ("Couldn't map SRAM registers\n" );return ;
@@ -91,6 +92,7 @@ static void __init meson_smp_prepare_cpus(const char *scu_compatible, } scu_base =of_iomap (node,0 ); +of_node_put (node);if (!scu_base) {pr_err ("Couldn't map SCU registers\n" );return ;
arch/arm64/boot/dts/freescale/imx8mp-evk.dts +29 -29
119 lines not on this page · raw message
arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-rdk.dts +24 -24
93 lines not on this page · raw message
arch/arm64/boot/dts/qcom/msm8992-lg-bullhead.dtsi +1 -1
@@ -74,7 +74,7 @@ pm8994_regulators: pm8994-regulators { vdd_l17_29-supply = <&vph_pwr>; vdd_l20_21-supply = <&vph_pwr>; vdd_l25-supply = <&pm8994_s5>; - vdd_lvs1_2 = <&pm8994_s4>; + vdd_lvs1_2-supply = <&pm8994_s4>; /* S1, S2, S6 and S12 are managed by RPMPD */
arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts +1 -1
@@ -143,7 +143,7 @@ pm8994-regulators { vdd_l17_29-supply = <&vph_pwr>; vdd_l20_21-supply = <&vph_pwr>; vdd_l25-supply = <&pm8994_s5>; - vdd_lvs1_2 = <&pm8994_s4>; + vdd_lvs1_2-supply = <&pm8994_s4>; /* S1, S2, S6 and S12 are managed by RPMPD */
arch/arm64/boot/dts/qcom/msm8994.dtsi +2 -2
@@ -93,7 +93,7 @@ CPU5: cpu@101 { CPU6: cpu@102 { device_type = "cpu"; compatible = "arm,cortex-a57"; - reg = <0x0 0x101>; + reg = <0x0 0x102>; enable-method = "psci"; next-level-cache = <&L2_1>; };
@@ -101,7 +101,7 @@ CPU6: cpu@102 { CPU7: cpu@103 { device_type = "cpu"; compatible = "arm,cortex-a57"; - reg = <0x0 0x101>; + reg = <0x0 0x103>; enable-method = "psci"; next-level-cache = <&L2_1>; };
arch/arm64/boot/dts/qcom/sdm845.dtsi +1 -1
@@ -4238,7 +4238,7 @@ mdss: mdss@ae00000 { power-domains = <&dispcc MDSS_GDSC>; - clocks = <&gcc GCC_DISP_AHB_CLK>, + clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, <&dispcc DISP_CC_MDSS_MDP_CLK>; clock-names = "iface", "core";
arch/arm64/boot/dts/qcom/sm8450.dtsi +2 -2
@@ -1383,8 +1383,8 @@ ufs_mem_hc: ufshc@1d84000 { iommus = <&apps_smmu 0xe0 0x0>; - interconnects = <&aggre1_noc MASTER_UFS_MEM &mc_virt SLAVE_EBI1>, - <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_UFS_MEM_CFG>; + interconnects = <&aggre1_noc MASTER_UFS_MEM 0 &mc_virt SLAVE_EBI1 0>, + <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_UFS_MEM_CFG 0>; interconnect-names = "ufs-ddr", "cpu-ufs"; clock-names = "core_clk",
arch/powerpc/platforms/powernv/rng.c +10 -6
@@ -176,12 +176,8 @@ static int __init pnv_get_random_long_early(unsigned long *v) NULL) != pnv_get_random_long_early)return 0 ; -for_each_compatible_node (dn,NULL ,"ibm,power-rng" ) { -if (rng_create (dn)) -continue ; -/* Create devices for hwrng driver */ -of_platform_device_create (dn,NULL ,NULL ); - } +for_each_compatible_node (dn,NULL ,"ibm,power-rng" ) +rng_create (dn);if (!ppc_md.get_random_seed)return 0 ;
@@ -205,10 +201,18 @@ void __init pnv_rng_init(void)static int __init pnv_rng_late_init (void ) { +struct device_node *dn;unsigned long v; +/* In case it wasn't called during init for some other reason. */ if (ppc_md.get_random_seed == pnv_get_random_long_early)pnv_get_random_long_early (&v); + +if (ppc_md.get_random_seed == powernv_get_random_long) { +for_each_compatible_node (dn,NULL ,"ibm,power-rng" ) +of_platform_device_create (dn,NULL ,NULL ); + } +return 0 ; }machine_subsys_initcall (powernv, pnv_rng_late_init);
arch/x86/kernel/acpi/cppc.c +10 -0
@@ -11,6 +11,16 @@/* Refer to drivers/acpi/cppc_acpi.c for the description of functions */ +bool cpc_supported_by_cpu (void ) +{ +switch (boot_cpu_data.x86_vendor) { +case X86_VENDOR_AMD : +case X86_VENDOR_HYGON : +return boot_cpu_has (X86_FEATURE_CPPC ); + } +return false; +} +bool cpc_ffh_supported (void ) {return true;
drivers/acpi/bus.c +28 -11
@@ -278,13 +278,27 @@ bool osc_sb_apei_support_acked;bool osc_pc_lpi_support_confirmed;EXPORT_SYMBOL_GPL (osc_pc_lpi_support_confirmed); +/* +* ACPI 6.2 Section 6.2.11.2 'Platform-Wide OSPM Capabilities': +* Starting with ACPI Specification 6.2, all _CPC registers can be in +* PCC, System Memory, System IO, or Functional Fixed Hardware address +* spaces. OSPM support for this more flexible register space scheme is +* indicated by the “Flexible Address Space for CPPC Registers” _OSC bit. +* +* Otherwise (cf ACPI 6.1, s8.4.7.1.1.X), _CPC registers must be in: +* - PCC or Functional Fixed Hardware address space if defined +* - SystemMemory address space (NULL register) if not defined +*/ +bool osc_cpc_flexible_adr_space_confirmed; +EXPORT_SYMBOL_GPL (osc_cpc_flexible_adr_space_confirmed); +/* * ACPI 6.4 Operating System Capabilities for USB. */ bool osc_sb_native_usb4_support_confirmed;EXPORT_SYMBOL_GPL (osc_sb_native_usb4_support_confirmed); -bool osc_sb_cppc_not_supported; +bool osc_sb_cppc2_support_acked;static u8 sb_uuid_str[] ="0811B06E-4A27-44F9-8D60-3CBBC22E7B48" ;static void acpi_bus_osc_negotiate_platform_control (void )
@@ -315,12 +329,15 @@ static void acpi_bus_osc_negotiate_platform_control(void)#endif #ifdef CONFIG_X86 capbuf[OSC_SUPPORT_DWORD ] |=OSC_SB_GENERIC_INITIATOR_SUPPORT ; -if (boot_cpu_has (X86_FEATURE_HWP )) { - capbuf[OSC_SUPPORT_DWORD ] |=OSC_SB_CPC_SUPPORT ; - capbuf[OSC_SUPPORT_DWORD ] |=OSC_SB_CPCV2_SUPPORT ; - }#endif +#ifdef CONFIG_ACPI_CPPC_LIB + capbuf[OSC_SUPPORT_DWORD ] |=OSC_SB_CPC_SUPPORT ; + capbuf[OSC_SUPPORT_DWORD ] |=OSC_SB_CPCV2_SUPPORT ; +#endif + + capbuf[OSC_SUPPORT_DWORD ] |=OSC_SB_CPC_FLEXIBLE_ADR_SPACE ; +if (IS_ENABLED (CONFIG_SCHED_MC_PRIO )) capbuf[OSC_SUPPORT_DWORD ] |=OSC_SB_CPC_DIVERSE_HIGH_SUPPORT ;
@@ -341,12 +358,6 @@ static void acpi_bus_osc_negotiate_platform_control(void)return ; } -#ifdef CONFIG_X86 -if (boot_cpu_has (X86_FEATURE_HWP )) - osc_sb_cppc_not_supported = !(capbuf_ret[OSC_SUPPORT_DWORD ] & - (OSC_SB_CPC_SUPPORT |OSC_SB_CPCV2_SUPPORT )); -#endif -/* * Now run _OSC again with query flag clear and with the caps * supported by both the OS and the platform.
@@ -360,12 +371,18 @@ static void acpi_bus_osc_negotiate_platform_control(void) capbuf_ret = context.ret.pointer;if (context.ret.length >OSC_SUPPORT_DWORD ) { +#ifdef CONFIG_ACPI_CPPC_LIB + osc_sb_cppc2_support_acked = capbuf_ret[OSC_SUPPORT_DWORD ] &OSC_SB_CPCV2_SUPPORT ; +#endif + osc_sb_apei_support_acked = capbuf_ret[OSC_SUPPORT_DWORD ] &OSC_SB_APEI_SUPPORT ; osc_pc_lpi_support_confirmed = capbuf_ret[OSC_SUPPORT_DWORD ] &OSC_SB_PCLPI_SUPPORT ; osc_sb_native_usb4_support_confirmed = capbuf_ret[OSC_SUPPORT_DWORD ] &OSC_SB_NATIVE_USB4_SUPPORT ; + osc_cpc_flexible_adr_space_confirmed = + capbuf_ret[OSC_SUPPORT_DWORD ] &OSC_SB_CPC_FLEXIBLE_ADR_SPACE ; }kfree (context.ret.pointer);
drivers/acpi/cppc_acpi.c +27 -2
@@ -559,6 +559,19 @@ bool __weak cpc_ffh_supported(void)return false; } +/** +* cpc_supported_by_cpu() - check if CPPC is supported by CPU +* +* Check if the architectural support for CPPC is present even +* if the _OSC hasn't prescribed it +* +* Return: true for supported, false for not supported +*/ +bool __weak cpc_supported_by_cpu (void ) +{ +return false; +} +/** * pcc_data_alloc() - Allocate the pcc_data memory for pcc subspace *
@@ -666,8 +679,11 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)acpi_status status;int ret = -ENODATA ; -if (osc_sb_cppc_not_supported) -return -ENODEV ; +if (!osc_sb_cppc2_support_acked) { +pr_debug ("CPPC v2 _OSC not acked\n" ); +if (!cpc_supported_by_cpu ()) +return -ENODEV ; + }/* Parse the ACPI _CPC table for this CPU. */ status = acpi_evaluate_object_typed(handle, "_CPC", NULL, &output,
@@ -746,6 +762,11 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)if (gas_t->address) {void __iomem *addr; +if (!osc_cpc_flexible_adr_space_confirmed) { +pr_debug ("Flexible address space capability not supported\n" ); + goto out_free; + } + addr =ioremap (gas_t->address, gas_t->bit_width/8 );if (!addr) goto out_free;
@@ -768,6 +789,10 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr) gas_t->address); goto out_free; } +if (!osc_cpc_flexible_adr_space_confirmed) { +pr_debug ("Flexible address space capability not supported\n" ); + goto out_free; + } }else {if (gas_t->space_id !=ACPI_ADR_SPACE_FIXED_HARDWARE || !cpc_ffh_supported ()) {/* Support only PCC, SystemMemory, SystemIO, and FFH type regs. */
drivers/base/core.c +12 -1
@@ -485,7 +485,18 @@ static void device_link_release_fn(struct work_struct *work)/* Ensure that all references to the link object have been dropped. */ device_link_synchronize_removal (); -pm_runtime_release_supplier (link, true); +pm_runtime_release_supplier (link); +/* +* If supplier_preactivated is set, the link has been dropped between +* the pm_runtime_get_suppliers() and pm_runtime_put_suppliers() calls +* in __driver_probe_device(). In that case, drop the supplier's +* PM-runtime usage counter to remove the reference taken by +* pm_runtime_get_suppliers(). +*/ +if (link->supplier_preactivated) +pm_runtime_put_noidle (link->supplier); + +pm_request_idle (link->supplier);put_device (link->consumer);put_device (link->supplier);
drivers/base/power/runtime.c +10 -24
@@ -308,13 +308,10 @@ static int rpm_get_suppliers(struct device *dev)/** * pm_runtime_release_supplier - Drop references to device link's supplier. * @link: Target device link. -* @check_idle: Whether or not to check if the supplier device is idle. * -* Drop all runtime PM references associated with @link to its supplier device -* and if @check_idle is set, check if that device is idle (and so it can be -* suspended). +* Drop all runtime PM references associated with @link to its supplier device. */ -void pm_runtime_release_supplier (struct device_link *link,bool check_idle) +void pm_runtime_release_supplier (struct device_link *link) {struct device *supplier = link->supplier;
@@ -327,9 +324,6 @@ void pm_runtime_release_supplier(struct device_link *link, bool check_idle)while (refcount_dec_not_one (&link->rpm_active) &&atomic_read (&supplier->power.usage_count) >0 )pm_runtime_put_noidle (supplier); - -if (check_idle) -pm_request_idle (supplier); }static void __rpm_put_suppliers (struct device *dev,bool try_to_suspend)
@@ -337,8 +331,11 @@ static void __rpm_put_suppliers(struct device *dev, bool try_to_suspend)struct device_link *link;list_for_each_entry_rcu (link, &dev->links.suppliers, c_node, -device_links_read_lock_held ()) -pm_runtime_release_supplier (link, try_to_suspend); +device_links_read_lock_held ()) { +pm_runtime_release_supplier (link); +if (try_to_suspend) +pm_request_idle (link->supplier); + } }static void rpm_put_suppliers (struct device *dev)
@@ -1740,7 +1737,6 @@ void pm_runtime_get_suppliers(struct device *dev)if (link->flags &DL_FLAG_PM_RUNTIME ) { link->supplier_preactivated = true;pm_runtime_get_sync (link->supplier); -refcount_inc (&link->rpm_active); }device_links_read_unlock (idx);
@@ -1760,19 +1756,8 @@ void pm_runtime_put_suppliers(struct device *dev)list_for_each_entry_rcu (link, &dev->links.suppliers, c_node,device_links_read_lock_held ())if (link->supplier_preactivated) { -bool put; - link->supplier_preactivated = false; - -spin_lock_irq (&dev->power.lock); - - put =pm_runtime_status_suspended (dev) && -refcount_dec_not_one (&link->rpm_active); - -spin_unlock_irq (&dev->power.lock); - -if (put) -pm_runtime_put (link->supplier); +pm_runtime_put (link->supplier); }device_links_read_unlock (idx);
@@ -1807,7 +1792,8 @@ void pm_runtime_drop_link(struct device_link *link)return ;pm_runtime_drop_link_count (link->consumer); -pm_runtime_release_supplier (link, true); +pm_runtime_release_supplier (link); +pm_request_idle (link->supplier); }static bool pm_runtime_need_not_resume (struct device *dev)
drivers/cxl/cxlmem.h +4 -4
@@ -252,13 +252,13 @@ struct cxl_mbox_identify { } __packed;struct cxl_mbox_get_lsa { -u32 offset; -u32 length; +__le32 offset; +__le32 length; } __packed;struct cxl_mbox_set_lsa { -u32 offset; -u32 reserved; +__le32 offset; +__le32 reserved;u8 data[]; } __packed;
drivers/cxl/mem.c +6 -1
@@ -46,6 +46,7 @@ static int create_endpoint(struct cxl_memdev *cxlmd, {struct cxl_dev_state *cxlds = cxlmd->cxlds;struct cxl_port *endpoint; +int rc; endpoint =devm_cxl_add_port (&parent_port->dev, &cxlmd->dev, cxlds->component_reg_phys, parent_port);
@@ -54,13 +55,17 @@ static int create_endpoint(struct cxl_memdev *cxlmd,dev_dbg (&cxlmd->dev,"add: %s\n" ,dev_name (&endpoint->dev)); + rc =cxl_endpoint_autoremove (cxlmd, endpoint); +if (rc) +return rc; +if (!endpoint->dev.driver) {dev_err (&cxlmd->dev,"%s failed probe\n" ,dev_name (&endpoint->dev));return -ENXIO ; } -return cxl_endpoint_autoremove (cxlmd, endpoint); +return 0 ; }/**
drivers/cxl/pmem.c +3 -3
@@ -108,8 +108,8 @@ static int cxl_pmem_get_config_data(struct cxl_dev_state *cxlds,return -EINVAL ; get_lsa = (struct cxl_mbox_get_lsa ) { - .offset = cmd->in_offset, - .length = cmd->in_length, + .offset =cpu_to_le32 (cmd->in_offset), + .length =cpu_to_le32 (cmd->in_length), }; rc = cxl_mbox_send_cmd(cxlds, CXL_MBOX_OP_GET_LSA, &get_lsa,
@@ -139,7 +139,7 @@ static int cxl_pmem_set_config_data(struct cxl_dev_state *cxlds,return -ENOMEM ; *set_lsa = (struct cxl_mbox_set_lsa ) { - .offset = cmd->in_offset, + .offset =cpu_to_le32 (cmd->in_offset), };memcpy (set_lsa->data, cmd->in_buf, cmd->in_length);
drivers/dma/at_xdmac.c +5 -0
@@ -1893,6 +1893,11 @@ static int at_xdmac_alloc_chan_resources(struct dma_chan *chan)for (i =0 ; i < init_nr_desc_per_channel; i++) { desc =at_xdmac_alloc_desc (chan,GFP_KERNEL );if (!desc) { +if (i ==0 ) { +dev_warn (chan2dev (chan), +"can't allocate any descriptors\n" ); +return -EIO ; + }dev_warn (chan2dev (chan),"only %d descriptors have been allocated\n" , i);break ;
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c +5 -3
@@ -1164,8 +1164,9 @@ static int dma_chan_pause(struct dma_chan *dchan)BIT (chan->id) <<DMAC_CHAN_SUSP_WE_SHIFT ;axi_dma_iowrite32 (chan->chip,DMAC_CHEN , val); }else { - val =BIT (chan->id) <<DMAC_CHAN_SUSP2_SHIFT | -BIT (chan->id) <<DMAC_CHAN_SUSP2_WE_SHIFT ; + val =axi_dma_ioread32 (chan->chip,DMAC_CHSUSPREG ); + val |=BIT (chan->id) <<DMAC_CHAN_SUSP2_SHIFT | +BIT (chan->id) <<DMAC_CHAN_SUSP2_WE_SHIFT ;axi_dma_iowrite32 (chan->chip,DMAC_CHSUSPREG , val); }
@@ -1190,12 +1191,13 @@ static inline void axi_chan_resume(struct axi_dma_chan *chan) {u32 val; - val =axi_dma_ioread32 (chan->chip,DMAC_CHEN );if (chan->chip->dw->hdata->reg_map_8_channels) { + val =axi_dma_ioread32 (chan->chip,DMAC_CHEN ); val &= ~(BIT (chan->id) <<DMAC_CHAN_SUSP_SHIFT ); val |= (BIT (chan->id) <<DMAC_CHAN_SUSP_WE_SHIFT );axi_dma_iowrite32 (chan->chip,DMAC_CHEN , val); }else { + val =axi_dma_ioread32 (chan->chip,DMAC_CHSUSPREG ); val &= ~(BIT (chan->id) <<DMAC_CHAN_SUSP2_SHIFT ); val |= (BIT (chan->id) <<DMAC_CHAN_SUSP2_WE_SHIFT );axi_dma_iowrite32 (chan->chip,DMAC_CHSUSPREG , val);
drivers/dma/idxd/device.c +1 -4
@@ -698,10 +698,7 @@ static void idxd_device_wqs_clear_state(struct idxd_device *idxd)for (i =0 ; i < idxd->max_wqs; i++) {struct idxd_wq *wq = idxd->wqs[i]; -if (wq->state ==IDXD_WQ_ENABLED ) { -idxd_wq_disable_cleanup (wq); - wq->state =IDXD_WQ_DISABLED ; - } +idxd_wq_disable_cleanup (wq);idxd_wq_device_reset_cleanup (wq); } }
drivers/dma/imx-sdma.c +2 -2
@@ -872,7 +872,7 @@ static void sdma_update_channel_loop(struct sdma_channel *sdmac)* SDMA stops cyclic channel when DMA request triggers a channel and no SDMA * owned buffer is available (i.e. BD_DONE was set too late). */ -if (!is_sdma_channel_enabled (sdmac->sdma, sdmac->channel)) { +if (sdmac->desc && !is_sdma_channel_enabled (sdmac->sdma, sdmac->channel)) {dev_warn (sdmac->sdma->dev,"restart cyclic channel %d\n" , sdmac->channel);sdma_enable_channel (sdmac->sdma, sdmac->channel); }
@@ -2280,7 +2280,7 @@ MODULE_DESCRIPTION("i.MX SDMA driver");#if IS_ENABLED (CONFIG_SOC_IMX6Q )MODULE_FIRMWARE ("imx/sdma/sdma-imx6q.bin" );#endif -#if IS_ENABLED (CONFIG_SOC_IMX7D ) +#if IS_ENABLED (CONFIG_SOC_IMX7D ) ||IS_ENABLED (CONFIG_SOC_IMX8M )MODULE_FIRMWARE ("imx/sdma/sdma-imx7d.bin" );#endif MODULE_LICENSE ("GPL" );
drivers/dma/lgm/lgm-dma.c +2 -1
@@ -1593,11 +1593,12 @@ static int intel_ldma_probe(struct platform_device *pdev) d->core_clk =devm_clk_get_optional (dev,NULL );if (IS_ERR (d->core_clk))return PTR_ERR (d->core_clk); -clk_prepare_enable (d->core_clk); d->rst =devm_reset_control_get_optional (dev,NULL );if (IS_ERR (d->rst))return PTR_ERR (d->rst); + +clk_prepare_enable (d->core_clk);reset_control_deassert (d->rst); ret =devm_add_action_or_reset (dev, ldma_clk_disable, d);
drivers/dma/pl330.c +1 -1
@@ -2589,7 +2589,7 @@ static struct dma_pl330_desc *pl330_get_desc(struct dma_pl330_chan *pch)/* If the DMAC pool is empty, alloc new */ if (!desc) { -DEFINE_SPINLOCK (lock); +static DEFINE_SPINLOCK (lock);LIST_HEAD (pool);if (!add_desc (&pool, &lock,GFP_ATOMIC ,1 ))
drivers/dma/qcom/bam_dma.c +11 -28
@@ -558,14 +558,6 @@ static int bam_alloc_chan(struct dma_chan *chan)return 0 ; } -static int bam_pm_runtime_get_sync (struct device *dev) -{ -if (pm_runtime_enabled (dev)) -return pm_runtime_get_sync (dev); - -return 0 ; -} -/** * bam_free_chan - Frees dma resources associated with specific channel * @chan: specified channel
@@ -581,7 +573,7 @@ static void bam_free_chan(struct dma_chan *chan)unsigned long flags;int ret; - ret =bam_pm_runtime_get_sync (bdev->dev); + ret =pm_runtime_get_sync (bdev->dev);if (ret <0 )return ;
@@ -784,7 +776,7 @@ static int bam_pause(struct dma_chan *chan)unsigned long flag;int ret; - ret =bam_pm_runtime_get_sync (bdev->dev); + ret =pm_runtime_get_sync (bdev->dev);if (ret <0 )return ret;
@@ -810,7 +802,7 @@ static int bam_resume(struct dma_chan *chan)unsigned long flag;int ret; - ret =bam_pm_runtime_get_sync (bdev->dev); + ret =pm_runtime_get_sync (bdev->dev);if (ret <0 )return ret;
@@ -919,7 +911,7 @@ static irqreturn_t bam_dma_irq(int irq, void *data)if (srcs &P_IRQ )tasklet_schedule (&bdev->task); - ret =bam_pm_runtime_get_sync (bdev->dev); + ret =pm_runtime_get_sync (bdev->dev);if (ret <0 )return IRQ_NONE ;
@@ -1037,7 +1029,7 @@ static void bam_start_dma(struct bam_chan *bchan)if (!vd)return ; - ret =bam_pm_runtime_get_sync (bdev->dev); + ret =pm_runtime_get_sync (bdev->dev);if (ret <0 )return ;
@@ -1374,11 +1366,6 @@ static int bam_dma_probe(struct platform_device *pdev)if (ret) goto err_unregister_dma; -if (!bdev->bamclk) { -pm_runtime_disable (&pdev->dev); -return 0 ; - } -pm_runtime_irq_safe (&pdev->dev);pm_runtime_set_autosuspend_delay (&pdev->dev,BAM_DMA_AUTOSUSPEND_DELAY );pm_runtime_use_autosuspend (&pdev->dev);
@@ -1462,10 +1449,8 @@ static int __maybe_unused bam_dma_suspend(struct device *dev) {struct bam_device *bdev =dev_get_drvdata (dev); -if (bdev->bamclk) { -pm_runtime_force_suspend (dev); -clk_unprepare (bdev->bamclk); - } +pm_runtime_force_suspend (dev); +clk_unprepare (bdev->bamclk);return 0 ; }
@@ -1475,13 +1460,11 @@ static int __maybe_unused bam_dma_resume(struct device *dev)struct bam_device *bdev =dev_get_drvdata (dev);int ret; -if (bdev->bamclk) { - ret =clk_prepare (bdev->bamclk); -if (ret) -return ret; + ret =clk_prepare (bdev->bamclk); +if (ret) +return ret; -pm_runtime_force_resume (dev); - } +pm_runtime_force_resume (dev);return 0 ; }
drivers/dma/ti/dma-crossbar.c +5 -0
@@ -245,6 +245,7 @@ static void *ti_dra7_xbar_route_allocate(struct of_phandle_args *dma_spec,if (dma_spec->args[0 ] >= xbar->xbar_requests) {dev_err (&pdev->dev,"Invalid XBAR request number: %d\n" , dma_spec->args[0 ]); +put_device (&pdev->dev);return ERR_PTR (-EINVAL ); }
@@ -252,12 +253,14 @@ static void *ti_dra7_xbar_route_allocate(struct of_phandle_args *dma_spec, dma_spec->np =of_parse_phandle (ofdma->of_node,"dma-masters" ,0 );if (!dma_spec->np) {dev_err (&pdev->dev,"Can't get DMA master\n" ); +put_device (&pdev->dev);return ERR_PTR (-EINVAL ); } map =kzalloc (sizeof (*map),GFP_KERNEL );if (!map) {of_node_put (dma_spec->np); +put_device (&pdev->dev);return ERR_PTR (-ENOMEM ); }
@@ -268,6 +271,8 @@ static void *ti_dra7_xbar_route_allocate(struct of_phandle_args *dma_spec,mutex_unlock (&xbar->mutex);dev_err (&pdev->dev,"Run out of free DMA requests\n" );kfree (map); +of_node_put (dma_spec->np); +put_device (&pdev->dev);return ERR_PTR (-ENOMEM ); }set_bit (map->xbar_out, xbar->dma_inuse);
drivers/i2c/busses/i2c-cadence.c +1 -0
@@ -1338,6 +1338,7 @@ static int cdns_i2c_probe(struct platform_device *pdev)return 0 ; err_clk_dis: +clk_notifier_unregister (id->clk, &id->clk_rate_change_nb);clk_disable_unprepare (id->clk);pm_runtime_disable (&pdev->dev);pm_runtime_set_suspended (&pdev->dev);
drivers/i2c/busses/i2c-piix4.c +7 -9
@@ -161,7 +161,6 @@ static const char *piix4_aux_port_name_sb800 = " port 1";struct sb800_mmio_cfg {void __iomem *addr; -struct resource *res;bool use_mmio; };
@@ -179,13 +178,11 @@ static int piix4_sb800_region_request(struct device *dev, struct sb800_mmio_cfg *mmio_cfg) {if (mmio_cfg->use_mmio) { -struct resource *res;void __iomem *addr; - res =request_mem_region_muxed (SB800_PIIX4_FCH_PM_ADDR , -SB800_PIIX4_FCH_PM_SIZE , -"sb800_piix4_smb" ); -if (!res) { +if (!request_mem_region_muxed (SB800_PIIX4_FCH_PM_ADDR , +SB800_PIIX4_FCH_PM_SIZE , +"sb800_piix4_smb" )) {dev_err (dev,"SMBus base address memory region 0x%x already in use.\n" ,SB800_PIIX4_FCH_PM_ADDR );
@@ -195,12 +192,12 @@ static int piix4_sb800_region_request(struct device *dev, addr =ioremap (SB800_PIIX4_FCH_PM_ADDR ,SB800_PIIX4_FCH_PM_SIZE );if (!addr) { -release_resource (res); +release_mem_region (SB800_PIIX4_FCH_PM_ADDR , +SB800_PIIX4_FCH_PM_SIZE );dev_err (dev,"SMBus base address mapping failed.\n" );return -ENOMEM ; } - mmio_cfg->res = res; mmio_cfg->addr = addr;return 0 ;
@@ -222,7 +219,8 @@ static void piix4_sb800_region_release(struct device *dev, {if (mmio_cfg->use_mmio) {iounmap (mmio_cfg->addr); -release_resource (mmio_cfg->res); +release_mem_region (SB800_PIIX4_FCH_PM_ADDR , +SB800_PIIX4_FCH_PM_SIZE );return ; }
drivers/iommu/intel/dmar.c +1 -1
@@ -383,7 +383,7 @@ static int dmar_pci_bus_notifier(struct notifier_block *nb,static struct notifier_block dmar_pci_bus_nb = { .notifier_call = dmar_pci_bus_notifier, - .priority =INT_MIN , + .priority =1 , }; static struct dmar_drhd_unit *
drivers/iommu/intel/iommu.c +0 -24
@@ -320,30 +320,6 @@ EXPORT_SYMBOL_GPL(intel_iommu_gfx_mapped);DEFINE_SPINLOCK (device_domain_lock);static LIST_HEAD (device_domain_list); -/* -* Iterate over elements in device_domain_list and call the specified -* callback @fn against each element. -*/ -int for_each_device_domain (int (*fn)(struct device_domain_info *info, -void *data),void *data) -{ -int ret =0 ; -unsigned long flags; -struct device_domain_info *info; - -spin_lock_irqsave (&device_domain_lock, flags); -list_for_each_entry (info, &device_domain_list, global) { - ret =fn (info, data); -if (ret) { -spin_unlock_irqrestore (&device_domain_lock, flags); -return ret; - } - } -spin_unlock_irqrestore (&device_domain_lock, flags); - -return 0 ; -} -const struct iommu_ops intel_iommu_ops;static bool translation_pre_enabled (struct intel_iommu *iommu)
drivers/iommu/intel/pasid.c +3 -66
104 lines not on this page · raw message
drivers/iommu/intel/pasid.h +0 -1
@@ -74,7 +74,6 @@ struct pasid_table {void *table;/* pasid table pointer */ int order;/* page order of pasid table */ u32 max_pasid;/* max pasid */ -struct list_head dev;/* device list */ };/* Get PRESENT bit of a PASID directory entry. */
drivers/misc/cardreader/rtsx_usb.c +19 -8
@@ -631,16 +631,20 @@ static int rtsx_usb_probe(struct usb_interface *intf, ucr->pusb_dev = usb_dev; - ucr->iobuf =usb_alloc_coherent (ucr->pusb_dev,IOBUF_SIZE , -GFP_KERNEL , &ucr->iobuf_dma); -if (!ucr->iobuf) + ucr->cmd_buf =kmalloc (IOBUF_SIZE ,GFP_KERNEL ); +if (!ucr->cmd_buf)return -ENOMEM ; + ucr->rsp_buf =kmalloc (IOBUF_SIZE ,GFP_KERNEL ); +if (!ucr->rsp_buf) { + ret = -ENOMEM ; + goto out_free_cmd_buf; + } +usb_set_intfdata (intf, ucr); ucr->vendor_id = id->idVendor; ucr->product_id = id->idProduct; - ucr->cmd_buf = ucr->rsp_buf = ucr->iobuf;mutex_init (&ucr->dev_mutex);
@@ -668,8 +672,11 @@ static int rtsx_usb_probe(struct usb_interface *intf, out_init_fail:usb_set_intfdata (ucr->pusb_intf,NULL ); -usb_free_coherent (ucr->pusb_dev,IOBUF_SIZE , ucr->iobuf, - ucr->iobuf_dma); +kfree (ucr->rsp_buf); + ucr->rsp_buf =NULL ; +out_free_cmd_buf: +kfree (ucr->cmd_buf); + ucr->cmd_buf =NULL ;return ret; }
@@ -682,8 +689,12 @@ static void rtsx_usb_disconnect(struct usb_interface *intf)mfd_remove_devices (&intf->dev);usb_set_intfdata (ucr->pusb_intf,NULL ); -usb_free_coherent (ucr->pusb_dev,IOBUF_SIZE , ucr->iobuf, - ucr->iobuf_dma); + +kfree (ucr->cmd_buf); + ucr->cmd_buf =NULL ; + +kfree (ucr->rsp_buf); + ucr->rsp_buf =NULL ; }#ifdef CONFIG_PM
drivers/net/can/grcan.c +0 -1
@@ -1646,7 +1646,6 @@ static int grcan_probe(struct platform_device *ofdev)*/ sysid_parent =of_find_node_by_path ("/ambapp0" );if (sysid_parent) { -of_node_get (sysid_parent); err =of_property_read_u32 (sysid_parent,"systemid" , &sysid);if (!err && ((sysid &GRLIB_VERSION_MASK ) >=GRCAN_TXBUG_SAFE_GRLIB_VERSION ))
drivers/net/can/m_can/m_can.c +5 -3
@@ -532,7 +532,7 @@ static int m_can_read_fifo(struct net_device *dev, u32 rxfs)/* acknowledge rx fifo 0 */ m_can_write (cdev,M_CAN_RXF0A , fgi); - timestamp =FIELD_GET (RX_BUF_RXTS_MASK , fifo_header.dlc); + timestamp =FIELD_GET (RX_BUF_RXTS_MASK , fifo_header.dlc) <<16 ;m_can_receive_skb (cdev, skb, timestamp);
@@ -1036,7 +1036,7 @@ static int m_can_echo_tx_event(struct net_device *dev) } msg_mark =FIELD_GET (TX_EVENT_MM_MASK , txe); - timestamp =FIELD_GET (TX_EVENT_TXTS_MASK , txe); + timestamp =FIELD_GET (TX_EVENT_TXTS_MASK , txe) <<16 ;/* ack txe element */ m_can_write(cdev, M_CAN_TXEFA, FIELD_PREP(TXEFA_EFAI_MASK,
@@ -1360,7 +1360,9 @@ static void m_can_chip_config(struct net_device *dev)/* enable internal timestamp generation, with a prescalar of 16. The * prescalar is applied to the nominal bit timing */ -m_can_write (cdev,M_CAN_TSCC ,FIELD_PREP (TSCC_TCP_MASK ,0xf )); +m_can_write (cdev,M_CAN_TSCC , +FIELD_PREP (TSCC_TCP_MASK ,0xf ) | +FIELD_PREP (TSCC_TSS_MASK ,TSCC_TSS_INTERNAL ));m_can_config_endisable (cdev, false);
drivers/net/can/rcar/rcar_canfd.c +4 -1
@@ -1334,7 +1334,10 @@ static void rcar_canfd_set_bittiming(struct net_device *dev) cfg = (RCANFD_DCFG_DTSEG1 (gpriv, tseg1) |RCANFD_DCFG_DBRP (brp) |RCANFD_DCFG_DSJW (sjw) |RCANFD_DCFG_DTSEG2 (gpriv, tseg2)); -rcar_canfd_write (priv->base,RCANFD_F_DCFG (ch), cfg); +if (is_v3u (gpriv)) +rcar_canfd_write (priv->base,RCANFD_V3U_DCFG (ch), cfg); +else +rcar_canfd_write (priv->base,RCANFD_F_DCFG (ch), cfg);netdev_dbg (priv->ndev,"drate: brp %u, sjw %u, tseg1 %u, tseg2 %u\n" , brp, sjw, tseg1, tseg2); }else {
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +4 -2
@@ -12,6 +12,7 @@// Copyright (c) 2019 Martin Sperl <[email protected]> // +#include <asm/unaligned.h> #include <linux/bitfield.h> #include <linux/clk.h> #include <linux/device.h>
@@ -1641,6 +1642,7 @@ static int mcp251xfd_stop(struct net_device *ndev)netif_stop_queue (ndev);set_bit (MCP251XFD_FLAGS_DOWN , priv->flags);hrtimer_cancel (&priv->rx_irq_timer); +hrtimer_cancel (&priv->tx_irq_timer);mcp251xfd_chip_interrupts_disable (priv);free_irq (ndev->irq, priv);can_rx_offload_disable (&priv->offload);
@@ -1768,7 +1770,7 @@ mcp251xfd_register_get_dev_id(const struct mcp251xfd_priv *priv, u32 *dev_id, xfer[0 ].len =sizeof (buf_tx->cmd); xfer[0 ].speed_hz = priv->spi_max_speed_hz_slow; xfer[1 ].rx_buf = buf_rx->data; - xfer[1 ].len =sizeof (dev_id); + xfer[1 ].len =sizeof (*dev_id); xfer[1 ].speed_hz = priv->spi_max_speed_hz_fast;mcp251xfd_spi_cmd_read_nocrc (&buf_tx->cmd,MCP251XFD_REG_DEVID );
@@ -1777,7 +1779,7 @@ mcp251xfd_register_get_dev_id(const struct mcp251xfd_priv *priv, u32 *dev_id,if (err) goto out_kfree_buf_tx; - *dev_id =be32_to_cpup ((__be32 *)buf_rx->data); + *dev_id =get_unaligned_le32 (buf_rx->data); *effective_speed_hz_slow = xfer[0 ].effective_speed_hz; *effective_speed_hz_fast = xfer[1 ].effective_speed_hz;
drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c +11 -11
@@ -334,19 +334,21 @@ mcp251xfd_regmap_crc_read(void *context,* register. It increments once per SYS clock tick, * which is 20 or 40 MHz. * -* Observation shows that if the lowest byte (which is -* transferred first on the SPI bus) of that register -* is 0x00 or 0x80 the calculated CRC doesn't always -* match the transferred one. +* Observation on the mcp2518fd shows that if the +* lowest byte (which is transferred first on the SPI +* bus) of that register is 0x00 or 0x80 the +* calculated CRC doesn't always match the transferred +* one. On the mcp2517fd this problem is not limited +* to the first byte being 0x00 or 0x80. * * If the highest bit in the lowest byte is flipped * the transferred CRC matches the calculated one. We -* assume for now the CRC calculation in the chip -* works on wrong data and the transferred data is -* correct. +* assume for now the CRC operates on the correct +* data. */ if (reg ==MCP251XFD_REG_TBC && - (buf_rx->data[0 ] ==0x0 || buf_rx->data[0 ] ==0x80 )) { + ((buf_rx->data[0 ] &0xf8 ) ==0x0 || + (buf_rx->data[0 ] &0xf8 ) ==0x80 )) {/* Flip highest bit in lowest byte of le32 */ buf_rx->data[0 ] ^=0x80 ;
@@ -356,10 +358,8 @@ mcp251xfd_regmap_crc_read(void *context, val_len);if (!err) {/* If CRC is now correct, assume -* transferred data was OK, flip bit -* back to original value. +* flipped data is OK. */ - buf_rx->data[0 ] ^=0x80 ; goto out; } }
drivers/net/can/usb/gs_usb.c +21 -2
@@ -268,6 +268,8 @@ struct gs_can {struct usb_anchor tx_submitted;atomic_t active_tx_urbs; +void *rxbuf[GS_MAX_RX_URBS ]; +dma_addr_t rxbuf_dma[GS_MAX_RX_URBS ]; };/* usb interface struct */
@@ -742,6 +744,7 @@ static int gs_can_open(struct net_device *netdev)for (i =0 ; i <GS_MAX_RX_URBS ; i++) {struct urb *urb;u8 *buf; +dma_addr_t buf_dma;/* alloc rx urb */ urb =usb_alloc_urb (0 ,GFP_KERNEL );
@@ -752,7 +755,7 @@ static int gs_can_open(struct net_device *netdev) buf =usb_alloc_coherent (dev->udev, dev->parent->hf_size_rx,GFP_KERNEL , - &urb->transfer_dma); + &buf_dma);if (!buf) {netdev_err (netdev,"No memory left for USB buffer\n" );
@@ -760,6 +763,8 @@ static int gs_can_open(struct net_device *netdev)return -ENOMEM ; } + urb->transfer_dma = buf_dma; +/* fill, anchor, and submit rx urb */ usb_fill_bulk_urb(urb, dev->udev,
@@ -781,10 +786,17 @@ static int gs_can_open(struct net_device *netdev) "usb_submit failed (err=%d)\n", rc);usb_unanchor_urb (urb); +usb_free_coherent (dev->udev, +sizeof (struct gs_host_frame ), + buf, + buf_dma);usb_free_urb (urb);break ; } + dev->rxbuf[i] = buf; + dev->rxbuf_dma[i] = buf_dma; +/* Drop reference, * USB core will take care of freeing it */
@@ -842,13 +854,20 @@ static int gs_can_close(struct net_device *netdev)int rc;struct gs_can *dev =netdev_priv (netdev);struct gs_usb *parent = dev->parent; +unsigned int i;netif_stop_queue (netdev);/* Stop polling */ parent->active_channels--; -if (!parent->active_channels) +if (!parent->active_channels) {usb_kill_anchored_urbs (&parent->rx_submitted); +for (i =0 ; i <GS_MAX_RX_URBS ; i++) +usb_free_coherent (dev->udev, +sizeof (struct gs_host_frame ), + dev->rxbuf[i], + dev->rxbuf_dma[i]); + }/* Stop sending URBs */ usb_kill_anchored_urbs (&dev->tx_submitted);
drivers/net/can/usb/kvaser_usb/kvaser_usb.h +15 -10
@@ -35,9 +35,10 @@#define KVASER_USB_RX_BUFFER_SIZE 3072#define KVASER_USB_MAX_NET_DEVICES 5 -/* USB devices features */ -#define KVASER_USB_HAS_SILENT_MODE BIT(0) -#define KVASER_USB_HAS_TXRX_ERRORS BIT(1) +/* Kvaser USB device quirks */ +#define KVASER_USB_QUIRK_HAS_SILENT_MODE BIT(0) +#define KVASER_USB_QUIRK_HAS_TXRX_ERRORS BIT(1) +#define KVASER_USB_QUIRK_IGNORE_CLK_FREQ BIT(2)/* Device capabilities */ #define KVASER_USB_CAP_BERR_CAP 0x01
@@ -65,12 +66,7 @@ struct kvaser_usb_dev_card_data_hydra {struct kvaser_usb_dev_card_data {u32 ctrlmode_supported;u32 capabilities; -union { -struct { -enum kvaser_usb_leaf_family family; - } leaf; -struct kvaser_usb_dev_card_data_hydra hydra; - }; +struct kvaser_usb_dev_card_data_hydra hydra; };/* Context for an outstanding, not yet ACKed, transmission */
@@ -83,7 +79,7 @@ struct kvaser_usb {struct usb_device *udev;struct usb_interface *intf;struct kvaser_usb_net_priv *nets[KVASER_USB_MAX_NET_DEVICES ]; -const struct kvaser_usb_dev_ops *ops; +const struct kvaser_usb_driver_info *driver_info;const struct kvaser_usb_dev_cfg *cfg;struct usb_endpoint_descriptor *bulk_in, *bulk_out;
@@ -165,6 +161,12 @@ struct kvaser_usb_dev_ops { u16 transid); }; +struct kvaser_usb_driver_info { +u32 quirks; +enum kvaser_usb_leaf_family family; +const struct kvaser_usb_dev_ops *ops; +}; +struct kvaser_usb_dev_cfg {const struct can_clock clock;const unsigned int timestamp_freq;
@@ -184,4 +186,7 @@ int kvaser_usb_send_cmd_async(struct kvaser_usb_net_priv *priv, void *cmd, int len);int kvaser_usb_can_rx_over_error (struct net_device *netdev); + +extern const struct can_bittiming_const kvaser_usb_flexc_bittiming_const; +#endif /* KVASER_USB_H */
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c +158 -127
456 lines not on this page · raw message
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +2 -2
@@ -375,7 +375,7 @@ static const struct can_bittiming_const kvaser_usb_hydra_kcan_bittiming_c = { .brp_inc = 1, }; -static const struct can_bittiming_const kvaser_usb_hydra_flexc_bittiming_c = { +const struct can_bittiming_const kvaser_usb_flexc_bittiming_const = { .name ="kvaser_usb_flex" , .tseg1_min =4 , .tseg1_max =16 ,
@@ -2052,7 +2052,7 @@ static const struct kvaser_usb_dev_cfg kvaser_usb_hydra_dev_cfg_flexc = { .freq = 24 * MEGA /* Hz */, }, .timestamp_freq = 1, - .bittiming_const = &kvaser_usb_hydra_flexc_bittiming_c, + .bittiming_const = &kvaser_usb_flexc_bittiming_const, }; static const struct kvaser_usb_dev_cfg kvaser_usb_hydra_dev_cfg_rt = {
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c +68 -51
237 lines not on this page · raw message
drivers/net/dsa/qca8k.c +21 -2
@@ -2372,7 +2372,7 @@ static int qca8k_port_change_mtu(struct dsa_switch *ds, int port, int new_mtu) { struct qca8k_priv *priv = ds->priv; -int i, mtu =0 ; +int ret, i, mtu =0 ; priv->port_mtu[port] = new_mtu;
@@ -2380,8 +2380,27 @@ qca8k_port_change_mtu(struct dsa_switch *ds, int port, int new_mtu)if (priv->port_mtu[i] > mtu) mtu = priv->port_mtu[i]; +/* To change the MAX_FRAME_SIZE the cpu ports must be off or +* the switch panics. +* Turn off both cpu ports before applying the new value to prevent +* this. +*/ +if (priv->port_sts[0 ].enabled) +qca8k_port_set_status (priv,0 ,0 ); + +if (priv->port_sts[6 ].enabled) +qca8k_port_set_status (priv,6 ,0 ); +/* Include L2 header / FCS length */ -return qca8k_write (priv,QCA8K_MAX_FRAME_SIZE , mtu +ETH_HLEN +ETH_FCS_LEN ); + ret =qca8k_write (priv,QCA8K_MAX_FRAME_SIZE , mtu +ETH_HLEN +ETH_FCS_LEN ); + +if (priv->port_sts[0 ].enabled) +qca8k_port_set_status (priv,0 ,1 ); + +if (priv->port_sts[6 ].enabled) +qca8k_port_set_status (priv,6 ,1 ); + +return ret; } static int
drivers/net/ethernet/ibm/ibmvnic.c +9 -0
@@ -5774,6 +5774,15 @@ static int ibmvnic_reset_init(struct ibmvnic_adapter *adapter, bool reset)release_sub_crqs (adapter,0 ); rc =init_sub_crqs (adapter); }else { +/* no need to reinitialize completely, but we do +* need to clean up transmits that were in flight +* when we processed the reset. Failure to do so +* will confound the upper layer, usually TCP, by +* creating the illusion of transmits that are +* awaiting completion. +*/ +clean_tx_pools (adapter); + rc =reset_sub_crq_queues (adapter); } }else {
drivers/net/ethernet/intel/i40e/i40e.h +16 -0
@@ -37,6 +37,7 @@#include <net/tc_act/tc_mirred.h> #include <net/udp_tunnel.h> #include <net/xdp_sock.h> +#include <linux/bitfield.h> #include "i40e_type.h" #include "i40e_prototype.h" #include <linux/net/intel/i40e_client.h>
@@ -1091,6 +1092,21 @@ static inline void i40e_write_fd_input_set(struct i40e_pf *pf, (u32)(val & 0xFFFFFFFFULL)); } +/** +* i40e_get_pf_count - get PCI PF count. +* @hw: pointer to a hw. +* +* Reports the function number of the highest PCI physical +* function plus 1 as it is loaded from the NVM. +* +* Return: PCI PF count. +**/ +static inline u32 i40e_get_pf_count (struct i40e_hw *hw) +{ +return FIELD_GET (I40E_GLGEN_PCIFCNCNT_PCIPFCNT_MASK , +rd32 (hw,I40E_GLGEN_PCIFCNCNT )); +} +/* needed by i40e_ethtool.c */ int i40e_up (struct i40e_vsi *vsi);void i40e_down (struct i40e_vsi *vsi);
drivers/net/ethernet/intel/i40e/i40e_main.c +73 -0
91 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_register.h +13 -0
@@ -211,6 +211,11 @@#define I40E_GLGEN_MSRWD_MDIWRDATA_SHIFT 0#define I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT 16#define I40E_GLGEN_MSRWD_MDIRDDATA_MASK I40E_MASK(0xFFFF, I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT) +#define I40E_GLGEN_PCIFCNCNT 0x001C0AB4/* Reset: PCIR */ +#define I40E_GLGEN_PCIFCNCNT_PCIPFCNT_SHIFT 0 +#define I40E_GLGEN_PCIFCNCNT_PCIPFCNT_MASK I40E_MASK(0x1F, I40E_GLGEN_PCIFCNCNT_PCIPFCNT_SHIFT) +#define I40E_GLGEN_PCIFCNCNT_PCIVFCNT_SHIFT 16 +#define I40E_GLGEN_PCIFCNCNT_PCIVFCNT_MASK I40E_MASK(0xFF, I40E_GLGEN_PCIFCNCNT_PCIVFCNT_SHIFT)#define I40E_GLGEN_RSTAT 0x000B8188/* Reset: POR */ #define I40E_GLGEN_RSTAT_DEVSTATE_SHIFT 0#define I40E_GLGEN_RSTAT_DEVSTATE_MASK I40E_MASK(0x3, I40E_GLGEN_RSTAT_DEVSTATE_SHIFT)
@@ -643,6 +648,14 @@#define I40E_VFQF_HKEY1_MAX_INDEX 12#define I40E_VFQF_HLUT1 (_i, _VF) (0x00220000 + ((_i) * 1024 + (_VF) * 4))/* _i=0...15, _VF=0...127 */ /* Reset: CORER */ #define I40E_VFQF_HLUT1_MAX_INDEX 15 +#define I40E_GL_RXERR1H (_i) (0x00318004 + ((_i) * 8))/* _i=0...143 */ /* Reset: CORER */ +#define I40E_GL_RXERR1H_MAX_INDEX 143 +#define I40E_GL_RXERR1H_RXERR1H_SHIFT 0 +#define I40E_GL_RXERR1H_RXERR1H_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1H_RXERR1H_SHIFT) +#define I40E_GL_RXERR1L (_i) (0x00318000 + ((_i) * 8))/* _i=0...143 */ /* Reset: CORER */ +#define I40E_GL_RXERR1L_MAX_INDEX 143 +#define I40E_GL_RXERR1L_RXERR1L_SHIFT 0 +#define I40E_GL_RXERR1L_RXERR1L_MASK I40E_MASK(0xFFFFFFFF, I40E_GL_RXERR1L_RXERR1L_SHIFT)#define I40E_GLPRT_BPRCH (_i) (0x003005E4 + ((_i) * 8))/* _i=0...3 */ /* Reset: CORER */ #define I40E_GLPRT_BPRCL (_i) (0x003005E0 + ((_i) * 8))/* _i=0...3 */ /* Reset: CORER */ #define I40E_GLPRT_BPTCH (_i) (0x00300A04 + ((_i) * 8))/* _i=0...3 */ /* Reset: CORER */
drivers/net/ethernet/intel/i40e/i40e_type.h +1 -0
@@ -1172,6 +1172,7 @@ struct i40e_eth_stats {u64 tx_broadcast;/* bptc */ u64 tx_discards;/* tdpc */ u64 tx_errors;/* tepc */ +u64 rx_discards_other;/* rxerr1 */ };/* Statistics collected per VEB per TC */
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +4 -0
@@ -2147,6 +2147,10 @@ static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf, u8 *msg)/* VFs only use TC 0 */ vfres->vsi_res[0 ].qset_handle =le16_to_cpu (vsi->info.qs_handle[0 ]); +if (!(vf->driver_caps &VIRTCHNL_VF_OFFLOAD_USO ) && !vf->pf_set_mac) { +i40e_del_mac_filter (vsi, vf->default_lan_addr.addr); +eth_zero_addr (vf->default_lan_addr.addr); + }ether_addr_copy (vfres->vsi_res[0 ].default_mac_addr, vf->default_lan_addr.addr); }
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +6 -7
@@ -4503,13 +4503,6 @@ static int mlx5e_policer_validate(const struct flow_action *action,return -EOPNOTSUPP ; } -if (act->police.notexceed.act_id !=FLOW_ACTION_PIPE && - act->police.notexceed.act_id !=FLOW_ACTION_ACCEPT ) { -NL_SET_ERR_MSG_MOD (extack, -"Offload not supported when conform action is not pipe or ok" ); -return -EOPNOTSUPP ; - } -if (act->police.notexceed.act_id ==FLOW_ACTION_ACCEPT && !flow_action_is_last_entry (action, act)) { NL_SET_ERR_MSG_MOD(extack,
@@ -4560,6 +4553,12 @@ static int scan_tc_matchall_fdb_actions(struct mlx5e_priv *priv,flow_action_for_each (i, act, flow_action) {switch (act->id) {case FLOW_ACTION_POLICE : +if (act->police.notexceed.act_id !=FLOW_ACTION_CONTINUE ) { +NL_SET_ERR_MSG_MOD (extack, +"Offload not supported when conform action is not continue" ); +return -EOPNOTSUPP ; + } + err =mlx5e_policer_validate (flow_action, act, extack);if (err)return err;
drivers/net/ethernet/microchip/lan966x/lan966x_main.c +2 -6
@@ -979,7 +979,7 @@ static int lan966x_probe(struct platform_device *pdev)struct fwnode_handle *ports, *portnp;struct lan966x *lan966x;u8 mac_addr[ETH_ALEN ]; -int err, i; +int err; lan966x =devm_kzalloc (&pdev->dev,sizeof (*lan966x),GFP_KERNEL );if (!lan966x)
@@ -1010,11 +1010,7 @@ static int lan966x_probe(struct platform_device *pdev)if (err)return dev_err_probe (&pdev->dev, err,"Reset failed" ); - i =0 ; -fwnode_for_each_available_child_node (ports, portnp) - ++i; - - lan966x->num_phys_ports = i; + lan966x->num_phys_ports =NUM_PHYS_PORTS ; lan966x->ports =devm_kcalloc (&pdev->dev, lan966x->num_phys_ports,sizeof (struct lan966x_port *),GFP_KERNEL );
drivers/net/ethernet/microchip/lan966x/lan966x_main.h +1 -0
@@ -31,6 +31,7 @@/* Reserved amount for (SRC, PRIO) at index 8*SRC + PRIO */ #define QSYS_Q_RSRV 95 +#define NUM_PHYS_PORTS 8#define CPU_PORT 8/* Reserved PGIDs */
drivers/net/ethernet/realtek/r8169_main.c +4 -6
@@ -4190,7 +4190,6 @@ static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts)static bool rtl8169_tso_csum_v2 (struct rtl8169_private *tp,struct sk_buff *skb,u32 *opts) { -u32 transport_offset = (u32 )skb_transport_offset (skb);struct skb_shared_info *shinfo =skb_shinfo (skb);u32 mss = shinfo->gso_size;
@@ -4207,7 +4206,7 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,WARN_ON_ONCE (1 ); } - opts[0 ] |= transport_offset <<GTTCPHO_SHIFT ; + opts[0 ] |=skb_transport_offset (skb) <<GTTCPHO_SHIFT ; opts[1 ] |= mss <<TD1_MSS_SHIFT ; }else if (skb->ip_summed ==CHECKSUM_PARTIAL ) {u8 ip_protocol;
@@ -4235,7 +4234,7 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,else WARN_ON_ONCE (1 ); - opts[1 ] |= transport_offset <<TCPHO_SHIFT ; + opts[1 ] |=skb_transport_offset (skb) <<TCPHO_SHIFT ; }else {unsigned int padto =rtl_quirk_packet_padto (tp, skb);
@@ -4402,14 +4401,13 @@ static netdev_features_t rtl8169_features_check(struct sk_buff *skb, struct net_device *dev, netdev_features_t features) { - int transport_offset = skb_transport_offset(skb);struct rtl8169_private *tp =netdev_priv (dev);if (skb_is_gso (skb)) {if (tp->mac_version ==RTL_GIGA_MAC_VER_34 ) features =rtl8168evl_fix_tso (skb, features); -if (transport_offset >GTTCPHO_MAX && +if (skb_transport_offset (skb) >GTTCPHO_MAX &&rtl_chip_supports_csum_v2 (tp)) features &= ~NETIF_F_ALL_TSO ; }else if (skb->ip_summed ==CHECKSUM_PARTIAL ) {
@@ -4420,7 +4418,7 @@ static netdev_features_t rtl8169_features_check(struct sk_buff *skb,if (rtl_quirk_packet_padto (tp, skb)) features &= ~NETIF_F_CSUM_MASK ; -if (transport_offset >TCPHO_MAX && +if (skb_transport_offset (skb) >TCPHO_MAX &&rtl_chip_supports_csum_v2 (tp)) features &= ~NETIF_F_CSUM_MASK ; }
drivers/net/usb/usbnet.c +12 -5
@@ -2137,7 +2137,7 @@ static void usbnet_async_cmd_cb(struct urb *urb)int usbnet_write_cmd_async (struct usbnet *dev,u8 cmd,u8 reqtype,u16 value,u16 index,const void *data,u16 size) { -struct usb_ctrlrequest *req =NULL ; +struct usb_ctrlrequest *req;struct urb *urb;int err = -ENOMEM ;void *buf =NULL ;
@@ -2155,7 +2155,7 @@ int usbnet_write_cmd_async(struct usbnet *dev, u8 cmd, u8 reqtype,if (!buf) {netdev_err (dev->net,"Error allocating buffer" " in %s!\n" , __func__); - goto fail_free; + goto fail_free_urb; } }
@@ -2179,14 +2179,21 @@ int usbnet_write_cmd_async(struct usbnet *dev, u8 cmd, u8 reqtype,if (err <0 ) {netdev_err (dev->net,"Error submitting the control" " message: status=%d\n" , err); - goto fail_free; + goto fail_free_all; }return 0 ; +fail_free_all: +kfree (req); fail_free_buf:kfree (buf); -fail_free: -kfree (req); +/* +* avoid a double free +* needed because the flag can be set only +* after filling the URB +*/ + urb->transfer_flags =0 ; +fail_free_urb:usb_free_urb (urb); fail:return err;
drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c +5 -5
@@ -158,26 +158,26 @@ static const struct sunxi_desc_pin sun8i_a83t_pins[] = {SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,14 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" ),/* DQ6 */ +SUNXI_FUNCTION (0x2 ,"nand0" ),/* DQ6 */ SUNXI_FUNCTION (0x3 ,"mmc2" )),/* D6 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,15 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" ),/* DQ7 */ +SUNXI_FUNCTION (0x2 ,"nand0" ),/* DQ7 */ SUNXI_FUNCTION (0x3 ,"mmc2" )),/* D7 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,16 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" ),/* DQS */ +SUNXI_FUNCTION (0x2 ,"nand0" ),/* DQS */ SUNXI_FUNCTION (0x3 ,"mmc2" )),/* RST */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,17 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" )),/* CE2 */ +SUNXI_FUNCTION (0x2 ,"nand0" )),/* CE2 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,18 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ), -SUNXI_FUNCTION (0x2 ,"nand" )),/* CE3 */ +SUNXI_FUNCTION (0x2 ,"nand0" )),/* CE3 */ /* Hole */ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2), SUNXI_FUNCTION(0x0, "gpio_in"),
drivers/pinctrl/sunxi/pinctrl-sunxi.c +2 -0
@@ -544,6 +544,8 @@ static int sunxi_pconf_set(struct pinctrl_dev *pctldev, unsigned pin,struct sunxi_pinctrl *pctl =pinctrl_dev_get_drvdata (pctldev);int i; + pin -= pctl->desc->pin_base; +for (i =0 ; i < num_configs; i++) {enum pin_config_param param;unsigned long flags;
drivers/soc/atmel/soc.c +6 -6
@@ -91,14 +91,14 @@ static const struct at91_soc socs[] __initconst = {AT91_SOC (SAM9X60_CIDR_MATCH ,AT91_CIDR_MATCH_MASK ,AT91_CIDR_VERSION_MASK ,SAM9X60_EXID_MATCH ,"sam9x60" ,"sam9x60" ), -AT91_SOC (SAM9X60_CIDR_MATCH ,SAM9X60_D5M_EXID_MATCH , -AT91_CIDR_VERSION_MASK ,SAM9X60_EXID_MATCH , +AT91_SOC (SAM9X60_CIDR_MATCH ,AT91_CIDR_MATCH_MASK , +AT91_CIDR_VERSION_MASK ,SAM9X60_D5M_EXID_MATCH ,"sam9x60 64MiB DDR2 SiP" ,"sam9x60" ), -AT91_SOC (SAM9X60_CIDR_MATCH ,SAM9X60_D1G_EXID_MATCH , -AT91_CIDR_VERSION_MASK ,SAM9X60_EXID_MATCH , +AT91_SOC (SAM9X60_CIDR_MATCH ,AT91_CIDR_MATCH_MASK , +AT91_CIDR_VERSION_MASK ,SAM9X60_D1G_EXID_MATCH ,"sam9x60 128MiB DDR2 SiP" ,"sam9x60" ), -AT91_SOC (SAM9X60_CIDR_MATCH ,SAM9X60_D6K_EXID_MATCH , -AT91_CIDR_VERSION_MASK ,SAM9X60_EXID_MATCH , +AT91_SOC (SAM9X60_CIDR_MATCH ,AT91_CIDR_MATCH_MASK , +AT91_CIDR_VERSION_MASK ,SAM9X60_D6K_EXID_MATCH ,"sam9x60 8MiB SDRAM SiP" ,"sam9x60" ), #endif #ifdef CONFIG_SOC_SAMA5
drivers/video/fbdev/core/fbcon.c +33 -0
@@ -2480,6 +2480,11 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font,if (charcount !=256 && charcount !=512 )return -EINVAL ; +/* font bigger than screen resolution ? */ +if (w >FBCON_SWAP (info->var.rotate, info->var.xres, info->var.yres) || + h >FBCON_SWAP (info->var.rotate, info->var.yres, info->var.xres)) +return -EINVAL ; +/* Make sure drawing engine can handle the font */ if (!(info->pixmap.blit_x & (1 << (font->width -1 ))) || !(info->pixmap.blit_y & (1 << (font->height -1 ))))
@@ -2742,6 +2747,34 @@ void fbcon_update_vcs(struct fb_info *info, bool all) }EXPORT_SYMBOL (fbcon_update_vcs); +/* let fbcon check if it supports a new screen resolution */ +int fbcon_modechange_possible (struct fb_info *info,struct fb_var_screeninfo *var) +{ +struct fbcon_ops *ops = info->fbcon_par; +struct vc_data *vc; +unsigned int i; + +WARN_CONSOLE_UNLOCKED (); + +if (!ops) +return 0 ; + +/* prevent setting a screen size which is smaller than font size */ +for (i = first_fb_vc; i <= last_fb_vc; i++) { + vc = vc_cons[i].d; +if (!vc || vc->vc_mode !=KD_TEXT || + registered_fb[con2fb_map[i]] != info) +continue ; + +if (vc->vc_font.width >FBCON_SWAP (var->rotate, var->xres, var->yres) || + vc->vc_font.height >FBCON_SWAP (var->rotate, var->yres, var->xres)) +return -EINVAL ; + } + +return 0 ; +} +EXPORT_SYMBOL_GPL (fbcon_modechange_possible); +int fbcon_mode_deleted (struct fb_info *info,struct fb_videomode *mode) {
drivers/video/fbdev/core/fbmem.c +14 -2
@@ -510,7 +510,7 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,while (n && (n * (logo->width +8 ) -8 > xres)) --n; - image.dx = (xres - n * (logo->width +8 ) -8 ) /2 ; + image.dx = (xres - (n * (logo->width +8 ) -8 )) /2 ; image.dy = y ?: (yres - logo->height) /2 ; }else { image.dx =0 ;
@@ -1016,6 +1016,16 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)if (ret)return ret; +/* verify that virtual resolution >= physical resolution */ +if (var->xres_virtual < var->xres || + var->yres_virtual < var->yres) { +pr_warn ("WARNING: fbcon: Driver '%s' missed to adjust virtual screen size (%ux%u vs. %ux%u)\n" , + info->fix.id, + var->xres_virtual, var->yres_virtual, + var->xres, var->yres); +return -EINVAL ; + } +if ((var->activate &FB_ACTIVATE_MASK ) !=FB_ACTIVATE_NOW )return 0 ;
@@ -1106,7 +1116,9 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,return -EFAULT ;console_lock ();lock_fb_info (info); - ret =fb_set_var (info, &var); + ret =fbcon_modechange_possible (info, &var); +if (!ret) + ret =fb_set_var (info, &var);if (!ret)fbcon_update_vcs (info, var.activate &FB_ACTIVATE_ALL );unlock_fb_info (info);
fs/fscache/cookie.c +14 -1
@@ -517,7 +517,14 @@ static void fscache_perform_lookup(struct fscache_cookie *cookie) }fscache_see_cookie (cookie, fscache_cookie_see_active); -fscache_set_cookie_state (cookie,FSCACHE_COOKIE_STATE_ACTIVE ); +spin_lock (&cookie->lock); +if (test_and_clear_bit (FSCACHE_COOKIE_DO_INVALIDATE , &cookie->flags)) +__fscache_set_cookie_state (cookie, +FSCACHE_COOKIE_STATE_INVALIDATING ); +else +__fscache_set_cookie_state (cookie,FSCACHE_COOKIE_STATE_ACTIVE ); +spin_unlock (&cookie->lock); +wake_up_cookie_state (cookie); trace = fscache_access_lookup_cookie_end; out:
@@ -752,6 +759,9 @@ static void fscache_cookie_state_machine(struct fscache_cookie *cookie)spin_lock (&cookie->lock); } +if (test_and_clear_bit (FSCACHE_COOKIE_DO_INVALIDATE , &cookie->flags)) +fscache_end_cookie_access (cookie, fscache_access_invalidate_cookie_end); +switch (state) {case FSCACHE_COOKIE_STATE_RELINQUISHING :fscache_see_cookie (cookie, fscache_cookie_see_relinquish);
@@ -1048,6 +1058,9 @@ void __fscache_invalidate(struct fscache_cookie *cookie,return ;case FSCACHE_COOKIE_STATE_LOOKING_UP : +__fscache_begin_cookie_access (cookie, fscache_access_invalidate_cookie); +set_bit (FSCACHE_COOKIE_DO_INVALIDATE , &cookie->flags); + fallthrough;case FSCACHE_COOKIE_STATE_CREATING :spin_unlock (&cookie->lock);_leave (" [look %x]" , cookie->inval_counter);
fs/fscache/volume.c +2 -2
@@ -143,7 +143,7 @@ static void fscache_wait_on_volume_collision(struct fscache_volume *candidate, {wait_var_event_timeout (&candidate->flags, !fscache_is_acquire_pending (candidate),20 *HZ ); -if (!fscache_is_acquire_pending (candidate)) { +if (fscache_is_acquire_pending (candidate)) {pr_notice ("Potential volume collision new=%08x old=%08x" , candidate->debug_id, collidee_debug_id);fscache_stat (&fscache_n_volumes_collision);
@@ -182,7 +182,7 @@ static bool fscache_hash_volume(struct fscache_volume *candidate)hlist_bl_add_head (&candidate->hash_link, h);hlist_bl_unlock (h); -if (test_bit (FSCACHE_VOLUME_ACQUIRE_PENDING , &candidate->flags)) +if (fscache_is_acquire_pending (candidate))fscache_wait_on_volume_collision (candidate, collidee_debug_id);return true;
fs/io_uring.c +11 -3
@@ -3495,6 +3495,13 @@ static ssize_t io_iov_buffer_select(struct io_kiocb *req, struct iovec *iov,return __io_iov_buffer_select (req, iov, issue_flags); } +static inline bool io_do_buffer_select (struct io_kiocb *req) +{ +if (!(req->flags &REQ_F_BUFFER_SELECT )) +return false; +return !(req->flags &REQ_F_BUFFER_SELECTED ); +} +static struct iovec *__io_import_iovec (int rw,struct io_kiocb *req,struct io_rw_state *s,unsigned int issue_flags)
@@ -3854,18 +3861,19 @@ static int io_read(struct io_kiocb *req, unsigned int issue_flags)if (unlikely (ret <0 ))return ret; }else { + rw = req->async_data; + s = &rw->s; +/* * Safe and required to re-import if we're using provided * buffers, as we dropped the selected one before retry. */ -if (req->flags &REQ_F_BUFFER_SELECT ) { +if (io_do_buffer_select (req)) { ret =io_import_iovec (READ , req, &iovec, s, issue_flags);if (unlikely (ret <0 ))return ret; } - rw = req->async_data; - s = &rw->s;/* * We come here from an earlier attempt, restore our state to * match in case it doesn't. It's cheap enough that we don't
include/acpi/cppc_acpi.h +1 -0
@@ -144,6 +144,7 @@ extern bool acpi_cpc_valid(void);extern int acpi_get_psd_map (unsigned int cpu,struct cppc_cpudata *cpu_data);extern unsigned int cppc_get_transition_latency (int cpu);extern bool cpc_ffh_supported (void ); +extern bool cpc_supported_by_cpu (void );extern int cpc_read_ffh (int cpunum,struct cpc_reg *reg,u64 *val);extern int cpc_write_ffh (int cpunum,struct cpc_reg *reg,u64 val);#else /* !CONFIG_ACPI_CPPC_LIB */
include/linux/acpi.h +3 -1
@@ -574,13 +574,15 @@ acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context);#define OSC_SB_OSLPI_SUPPORT 0x00000100#define OSC_SB_CPC_DIVERSE_HIGH_SUPPORT 0x00001000#define OSC_SB_GENERIC_INITIATOR_SUPPORT 0x00002000 +#define OSC_SB_CPC_FLEXIBLE_ADR_SPACE 0x00004000#define OSC_SB_NATIVE_USB4_SUPPORT 0x00040000#define OSC_SB_PRM_SUPPORT 0x00200000extern bool osc_sb_apei_support_acked;extern bool osc_pc_lpi_support_confirmed;extern bool osc_sb_native_usb4_support_confirmed; -extern bool osc_sb_cppc_not_supported; +extern bool osc_sb_cppc2_support_acked; +extern bool osc_cpc_flexible_adr_space_confirmed;/* USB4 Capabilities */ #define OSC_USB_USB3_TUNNELING 0x00000001
include/linux/fbcon.h +4 -0
@@ -15,6 +15,8 @@ void fbcon_new_modelist(struct fb_info *info);void fbcon_get_requirement (struct fb_info *info,struct fb_blit_caps *caps);void fbcon_fb_blanked (struct fb_info *info,int blank); +int fbcon_modechange_possible (struct fb_info *info, +struct fb_var_screeninfo *var);void fbcon_update_vcs (struct fb_info *info,bool all);void fbcon_remap_all (struct fb_info *info);int fbcon_set_con2fb_map_ioctl (void __user *argp);
@@ -33,6 +35,8 @@ static inline void fbcon_new_modelist(struct fb_info *info) {}static inline void fbcon_get_requirement (struct fb_info *info,struct fb_blit_caps *caps) {}static inline void fbcon_fb_blanked (struct fb_info *info,int blank) {} +static inline int fbcon_modechange_possible (struct fb_info *info, +struct fb_var_screeninfo *var) {return 0 ; }static inline void fbcon_update_vcs (struct fb_info *info,bool all) {}static inline void fbcon_remap_all (struct fb_info *info) {}static inline int fbcon_set_con2fb_map_ioctl (void __user *argp) {return 0 ; }
include/linux/fscache.h +1 -0
@@ -129,6 +129,7 @@ struct fscache_cookie {#define FSCACHE_COOKIE_DO_PREP_TO_WRITE 12/* T if cookie needs write preparation */ #define FSCACHE_COOKIE_HAVE_DATA 13/* T if this cookie has data stored */ #define FSCACHE_COOKIE_IS_HASHED 14/* T if this cookie is hashed */ +#define FSCACHE_COOKIE_DO_INVALIDATE 15/* T if cookie needs invalidation */ enum fscache_cookie_state state;u8 advice;/* FSCACHE_ADV_* */
include/linux/intel-iommu.h +0 -3
@@ -611,7 +611,6 @@ struct intel_iommu {struct device_domain_info {struct list_head link;/* link to domain siblings */ struct list_head global;/* link to global list */ -struct list_head table;/* link to pasid table */ u32 segment;/* PCI segment number */ u8 bus;/* PCI bus number */ u8 devfn;/* PCI devfn number */
@@ -728,8 +727,6 @@ extern int dmar_ir_support(void);void *alloc_pgtable_page (int node);void free_pgtable_page (void *vaddr);struct intel_iommu *domain_get_iommu (struct dmar_domain *domain); -int for_each_device_domain (int (*fn)(struct device_domain_info *info, -void *data),void *data);void iommu_flush_write_buffer (struct intel_iommu *iommu);int intel_iommu_enable_pasid (struct intel_iommu *iommu,struct device *dev);struct intel_iommu *device_to_iommu (struct device *dev,u8 *bus,u8 *devfn);
include/linux/memregion.h +1 -1
@@ -16,7 +16,7 @@ static inline int memregion_alloc(gfp_t gfp) {return -ENOMEM ; } -void memregion_free (int id) +static inline void memregion_free (int id) { }#endif
include/linux/pm_runtime.h +2 -3
@@ -82,7 +82,7 @@ extern void pm_runtime_get_suppliers(struct device *dev);extern void pm_runtime_put_suppliers (struct device *dev);extern void pm_runtime_new_link (struct device *dev);extern void pm_runtime_drop_link (struct device_link *link); -extern void pm_runtime_release_supplier (struct device_link *link,bool check_idle); +extern void pm_runtime_release_supplier (struct device_link *link);extern int devm_pm_runtime_enable (struct device *dev);
@@ -308,8 +308,7 @@ static inline void pm_runtime_get_suppliers(struct device *dev) {}static inline void pm_runtime_put_suppliers (struct device *dev) {}static inline void pm_runtime_new_link (struct device *dev) {}static inline void pm_runtime_drop_link (struct device_link *link) {} -static inline void pm_runtime_release_supplier (struct device_link *link, -bool check_idle) {} +static inline void pm_runtime_release_supplier (struct device_link *link) {}#endif /* !CONFIG_PM */
include/linux/rtsx_usb.h +0 -2
@@ -54,8 +54,6 @@ struct rtsx_ucr {struct usb_device *pusb_dev;struct usb_interface *pusb_intf;struct usb_sg_request current_sg; -unsigned char *iobuf; -dma_addr_t iobuf_dma;struct timer_list sg_timer;struct mutex dev_mutex;
include/net/act_api.h +2 -1
@@ -134,7 +134,8 @@ struct tc_action_ops { (*get_psample_group)(const struct tc_action *a, tc_action_priv_destructor *destructor);int (*offload_act_setup)(struct tc_action *act,void *entry_data, -u32 *index_inc,bool bind); +u32 *index_inc,bool bind, +struct netlink_ext_ack *extack); };struct tc_action_net {
include/net/flow_offload.h +1 -0
@@ -152,6 +152,7 @@ enum flow_action_id {FLOW_ACTION_PIPE ,FLOW_ACTION_VLAN_PUSH_ETH ,FLOW_ACTION_VLAN_POP_ETH , +FLOW_ACTION_CONTINUE , NUM_FLOW_ACTIONS, };
include/net/pkt_cls.h +4 -2
@@ -547,10 +547,12 @@ tcf_match_indev(struct sk_buff *skb, int ifindex) }int tc_setup_offload_action (struct flow_action *flow_action, -const struct tcf_exts *exts); +const struct tcf_exts *exts, +struct netlink_ext_ack *extack);void tc_cleanup_offload_action (struct flow_action *flow_action);int tc_setup_action (struct flow_action *flow_action, -struct tc_action *actions[]); +struct tc_action *actions[], +struct netlink_ext_ack *extack);int tc_setup_cb_call (struct tcf_block *block,enum tc_setup_type type,void *type_data,bool err_stop,bool rtnl_held);
include/video/of_display_timing.h +2 -0
@@ -8,6 +8,8 @@#ifndef __LINUX_OF_DISPLAY_TIMING_H#define __LINUX_OF_DISPLAY_TIMING_H +#include <linux/errno.h> +struct device_node ;struct display_timing ;struct display_timings ;
kernel/bpf/verifier.c +47 -66
98 lines not on this page · raw message
net/netfilter/nft_set_pipapo.c +33 -15
48 lines not on this page · raw message
sound/soc/sof/intel/hda-pcm.c +1 -73
74 lines not on this page · raw message
sound/soc/sof/intel/hda-stream.c +90 -4
94 lines not on this page · raw message
tools/testing/selftests/net/forwarding/lib.sh +5 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgro_bench.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgro_frglist.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgro_fwd.sh +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.