Linux 6.6.128
Sasha Levin
maintainer-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
I'm announcing the release of the 6.6.128 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.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,
Sasha
- ------------
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEE4n5dijQDou9mhzu83qZv95d3LNwFAmmoMFoACgkQ3qZv95d3 LNw8SBAAqlT802VCBW1Z6+VJS+551Qn4B3Gi6TgWkiw2AknbikH4M0phsHmyt8st KAFUQtOj8ByhPsgcX3fBz4AafpoADkUQH9lpAAge5DhkBXtFL1QsTPcUdzZ5meIn nV5yx552BoU7sKpR1zsRfRj0AOWIXOLC2rLz3mOa07H2vdlw/d2YFjBLgvdSD/MG WMegUH1Ni1Rd1A+yivrgREi6Qhv86w77BUSWKVWqu9FV5pyhUviWH3KcZCYHTaId +wCaXue5kRjPfmXBRschRCH5mCcLNJOuoE3fYpDqQRoApvQiVr1P62QFCBy2cLEp YHm2E/dL1+p8rmT0LX3JrJYuksh+8ZkDID8gvrNiN4dniV22EN+D2QeCX5SJENnW gr4SykYaWTstCf04wIwGivqzUWAIXfV7H/9waSMD1fOsdpxI8WVlKZNJI7VJ5a8C KpoYt8vzXPjG5jOPuVd4kS9r80KxDd2a+9C6kokniYpty00O5XFccqRMPaNLaYFe 6zWyCI2HQ+zsC5HKMbCV3ok0yre05YWzuDERKYd3NPWT/tzPTjNjc+IU0SCbeIX4 YkL9c2bIZal+Znr7wnuP/qWAH+WujJryQQx+V5rqsbtWqwdLjub+fpM+XzdrIptZ VQNwD/tvefO8pegxZuvPjNADHY55zAX73Lp238s3sg0p8YwA+so= =46yU
-----END PGP SIGNATURE-----
Sasha Levin
maintainerDocumentation/PCI/endpoint/pci-vntb-howto.rst +7 -7
@@ -52,14 +52,14 @@ pci-epf-vntb device, the following commands can be used:: # cd /sys/kernel/config/pci_ep/ # mkdir functions/pci_epf_vntb/func1 -The "mkdir func1" above creates the pci-epf-ntb function device that will +The "mkdir func1" above creates the pci-epf-vntb function device that will be probed by pci_epf_vntb driver. The PCI endpoint framework populates the directory with the following configurable fields:: - # ls functions/pci_epf_ntb/func1 - baseclass_code deviceid msi_interrupts pci-epf-ntb.0 + # ls functions/pci_epf_vntb/func1 + baseclass_code deviceid msi_interrupts pci-epf-vntb.0 progif_code secondary subsys_id vendorid cache_line_size interrupt_pin msix_interrupts primary revid subclass_code subsys_vendor_id
@@ -106,13 +106,13 @@ A sample configuration for virtual NTB driver for virtual PCI bus:: # echo 0x080A > functions/pci_epf_vntb/func1/pci_epf_vntb.0/vntb_pid # echo 0x10 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/vbus_number -Binding pci-epf-ntb Device to EP Controller +Binding pci-epf-vntb Device to EP Controller -------------------------------------------- NTB function device should be attached to PCI endpoint controllers connected to the host. - # ln -s controllers/5f010000.pcie_ep functions/pci-epf-ntb/func1/primary + # ln -s controllers/5f010000.pcie_ep functions/pci_epf_vntb/func1/primary Once the above step is completed, the PCI endpoint controllers are ready to establish a link with the host.
@@ -134,7 +134,7 @@ lspci Output at Host side ------------------------- Note that the devices listed here correspond to the values populated in -"Creating pci-epf-ntb Device" section above:: +"Creating pci-epf-vntb Device" section above:: # lspci 00:00.0 PCI bridge: Freescale Semiconductor Inc Device 0000 (rev 01)
@@ -147,7 +147,7 @@ lspci Output at EP Side / Virtual PCI bus ----------------------------------------- Note that the devices listed here correspond to the values populated in -"Creating pci-epf-ntb Device" section above:: +"Creating pci-epf-vntb Device" section above:: # lspci 10:00.0 Unassigned class [ffff]: Dawicontrol Computersysteme GmbH Device 1234 (rev ff)
Documentation/devicetree/bindings/sound/asahi-kasei,ak4458.yaml +3 -3
@@ -18,10 +18,10 @@ properties: reg: maxItems: 1 - avdd-supply: + AVDD-supply: description: Analog power supply - dvdd-supply: + DVDD-supply: description: Digital power supply reset-gpios:
@@ -56,7 +56,7 @@ allOf: properties: dsd-path: false -additionalProperties: false +unevaluatedProperties: false examples: - |
Documentation/devicetree/bindings/sound/asahi-kasei,ak5558.yaml +2 -2
@@ -19,10 +19,10 @@ properties: reg: maxItems: 1 - avdd-supply: + AVDD-supply: description: A 1.8V supply that powers up the AVDD pin. - dvdd-supply: + DVDD-supply: description: A 1.2V supply that powers up the DVDD pin. reset-gpios:
Documentation/networking/device_drivers/ethernet/marvell/octeon_ep.rst +4 -0
@@ -24,6 +24,10 @@ Supported Devices Currently, this driver support following devices: * Network controller: Cavium, Inc. Device b200 * Network controller: Cavium, Inc. Device b400 + * Network controller: Cavium, Inc. Device b900 + * Network controller: Cavium, Inc. Device ba00 + * Network controller: Cavium, Inc. Device bc00 + * Network controller: Cavium, Inc. Device bd00 Interface Control =================
Documentation/networking/ip-sysctl.rst +20 -0
@@ -745,6 +745,13 @@ tcp_comp_sack_nr - INTEGER Default : 44 +tcp_backlog_ack_defer - BOOLEAN + If set, user thread processing socket backlog tries sending + one ACK for the whole queue. This helps to avoid potential + long latencies at end of a TCP socket syscall. + + Default : true + tcp_slow_start_after_idle - BOOLEAN If set, provide RFC2861 behavior and time out the congestion window after an idle period. An idle period is defined at
@@ -1176,6 +1183,19 @@ tcp_plb_cong_thresh - INTEGER Default: 128 +tcp_pingpong_thresh - INTEGER + The number of estimated data replies sent for estimated incoming data + requests that must happen before TCP considers that a connection is a + "ping-pong" (request-response) connection for which delayed + acknowledgments can provide benefits. + + This threshold is 1 by default, but some applications may need a higher + threshold for optimal performance. + + Possible Values: 1 - 255 + + Default: 1 + UDP variables =============
Documentation/trace/events-pci.rst new file +74 -0
74 lines not on this page · raw message
Documentation/trace/index.rst +81 -14
118 lines not on this page · raw message
Documentation/trace/ring-buffer-map.rst new file +106 -0
106 lines not on this page · raw message
Makefile +11 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 127 +SUBLEVEL = 128 EXTRAVERSION = NAME = Pinguïn Aangedreven
@@ -1356,6 +1356,15 @@ ifneq ($(wildcard $(resolve_btfids_O)),) $(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean endif +PHONY += objtool_clean + +objtool_O = $(abspath $(objtree))/tools/objtool + +objtool_clean: +ifneq ($(wildcard $(objtool_O)),) + $(Q)$(MAKE) -sC $(abs_srctree)/tools/objtool O=$(objtool_O) srctree=$(abs_srctree) clean +endif + tools/: FORCE $(Q)mkdir -p $(objtree)/tools $(Q)$(MAKE) O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
@@ -1509,7 +1518,7 @@ vmlinuxclean: $(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean $(Q)$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) clean) -clean: archclean vmlinuxclean resolve_btfids_clean +clean: archclean vmlinuxclean resolve_btfids_clean objtool_clean # mrproper - Delete all generated files, including .config #
arch/arm/boot/dts/allwinner/sun5i-a13-utoo-p66.dts +1 -0
@@ -102,6 +102,7 @@ &touchscreen { /* The P66 uses a different EINT then the reference design */ interrupts = <6 9 IRQ_TYPE_EDGE_FALLING>; /* EINT9 (PG9) */ /* The icn8318 binding expects wake-gpios instead of power-gpios */ + /delete-property/ power-gpios; wake-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */ touchscreen-size-x = <800>; touchscreen-size-y = <480>;
arch/arm/boot/dts/nxp/lpc/lpc32xx.dtsi +2 -1
@@ -301,8 +301,9 @@ i2c2: i2c@400a8000 { mpwm: mpwm@400e8000 { compatible = "nxp,lpc3220-motor-pwm"; reg = <0x400e8000 0x78>; + clocks = <&clk LPC32XX_CLK_MCPWM>; + #pwm-cells = <3>; status = "disabled"; - #pwm-cells = <2>; }; };
arch/arm/kernel/vdso.c +1 -0
@@ -176,6 +176,7 @@ static void __init patch_vdso(void *ehdr)vdso_nullpatch_one (&einfo,"__vdso_gettimeofday" );vdso_nullpatch_one (&einfo,"__vdso_clock_gettime" );vdso_nullpatch_one (&einfo,"__vdso_clock_gettime64" ); +vdso_nullpatch_one (&einfo,"__vdso_clock_getres" ); } }
arch/arm/mach-omap2/control.c +10 -4
@@ -732,7 +732,7 @@ int __init omap2_control_base_init(void)*/ int __init omap_control_init (void ) { -struct device_node *np, *scm_conf; +struct device_node *np, *scm_conf, *clocks_node;const struct of_device_id *match;const struct omap_prcm_init_data *data;int ret;
@@ -753,16 +753,19 @@ int __init omap_control_init(void)if (IS_ERR (syscon)) { ret =PTR_ERR (syscon); - goto of_node_put; + goto err_put_scm_conf; } -if (of_get_child_by_name (scm_conf,"clocks" )) { + clocks_node =of_get_child_by_name (scm_conf,"clocks" ); +if (clocks_node) { +of_node_put (clocks_node); ret =omap2_clk_provider_init (scm_conf, data->index, syscon,NULL );if (ret) - goto of_node_put; + goto err_put_scm_conf; } +of_node_put (scm_conf); }else {/* No scm_conf found, direct access */ ret = omap2_clk_provider_init(np, data->index, NULL,
@@ -780,6 +783,9 @@ int __init omap_control_init(void)return 0 ; +err_put_scm_conf: +if (scm_conf) +of_node_put (scm_conf); of_node_put:of_node_put (np);return ret;
arch/arm/mm/physaddr.c +1 -1
@@ -38,7 +38,7 @@ static inline bool __virt_addr_valid(unsigned long x)phys_addr_t __virt_to_phys (unsigned long x) {WARN (!__virt_addr_valid (x), -"virt_to_phys used for non-linear address: %pK (%pS)\n" , +"virt_to_phys used for non-linear address: %px (%pS)\n" , (void *)x, (void *)x);return __virt_to_phys_nodebug (x);
arch/arm64/Kbuild +4 -0
@@ -1,4 +1,8 @@ # SPDX-License-Identifier: GPL-2.0-only + +# Branch profiling isn't noinstr-safe +subdir-ccflags-$(CONFIG_TRACE_BRANCH_PROFILING) += -DDISABLE_BRANCH_PROFILING + obj-y += kernel/ mm/ net/ obj-$(CONFIG_KVM) += kvm/ obj-$(CONFIG_XEN) += xen/
arch/arm64/boot/dts/amlogic/meson-axg.dtsi +6 -0
@@ -1894,6 +1894,9 @@ sd_emmc_b: mmc@5000 { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_B>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_B_CLK0>; + assigned-clock-rates = <24000000>; }; sd_emmc_c: mmc@7000 {
@@ -1906,6 +1909,9 @@ sd_emmc_c: mmc@7000 { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_C>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_C_CLK0>; + assigned-clock-rates = <24000000>; }; usb2_phy1: phy@9020 {
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +9 -0
@@ -2341,6 +2341,9 @@ sd_emmc_a: mmc@ffe03000 { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_A>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_A_CLK0>; + assigned-clock-rates = <24000000>; }; sd_emmc_b: mmc@ffe05000 {
@@ -2353,6 +2356,9 @@ sd_emmc_b: mmc@ffe05000 { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_B>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_B_CLK0>; + assigned-clock-rates = <24000000>; }; sd_emmc_c: mmc@ffe07000 {
@@ -2365,6 +2371,9 @@ sd_emmc_c: mmc@ffe07000 { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_C>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_C_CLK0>; + assigned-clock-rates = <24000000>; }; usb: usb@ffe09000 {
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +9 -0
@@ -799,6 +799,9 @@ &sd_emmc_a { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_A>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_A_CLK0>; + assigned-clock-rates = <24000000>; }; &sd_emmc_b {
@@ -807,6 +810,9 @@ &sd_emmc_b { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_B>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_B_CLK0>; + assigned-clock-rates = <24000000>; }; &sd_emmc_c {
@@ -815,6 +821,9 @@ &sd_emmc_c { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_C>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_C_CLK0>; + assigned-clock-rates = <24000000>; }; &simplefb_hdmi {
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi +9 -0
@@ -869,6 +869,9 @@ &sd_emmc_a { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_A>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_A_CLK0>; + assigned-clock-rates = <24000000>; }; &sd_emmc_b {
@@ -877,6 +880,9 @@ &sd_emmc_b { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_B>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_B_CLK0>; + assigned-clock-rates = <24000000>; }; &sd_emmc_c {
@@ -885,6 +891,9 @@ &sd_emmc_c { <&clkc CLKID_FCLK_DIV2>; clock-names = "core", "clkin0", "clkin1"; resets = <&reset RESET_SD_EMMC_C>; + + assigned-clocks = <&clkc CLKID_SD_EMMC_C_CLK0>; + assigned-clock-rates = <24000000>; }; &simplefb_hdmi {
arch/arm64/boot/dts/apple/t8112-j473.dts +19 -0
@@ -21,6 +21,25 @@ aliases { }; }; +/* + * Keep the power-domains used for the HDMI port on. + */ +&framebuffer0 { + power-domains = <&ps_dispext_cpu0>, <&ps_dptx_ext_phy>; +}; + +/* + * The M2 Mac mini uses dispext for the HDMI output so it's not necessary to + * keep disp0 power-domains always-on. + */ +&ps_disp0_sys { + /delete-property/ apple,always-on; +}; + +&ps_disp0_fe { + /delete-property/ apple,always-on; +}; + /* * Force the bus number assignments so that we can declare some of the * on-board devices and properties that are populated by the bootloader
arch/arm64/boot/dts/freescale/imx8mp-tqma8mpql-mba8mpxl.dts +1 -1
@@ -810,7 +810,7 @@ pinctrl_hdmi: hdmigrp { fsl,pins = <MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL 0x400001c2>, <MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA 0x400001c2>, <MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_HDMI_HPD 0x40000010>, - <MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_HDMI_CEC 0x40000010>; + <MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_HDMI_CEC 0x40000030>; }; pinctrl_hoggpio2: hoggpio2grp {
arch/arm64/boot/dts/nvidia/tegra210-smaug.dts +2 -0
@@ -1724,6 +1724,8 @@ usb2-0 { status = "okay"; vbus-supply = <&usbc_vbus>; mode = "otg"; + usb-role-switch; + role-switch-default-mode = "host"; }; usb3-0 {
arch/arm64/boot/dts/qcom/sdm630.dtsi +2 -2
@@ -589,8 +589,8 @@ qusb2_hstx_trim: hstx-trim@240 { }; gpu_speed_bin: gpu-speed-bin@41a0 { - reg = <0x41a2 0x1>; - bits = <5 7>; + reg = <0x41a2 0x2>; + bits = <5 8>; }; };
arch/arm64/boot/dts/qcom/sdm845-db845c.dts +7 -1
@@ -372,6 +372,12 @@ vreg_l21a_2p95: ldo21 { regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; }; + vreg_l23a_3p3: ldo23 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3312000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + vreg_l24a_3p075: ldo24 { regulator-min-microvolt = <3088000>; regulator-max-microvolt = <3088000>;
@@ -852,7 +858,6 @@ &spi0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&qup_spi0_default>; - cs-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>; can@0 { compatible = "microchip,mcp2517fd";
@@ -1158,6 +1163,7 @@ &wifi { vdd-1.8-xo-supply = <&vreg_l7a_1p8>; vdd-1.3-rfa-supply = <&vreg_l17a_1p3>; vdd-3.3-ch0-supply = <&vreg_l25a_3p3>; + vdd-3.3-ch1-supply = <&vreg_l23a_3p3>; qcom,snoc-host-cap-8bit-quirk; qcom,ath10k-calibration-variant = "Thundercomm_DB845C";
arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi +1 -1
@@ -155,7 +155,6 @@ ts_1p8_supply: ts-1p8-regulator { gpio = <&tlmm 88 0>; enable-active-high; - regulator-boot-on; }; };
@@ -246,6 +245,7 @@ vreg_l12a_1p8: ldo12 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-boot-on; }; vreg_l14a_1p88: ldo14 {
arch/arm64/boot/dts/qcom/sm6115.dtsi +6 -2
@@ -1336,8 +1336,12 @@ usb_dwc3: usb@4e00000 { gpu: gpu@5900000 { compatible = "qcom,adreno-610.0", "qcom,adreno"; - reg = <0x0 0x05900000 0x0 0x40000>; - reg-names = "kgsl_3d0_reg_memory"; + reg = <0x0 0x05900000 0x0 0x40000>, + <0x0 0x0599e000 0x0 0x1000>, + <0x0 0x05961000 0x0 0x800>; + reg-names = "kgsl_3d0_reg_memory", + "cx_mem", + "cx_dbgc"; /* There's no (real) GMU, so we have to handle quite a bunch of clocks! */ clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>,
arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts +0 -4
@@ -429,10 +429,6 @@ &gpu { status = "okay"; }; -&hdmi_sound { - status = "okay"; -}; - &i2c0 { clock-frequency = <400000>; i2c-scl-falling-time-ns = <4>;
arch/arm64/include/asm/rwonce.h +1 -1
@@ -62,7 +62,7 @@default : \ atomic =0 ; \ } \ - atomic ? (typeof(*__x))__u.__val : (*(volatile typeof(__x))__x);\ + atomic ? (typeof(*__x))__u.__val : (*(volatile typeof(*__x) *)__x);\ })#endif /* !BUILD_VDSO */
arch/arm64/kernel/proton-pack.c +1 -0
@@ -896,6 +896,7 @@ static u8 spectre_bhb_loop_affected(void)MIDR_ALL_VERSIONS (MIDR_CORTEX_X2 ),MIDR_ALL_VERSIONS (MIDR_NEOVERSE_N2 ),MIDR_ALL_VERSIONS (MIDR_NEOVERSE_V1 ), + MIDR_ALL_VERSIONS(MIDR_HISI_TSV110), {}, };static const struct midr_range spectre_bhb_k24_list[] = {
arch/arm64/lib/delay.c +19 -4
@@ -23,9 +23,24 @@ static inline unsigned long xloops_to_cycles(unsigned long xloops)return (xloops * loops_per_jiffy *HZ ) >>32 ; } +/* +* Force the use of CNTVCT_EL0 in order to have the same base as WFxT. +* This avoids some annoying issues when CNTVOFF_EL2 is not reset 0 on a +* KVM host running at EL1 until we do a vcpu_put() on the vcpu. When +* running at EL2, the effective offset is always 0. +* +* Note that userspace cannot change the offset behind our back either, +* as the vcpu mutex is held as long as KVM_RUN is in progress. +*/ +static cycles_t notrace __delay_cycles(void) +{ +guard (preempt_notrace)(); +return __arch_counter_get_cntvct_stable (); +} +void __delay (unsigned long cycles) { -cycles_t start =get_cycles (); +cycles_t start =__delay_cycles ();if (cpus_have_const_cap (ARM64_HAS_WFXT )) {u64 end = start + cycles;
@@ -35,17 +50,17 @@ void __delay(unsigned long cycles)* early, use a WFET loop to complete the delay. */ wfit (end); -while ((get_cycles () - start) < cycles) +while ((__delay_cycles () - start) < cycles)wfet (end); }else if (arch_timer_evtstrm_available ()) {const cycles_t timer_evt_period =USECS_TO_CYCLES (ARCH_TIMER_EVT_STREAM_PERIOD_US ); -while ((get_cycles () - start + timer_evt_period) < cycles) +while ((__delay_cycles () - start + timer_evt_period) < cycles)wfe (); } -while ((get_cycles () - start) < cycles) +while ((__delay_cycles () - start) < cycles)cpu_relax (); }EXPORT_SYMBOL (__delay);
arch/loongarch/include/asm/topology.h +1 -1
@@ -11,7 +11,7 @@extern cpumask_t cpus_on_node[]; -#define cpumask_of_node (node) (&cpus_on_node[node]) +#define cpumask_of_node (node) ((node) == NUMA_NO_NODE ? cpu_all_mask : &cpus_on_node[node])struct pci_bus ;extern int pcibus_to_node (struct pci_bus *);
arch/loongarch/kernel/setup.c +1 -0
@@ -432,6 +432,7 @@ static void __init arch_mem_init(char **cmdline_p) PFN_UP(__pa_symbol(&__nosave_end)));memblock_dump_all (); +memblock_set_bottom_up (false);early_memtest (PFN_PHYS (ARCH_PFN_OFFSET ),PFN_PHYS (max_low_pfn)); }
arch/loongarch/kernel/unwind_prologue.c +1 -1
@@ -64,7 +64,7 @@ static inline bool scan_handlers(unsigned long entry_offset)static inline bool fix_exception (unsigned long pc) { -#ifdef CONFIG_NUMA +#if defined(CONFIG_NUMA ) && !defined(CONFIG_PREEMPT_RT )int cpu;for_each_possible_cpu (cpu) {
arch/loongarch/mm/tlb.c +1 -1
@@ -201,7 +201,7 @@ void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t *pteplocal_irq_restore (flags); } -static void setup_ptwalker (void ) +static void __no_sanitize_address setup_ptwalker(void) {unsigned long pwctl0, pwctl1;unsigned long pgd_i =0 , pgd_w =0 ;
arch/m68k/lib/memmove.c +18 -0
@@ -24,6 +24,15 @@ void *memmove(void *dest, const void *src, size_t n) src = csrc; n--; } +#if defined(CONFIG_M68000 ) +if ((long )src &1 ) { +char *cdest = dest; +const char *csrc = src; +for (; n; n--) + *cdest++ = *csrc++; +return xdest; + } +#endif if (n >2 && (long )dest &2 ) {short *sdest = dest;const short *ssrc = src;
@@ -66,6 +75,15 @@ void *memmove(void *dest, const void *src, size_t n) src = csrc; n--; } +#if defined(CONFIG_M68000 ) +if ((long )src &1 ) { +char *cdest = dest; +const char *csrc = src; +for (; n; n--) + *--cdest = *--csrc; +return xdest; + } +#endif if (n >2 && (long )dest &2 ) {short *sdest = dest;const short *ssrc = src;
arch/mips/include/asm/mach-loongson64/topology.h +1 -1
@@ -7,7 +7,7 @@#define cpu_to_node (cpu) (cpu_logical_map(cpu) >> 2)extern cpumask_t __node_cpumask[]; -#define cpumask_of_node (node) (&__node_cpumask[node]) +#define cpumask_of_node (node) ((node) == NUMA_NO_NODE ? cpu_all_mask : &__node_cpumask[node])struct pci_bus ;extern int pcibus_to_node (struct pci_bus *);
arch/mips/kernel/relocate.c +13 -0
@@ -420,7 +420,20 @@ void *__init relocate_kernel(void) goto out;/* The current thread is now within the relocated image */ +#ifndef CONFIG_CC_IS_CLANG __current_thread_info =RELOCATED (&init_thread_union); +#else +/* +* LLVM may wrongly restore $gp ($28) in epilog even if it's +* intentionally modified. Work around this by using inline +* assembly to assign $gp. $gp couldn't be listed as output or +* clobber, or LLVM will still restore its original value. +* See also LLVM upstream issue +* https://github.com/llvm/llvm-project/issues/176546 +*/ + asmvolatile ("move $28, %0" : : +"r" (RELOCATED (&init_thread_union))); +#endif /* Return the new kernel's entry point */ kernel_entry =RELOCATED (start_kernel);
arch/mips/rb532/devices.c +3 -2
@@ -212,11 +212,12 @@ static struct platform_device rb532_wdt = {static struct plat_serial8250_port rb532_uart_res[] = { { .type =PORT_16550A , - .membase = (char *)KSEG1ADDR (REGBASE +UART0BASE ), + .mapbase =REGBASE +UART0BASE , + .mapsize =0x1000 , .irq =UART0_IRQ , .regshift =2 , .iotype =UPIO_MEM , - .flags =UPF_BOOT_AUTOCONF , + .flags =UPF_BOOT_AUTOCONF |UPF_IOREMAP , }, { .flags =0 ,
arch/openrisc/include/asm/barrier.h +2 -0
@@ -4,6 +4,8 @@#define mb () asm volatile ("l.msync" ::: "memory") +#define nop () asm volatile ("l.nop") +#include <asm-generic/barrier.h> #endif /* __ASM_BARRIER_H */
arch/parisc/kernel/drivers.c +1 -1
@@ -435,7 +435,7 @@ static struct parisc_device * __init create_tree_node(char id, dev->dev.dma_mask = &dev->dma_mask; dev->dev.coherent_dma_mask = dev->dma_mask;if (device_register (&dev->dev)) { -kfree (dev); +put_device (&dev->dev);return NULL ; }
arch/parisc/kernel/process.c +3 -0
@@ -85,6 +85,9 @@ void machine_restart(char *cmd)#endif /* set up a new led state on systems shipped with a LED State panel */ pdc_chassis_send_status (PDC_CHASSIS_DIRECT_SHUTDOWN ); + +/* prevent interrupts during reboot */ +set_eiem (0 );/* "Normal" system reset */ pdc_do_reset ();
arch/powerpc/include/asm/eeh.h +2 -0
@@ -289,6 +289,8 @@ void eeh_pe_dev_traverse(struct eeh_pe *root,void eeh_pe_restore_bars (struct eeh_pe *pe);const char *eeh_pe_loc_get (struct eeh_pe *pe);struct pci_bus *eeh_pe_bus_get (struct eeh_pe *pe); +const char *eeh_pe_loc_get_bus (struct pci_bus *bus); +struct pci_bus *eeh_pe_bus_get_nolock (struct eeh_pe *pe);void eeh_show_enabled (void );int __init eeh_init (struct eeh_ops *ops);
arch/powerpc/include/asm/kup.h +0 -2
@@ -134,7 +134,6 @@ static __always_inline void kuap_assert_locked(void) static __always_inline void allow_read_from_user(const void __user *from, unsigned long size) { -barrier_nospec ();allow_user_access (NULL , from, size,KUAP_READ ); }
@@ -146,7 +145,6 @@ static __always_inline void allow_write_to_user(void __user *to, unsigned long s static __always_inline void allow_read_write_user(void __user *to, const void __user *from,unsigned long size) { -barrier_nospec ();allow_user_access (to, from, size,KUAP_READ_WRITE ); }
arch/powerpc/include/asm/uaccess.h +4 -0
@@ -290,6 +290,7 @@ do { \__typeof__ (sizeof(*(ptr ))) __gu_size =sizeof (*(ptr)); \ \might_fault (); \ +barrier_nospec (); \allow_read_from_user (__gu_addr, __gu_size); \__get_user_size_allowed (__gu_val, __gu_addr, __gu_size, __gu_err); \prevent_read_from_user (__gu_addr, __gu_size); \
@@ -318,6 +319,7 @@ raw_copy_in_user(void __user *to, const void __user *from, unsigned long n) {unsigned long ret; +barrier_nospec ();allow_read_write_user (to, from, n); ret =__copy_tofrom_user (to, from, n);prevent_read_write_user (to, from, n);
@@ -404,6 +406,7 @@ static __must_check __always_inline bool user_access_begin(const void __user *ptmight_fault (); +barrier_nospec ();allow_read_write_user ((void __user *)ptr, ptr, len);return true; }
@@ -420,6 +423,7 @@ user_read_access_begin(const void __user *ptr, size_t len)might_fault (); +barrier_nospec ();allow_read_from_user (ptr, len);return true; }
arch/powerpc/kernel/eeh_driver.c +6 -5
@@ -846,7 +846,7 @@ void eeh_handle_normal_event(struct eeh_pe *pe)pci_lock_rescan_remove (); - bus =eeh_pe_bus_get (pe); + bus =eeh_pe_bus_get_nolock (pe);if (!bus) {pr_err ("%s: Cannot find PCI bus for PHB#%x-PE#%x\n" , __func__, pe->phb->global_number, pe->addr);
@@ -877,14 +877,15 @@ void eeh_handle_normal_event(struct eeh_pe *pe)/* Log the event */ if (pe->type &EEH_PE_PHB ) {pr_err ("EEH: Recovering PHB#%x, location: %s\n" , - pe->phb->global_number,eeh_pe_loc_get (pe)); + pe->phb->global_number,eeh_pe_loc_get_bus (bus)); }else {struct eeh_pe *phb_pe =eeh_phb_pe_get (pe->phb);pr_err ("EEH: Recovering PHB#%x-PE#%x\n" , pe->phb->global_number, pe->addr);pr_err ("EEH: PE location: %s, PHB location: %s\n" , -eeh_pe_loc_get (pe),eeh_pe_loc_get (phb_pe)); +eeh_pe_loc_get_bus (bus), +eeh_pe_loc_get_bus (eeh_pe_bus_get_nolock (phb_pe))); }#ifdef CONFIG_STACKTRACE
@@ -1089,7 +1090,7 @@ void eeh_handle_normal_event(struct eeh_pe *pe)eeh_pe_state_clear (pe,EEH_PE_PRI_BUS , true);eeh_pe_dev_mode_mark (pe,EEH_DEV_REMOVED ); - bus =eeh_pe_bus_get (pe); + bus =eeh_pe_bus_get_nolock (pe);if (bus)pci_hp_remove_devices (bus);else
@@ -1213,7 +1214,7 @@ void eeh_handle_special_event(void) (phb_pe->state & EEH_PE_RECOVERING))continue ; - bus =eeh_pe_bus_get (phb_pe); + bus =eeh_pe_bus_get_nolock (phb_pe);if (!bus) { pr_err("%s: Cannot find PCI bus for " "PHB#%x-PE#%x\n",
arch/powerpc/kernel/eeh_pe.c +70 -4
102 lines not on this page · raw message
arch/powerpc/kernel/smp.c +2 -0
@@ -830,6 +830,8 @@ static int parse_thread_groups(struct device_node *dn, count =of_property_count_u32_elems (dn,"ibm,thread-groups" ); thread_group_array =kcalloc (count,sizeof (u32),GFP_KERNEL ); +if (!thread_group_array) +return -ENOMEM ; ret =of_property_read_u32_array (dn,"ibm,thread-groups" , thread_group_array, count);if (ret)
arch/s390/Kconfig +2 -1
@@ -231,6 +231,7 @@ config S390 select SPARSE_IRQ select SWIOTLB select SYSCTL_EXCEPTION_TRACE + select SYSTEM_DATA_VERIFICATION if KEXEC_SIG select THREAD_INFO_IN_TASK select TRACE_IRQFLAGS_SUPPORT select TTY
@@ -254,7 +255,7 @@ config ARCH_SUPPORTS_KEXEC_FILE def_bool y config ARCH_SUPPORTS_KEXEC_SIG - def_bool MODULE_SIG_FORMAT + def_bool y config ARCH_SUPPORTS_KEXEC_PURGATORY def_bool y
arch/s390/kernel/perf_cpum_sf.c +1 -1
@@ -925,7 +925,7 @@ static bool is_callchain_event(struct perf_event *event)u64 sample_type = event->attr.sample_type;return sample_type & (PERF_SAMPLE_CALLCHAIN |PERF_SAMPLE_REGS_USER | -PERF_SAMPLE_STACK_USER ); +PERF_SAMPLE_REGS_INTR |PERF_SAMPLE_STACK_USER ); }static int cpumsf_pmu_event_init (struct perf_event *event)
arch/s390/pci/pci.c +17 -8
@@ -206,24 +206,33 @@ int zpci_fmb_disable_device(struct zpci_dev *zdev)static int zpci_cfg_load (struct zpci_dev *zdev,int offset,u32 *val,u8 len) {u64 req =ZPCI_CREATE_REQ (zdev->fh,ZPCI_PCIAS_CFGSPC , len); +int rc = -ENODEV ;u64 data; -int rc; + +if (!zdev_enabled (zdev)) + goto out_err; rc =__zpci_load (&data, req, offset); -if (!rc) { - data =le64_to_cpu ((__force __le64 ) data); - data >>= (8 - len) *8 ; - *val = (u32 ) data; - }else - *val =0xffffffff ; +if (rc) + goto out_err; + data =le64_to_cpu ((__force __le64 )data); + data >>= (8 - len) *8 ; + *val = (u32 )data; +return 0 ; + +out_err: +PCI_SET_ERROR_RESPONSE (val);return rc; }static int zpci_cfg_store (struct zpci_dev *zdev,int offset,u32 val,u8 len) {u64 req =ZPCI_CREATE_REQ (zdev->fh,ZPCI_PCIAS_CFGSPC , len); +int rc = -ENODEV ;u64 data = val; -int rc; + +if (!zdev_enabled (zdev)) +return rc; data <<= (8 - len) *8 ; data = (__force u64 )cpu_to_le64 (data);
arch/s390/purgatory/Makefile +1 -0
@@ -29,6 +29,7 @@ KBUILD_CFLAGS += -fno-stack-protector KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING KBUILD_CFLAGS += $(CLANG_FLAGS) KBUILD_CFLAGS += $(call cc-option,-fno-PIE) +KBUILD_CFLAGS += $(call cc-option, -Wno-default-const-init-unsafe) KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS)) # Since we link purgatory with -r unresolved symbols are not checked, so we
arch/sparc/include/uapi/asm/ioctls.h +4 -4
@@ -5,10 +5,10 @@#include <asm/ioctl.h> /* Big T */ -#define TCGETA _IOR('T', 1, struct termio) -#define TCSETA _IOW('T', 2, struct termio) -#define TCSETAW _IOW('T', 3, struct termio) -#define TCSETAF _IOW('T', 4, struct termio) +#define TCGETA 0x40125401/* _IOR('T', 1, struct termio) */ +#define TCSETA 0x80125402/* _IOW('T', 2, struct termio) */ +#define TCSETAW 0x80125403/* _IOW('T', 3, struct termio) */ +#define TCSETAF 0x80125404/* _IOW('T', 4, struct termio) */ #define TCSBRK _IO('T', 5)#define TCXONC _IO('T', 6)#define TCFLSH _IO('T', 7)
arch/sparc/kernel/process.c +24 -14
@@ -17,14 +17,18 @@asmlinkage long sparc_fork (struct pt_regs *regs) { -unsigned long orig_i1 = regs->u_regs[UREG_I1 ]; +unsigned long orig_i1;long ret;struct kernel_clone_args args = { .exit_signal =SIGCHLD , -/* Reuse the parent's stack for the child. */ - .stack = regs->u_regs[UREG_FP ], }; +synchronize_user_stack (); + + orig_i1 = regs->u_regs[UREG_I1 ]; +/* Reuse the parent's stack for the child. */ + args.stack = regs->u_regs[UREG_FP ]; + ret =kernel_clone (&args);/* If we get an error and potentially restart the system
@@ -40,16 +44,19 @@ asmlinkage long sparc_fork(struct pt_regs *regs)asmlinkage long sparc_vfork (struct pt_regs *regs) { -unsigned long orig_i1 = regs->u_regs[UREG_I1 ]; +unsigned long orig_i1;long ret; -struct kernel_clone_args args = { .flags =CLONE_VFORK |CLONE_VM , .exit_signal =SIGCHLD , -/* Reuse the parent's stack for the child. */ - .stack = regs->u_regs[UREG_FP ], }; +synchronize_user_stack (); + + orig_i1 = regs->u_regs[UREG_I1 ]; +/* Reuse the parent's stack for the child. */ + args.stack = regs->u_regs[UREG_FP ]; + ret =kernel_clone (&args);/* If we get an error and potentially restart the system
@@ -65,15 +72,18 @@ asmlinkage long sparc_vfork(struct pt_regs *regs)asmlinkage long sparc_clone (struct pt_regs *regs) { -unsigned long orig_i1 = regs->u_regs[UREG_I1 ]; -unsigned int flags =lower_32_bits (regs->u_regs[UREG_I0 ]); +unsigned long orig_i1; +unsigned int flags;long ret; +struct kernel_clone_args args = {0 }; -struct kernel_clone_args args = { - .flags = (flags & ~CSIGNAL ), - .exit_signal = (flags &CSIGNAL ), - .tls = regs->u_regs[UREG_I3 ], - }; +synchronize_user_stack (); + + orig_i1 = regs->u_regs[UREG_I1 ]; + flags =lower_32_bits (regs->u_regs[UREG_I0 ]); + args.flags = (flags & ~CSIGNAL ); + args.exit_signal = (flags &CSIGNAL ); + args.tls = regs->u_regs[UREG_I3 ];#ifdef CONFIG_COMPAT if (test_thread_flag (TIF_32BIT )) {
arch/x86/hyperv/hv_vtl.c +5 -3
@@ -68,7 +68,7 @@ static void hv_vtl_ap_entry(void)static int hv_vtl_bringup_vcpu (u32 target_vp_index,int cpu,u64 eip_ignored) { -u64 status; +u64 status, rsp, rip;int ret =0 ;struct hv_enable_vp_vtl *input;unsigned long irq_flags;
@@ -81,9 +81,11 @@ static int hv_vtl_bringup_vcpu(u32 target_vp_index, int cpu, u64 eip_ignored)struct desc_struct *gdt;struct task_struct *idle =idle_thread_get (cpu); -u64 rsp = (unsigned long )idle->thread.sp; +if (IS_ERR (idle)) +return PTR_ERR (idle); -u64 rip = (u64)&hv_vtl_ap_entry; + rsp = (unsigned long )idle->thread.sp; + rip = (u64)&hv_vtl_ap_entry;native_store_gdt (&gdt_ptr);store_idt (&idt_ptr);
arch/x86/kernel/kexec-bzimage64.c +7 -0
@@ -184,6 +184,13 @@ setup_efi_state(struct boot_params *params, unsigned long params_load_addr,struct efi_info *current_ei = &boot_params.efi_info;struct efi_info *ei = ¶ms->efi_info; +if (!params->acpi_rsdp_addr) { +if (efi.acpi20 !=EFI_INVALID_TABLE_ADDR ) + params->acpi_rsdp_addr = efi.acpi20; +else if (efi.acpi !=EFI_INVALID_TABLE_ADDR ) + params->acpi_rsdp_addr = efi.acpi; + } +if (!efi_enabled (EFI_RUNTIME_SERVICES ))return 0 ;
arch/x86/kernel/setup.c +6 -0
@@ -372,9 +372,15 @@ int __init ima_free_kexec_buffer(void)int __init ima_get_kexec_buffer (void **addr,size_t *size) { +int ret; +if (!ima_kexec_buffer_size)return -ENOENT ; + ret =ima_validate_range (ima_kexec_buffer_phys, ima_kexec_buffer_size); +if (ret) +return ret; + *addr =__va (ima_kexec_buffer_phys); *size = ima_kexec_buffer_size;
arch/x86/kvm/svm/nested.c +1 -2
@@ -1758,10 +1758,9 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu,* thus MMU might not be initialized correctly. * Set it again to fix this. */ - ret =nested_svm_load_cr3 (&svm->vcpu, vcpu->arch.cr3,nested_npt_enabled (svm), false); -if (WARN_ON_ONCE (ret)) +if (ret) goto out_free; svm->nested.force_msr_bitmap_recalc = true;
arch/x86/kvm/svm/svm.c +3 -2
@@ -2299,12 +2299,13 @@ static int vmload_vmsave_interception(struct kvm_vcpu *vcpu, bool vmload) ret =kvm_skip_emulated_instruction (vcpu); +/* KVM always performs VMLOAD/VMSAVE on VMCB01 (see __svm_vcpu_run()) */ if (vmload) { -svm_copy_vmloadsave_state (svm->vmcb, vmcb12); +svm_copy_vmloadsave_state (svm->vmcb01.ptr, vmcb12); svm->sysenter_eip_hi =0 ; svm->sysenter_esp_hi =0 ; }else { -svm_copy_vmloadsave_state (vmcb12, svm->vmcb); +svm_copy_vmloadsave_state (vmcb12, svm->vmcb01.ptr); }kvm_vcpu_unmap (vcpu, &map, true);
arch/x86/kvm/x86.c +2 -0
@@ -11437,9 +11437,11 @@ static void __get_sregs2(struct kvm_vcpu *vcpu, struct kvm_sregs2 *sregs2)return ;if (is_pae_paging (vcpu)) { +kvm_vcpu_srcu_read_lock (vcpu);for (i =0 ; i <4 ; i++) sregs2->pdptrs[i] =kvm_pdptr_read (vcpu, i); sregs2->flags |=KVM_SREGS2_FLAGS_PDPTRS_VALID ; +kvm_vcpu_srcu_read_unlock (vcpu); } }
arch/x86/platform/pvh/head.S +2 -0
@@ -70,10 +70,12 @@ SYM_CODE_START_LOCAL(pvh_start_xen) mov $_pa(early_stack_end), %esp +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) /* Enable PAE mode. */ mov %cr4, %eax orl $X86_CR4_PAE, %eax mov %eax, %cr4 +#endif #ifdef CONFIG_X86_64 /* Enable Long mode. */
arch/x86/xen/enlighten.c +1 -1
@@ -480,7 +480,7 @@ int __init arch_xen_unpopulated_init(struct resource **res)* driver to know how much of the physmap is unpopulated and * set an accurate initial memory target. */ - xen_released_pages += xen_extra_mem[i].n_pfns; + xen_unpopulated_pages += xen_extra_mem[i].n_pfns;/* Zero so region is not also added to the balloon driver. */ xen_extra_mem[i].n_pfns =0 ; }
arch/x86/xen/mmu.h +0 -4
@@ -17,10 +17,6 @@ bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn);void set_pte_mfn (unsigned long vaddr,unsigned long pfn,pgprot_t flags); -pte_t xen_ptep_modify_prot_start (struct vm_area_struct *vma,unsigned long addr,pte_t *ptep); -void xen_ptep_modify_prot_commit (struct vm_area_struct *vma,unsigned long addr, -pte_t *ptep,pte_t pte); -unsigned long xen_read_cr2_direct (void );extern void xen_init_mmu_ops (void );
arch/x86/xen/mmu_pv.c +6 -5
@@ -173,7 +173,7 @@ static int alloc_discontig_frames(unsigned int order)* looking at another vcpu's cr3 value, it should use this variable. */ DEFINE_PER_CPU(unsigned long, xen_cr3); /* cr3 stored as physaddr */ -DEFINE_PER_CPU(unsigned long, xen_current_cr3); /* actual vcpu cr3 */ +static DEFINE_PER_CPU(unsigned long, xen_current_cr3); /* actual vcpu cr3 */static phys_addr_t xen_pt_base, xen_pt_size__initdata ;
@@ -350,16 +350,17 @@ static void xen_set_pte(pte_t *ptep, pte_t pteval)__xen_set_pte (ptep, pteval); } -pte_t xen_ptep_modify_prot_start (struct vm_area_struct *vma, -unsigned long addr,pte_t *ptep) +static pte_t xen_ptep_modify_prot_start (struct vm_area_struct *vma, +unsigned long addr,pte_t *ptep) {/* Just return the pte as-is. We preserve the bits on commit */ trace_xen_mmu_ptep_modify_prot_start (vma->vm_mm, addr, ptep, *ptep);return *ptep; } -void xen_ptep_modify_prot_commit (struct vm_area_struct *vma,unsigned long addr, -pte_t *ptep,pte_t pte) +static void xen_ptep_modify_prot_commit (struct vm_area_struct *vma, +unsigned long addr, +pte_t *ptep,pte_t pte) {struct mmu_update u;
arch/x86/xen/xen-ops.h +0 -1
@@ -23,7 +23,6 @@ void xen_copy_trap_info(struct trap_info *traps); DECLARE_PER_CPU_ALIGNED(struct vcpu_info, xen_vcpu_info); DECLARE_PER_CPU(unsigned long, xen_cr3); -DECLARE_PER_CPU(unsigned long, xen_current_cr3);extern struct start_info *xen_start_info;extern struct shared_info xen_dummy_shared_info;
block/blk-mq-debugfs.c +2 -0
@@ -730,8 +730,10 @@ void blk_mq_debugfs_register_hctxs(struct request_queue *q)struct blk_mq_hw_ctx *hctx;unsigned long i; +mutex_lock (&q->debugfs_mutex);queue_for_each_hw_ctx (q, hctx, i)blk_mq_debugfs_register_hctx (q, hctx); +mutex_unlock (&q->debugfs_mutex); }void blk_mq_debugfs_unregister_hctxs (struct request_queue *q)
drivers/acpi/acpi_processor.c +15 -13
@@ -39,6 +39,7 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev) {u8 value1 =0 ;u8 value2 =0 ; +struct pci_dev *ide_dev =NULL , *isa_dev =NULL ;if (!dev)
@@ -96,12 +97,12 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev)* each IDE controller's DMA status to make sure we catch all * DMA activity. */ - dev =pci_get_subsys (PCI_VENDOR_ID_INTEL , + ide_dev =pci_get_subsys (PCI_VENDOR_ID_INTEL ,PCI_DEVICE_ID_INTEL_82371AB ,PCI_ANY_ID ,PCI_ANY_ID ,NULL ); -if (dev) { - errata.piix4.bmisx =pci_resource_start (dev,4 ); -pci_dev_put (dev); +if (ide_dev) { + errata.piix4.bmisx =pci_resource_start (ide_dev,4 ); +pci_dev_put (ide_dev); }/*
@@ -113,24 +114,25 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev)* disable C3 support if this is enabled, as some legacy * devices won't operate well if fast DMA is disabled. */ - dev =pci_get_subsys (PCI_VENDOR_ID_INTEL , + isa_dev =pci_get_subsys (PCI_VENDOR_ID_INTEL ,PCI_DEVICE_ID_INTEL_82371AB_0 ,PCI_ANY_ID ,PCI_ANY_ID ,NULL ); -if (dev) { -pci_read_config_byte (dev,0x76 , &value1); -pci_read_config_byte (dev,0x77 , &value2); +if (isa_dev) { +pci_read_config_byte (isa_dev,0x76 , &value1); +pci_read_config_byte (isa_dev,0x77 , &value2);if ((value1 &0x80 ) || (value2 &0x80 )) errata.piix4.fdma =1 ; -pci_dev_put (dev); +pci_dev_put (isa_dev); }break ; } -if (errata.piix4.bmisx) -dev_dbg (&dev->dev,"Bus master activity detection (BM-IDE) erratum enabled\n" ); -if (errata.piix4.fdma) -dev_dbg (&dev->dev,"Type-F DMA livelock erratum (C3 disabled)\n" ); +if (ide_dev) +dev_dbg (&ide_dev->dev,"Bus master activity detection (BM-IDE) erratum enabled\n" ); + +if (isa_dev) +dev_dbg (&isa_dev->dev,"Type-F DMA livelock erratum (C3 disabled)\n" );return 0 ; }
drivers/acpi/acpica/evregion.c +3 -1
@@ -163,7 +163,9 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,return_ACPI_STATUS (AE_NOT_EXIST ); } -if (region_obj->region.space_id ==ACPI_ADR_SPACE_PLATFORM_COMM ) { +if (field_obj + && region_obj->region.space_id == +ACPI_ADR_SPACE_PLATFORM_COMM ) {struct acpi_pcc_info *ctx = handler_desc->address_space.context;
drivers/acpi/acpica/exoparg3.c +18 -28
81 lines not on this page · raw message
drivers/acpi/apei/ghes.c +5 -1
@@ -28,6 +28,7 @@#include <linux/timer.h> #include <linux/cper.h> #include <linux/platform_device.h> +#include <linux/minmax.h> #include <linux/mutex.h> #include <linux/ratelimit.h> #include <linux/vmalloc.h>
@@ -290,6 +291,7 @@ static struct ghes *ghes_new(struct acpi_hest_generic *generic) error_block_length =GHES_ESTATUS_MAX_SIZE ; } ghes->estatus =kmalloc (error_block_length,GFP_KERNEL ); + ghes->estatus_length = error_block_length;if (!ghes->estatus) { rc = -ENOMEM ; goto err_unmap_status_addr;
@@ -361,13 +363,15 @@ static int __ghes_check_estatus(struct ghes *ghes, struct acpi_hest_generic_status *estatus) {u32 len =cper_estatus_len (estatus); +u32 max_len =min (ghes->generic->error_block_length, + ghes->estatus_length);if (len <sizeof (*estatus)) { pr_warn_ratelimited(FW_WARN GHES_PFX "Truncated error status block!\n");return -EIO ; } -if (len > ghes->generic->error_block_length) { +if (!len || len > max_len) { pr_warn_ratelimited(FW_WARN GHES_PFX "Invalid error status block length!\n");return -EIO ; }
drivers/acpi/cppc_acpi.c +2 -2
@@ -347,7 +347,7 @@ static int send_pcc_cmd(int pcc_ss_id, u16 cmd) end:if (cmd ==CMD_WRITE ) {if (unlikely (ret)) { -for_each_possible_cpu (i) { +for_each_online_cpu (i) {struct cpc_desc *desc =per_cpu (cpc_desc_ptr, i);if (!desc)
@@ -509,7 +509,7 @@ int acpi_get_psd_map(unsigned int cpu, struct cppc_cpudata *cpu_data)else if (pdomain->coord_type ==DOMAIN_COORD_TYPE_SW_ANY ) cpu_data->shared_type =CPUFREQ_SHARED_TYPE_ANY ; -for_each_possible_cpu (i) { +for_each_online_cpu (i) {if (i == cpu)continue ;
drivers/acpi/power.c +13 -0
@@ -1035,6 +1035,19 @@ static const struct dmi_system_id dmi_leave_unused_power_resources_on[] = { DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE Click Mini L9W-B"), }, }, + { + /* + * THUNDEROBOT ZERO laptop: Due to its SSDT table bug, power + * resource 'PXP' will be shut down on initialization, making + * the NVMe #2 and the NVIDIA dGPU both unavailable (they're + * both controlled by 'PXP'). + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "THUNDEROBOT"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZERO"), + } + + }, {} };
drivers/android/binder.c +1 -1
@@ -4211,7 +4211,7 @@ static int binder_thread_write(struct binder_proc *proc, } }binder_debug (BINDER_DEBUG_DEAD_BINDER , -"%d:%d BC_DEAD_BINDER_DONE %016llx found %pK\n" , +"%d:%d BC_DEAD_BINDER_DONE %016llx found %p\n" , proc->pid, thread->pid, (u64 )cookie, death);if (death ==NULL ) {
drivers/android/binder_alloc.c +3 -3
@@ -79,7 +79,7 @@ static void binder_insert_free_buffer(struct binder_alloc *alloc, new_buffer_size =binder_alloc_buffer_size (alloc, new_buffer);binder_alloc_debug (BINDER_DEBUG_BUFFER_ALLOC , -"%d: add free buffer, size %zd, at %pK\n" , +"%d: add free buffer, size %zd, at %p\n" , alloc->pid, new_buffer_size, new_buffer);while (*p) {
@@ -474,7 +474,7 @@ static struct binder_buffer *binder_alloc_new_buf_locked( }binder_alloc_debug (BINDER_DEBUG_BUFFER_ALLOC , -"%d: binder_alloc_buf size %zd got buffer %pK size %zd\n" , +"%d: binder_alloc_buf size %zd got buffer %p size %zd\n" , alloc->pid, size, buffer, buffer_size); has_page_addr = (void __user *)
@@ -646,7 +646,7 @@ static void binder_free_buf_locked(struct binder_alloc *alloc,ALIGN (buffer->extra_buffers_size,sizeof (void *));binder_alloc_debug (BINDER_DEBUG_BUFFER_ALLOC , -"%d: binder_free_buf %pK size %zd buffer_size %zd\n" , +"%d: binder_free_buf %p size %zd buffer_size %zd\n" , alloc->pid, buffer, size, buffer_size);BUG_ON (buffer->free);
drivers/ata/libata-core.c +24 -0
@@ -2318,6 +2318,24 @@ static bool ata_dev_check_adapter(struct ata_device *dev,return false; } +bool ata_adapter_is_online (struct ata_port *ap) +{ +struct device *dev; + +if (!ap || !ap->host) +return false; + + dev = ap->host->dev; +if (!dev) +return false; + +if (dev_is_pci (dev) && +pci_channel_offline (to_pci_dev (dev))) +return false; + +return true; +} +static int ata_dev_config_ncq (struct ata_device *dev,char *desc,size_t desc_sz) {
@@ -5023,6 +5041,12 @@ void ata_qc_issue(struct ata_queued_cmd *qc) qc->flags |=ATA_QCFLAG_ACTIVE ; ap->qc_active |=1ULL << qc->tag; +/* Make sure the device is still accessible. */ +if (!ata_adapter_is_online (ap)) { + qc->err_mask |=AC_ERR_HOST_BUS ; + goto sys_err; + } +/* * We guarantee to LLDs that they will have at least one * non-zero sg if the command is a data command.
drivers/ata/libata-eh.c +2 -1
@@ -723,7 +723,8 @@ void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap)spin_unlock_irqrestore (ap->lock, flags);/* invoke EH, skip if unloading or suspended */ -if (!(ap->pflags & (ATA_PFLAG_UNLOADING |ATA_PFLAG_SUSPENDED ))) +if (!(ap->pflags & (ATA_PFLAG_UNLOADING |ATA_PFLAG_SUSPENDED )) && +ata_adapter_is_online (ap)) ap->ops->error_handler (ap);else {/* if unloading, commence suicide */
drivers/ata/libata-scsi.c +53 -31
131 lines not on this page · raw message
drivers/ata/libata.h +1 -0
@@ -75,6 +75,7 @@ extern int atapi_check_dma(struct ata_queued_cmd *qc);extern void swap_buf_le16 (u16 *buf,unsigned int buf_words);extern bool ata_phys_link_online (struct ata_link *link);extern bool ata_phys_link_offline (struct ata_link *link); +bool ata_adapter_is_online (struct ata_port *ap);extern void ata_dev_init (struct ata_device *dev);extern void ata_link_init (struct ata_port *ap,struct ata_link *link,int pmp);extern int sata_link_init_spd (struct ata_link *link);
drivers/ata/pata_ftide010.c +3 -3
@@ -122,10 +122,10 @@ static const u8 mwdma_50_active_time[3] = {6, 2, 2};static const u8 mwdma_50_recovery_time[3 ] = {6 ,2 ,1 };static const u8 mwdma_66_active_time[3 ] = {8 ,3 ,3 };static const u8 mwdma_66_recovery_time[3 ] = {8 ,2 ,1 }; -static const u8 udma_50_setup_time[6 ] = {3 ,3 ,2 ,2 ,1 ,1 }; +static const u8 udma_50_setup_time[6 ] = {3 ,3 ,2 ,2 ,1 ,9 };static const u8 udma_50_hold_time[6 ] = {3 ,1 ,1 ,1 ,1 ,1 }; -static const u8 udma_66_setup_time[7 ] = {4 ,4 ,3 ,2 , }; -static const u8 udma_66_hold_time[7 ] = {}; +static const u8 udma_66_setup_time[7 ] = {4 ,4 ,3 ,2 ,1 ,9 ,9 }; +static const u8 udma_66_hold_time[7 ] = {4 ,2 ,1 ,1 ,1 ,1 ,1 };/* * We set 66 MHz for all MWDMA modes
drivers/atm/fore200e.c +4 -0
@@ -376,6 +376,10 @@ fore200e_shutdown(struct fore200e* fore200e) fallthrough;case FORE200E_STATE_IRQ :free_irq (fore200e->irq, fore200e->atm_dev); +#ifdef FORE200E_USE_TASKLET +tasklet_kill (&fore200e->tx_tasklet); +tasklet_kill (&fore200e->rx_tasklet); +#endif fallthrough;case FORE200E_STATE_ALLOC_BUF :
drivers/auxdisplay/arm-charlcd.c +1 -1
@@ -323,7 +323,7 @@ static int __init charlcd_probe(struct platform_device *pdev) out_no_irq:iounmap (lcd->virtbase); out_no_memregion: -release_mem_region (lcd->phybase,SZ_4K ); +release_mem_region (lcd->phybase, lcd->physize); out_no_resource:kfree (lcd);return ret;
drivers/base/power/wakeirq.c +6 -3
@@ -83,13 +83,16 @@ EXPORT_SYMBOL_GPL(dev_pm_set_wake_irq);*/ void dev_pm_clear_wake_irq (struct device *dev) { -struct wake_irq *wirq = dev->power.wakeirq; +struct wake_irq *wirq;unsigned long flags; -if (!wirq) +spin_lock_irqsave (&dev->power.lock, flags); + wirq = dev->power.wakeirq; +if (!wirq) { +spin_unlock_irqrestore (&dev->power.lock, flags);return ; + } -spin_lock_irqsave (&dev->power.lock, flags);device_wakeup_detach_irq (dev); dev->power.wakeirq =NULL ;spin_unlock_irqrestore (&dev->power.lock, flags);
drivers/base/power/wakeup.c +1 -3
@@ -280,9 +280,7 @@ EXPORT_SYMBOL_GPL(wakeup_sources_read_unlock);*/ struct wakeup_source *wakeup_sources_walk_start (void ) { -struct list_head *ws_head = &wakeup_sources; - - return list_entry_rcu(ws_head->next, struct wakeup_source, entry); + return list_first_or_null_rcu(&wakeup_sources, struct wakeup_source, entry); }EXPORT_SYMBOL_GPL (wakeup_sources_walk_start);
drivers/block/rnbd/rnbd-srv.c +3 -0
@@ -536,6 +536,8 @@ static void rnbd_srv_fill_msg_open_rsp(struct rnbd_msg_open_rsp *rsp, {struct block_device *bdev = sess_dev->bdev; +memset (rsp,0 ,sizeof (*rsp)); + rsp->hdr.type =cpu_to_le16 (RNBD_MSG_OPEN_RSP ); rsp->device_id =cpu_to_le32 (sess_dev->device_id); rsp->nsectors =cpu_to_le64 (bdev_nr_sectors (bdev));
@@ -641,6 +643,7 @@ static void process_msg_sess_info(struct rnbd_srv_session *srv_sess,trace_process_msg_sess_info (srv_sess, sess_info_msg); +memset (rsp,0 ,sizeof (*rsp)); rsp->hdr.type =cpu_to_le16 (RNBD_MSG_SESS_INFO_RSP ); rsp->ver = srv_sess->ver; }
drivers/block/ublk_drv.c +3 -3
@@ -2908,10 +2908,10 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,if (issue_flags &IO_URING_F_NONBLOCK )return -EAGAIN ; -ublk_ctrl_cmd_dump (cmd); -if (!(issue_flags &IO_URING_F_SQE128 )) - goto out; +return -EINVAL ; + +ublk_ctrl_cmd_dump (cmd); ret =ublk_check_cmd_op (cmd_op);if (ret)
drivers/bluetooth/btusb.c +3 -0
@@ -548,6 +548,8 @@ static const struct usb_device_id quirks_table[] = { BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x13d3, 0x3592), .driver_info = BTUSB_REALTEK | BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x13d3, 0x3612), .driver_info = BTUSB_REALTEK | + BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x0489, 0xe122), .driver_info = BTUSB_REALTEK | BTUSB_WIDEBAND_SPEECH },
@@ -719,6 +721,7 @@ static const struct usb_device_id quirks_table[] = {/* Additional Realtek 8723BU Bluetooth devices */ { USB_DEVICE(0x7392, 0xa611), .driver_info = BTUSB_REALTEK }, + { USB_DEVICE(0x2c0a, 0x8761), .driver_info = BTUSB_REALTEK }, /* Additional Realtek 8723DE Bluetooth devices */ { USB_DEVICE(0x0bda, 0xb009), .driver_info = BTUSB_REALTEK },
drivers/bluetooth/hci_qca.c +14 -10
@@ -1959,19 +1959,23 @@ static int qca_setup(struct hci_uart *hu) } out: -if (ret && retries <MAX_INIT_RETRIES ) { -bt_dev_warn (hdev,"Retry BT power ON:%d" , retries); +if (ret) {qca_power_shutdown (hu); -if (hu->serdev) { -serdev_device_close (hu->serdev); - ret =serdev_device_open (hu->serdev); -if (ret) { -bt_dev_err (hdev,"failed to open port" ); -return ret; + +if (retries <MAX_INIT_RETRIES ) { +bt_dev_warn (hdev,"Retry BT power ON:%d" , retries); +if (hu->serdev) { +serdev_device_close (hu->serdev); + ret =serdev_device_open (hu->serdev); +if (ret) { +bt_dev_err (hdev,"failed to open port" ); +return ret; + } } + retries++; + goto retry; } - retries++; - goto retry; +return ret; }/* Setup bdaddr */
drivers/bus/fsl-mc/fsl-mc-bus.c +1 -5
@@ -908,11 +908,7 @@ int fsl_mc_device_add(struct fsl_mc_obj_desc *obj_desc,return 0 ; error_cleanup_dev: -kfree (mc_dev->regions); -if (mc_bus) -kfree (mc_bus); -else -kfree (mc_dev); +put_device (&mc_dev->dev);return error; }
drivers/char/ipmi/ipmi_ipmb.c +5 -0
@@ -202,11 +202,16 @@ static int ipmi_ipmb_slave_cb(struct i2c_client *client,break ;case I2C_SLAVE_READ_REQUESTED : + *val =0xff ; +ipmi_ipmb_check_msg_done (iidev); +break ; +case I2C_SLAVE_STOP :ipmi_ipmb_check_msg_done (iidev);break ;case I2C_SLAVE_READ_PROCESSED : + *val =0xff ;break ; }
drivers/char/random.c +1 -11
@@ -91,8 +91,7 @@ static ATOMIC_NOTIFIER_HEAD(random_ready_notifier);/* Control how we warn userspace. */ static struct ratelimit_state urandom_warning =RATELIMIT_STATE_INIT_FLAGS ("urandom_warning" ,HZ ,3 ,RATELIMIT_MSG_ON_RELEASE ); -static int ratelimit_disable__read_mostly = -IS_ENABLED (CONFIG_WARN_ALL_UNSEEDED_RANDOM ); +static int ratelimit_disable__read_mostly =0 ;module_param_named (ratelimit_disable, ratelimit_disable, int,0644 );MODULE_PARM_DESC (ratelimit_disable,"Disable random ratelimit suppression" );
@@ -163,12 +162,6 @@ int __cold execute_with_initialized_rng(struct notifier_block *nb)return ret; } -#define warn_unseeded_randomness () \ - if (IS_ENABLED(CONFIG_WARN_ALL_UNSEEDED_RANDOM) && !crng_ready()) \ - printk_deferred(KERN_NOTICE "random: %s called from %pS with crng_init=%d\n", \ - __func__, (void *)_RET_IP_, crng_init) - -/********************************************************************* * * Fast key erasure RNG, the "crng".
@@ -413,7 +406,6 @@ static void _get_random_bytes(void *buf, size_t len)*/ void get_random_bytes (void *buf,size_t len) { -warn_unseeded_randomness ();_get_random_bytes (buf, len); }EXPORT_SYMBOL (get_random_bytes);
@@ -501,8 +493,6 @@ type get_random_ ##type(void) \ struct batch_ ##type *batch; \unsigned long next_gen ; \ \ - warn_unseeded_randomness(); \ - \if (!crng_ready ()) { \_get_random_bytes (&ret,sizeof (ret )); \return ret; \
drivers/char/tpm/st33zp24/st33zp24.c +4 -2
@@ -328,8 +328,10 @@ static int st33zp24_send(struct tpm_chip *chip, unsigned char *buf,for (i =0 ; i < len -1 ;) { burstcnt =get_burstcount (chip); -if (burstcnt <0 ) -return burstcnt; +if (burstcnt <0 ) { + ret = burstcnt; + goto out_err; + } size =min_t (int, len - i -1 , burstcnt); ret = tpm_dev->ops->send (tpm_dev->phy_id,TPM_DATA_FIFO , buf + i, size);
drivers/char/tpm/tpm_i2c_infineon.c +4 -2
@@ -543,8 +543,10 @@ static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t len) burstcnt =get_burstcount (chip);/* burstcnt < 0 = TPM is busy */ -if (burstcnt <0 ) -return burstcnt; +if (burstcnt <0 ) { + rc = burstcnt; + goto out_err; + }if (burstcnt > (len -1 - count)) burstcnt = len -1 - count;
drivers/char/tpm/tpm_tis_i2c_cr50.c +1 -2
@@ -713,8 +713,7 @@ static int tpm_cr50_i2c_probe(struct i2c_client *client)if (client->irq >0 ) { rc =devm_request_irq (dev, client->irq, tpm_cr50_i2c_int_handler, -IRQF_TRIGGER_FALLING |IRQF_ONESHOT | -IRQF_NO_AUTOEN , +IRQF_TRIGGER_FALLING |IRQF_NO_AUTOEN , dev->driver->name, chip);if (rc <0 ) {dev_err (dev,"Failed to probe IRQ %d\n" , client->irq);
drivers/char/tpm/tpm_tis_spi_cr50.c +1 -1
@@ -287,7 +287,7 @@ int cr50_spi_probe(struct spi_device *spi)if (spi->irq >0 ) { ret =devm_request_irq (&spi->dev, spi->irq, cr50_spi_irq_handler, -IRQF_TRIGGER_RISING |IRQF_ONESHOT , +IRQF_TRIGGER_RISING ,"cr50_spi" , cr50_phy);if (ret <0 ) {if (ret == -EPROBE_DEFER )
drivers/clk/clk-apple-nco.c +1 -0
@@ -318,6 +318,7 @@ static int applnco_probe(struct platform_device *pdev) }static const struct of_device_id applnco_ids[] = { + { .compatible ="apple,t8103-nco" }, { .compatible ="apple,nco" }, { } };
drivers/clk/mediatek/clk-mtk.c +7 -5
@@ -497,14 +497,16 @@ static int __mtk_clk_simple_probe(struct platform_device *pdev,if (mcd->need_runtime_pm) { -devm_pm_runtime_enable (&pdev->dev); + r =devm_pm_runtime_enable (&pdev->dev); +if (r) + goto unmap_io;/* * Do a pm_runtime_resume_and_get() to workaround a possible * deadlock between clk_register() and the genpd framework. */ r =pm_runtime_resume_and_get (&pdev->dev);if (r) -return r; + goto unmap_io; }/* Calculate how many clk_hw_onecell_data entries to allocate */
@@ -618,11 +620,11 @@ static int __mtk_clk_simple_probe(struct platform_device *pdev, free_data:mtk_free_clk_data (clk_data); free_base: -if (mcd->shared_io && base) -iounmap (base); -if (mcd->need_runtime_pm)pm_runtime_put (&pdev->dev); +unmap_io: +if (mcd->shared_io && base) +iounmap (base);return r; }
drivers/clk/meson/gxbb.c +14 -3
@@ -318,12 +318,23 @@ static struct clk_regmap gxbb_hdmi_pll = { }, }; +/* +* GXL hdmi OD dividers are POWER_OF_TWO dividers but limited to /4. +* A divider value of 3 should map to /8 but instead map /4 so ignore it. +*/ +static const struct clk_div_table gxl_hdmi_pll_od_div_table[] = { + { .val =0 , .div =1 }, + { .val =1 , .div =2 }, + { .val =2 , .div =4 }, + {/* sentinel */ } +}; +static struct clk_regmap gxl_hdmi_pll_od = { .data = &(struct clk_regmap_div_data ){ .offset =HHI_HDMI_PLL_CNTL +8 , .shift =21 , .width =2 , - .flags =CLK_DIVIDER_POWER_OF_TWO , + .table = gxl_hdmi_pll_od_div_table, }, .hw.init = &(struct clk_init_data ){ .name ="hdmi_pll_od" ,
@@ -341,7 +352,7 @@ static struct clk_regmap gxl_hdmi_pll_od2 = { .offset = HHI_HDMI_PLL_CNTL + 8, .shift = 23, .width = 2, - .flags = CLK_DIVIDER_POWER_OF_TWO, + .table = gxl_hdmi_pll_od_div_table, }, .hw.init = &(struct clk_init_data ){ .name ="hdmi_pll_od2" ,
@@ -359,7 +370,7 @@ static struct clk_regmap gxl_hdmi_pll = { .offset = HHI_HDMI_PLL_CNTL + 8, .shift = 19, .width = 2, - .flags = CLK_DIVIDER_POWER_OF_TWO, + .table = gxl_hdmi_pll_od_div_table, }, .hw.init = &(struct clk_init_data ){ .name ="hdmi_pll" ,
drivers/clk/microchip/clk-core.c +12 -13
@@ -281,14 +281,13 @@ static u8 roclk_get_parent(struct clk_hw *hw) v = (readl (refo->ctrl_reg) >>REFO_SEL_SHIFT ) &REFO_SEL_MASK ; -if (!refo->parent_map) -return v; - -for (i =0 ; i <clk_hw_get_num_parents (hw); i++) -if (refo->parent_map[i] == v) -return i; +if (refo->parent_map) { +for (i =0 ; i <clk_hw_get_num_parents (hw); i++) +if (refo->parent_map[i] == v) +return i; + } -return -EINVAL ; +return v; } static unsigned long roclk_calc_rate(unsigned long parent_rate,
@@ -823,13 +822,13 @@ static u8 sclk_get_parent(struct clk_hw *hw) v = (readl (sclk->mux_reg) >>OSC_CUR_SHIFT ) &OSC_CUR_MASK ; -if (!sclk->parent_map) -return v; +if (sclk->parent_map) { +for (i =0 ; i <clk_hw_get_num_parents (hw); i++) +if (sclk->parent_map[i] == v) +return i; + } -for (i =0 ; i <clk_hw_get_num_parents (hw); i++) -if (sclk->parent_map[i] == v) -return i; -return -EINVAL ; +return v; }static int sclk_set_parent (struct clk_hw *hw,u8 index)
drivers/clk/qcom/clk-rcg2.c +3 -4
@@ -434,7 +434,7 @@ static int clk_rcg2_get_duty_cycle(struct clk_hw *hw, struct clk_duty *duty)static int clk_rcg2_set_duty_cycle (struct clk_hw *hw,struct clk_duty *duty) {struct clk_rcg2 *rcg =to_clk_rcg2 (hw); -u32 notn_m, n, m, d, not2d, mask, duty_per, cfg; +u32 notn_m, n, m, d, not2d, mask, cfg;int ret;/* Duty-cycle cannot be modified for non-MND RCGs */
@@ -453,10 +453,8 @@ static int clk_rcg2_set_duty_cycle(struct clk_hw *hw, struct clk_duty *duty) n = (~(notn_m) + m) & mask; - duty_per = (duty->num *100 ) / duty->den; -/* Calculate 2d value */ - d =DIV_ROUND_CLOSEST (n * duty_per *2 ,100 ); + d =DIV_ROUND_CLOSEST (n * duty->num *2 , duty->den);/* * Check bit widths of 2d. If D is too big reduce duty cycle.
@@ -920,6 +918,7 @@ static int clk_gfx3d_determine_rate(struct clk_hw *hw,if (req->max_rate < parent_req.max_rate) parent_req.max_rate = req->max_rate; + parent_req.best_parent_hw = req->best_parent_hw; ret =__clk_determine_rate (req->best_parent_hw, &parent_req);if (ret)return ret;
drivers/clk/qcom/common.c +1 -1
@@ -325,7 +325,7 @@ int qcom_cc_probe_by_index(struct platform_device *pdev, int index, base =devm_platform_ioremap_resource (pdev, index);if (IS_ERR (base)) -return -ENOMEM ; +return PTR_ERR (base); regmap =devm_regmap_init_mmio (&pdev->dev, base, desc->config);if (IS_ERR (regmap))
drivers/clk/qcom/dispcc-sdm845.c +2 -2
@@ -280,7 +280,7 @@ static struct clk_rcg2 disp_cc_mdss_pclk0_clk_src = { .name = "disp_cc_mdss_pclk0_clk_src", .parent_data = disp_cc_parent_data_4, .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), - .flags = CLK_SET_RATE_PARENT, + .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, .ops = &clk_pixel_ops, }, };
@@ -295,7 +295,7 @@ static struct clk_rcg2 disp_cc_mdss_pclk1_clk_src = { .name = "disp_cc_mdss_pclk1_clk_src", .parent_data = disp_cc_parent_data_4, .num_parents = ARRAY_SIZE(disp_cc_parent_data_4), - .flags = CLK_SET_RATE_PARENT, + .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, .ops = &clk_pixel_ops, }, };
drivers/clk/qcom/gcc-ipq5018.c +1 -0
@@ -1339,6 +1339,7 @@ static struct clk_branch gcc_sleep_clk_src = { .name = "gcc_sleep_clk_src", .parent_data = gcc_sleep_clk_data, .num_parents = ARRAY_SIZE(gcc_sleep_clk_data), + .flags = CLK_IS_CRITICAL, .ops = &clk_branch2_ops, }, },
drivers/clk/qcom/gcc-msm8917.c +0 -1
@@ -3034,7 +3034,6 @@ static struct gdsc cpp_gdsc = { .pd = { .name = "cpp_gdsc", }, - .flags = ALWAYS_ON, .pwrsts = PWRSTS_OFF_ON, };
drivers/clk/qcom/gcc-msm8953.c +0 -1
@@ -3946,7 +3946,6 @@ static struct gdsc cpp_gdsc = { .pd = { .name = "cpp_gdsc", }, - .flags = ALWAYS_ON, .pwrsts = PWRSTS_OFF_ON, };
drivers/clk/qcom/gcc-qdu1000.c +2 -2
@@ -904,7 +904,7 @@ static struct clk_rcg2 gcc_sdcc5_apps_clk_src = { .name = "gcc_sdcc5_apps_clk_src", .parent_data = gcc_parent_data_8, .num_parents = ARRAY_SIZE(gcc_parent_data_8), - .ops = &clk_rcg2_floor_ops, + .ops = &clk_rcg2_shared_floor_ops, }, };
@@ -923,7 +923,7 @@ static struct clk_rcg2 gcc_sdcc5_ice_core_clk_src = { .name = "gcc_sdcc5_ice_core_clk_src", .parent_data = gcc_parent_data_2, .num_parents = ARRAY_SIZE(gcc_parent_data_2), - .ops = &clk_rcg2_floor_ops, + .ops = &clk_rcg2_shared_floor_ops, }, };
drivers/clk/qcom/gcc-sdx75.c +2 -2
@@ -1033,7 +1033,7 @@ static struct clk_rcg2 gcc_sdcc1_apps_clk_src = { .name = "gcc_sdcc1_apps_clk_src", .parent_data = gcc_parent_data_17, .num_parents = ARRAY_SIZE(gcc_parent_data_17), - .ops = &clk_rcg2_floor_ops, + .ops = &clk_rcg2_shared_floor_ops, }, };
@@ -1057,7 +1057,7 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { .name = "gcc_sdcc2_apps_clk_src", .parent_data = gcc_parent_data_18, .num_parents = ARRAY_SIZE(gcc_parent_data_18), - .ops = &clk_rcg2_floor_ops, + .ops = &clk_rcg2_shared_floor_ops, }, };
drivers/clk/qcom/gcc-sm8450.c +2 -2
@@ -936,7 +936,7 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { .parent_data = gcc_parent_data_7, .num_parents = ARRAY_SIZE(gcc_parent_data_7), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_floor_ops, + .ops = &clk_rcg2_shared_floor_ops, }, };
@@ -959,7 +959,7 @@ static struct clk_rcg2 gcc_sdcc4_apps_clk_src = { .parent_data = gcc_parent_data_0, .num_parents = ARRAY_SIZE(gcc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_floor_ops, + .ops = &clk_rcg2_shared_floor_ops, }, };
drivers/clk/qcom/gcc-sm8550.c +2 -2
@@ -1025,7 +1025,7 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = { .parent_data = gcc_parent_data_9, .num_parents = ARRAY_SIZE(gcc_parent_data_9), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_shared_floor_ops, }, };
@@ -1048,7 +1048,7 @@ static struct clk_rcg2 gcc_sdcc4_apps_clk_src = { .parent_data = gcc_parent_data_0, .num_parents = ARRAY_SIZE(gcc_parent_data_0), .flags = CLK_SET_RATE_PARENT, - .ops = &clk_rcg2_shared_ops, + .ops = &clk_rcg2_shared_floor_ops, }, };
drivers/clk/renesas/rzg2l-cpg.c +3 -3
@@ -91,8 +91,8 @@ struct sd_mux_hw_data {struct rzg2l_pll5_param {u32 pl5_fracin; +u16 pl5_intin;u8 pl5_refdiv; -u8 pl5_intin;u8 pl5_postdiv1;u8 pl5_postdiv2;u8 pl5_spread;
@@ -380,8 +380,8 @@ rzg2l_cpg_get_foutpostdiv_rate(struct rzg2l_pll5_param *params, foutvco_rate =div_u64 (mul_u32_u32 (EXTAL_FREQ_IN_MEGA_HZ *MEGA , (params->pl5_intin <<24 ) + params->pl5_fracin), params->pl5_refdiv) >>24 ; - foutpostdiv_rate =DIV_ROUND_CLOSEST_ULL (foutvco_rate, - params->pl5_postdiv1 * params->pl5_postdiv2); + foutpostdiv_rate =DIV_ROUND_CLOSEST (foutvco_rate, + params->pl5_postdiv1 * params->pl5_postdiv2);return foutpostdiv_rate; }
drivers/clk/tegra/clk-tegra124-emc.c +3 -1
@@ -538,8 +538,10 @@ struct clk *tegra124_clk_register_emc(void __iomem *base, struct device_node *np tegra->hw.init = &init; clk =clk_register (NULL , &tegra->hw); -if (IS_ERR (clk)) +if (IS_ERR (clk)) { +kfree (tegra);return clk; + } tegra->prev_parent =clk_hw_get_parent_by_index ( &tegra->hw,emc_get_parent (&tegra->hw))->clk;
drivers/clocksource/Kconfig +1 -0
@@ -236,6 +236,7 @@ config KEYSTONE_TIMER config INTEGRATOR_AP_TIMER bool "Integrator-AP timer driver" if COMPILE_TEST + depends on OF select CLKSRC_MMIO help Enables support for the Integrator-AP timer.
drivers/clocksource/sh_tmu.c +0 -18
@@ -143,16 +143,6 @@ static void sh_tmu_start_stop_ch(struct sh_tmu_channel *ch, int start)static int __sh_tmu_enable (struct sh_tmu_channel *ch) { -int ret; - -/* enable clock */ - ret =clk_enable (ch->tmu->clk); -if (ret) { -dev_err (&ch->tmu->pdev->dev,"ch%u: cannot enable clock\n" , - ch->index); -return ret; - } -/* make sure channel is disabled */ sh_tmu_start_stop_ch (ch,0 );
@@ -174,7 +164,6 @@ static int sh_tmu_enable(struct sh_tmu_channel *ch)if (ch->enable_count++ >0 )return 0 ; -pm_runtime_get_sync (&ch->tmu->pdev->dev);dev_pm_syscore_device (&ch->tmu->pdev->dev, true);return __sh_tmu_enable (ch);
@@ -187,9 +176,6 @@ static void __sh_tmu_disable(struct sh_tmu_channel *ch)/* disable interrupts in TMU block */ sh_tmu_write (ch,TCR ,TCR_TPSC_CLK4 ); - -/* stop clock */ -clk_disable (ch->tmu->clk); }static void sh_tmu_disable (struct sh_tmu_channel *ch)
@@ -203,7 +189,6 @@ static void sh_tmu_disable(struct sh_tmu_channel *ch)__sh_tmu_disable (ch);dev_pm_syscore_device (&ch->tmu->pdev->dev, false); -pm_runtime_put (&ch->tmu->pdev->dev); } static void sh_tmu_set_next(struct sh_tmu_channel *ch, unsigned long delta,
@@ -552,7 +537,6 @@ static int sh_tmu_setup(struct sh_tmu_device *tmu, struct platform_device *pdev) goto err_clk_unprepare; tmu->rate =clk_get_rate (tmu->clk) /4 ; -clk_disable (tmu->clk);/* Map the memory resource. */ ret =sh_tmu_map_memory (tmu);
@@ -626,8 +610,6 @@ static int sh_tmu_probe(struct platform_device *pdev) out:if (tmu->has_clockevent || tmu->has_clocksource)pm_runtime_irq_safe (&pdev->dev); -else -pm_runtime_idle (&pdev->dev);return 0 ; }
drivers/cpufreq/cpufreq-dt-platdev.c +3 -0
@@ -158,8 +158,11 @@ static const struct of_device_id blocklist[] __initconst = { { .compatible = "qcom,sdm845", }, { .compatible = "qcom,sdx75", }, { .compatible = "qcom,sm6115", }, + { .compatible = "qcom,sm6125", }, + { .compatible = "qcom,sm6150", }, { .compatible = "qcom,sm6350", }, { .compatible = "qcom,sm6375", }, + { .compatible = "qcom,sm7125", }, { .compatible = "qcom,sm7225", }, { .compatible = "qcom,sm8150", }, { .compatible = "qcom,sm8250", },
drivers/cpuidle/cpuidle.c +10 -0
@@ -356,6 +356,16 @@ noinstr int cpuidle_enter_state(struct cpuidle_device *dev,int cpuidle_select (struct cpuidle_driver *drv,struct cpuidle_device *dev,bool *stop_tick) { +/* +* If there is only a single idle state (or none), there is nothing +* meaningful for the governor to choose. Skip the governor and +* always use state 0 with the tick running. +*/ +if (drv->state_count <=1 ) { + *stop_tick = false; +return 0 ; + } +return cpuidle_curr_governor->select (drv, dev, stop_tick); }
drivers/cpuidle/governors/menu.c +16 -23
@@ -14,8 +14,6 @@#include <linux/ktime.h> #include <linux/hrtimer.h> #include <linux/tick.h> -#include <linux/sched.h> -#include <linux/sched/loadavg.h> #include <linux/sched/stat.h> #include <linux/math64.h>
@@ -94,16 +92,11 @@* state, and thus the less likely a busy CPU will hit such a deep * C state. * -* Two factors are used in determing this multiplier: -* a value of 10 is added for each point of "per cpu load average" we have. -* a value of 5 points is added for each process that is waiting for -* IO on this CPU. -* (these values are experimentally determined) -* -* The load average factor gives a longer term (few seconds) input to the -* decision, while the iowait value gives a cpu local instantanious input. -* The iowait factor may look low, but realize that this is also already -* represented in the system load average. +* Currently there is only one value determining the factor: +* 10 points are added for each process that is waiting for IO on this CPU. +* (This value was experimentally determined.) +* Utilization is no longer a factor as it was shown that it never contributed +* significantly to the performance multiplier in the first place. * */
@@ -276,7 +269,7 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,/* Find the shortest expected idle interval. */ predicted_ns =get_typical_interval (data) *NSEC_PER_USEC ; -if (predicted_ns >RESIDENCY_THRESHOLD_NS ) { +if (predicted_ns >RESIDENCY_THRESHOLD_NS ||tick_nohz_tick_stopped ()) {unsigned int timer_us;/* Determine the time till the closest timer. */
@@ -296,6 +289,16 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, RESOLUTION * DECAY * NSEC_PER_USEC);/* Use the lowest expected idle interval to pick the idle state. */ predicted_ns =min ((u64 )timer_us *NSEC_PER_USEC , predicted_ns); +/* +* If the tick is already stopped, the cost of possible short +* idle duration misprediction is much higher, because the CPU +* may be stuck in a shallow idle state for a long time as a +* result of it. In that case, say we might mispredict and use +* the known time till the closest timer event for the idle +* state selection. +*/ +if (tick_nohz_tick_stopped () && predicted_ns <TICK_NSEC ) + predicted_ns = data->next_timer_ns; }else {/* * Because the next timer event is not going to be determined
@@ -321,16 +324,6 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,return 0 ; } -/* -* If the tick is already stopped, the cost of possible short idle -* duration misprediction is much higher, because the CPU may be stuck -* in a shallow idle state for a long time as a result of it. In that -* case, say we might mispredict and use the known time till the closest -* timer event for the idle state selection. -*/ -if (tick_nohz_tick_stopped () && predicted_ns <TICK_NSEC ) - predicted_ns = data->next_timer_ns; -/* * Find the idle state with the lowest power while satisfying * our constraints.
drivers/crypto/cavium/cpt/cptvf_main.c +2 -1
@@ -180,7 +180,8 @@ static void free_command_queues(struct cpt_vf *cptvf,hlist_for_each_entry_safe (chunk, node, &cqinfo->queue[i].chead, nextchunk) { -dma_free_coherent (&pdev->dev, chunk->size, +dma_free_coherent (&pdev->dev, + chunk->size +CPT_NEXT_CHUNK_PTR_SIZE , chunk->head, chunk->dma_addr); chunk->head =NULL ;
drivers/crypto/ccp/psp-dev.c +71 -0
95 lines not on this page · raw message
drivers/crypto/ccp/psp-dev.h +18 -0
@@ -14,6 +14,8 @@#include <linux/list.h> #include <linux/bits.h> #include <linux/interrupt.h> +#include <linux/mutex.h> +#include <linux/psp.h> #include "sp-dev.h"
@@ -33,6 +35,7 @@ struct psp_device {struct sp_device *sp;void __iomem *io_regs; +struct mutex mailbox_mutex;psp_irq_handler_t sev_irq_handler;void *sev_irq_data;
@@ -71,4 +74,19 @@ struct psp_device *psp_get_master_device(void);#define PSP_SECURITY_HSP_TPM_AVAILABLE BIT(10)#define PSP_SECURITY_ROM_ARMOR_ENFORCED BIT(11) +/** +* enum psp_cmd - PSP mailbox commands +* @PSP_CMD_TEE_RING_INIT: Initialize TEE ring buffer +* @PSP_CMD_TEE_RING_DESTROY: Destroy TEE ring buffer +* @PSP_CMD_MAX: Maximum command id +*/ +enum psp_cmd { +PSP_CMD_TEE_RING_INIT =1 , +PSP_CMD_TEE_RING_DESTROY =2 , +PSP_CMD_MAX =15 , +}; + +int psp_mailbox_command (struct psp_device *psp,enum psp_cmd cmd,void *cmdbuff, +unsigned int timeout_msecs,unsigned int *cmdresp); +#endif /* __PSP_DEV_H */
drivers/crypto/ccp/sp-dev.c +12 -0
@@ -229,6 +229,18 @@ int sp_resume(struct sp_device *sp)return 0 ; } +int sp_restore (struct sp_device *sp) +{ +if (sp->psp_data) { +int ret =psp_restore (sp); + +if (ret) +return ret; + } + +return sp_resume (sp); +} +struct sp_device *sp_get_psp_master_device (void ) {struct sp_device *i, *ret =NULL ;
drivers/crypto/ccp/sp-dev.h +6 -0
@@ -71,6 +71,9 @@ struct psp_vdata {const struct sev_vdata *sev;const struct tee_vdata *tee;const struct platform_access_vdata *platform_access; +const unsigned int cmdresp_reg; +const unsigned int cmdbuff_addr_lo_reg; +const unsigned int cmdbuff_addr_hi_reg;const unsigned int feature_reg;const unsigned int inten_reg;const unsigned int intsts_reg;
@@ -138,6 +141,7 @@ struct sp_device *sp_get_master(void);int sp_suspend (struct sp_device *sp);int sp_resume (struct sp_device *sp); +int sp_restore (struct sp_device *sp);int sp_request_ccp_irq (struct sp_device *sp,irq_handler_t handler,const char *name,void *data);void sp_free_ccp_irq (struct sp_device *sp,void *data);
@@ -171,6 +175,7 @@ int psp_dev_init(struct sp_device *sp);void psp_pci_init (void );void psp_dev_destroy (struct sp_device *sp);void psp_pci_exit (void ); +int psp_restore (struct sp_device *sp);#else /* !CONFIG_CRYPTO_DEV_SP_PSP */
@@ -178,6 +183,7 @@ static inline int psp_dev_init(struct sp_device *sp) { return 0; }static inline void psp_pci_init (void ) { }static inline void psp_dev_destroy (struct sp_device *sp) { }static inline void psp_pci_exit (void ) { } +static inline int psp_restore (struct sp_device *sp) {return 0 ; }#endif /* CONFIG_CRYPTO_DEV_SP_PSP */
drivers/crypto/ccp/sp-pci.c +27 -7
@@ -407,6 +407,13 @@ static int __maybe_unused sp_pci_resume(struct device *dev)return sp_resume (sp); } +static int __maybe_unused sp_pci_restore (struct device *dev) +{ +struct sp_device *sp =dev_get_drvdata (dev); + +return sp_restore (sp); +} +#ifdef CONFIG_CRYPTO_DEV_SP_PSP static const struct sev_vdata sevv1 = { .cmdresp_reg = 0x10580, /* C2PMSG_32 */
@@ -421,18 +428,12 @@ static const struct sev_vdata sevv2 = { };static const struct tee_vdata teev1 = { - .cmdresp_reg =0x10544 ,/* C2PMSG_17 */ - .cmdbuff_addr_lo_reg =0x10548 ,/* C2PMSG_18 */ - .cmdbuff_addr_hi_reg =0x1054c ,/* C2PMSG_19 */ .ring_wptr_reg =0x10550 ,/* C2PMSG_20 */ .ring_rptr_reg =0x10554 ,/* C2PMSG_21 */ .info_reg =0x109e8 ,/* C2PMSG_58 */ };static const struct tee_vdata teev2 = { - .cmdresp_reg =0x10944 ,/* C2PMSG_17 */ - .cmdbuff_addr_lo_reg =0x10948 ,/* C2PMSG_18 */ - .cmdbuff_addr_hi_reg =0x1094c ,/* C2PMSG_19 */ .ring_wptr_reg =0x10950 ,/* C2PMSG_20 */ .ring_rptr_reg =0x10954 ,/* C2PMSG_21 */ };
@@ -469,6 +470,9 @@ static const struct psp_vdata pspv2 = {static const struct psp_vdata pspv3 = { .tee = &teev1, .platform_access = &pa_v1, + .cmdresp_reg =0x10544 ,/* C2PMSG_17 */ + .cmdbuff_addr_lo_reg =0x10548 ,/* C2PMSG_18 */ + .cmdbuff_addr_hi_reg =0x1054c ,/* C2PMSG_19 */ .bootloader_info_reg =0x109ec ,/* C2PMSG_59 */ .feature_reg =0x109fc ,/* C2PMSG_63 */ .inten_reg =0x10690 ,/* P2CMSG_INTEN */
@@ -479,6 +483,9 @@ static const struct psp_vdata pspv3 = {static const struct psp_vdata pspv4 = { .sev = &sevv2, .tee = &teev1, + .cmdresp_reg =0x10544 ,/* C2PMSG_17 */ + .cmdbuff_addr_lo_reg =0x10548 ,/* C2PMSG_18 */ + .cmdbuff_addr_hi_reg =0x1054c ,/* C2PMSG_19 */ .bootloader_info_reg =0x109ec ,/* C2PMSG_59 */ .feature_reg =0x109fc ,/* C2PMSG_63 */ .inten_reg =0x10690 ,/* P2CMSG_INTEN */
@@ -488,6 +495,9 @@ static const struct psp_vdata pspv4 = {static const struct psp_vdata pspv5 = { .tee = &teev2, .platform_access = &pa_v2, + .cmdresp_reg =0x10944 ,/* C2PMSG_17 */ + .cmdbuff_addr_lo_reg =0x10948 ,/* C2PMSG_18 */ + .cmdbuff_addr_hi_reg =0x1094c ,/* C2PMSG_19 */ .feature_reg =0x109fc ,/* C2PMSG_63 */ .inten_reg =0x10510 ,/* P2CMSG_INTEN */ .intsts_reg =0x10514 ,/* P2CMSG_INTSTS */
@@ -496,6 +506,9 @@ static const struct psp_vdata pspv5 = {static const struct psp_vdata pspv6 = { .sev = &sevv2, .tee = &teev2, + .cmdresp_reg =0x10944 ,/* C2PMSG_17 */ + .cmdbuff_addr_lo_reg =0x10948 ,/* C2PMSG_18 */ + .cmdbuff_addr_hi_reg =0x1094c ,/* C2PMSG_19 */ .feature_reg =0x109fc ,/* C2PMSG_63 */ .inten_reg =0x10510 ,/* P2CMSG_INTEN */ .intsts_reg =0x10514 ,/* P2CMSG_INTSTS */
@@ -585,7 +598,14 @@ static const struct pci_device_id sp_pci_table[] = { };MODULE_DEVICE_TABLE (pci, sp_pci_table); -static SIMPLE_DEV_PM_OPS(sp_pci_pm_ops, sp_pci_suspend, sp_pci_resume); +static const struct dev_pm_ops sp_pci_pm_ops = { + .suspend =pm_sleep_ptr (sp_pci_suspend), + .resume =pm_sleep_ptr (sp_pci_resume), + .freeze =pm_sleep_ptr (sp_pci_suspend), + .thaw =pm_sleep_ptr (sp_pci_resume), + .poweroff =pm_sleep_ptr (sp_pci_suspend), + .restore_early =pm_sleep_ptr (sp_pci_restore), +};static struct pci_driver sp_pci_driver = { .name ="ccp" ,
drivers/crypto/ccp/tee-dev.c +48 -47
147 lines not on this page · raw message
drivers/crypto/ccp/tee-dev.h +3 -13
@@ -17,21 +17,10 @@#include <linux/device.h> #include <linux/mutex.h> -#define TEE_DEFAULT_TIMEOUT 10 +#define TEE_DEFAULT_CMD_TIMEOUT (10 * MSEC_PER_SEC) +#define TEE_DEFAULT_RING_TIMEOUT 10#define MAX_BUFFER_SIZE 988 -/** -* enum tee_ring_cmd_id - TEE interface commands for ring buffer configuration -* @TEE_RING_INIT_CMD: Initialize ring buffer -* @TEE_RING_DESTROY_CMD: Destroy ring buffer -* @TEE_RING_MAX_CMD: Maximum command id -*/ -enum tee_ring_cmd_id { -TEE_RING_INIT_CMD =0x00010000 , -TEE_RING_DESTROY_CMD =0x00020000 , -TEE_RING_MAX_CMD =0x000F0000 , -}; -/** * struct tee_init_ring_cmd - Command to init TEE ring buffer * @low_addr: bits [31:0] of the physical address of ring buffer
@@ -122,5 +111,6 @@ struct tee_ring_cmd {int tee_dev_init (struct psp_device *psp);void tee_dev_destroy (struct psp_device *psp); +int tee_restore (struct psp_device *psp);
Lines of this file are not shown. View the raw message.
drivers/crypto/hisilicon/sec2/sec_crypto.c +47 -15
62 lines not on this page · raw message
drivers/crypto/hisilicon/trng/trng.c +87 -36
123 lines not on this page · raw message
drivers/crypto/hisilicon/zip/zip_crypto.c +42 -260
302 lines not on this page · raw message
drivers/crypto/hisilicon/zip/zip_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/crypto/intel/qat/qat_common/adf_pfvf_pf_proto.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/crypto/marvell/octeontx/otx_cptvf_main.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c +23 -22
45 lines not on this page · raw message
drivers/gpu/drm/amd/amdkfd/kfd_debug.c +21 -17
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdkfd/kfd_device.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdkfd/kfd_events.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_mpc.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c +6 -19
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/display/drm_dp_mst_topology.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_acpi.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h +12 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/hwtracing/coresight/coresight-etm3x-core.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/infiniband/core/rw.c +38 -15
53 lines not on this page · raw message
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +25 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/rtrs/rtrs-srv.c +21 -12
Lines of this file are not shown. View the raw message.
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +21 -10
Lines of this file are not shown. View the raw message.
drivers/media/i2c/ov01a10.c +26 -18
44 lines not on this page · raw message
drivers/media/pci/cx23885/cx23885-alsa.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/pci/cx25821/cx25821-alsa.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/pci/cx25821/cx25821-core.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/pci/solo6x10/solo6x10-tw28.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/mediatek/mdp/mtk_mdp_core.c +15 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/mediatek/vcodec/encoder/mtk_vcodec_enc.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/camss/camss-vfe-480.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/vdec.c +10 -4
Lines of this file are not shown. View the raw message.
drivers/media/platform/rockchip/rkisp1/rkisp1-params.c +0 -6
Lines of this file are not shown. View the raw message.
drivers/media/platform/ti/omap3isp/isppreview.c +8 -13
Lines of this file are not shown. View the raw message.
drivers/media/platform/ti/omap3isp/ispvideo.c +11 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c +37 -6
43 lines not on this page · raw message
drivers/media/usb/pvrusb2/pvrusb2-hdw.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/media/v4l2-core/v4l2-async.c +31 -14
45 lines not on this page · raw message
drivers/mtd/nand/raw/cadence-nand-controller.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/mtd/nand/raw/pl35x-nand-controller.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/mtd/parsers/tplink_safeloader.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_main.c +5 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +9 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/Makefile +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_cn9k_pf.c +142 -47
189 lines not on this page · raw message
drivers/net/ethernet/marvell/octeon_ep/octep_cnxk_pf.c new file +935 -0
935 lines not on this page · raw message
drivers/net/ethernet/marvell/octeon_ep/octep_config.h +27 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_ctrl_net.c +23 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_ctrl_net.h +18 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_main.c +222 -11
233 lines not on this page · raw message
drivers/net/ethernet/marvell/octeon_ep/octep_main.h +18 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_regs_cn9k_pf.h +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_regs_cnxk_pf.h new file +404 -0
404 lines not on this page · raw message
drivers/net/ethernet/marvell/octeon_ep/octep_rx.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/cgx.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu.c +11 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +9 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +22 -19
41 lines not on this page · raw message
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/sriov.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_dbg.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_ptp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_qos.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mscc/ocelot_net.c +56 -19
75 lines not on this page · raw message
drivers/net/ethernet/myricom/myri10ge/myri10ge.c +27 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xscale/ixp4xx_eth.c +27 -33
60 lines not on this page · raw message
drivers/net/ethernet/xscale/ptp_ixp46x.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath11k/core.c +28 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/ipw2x00/ipw2200.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/3945-mac.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/4965-mac.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c +14 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/libertas/if_usb.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/main.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/rtw8821cu.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/rtw8822b.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/pci.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/wow.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/wow.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/ntb/hw/mscc/ntb_hw_switchtec.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-dw-rockchip.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/pci/pci-acpi.c +24 -35
59 lines not on this page · raw message
drivers/pci/probe.c +119 -70
189 lines not on this page · raw message
drivers/phy/freescale/phy-fsl-imx8mq-usb.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/phy/marvell/phy-mvebu-cp110-utmi.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pinctrl/qcom/pinctrl-sm8250-lpass-lpi.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/platform/chrome/cros_ec_lightbar.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/platform/chrome/cros_typec_switch.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/power/reset/nvmem-reboot-mode.c +13 -2
Lines of this file are not shown. View the raw message.
drivers/power/supply/ab8500_charger.c +20 -20
Lines of this file are not shown. View the raw message.
drivers/power/supply/act8945a_charger.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/power/supply/goldfish_battery.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/power/supply/wm97xx_battery.c +19 -15
Lines of this file are not shown. View the raw message.
drivers/regulator/core.c +30 -25
55 lines not on this page · raw message
drivers/rpmsg/rpmsg_core.c +27 -39
66 lines not on this page · raw message
drivers/staging/rtl8723bs/core/rtw_mlme.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/os_dep/sdio_intf.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/video/backlight/qcom-wled.c +40 -2
42 lines not on this page · raw message
drivers/xen/xenbus/xenbus_probe_frontend.c +1 -3
Lines of this file are not shown. View the raw message.
fs/minix/inode.c +29 -21
50 lines not on this page · raw message
fs/nfsd/nfs4idmap.c +46 -6
52 lines not on this page · raw message
fs/xfs/libxfs/xfs_attr_leaf.c +41 -8
49 lines not on this page · raw message
include/asm-generic/audit_change_attr.h +3 -0
Lines of this file are not shown. View the raw message.
include/linux/cache.h +84 -0
84 lines not on this page · raw message
include/linux/clk.h +24 -24
48 lines not on this page · raw message
include/linux/skmsg.h +68 -2
70 lines not on this page · raw message
include/net/netfilter/nf_conntrack_count.h +1 -0
Lines of this file are not shown. View the raw message.
include/net/netns/ipv4.h +43 -15
58 lines not on this page · raw message
kernel/kexec_file.c +74 -57
131 lines not on this page · raw message
kernel/rcu/tree.c +49 -49
98 lines not on this page · raw message
kernel/rcu/tree_plugin.h +87 -22
109 lines not on this page · raw message
kernel/workqueue.c +73 -19
92 lines not on this page · raw message
net/atm/signaling.c +54 -2
56 lines not on this page · raw message
net/bluetooth/l2cap_core.c +62 -19
81 lines not on this page · raw message
net/bridge/br_multicast.c +18 -27
45 lines not on this page · raw message
net/core/net_namespace.c +45 -0
45 lines not on this page · raw message
net/ipv4/icmp.c +45 -27
72 lines not on this page · raw message
net/ipv4/sysctl_net_ipv4.c +33 -16
49 lines not on this page · raw message
net/netfilter/nf_conncount.c +40 -14
54 lines not on this page · raw message
net/netfilter/nf_conntrack_proto_generic.c +1 -0
Lines of this file are not shown. View the raw message.
net/nfc/nci/ntf.c +141 -18
159 lines not on this page · raw message
net/sunrpc/auth_gss/gss_rpc_xdr.c +64 -18
82 lines not on this page · raw message
net/sunrpc/xprtrdma/svc_rdma_transport.c +26 -17
43 lines not on this page · raw message
security/apparmor/domain.c +30 -30
60 lines not on this page · raw message
security/apparmor/include/policy.h +37 -12
49 lines not on this page · raw message
security/apparmor/label.c +23 -28
51 lines not on this page · raw message
security/apparmor/lsm.c +63 -0
63 lines not on this page · raw message
security/apparmor/match.c +0 -44
44 lines not on this page · raw message
security/apparmor/policy.c +40 -18
58 lines not on this page · raw message
security/apparmor/policy_unpack.c +59 -63
122 lines not on this page · raw message
security/smack/smackfs.c +50 -29
79 lines not on this page · raw message
sound/soc/codecs/nau8821.c +47 -38
85 lines not on this page · raw message
sound/soc/sof/ipc4-control.c +32 -9
41 lines not on this page · raw message
tools/power/x86/intel-speed-select/isst-config.c +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/mlxsw/tc_restrictions.sh +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/memfd/memfd_test.c +105 -18
123 lines not on this page · raw message
tools/testing/selftests/mm/charge_reserved_hugetlb.sh +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/vxlan_bridge_1d.sh +16 -10
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/vxlan_bridge_1d_ipv6.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.