From: Jeff Johnson <quic_jjohnson@quicinc.com>
Date: Tue, 9 Jul 2024 15:07:55 -0700
Subject: [PATCH v3] perf: add missing MODULE_DESCRIPTION() macros
X-Mailing-List: linux-cxl@vger.kernel.org
List-Id: <linux-cxl.vger.kernel.org>
List-Subscribe: <mailto:linux-cxl+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-cxl+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-ID: <20240709-md-drivers-perf-v3-1-513275b75ed0@quicinc.com>
To: Will Deacon <will@kernel.org>, Mark Rutland <mark.rutland@arm.com>,
        Jonathan Cameron <jonathan.cameron@huawei.com>,
        Frank Li <Frank.li@nxp.com>, Shawn Guo <shawnguo@kernel.org>,
        Sascha Hauer <s.hauer@pengutronix.de>,
        Pengutronix Kernel Team <kernel@pengutronix.de>,
        Fabio Estevam
	<festevam@gmail.com>,
        Yicong Yang <yangyicong@hisilicon.com>
CC: <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>,
        <linux-cxl@vger.kernel.org>, <imx@lists.linux.dev>,
        <kernel-janitors@vger.kernel.org>,
        Jeff Johnson <quic_jjohnson@quicinc.com>
Xref: photonic.trudheim.com org.kernel.vger.linux-cxl:29371 org.kernel.vger.linux-kernel:1272858
Newsgroups: org.kernel.vger.linux-cxl,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

With ARCH=x86, make allmodconfig && make W=1 C=1 reports:
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/arm-ccn.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/fsl_imx8_ddr_perf.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/marvell_cn10k_ddr_pmu.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/arm_cspmu/arm_cspmu_module.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/arm_cspmu/nvidia_cspmu.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/arm_cspmu/ampere_cspmu.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/cxl_pmu.o

Add the missing invocation of the MODULE_DESCRIPTION() macro to all
files which have a MODULE_LICENSE().

This includes drivers/perf/hisilicon/hisi_uncore_pmu.c which, although
it did not produce a warning with the x86 allmodconfig configuration,
may cause this warning with arm64 configurations.

Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
---
Changes in v3:
- Consistently use "Performance Monitor" in the descriptions
- Did not carry forward Yicong Yang's Reviewed-by since I tweaked the
  description that was reviewed
- Link to v2: https://lore.kernel.org/r/20240620-md-drivers-perf-v2-1-1f88f8a08e48@quicinc.com

Changes in v2:
- Updated hisi_uncore_pmu.c description per Yicong Yang
- Link to v1: https://lore.kernel.org/r/20240611-md-drivers-perf-v1-1-c001bae6da5c@quicinc.com
---
 drivers/perf/arm-ccn.c                   | 1 +
 drivers/perf/arm_cspmu/ampere_cspmu.c    | 1 +
 drivers/perf/arm_cspmu/arm_cspmu.c       | 1 +
 drivers/perf/arm_cspmu/nvidia_cspmu.c    | 1 +
 drivers/perf/cxl_pmu.c                   | 1 +
 drivers/perf/fsl_imx8_ddr_perf.c         | 1 +
 drivers/perf/hisilicon/hisi_uncore_pmu.c | 1 +
 drivers/perf/marvell_cn10k_ddr_pmu.c     | 1 +
 8 files changed, 8 insertions(+)

diff --git a/drivers/perf/arm-ccn.c b/drivers/perf/arm-ccn.c
index 86ef31ac7503..5c66b9278862 100644
--- a/drivers/perf/arm-ccn.c
+++ b/drivers/perf/arm-ccn.c
@@ -1561,4 +1561,5 @@ module_init(arm_ccn_init);
 module_exit(arm_ccn_exit);
 
 MODULE_AUTHOR("Pawel Moll <pawel.moll@arm.com>");
+MODULE_DESCRIPTION("ARM CCN (Cache Coherent Network) Performance Monitor Driver");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/perf/arm_cspmu/ampere_cspmu.c b/drivers/perf/arm_cspmu/ampere_cspmu.c
index f146a455e838..f72f5689923c 100644
--- a/drivers/perf/arm_cspmu/ampere_cspmu.c
+++ b/drivers/perf/arm_cspmu/ampere_cspmu.c
@@ -269,4 +269,5 @@ static void __exit ampere_cspmu_exit(void)
 module_init(ampere_cspmu_init);
 module_exit(ampere_cspmu_exit);
 
+MODULE_DESCRIPTION("Ampere SoC Performance Monitor Driver");
 MODULE_LICENSE("GPL");
diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c
index c318dc909767..2158a5975c90 100644
--- a/drivers/perf/arm_cspmu/arm_cspmu.c
+++ b/drivers/perf/arm_cspmu/arm_cspmu.c
@@ -1427,4 +1427,5 @@ EXPORT_SYMBOL_GPL(arm_cspmu_impl_unregister);
 module_init(arm_cspmu_init);
 module_exit(arm_cspmu_exit);
 
+MODULE_DESCRIPTION("ARM CoreSight Architecture Performance Monitor Driver");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/perf/arm_cspmu/nvidia_cspmu.c b/drivers/perf/arm_cspmu/nvidia_cspmu.c
index 5b84b701ad62..d0ef611240aa 100644
--- a/drivers/perf/arm_cspmu/nvidia_cspmu.c
+++ b/drivers/perf/arm_cspmu/nvidia_cspmu.c
@@ -417,4 +417,5 @@ static void __exit nvidia_cspmu_exit(void)
 module_init(nvidia_cspmu_init);
 module_exit(nvidia_cspmu_exit);
 
+MODULE_DESCRIPTION("NVIDIA Coresight Architecture Performance Monitor Driver");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/perf/cxl_pmu.c b/drivers/perf/cxl_pmu.c
index 1f93a66eff5b..43d68b69e630 100644
--- a/drivers/perf/cxl_pmu.c
+++ b/drivers/perf/cxl_pmu.c
@@ -972,6 +972,7 @@ static __exit void cxl_pmu_exit(void)
 	cpuhp_remove_multi_state(cxl_pmu_cpuhp_state_num);
 }
 
+MODULE_DESCRIPTION("CXL Performance Monitor Driver");
 MODULE_LICENSE("GPL");
 MODULE_IMPORT_NS(CXL);
 module_init(cxl_pmu_init);
diff --git a/drivers/perf/fsl_imx8_ddr_perf.c b/drivers/perf/fsl_imx8_ddr_perf.c
index 1bbdb29743c4..746b92330ca7 100644
--- a/drivers/perf/fsl_imx8_ddr_perf.c
+++ b/drivers/perf/fsl_imx8_ddr_perf.c
@@ -850,4 +850,5 @@ static struct platform_driver imx_ddr_pmu_driver = {
 };
 
 module_platform_driver(imx_ddr_pmu_driver);
+MODULE_DESCRIPTION("Freescale i.MX8 DDR Performance Monitor Driver");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/perf/hisilicon/hisi_uncore_pmu.c b/drivers/perf/hisilicon/hisi_uncore_pmu.c
index 6392cbedcd06..918cdc31de57 100644
--- a/drivers/perf/hisilicon/hisi_uncore_pmu.c
+++ b/drivers/perf/hisilicon/hisi_uncore_pmu.c
@@ -537,4 +537,5 @@ void hisi_pmu_init(struct hisi_pmu *hisi_pmu, struct module *module)
 }
 EXPORT_SYMBOL_GPL(hisi_pmu_init);
 
+MODULE_DESCRIPTION("HiSilicon SoC uncore Performance Monitor driver framework");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/perf/marvell_cn10k_ddr_pmu.c b/drivers/perf/marvell_cn10k_ddr_pmu.c
index e2abca188dbe..94f1ebcd2a27 100644
--- a/drivers/perf/marvell_cn10k_ddr_pmu.c
+++ b/drivers/perf/marvell_cn10k_ddr_pmu.c
@@ -763,4 +763,5 @@ module_init(cn10k_ddr_pmu_init);
 module_exit(cn10k_ddr_pmu_exit);
 
 MODULE_AUTHOR("Bharat Bhushan <bbhushan2@marvell.com>");
+MODULE_DESCRIPTION("Marvell CN10K DRAM Subsystem (DSS) Performance Monitor Driver");
 MODULE_LICENSE("GPL v2");

---
base-commit: 34afb82a3c67f869267a26f593b6f8fc6bf35905
change-id: 20240611-md-drivers-perf-5d834208964d

.

From: Witold Sadowski <wsadowski@marvell.com>
To: <linux-kernel@vger.kernel.org>, <linux-spi@vger.kernel.org>,
        <devicetree@vger.kernel.org>
CC: <broonie@kernel.org>, <robh@kernel.org>,
        <krzysztof.kozlowski+dt@linaro.org>, <conor+dt@kernel.org>,
        <pthombar@cadence.com>, Witold Sadowski <wsadowski@marvell.com>
Subject: [PATCH v10 0/9] Marvell HW overlay support for Cadence xSPI
Date: Tue, 9 Jul 2024 15:12:02 -0700
Message-ID: <20240709221211.2130456-1-wsadowski@marvell.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272862
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-spi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch series adds support for the second version of the Marvell
hardware overlay for the Cadence xSPI IP block. The overlay is a hardware
change made around the original xSPI block. It extends xSPI features with
clock configuration, interrupt masking, and full-duplex, variable-length SPI
operations.

These functionalities allow the xSPI block to operate not only with memory
devices but also with simple SPI devices and TPM devices.

Example ACPI entry:
      Device (SPI0) {
        Name (_HID, "PRP0001")          // ACPI_DT_NAMESPACE_HID
        Name (_UID, 0)
        Name (_DDN, "SPI controller 0")
        Name (_CCA, ONE)

        Method (_STA) {Return (0xF)}

        Name (_CRS, ResourceTemplate() {

          QWordMemory ( ResourceConsumer,// ResourceUsage
                        PosDecode,       // Decode
                        MinFixed,        // MinType
                        MaxFixed,        // MaxType
                        NonCacheable,    // MemType
                        ReadWrite,       // ReadWriteType
                        0,               // AddressGranularity
                        0x804000000000,  // MinAddress
                        0x804000001037,  // MaxAddress
                        0,               // AddressTranslation
                        0x1038)          // AddressLength

          QWordMemory ( ResourceConsumer,// ResourceUsage
                        PosDecode,       // Decode
                        MinFixed,        // MinType
                        MaxFixed,        // MaxType
                        NonCacheable,    // MemType
                        ReadWrite,       // ReadWriteType
                        0,               // AddressGranularity
                        0x804010000000,  // MinAddress
                        0x804010000007,  // MaxAddress
                        0,               // AddressTranslation
                        0x8)             // AddressLength

          QWordMemory ( ResourceConsumer,// ResourceUsage
                        PosDecode,       // Decode
                        MinFixed,        // MinType
                        MaxFixed,        // MaxType
                        NonCacheable,    // MemType
                        ReadWrite,       // ReadWriteType
                        0,               // AddressGranularity
                        0x804000002000,  // MinAddress
                        0x804000004027,  // MaxAddress
                        0,               // AddressTranslation
                        0x2028)          // AddressLength

          QWordMemory ( ResourceConsumer,// ResourceUsage
            PosDecode,       // Decode
            MinFixed,        // MinType
            MaxFixed,        // MaxType
            NonCacheable,    // MemType
            ReadWrite,       // ReadWriteType
            0,               // AddressGranularity
            0x804000008000,  // MinAddress
            0x804000008237,  // MaxAddress
            0,               // AddressTranslation
            0x238)           // AddressLength

          Interrupt(ResourceConsumer, Edge, ActiveHigh, Exclusive) { 0x7A }
        })

        Name (_DSD, Package() {
            ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
            Package () {
                Package () { "compatible", "marvell,cn10-xspi-nor"},
                Package () { "reg", 0x8040},
            }
        })
      } // SPI0

Changes:
v10:
  Modify SDMA operation - Read as much data as possible using ioread64_rep, complete transfer with
  memcpy. Ignore first step if buffer is not alligned
  Clean unnecesary tennary operators
  Add spi_transfer_delay_exec call
  Rename "current_cycle_count" to "current_transfer_length"

v9:
  Split into smaller patches:
    - Marvell overlay splitted into: PHY, Clock, Interrupt and SDMA ops
    - ACPI support splitted into resource mapping, CS parameter reading and tx/rx bus length
  Add separate ops and a few function pointers to distinguish between Cadence and Marvell:
    - SDMA read handler.
    - IRQ enable/disable handler
    - Separate mem_ops for Marvell xSPI
  Cleanup xfer code from magic numbers
  Add more descriptive commit msg for xfer block
  Use bitrev8 instead of custom bit reversal
  Rework Marvell SDMA read operations
  Add example ACPI entry

v8:
  Rename xferbase to xfer
  Rework DLL reset, to return non inverted boolean value
  Rework STIG and SDMA status check, to return non inverted boolean value

v7:
  Rebase patches to latest sources, changes in "Allow to read basic xSPI configuration
 from ACPI"
  Removed bugfix, as it was integrated to next tree from v6

v6:
  Fix item order in cdns,xspi.yaml

v5:
  Rework cdns,xspi.yaml file
  Reword commit messages
  Move mamory mapping to ACPI patch
  Use devm_platform_ioremap_resource instead of two step mapping

v4:
  Rename new Marvell registers to keep naming conventions
  Rename mrvl,xspi-nor to marvell,cnxx,xspi-nor
  Various fixed for cdns,xspi.yaml file:
    - Remove unnecesary parameters
    - Link register xferbase with marvell,cn10-xspi-nor
    - Move default values to .c file from device-tree
  Clock configuration optimization
  ACPI fixes:
    - Remove incorrect ACPI match table
  Added .data field to device_id, fixes for matching in ACPI and dtb case
  Minor style comment changes

v3:
  Removed all kconfig changes
  Added device-tree mrvl,xspi-nor tag

v2:
  Support for second overlay iteration

v1:
  -

v0:
  Initial support for v1 overlay

Witold Sadowski (9):
  spi: dt-bindings: cadence: Add Marvell overlay bindings documentation
    for Cadence XSPI
  spi: cadence: Add static PHY configuration in Marvell overlay
  spi: cadence: Add clock configuration for Marvell xSPI overlay
  spi: cadence: Add Marvell SDMA operations
  spi: cadence: Add Marvell xSPI interrupt changes
  spi: cadence: Add Marvell xfer operation support
  spi: cadence: Change resource mapping
  spi: cadence: Change cs property reading.
  spi: cadence: Try to read spi-tx/rx-bus width property using ACPI

 .../devicetree/bindings/spi/cdns,xspi.yaml    |  32 +-
 drivers/spi/spi-cadence-xspi.c                | 682 +++++++++++++++++-
 2 files changed, 694 insertions(+), 20 deletions(-)

-- 
2.43.0

.

From: Igor Prusov <ivprusov@salutedevices.com>
To: Liam Girdwood <lgirdwood@gmail.com>, Mark Brown <broonie@kernel.org>, Rob
 Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, Conor
 Dooley <conor+dt@kernel.org>, Jaroslav Kysela <perex@perex.cz>, Takashi Iwai
	<tiwai@suse.com>, Philipp Zabel <p.zabel@pengutronix.de>, Igor Prusov
	<ivprusov@salutedevices.com>
CC: <prusovigor@gmail.com>, <kernel@salutedevices.com>,
	<linux-sound@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: [PATCH v2 0/6] ASoC: Add NTP8918 and NTP8835 codecs support
Date: Wed, 10 Jul 2024 01:11:57 +0300
Message-ID: <20240709221203.92167-1-ivprusov@salutedevices.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-KSMG-Rule-ID: 10
X-KSMG-Message-Action: clean
X-KSMG-AntiSpam-Lua-Profiles: 186406 [Jul 09 2024]
X-KSMG-AntiSpam-Version: 6.1.0.4
X-KSMG-AntiSpam-Envelope-From: ivprusov@salutedevices.com
X-KSMG-AntiSpam-Rate: 0
X-KSMG-AntiSpam-Status: not_detected
X-KSMG-AntiSpam-Method: none
X-KSMG-AntiSpam-Auth: dkim=none
X-KSMG-AntiSpam-Info: LuaCore: 24 0.3.24 186c4d603b899ccfd4883d230c53f273b80e467f, {Tracking_uf_ne_domains}, {Tracking_from_domain_doesnt_match_to}, 100.64.160.123:7.1.2;lore.kernel.org:7.1.1;salutedevices.com:7.1.1;smtp.sberdevices.ru:5.0.1,7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123
X-MS-Exchange-Organization-SCL: -1
X-KSMG-AntiSpam-Interceptor-Info: scan successful
X-KSMG-AntiPhishing: Clean, bases: 2024/07/09 21:28:00
X-KSMG-LinksScanning: Clean, bases: 2024/07/09 21:28:00
X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/07/09 21:28:00 #25931284
X-KSMG-AntiVirus-Status: Clean, skipped
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272871
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series adds support for two NeoFidelity amplifiers. For both
amplifiers vendor provides software for equalizer and filters
configuration, which generates firmware files with registers values.
Since in both cases those files have same encoding, a common helper
module is added to get firmware via request_firmware() API and set
registers values.

V1: https://lore.kernel.org/all/20240709172834.9785-1-ivprusov@salutedevices.com/

V1 -> V2:
 - Fix dt_binding_check errors

Igor Prusov (6):
  dt-bindings: vendor-prefixes: Add NeoFidelity, Inc
  ASoC: codecs: Add NeoFidelity Firmware helpers
  ASoC: dt-bindings: Add bindings for NeoFidelity NTP8918
  ASoC: codecs: Add NeoFidelity NTP8918 codec
  ASoC: dt-bindings: Add bindings for NeoFidelity NTP8835
  ASoC: codecs: Add NeoFidelity NTP8835 codec

 .../bindings/sound/neofidelity,ntp8835.yaml   |  64 +++
 .../bindings/sound/neofidelity,ntp8918.yaml   |  62 +++
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 sound/soc/codecs/Kconfig                      |  13 +
 sound/soc/codecs/Makefile                     |   6 +
 sound/soc/codecs/ntp8835.c                    | 432 ++++++++++++++++++
 sound/soc/codecs/ntp8918.c                    | 356 +++++++++++++++
 sound/soc/codecs/ntpfw.c                      | 137 ++++++
 sound/soc/codecs/ntpfw.h                      |  23 +
 9 files changed, 1095 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/neofidelity,ntp8835.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/neofidelity,ntp8918.yaml
 create mode 100644 sound/soc/codecs/ntp8835.c
 create mode 100644 sound/soc/codecs/ntp8918.c
 create mode 100644 sound/soc/codecs/ntpfw.c
 create mode 100644 sound/soc/codecs/ntpfw.h

-- 
2.34.1

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: airlied@gmail.com,
	daniel@ffwll.ch,
	maarten.lankhorst@linux.intel.com,
	mripard@kernel.org,
	tzimmermann@suse.de
Cc: dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [RESEND PATCH] drm: Combine identical if/elif code blocks
Date: Wed, 10 Jul 2024 00:14:02 +0200
Message-ID: <20240709221401.322731-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272877
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Merge the identical if/elif code blocks and remove the following two
warnings reported by make includecheck:

  asm/ioctl.h is included more than once
  linux/types.h is included more than once

Reverts commit 00c9672606f7 ("drm: Untangle __KERNEL__ guards") because
make headers_install seems to be able to handle this now.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 include/uapi/drm/drm.h | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
index 16122819edfe..315af7b19c97 100644
--- a/include/uapi/drm/drm.h
+++ b/include/uapi/drm/drm.h
@@ -35,13 +35,7 @@
 #ifndef _DRM_H_
 #define _DRM_H_
 
-#if defined(__KERNEL__)
-
-#include <linux/types.h>
-#include <asm/ioctl.h>
-typedef unsigned int drm_handle_t;
-
-#elif defined(__linux__)
+#if defined(__KERNEL__) || defined(__linux__)
 
 #include <linux/types.h>
 #include <asm/ioctl.h>
-- 
2.45.2

.

Date: Tue, 9 Jul 2024 16:36:53 -0600
From: Rob Herring <robh@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Saravana Kannan <saravanak@google.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org
Subject: [GIT PULL] Devicetree fixes for v6.10, part 2
Message-ID: <20240709223653.GA1276694-robh@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272890
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Linus,

Please pull this 1 fix.

Rob


The following changes since commit e7985f43609c782132f8f5794ee6cc4cdb66ca75:

  of: property: Fix fw_devlink handling of interrupt-map (2024-05-30 19:43:47 -0500)

are available in the Git repository at:

  ssh://git@gitolite.kernel.org/pub/scm/linux/kernel/git/robh/linux.git tags/devicetree-fixes-for-6.10-2

for you to fetch changes up to 2cf6b7d15a28640117bf9f75dc050892cf78a6e8:

  of/irq: Disable "interrupt-map" parsing for PASEMI Nemo (2024-07-08 15:42:20 -0600)

----------------------------------------------------------------
Devicetree fix for 6.10, part 2:

- One fix for PASemi Nemo board interrupts

----------------------------------------------------------------
Marc Zyngier (1):
      of/irq: Disable "interrupt-map" parsing for PASEMI Nemo

 drivers/of/irq.c | 18 ++++--------------
 1 file changed, 4 insertions(+), 14 deletions(-)
.

Date: Wed, 10 Jul 2024 08:54:34 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Linux Next
 Mailing List <linux-next@vger.kernel.org>
Subject: linux-next: Fixes tag needs some work in the mm tree
Message-ID: <20240710085434.3c21eafc@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/JA6JgCL0BK1L7OfZIEU3S8q";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272895 org.kernel.vger.linux-next:62159
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/JA6JgCL0BK1L7OfZIEU3S8q
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

In commit

  33955c6f4d58 ("udmabuf: add CONFIG_MMU dependency")

Fixes tag

  Fixes: d1d00dd1fd2f ("udmabuf: use vmf_insert_pfn and VM_PFNMAP for handl=
ing mmap")

has these problem(s):

  - Target SHA1 does not exist

I cannot find a match with the summary in the Fixes tag.

--=20
Cheers,
Stephen Rothwell

--Sig_/JA6JgCL0BK1L7OfZIEU3S8q
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaNv6oACgkQAVBC80lX
0GzwXQf/QFI3Wkd2OuBmrdywSKF0I3nCJ86WL6t/EWnKL5FaI+1BMIFCvqbSUDti
X8wW7jH1Z/BJzVZMRFuOKbaT1lhd5B+oTHj9yC8Zoo1fq0rWJzDipVQUBd/QJTdL
hp+BRP7UaVFKfdVUImkeCsvZszVCgQ05+wam1IP4BPokxcdIB7RzU7XovuSpwO5n
lw1ztSE3qxSdSJG+MphBRnRykk9Qb+8w/CKnjAOwEDA/nGc7fpMaFFgGcCqTtqku
vv93JVmWe5OGaCozwvJuOx05kiCdGL1hFvK7UQ2RiN9eMKpWuTG5af8pOeSWMQMy
K6uXRxJuFoqiZXA+Jz6onvO2EBcVMA==
=EUfu
-----END PGP SIGNATURE-----

--Sig_/JA6JgCL0BK1L7OfZIEU3S8q--
.

From: Douglas Anderson <dianders@chromium.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Douglas Anderson <dianders@chromium.org>,
	Johan Hovold <johan@kernel.org>,
	Jiri Slaby <jirislaby@kernel.org>,
	Johan Hovold <johan+linaro@kernel.org>,
	Vijaya Krishna Nivarthi <quic_vnivarth@quicinc.com>,
	linux-arm-msm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-serial@vger.kernel.org
Subject: [PATCH] serial: qcom-geni: Show '@' characters if we have a FIFO underrun
Date: Tue,  9 Jul 2024 16:28:45 -0700
Message-ID: <20240709162841.1.I93bf39f29d1887c46c74fbf8d4b937f6497cdfaa@changeid>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272909
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-serial
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

As of commit 2ac33975abda ("serial: qcom-geni: do not kill the machine
on fifo underrun") a FIFO underrun will no longer hard lockup the
machine. Instead, a FIFO underrun will cause the UART to output a
bunch of '\0' characters. The '\0' characters don't seem to show up on
most terminal programs and this hides the fact that we had an
underrun. An underrun is aq sign of problems in the driver and
should be obvious / debugged.

Change the driver to put '@' characters in the case of an underrun
which should make it much more obvious.

Adding this extra initialization doesn't add any real overhead. In
fact, this patch reduces code size because the code was calling
memset() to init 4 bytes of data. Disassembling the new code shows
that early in the function w22 is setup to hold the '@@@@' constant:
  mov     w22, #0x40404040

Each time through the loop w22 is simply stored:
  str     w22, [sp, #4]

Cc: Johan Hovold <johan@kernel.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

 drivers/tty/serial/qcom_geni_serial.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c
index 69a632fefc41..332eaa2faa2b 100644
--- a/drivers/tty/serial/qcom_geni_serial.c
+++ b/drivers/tty/serial/qcom_geni_serial.c
@@ -872,10 +872,10 @@ static void qcom_geni_serial_send_chunk_fifo(struct uart_port *uport,
 {
 	struct qcom_geni_serial_port *port = to_dev_port(uport);
 	unsigned int tx_bytes, remaining = chunk;
-	u8 buf[BYTES_PER_FIFO_WORD];
 
 	while (remaining) {
-		memset(buf, 0, sizeof(buf));
+		u8 buf[BYTES_PER_FIFO_WORD] = { '@', '@', '@', '@' };
+
 		tx_bytes = min(remaining, BYTES_PER_FIFO_WORD);
 
 		uart_fifo_out(uport, buf, tx_bytes);
-- 
2.45.2.803.g4e1b14247a-goog

.

Date: Wed, 10 Jul 2024 09:32:13 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Masahiro Yamada <masahiroy@kernel.org>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>
Subject: linux-next: build failure after merge of the mm tree
Message-ID: <20240710093213.2aefb25f@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/QL0jR5kHXbHceEfJJyQlPIi";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272911 org.kernel.vger.linux-next:62160
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/QL0jR5kHXbHceEfJJyQlPIi
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

After merging the mm tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

ld: cannot find MEM_KEEP: No such file or directory

Caused by commit

  78e70fd784bd ("init/modpost: conditionally check section mismatch to __me=
minit*")

from the mm-nonmm-unstable branch of the mm tree.

grep is your friend :-)

I have applied the following fix patch for today.

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Wed, 10 Jul 2024 09:28:02 +1000
Subject: [PATCH] fixup for "init/modpost: conditionally check section misma=
tch to __meminit*"

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 arch/powerpc/kernel/vmlinux.lds.S | 2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinu=
x.lds.S
index f420df7888a7..7ab4e2fb28b1 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -123,8 +123,6 @@ SECTIONS
 		 */
 		*(.sfpr);
 		*(.text.asan.* .text.tsan.*)
-		MEM_KEEP(init.text)
-		MEM_KEEP(exit.text)
 	} :text
=20
 	. =3D ALIGN(PAGE_SIZE);
--=20
2.43.0

--=20
Cheers,
Stephen Rothwell

--Sig_/QL0jR5kHXbHceEfJJyQlPIi
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaNyH0ACgkQAVBC80lX
0GwYWgf+OWghahGfNgnSkTLEA8l2bEK1ZifRQUO6s7V8eCEFy0g8A4X9w4W7A7yX
tC/Q7PgAtQahZKd8p61Gg2ojHs1h5vaegsAuTe+GvWrJFeV/WGjg+TvpR6UW6vQj
Is6rq8Pq0Dw209hE00MhN4H3xiSMGSyV6zERvuCdbG1VPIS9pvco/pPIhI2sZF4h
rHgdY6deQq9YRCoAdze2bKOVzQUnInT0NC6B6GXCzVF0px2Nd9+eFyBGmtbM5Kzm
hSadjPuGejrF08YWzzvIkx1yHmxsovOiy+UAf8F6nCbrk6IigeIgW8UBuPbGeX26
PxGJLeAPoQvToN81hUyys96CFuUHUQ==
=XLB8
-----END PGP SIGNATURE-----

--Sig_/QL0jR5kHXbHceEfJJyQlPIi--
.

From: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
To: LKML <linux-kernel@vger.kernel.org>,
	Linux trace kernel <linux-trace-kernel@vger.kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Andrii Nakryiko <andrii@kernel.org>,
	Francis Laniel <flaniel@linux.microsoft.com>,
	Nikolay Kuratov <kniv@yandex-team.ru>,
	bpf@vger.kernel.org
Subject: [PATCH] tracing/kprobes: Fix build error when find_module() is not available
Date: Wed, 10 Jul 2024 08:36:05 +0900
Message-Id: <172056816536.201432.15815034738461167690.stgit@devnote2>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272912
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.linux-trace-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Masami Hiramatsu (Google) <mhiramat@kernel.org>

The kernel test robot reported that the find_module() is not available
if CONFIG_MODULES=n.
Fix this error by hiding find_modules() in #ifdef CONFIG_MODULES with
related rcu locks as try_module_get_by_name().

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407070744.RcLkn8sq-lkp@intel.com/
Closes: https://lore.kernel.org/oe-kbuild-all/202407070917.VVUCBlaS-lkp@intel.com/
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
---
 kernel/trace/trace_kprobe.c |   25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 4cee3442bcce..61a6da808203 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -794,6 +794,24 @@ static int validate_module_probe_symbol(const char *modname, const char *symbol)
 	return 0;
 }
 
+#ifdef CONFIG_MODULES
+/* Return NULL if the module is not loaded or under unloading. */
+static struct module *try_module_get_by_name(const char *name)
+{
+	struct module *mod;
+
+	rcu_read_lock_sched();
+	mod = find_module(name);
+	if (mod && !try_module_get(mod))
+		mod = NULL;
+	rcu_read_unlock_sched();
+
+	return mod;
+}
+#else
+#define try_module_get_by_name(name)	(NULL)
+#endif
+
 static int validate_probe_symbol(char *symbol)
 {
 	struct module *mod = NULL;
@@ -805,12 +823,7 @@ static int validate_probe_symbol(char *symbol)
 		modname = symbol;
 		symbol = p + 1;
 		*p = '\0';
-		/* Return 0 (defer) if the module does not exist yet. */
-		rcu_read_lock_sched();
-		mod = find_module(modname);
-		if (mod && !try_module_get(mod))
-			mod = NULL;
-		rcu_read_unlock_sched();
+		mod = try_module_get_by_name(modname);
 		if (!mod)
 			goto out;
 	}

.

From: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
To: LKML <linux-kernel@vger.kernel.org>,
	Linux trace kernel <linux-trace-kernel@vger.kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Andrii Nakryiko <andrii@kernel.org>,
	Francis Laniel <flaniel@linux.microsoft.com>,
	Nikolay Kuratov <kniv@yandex-team.ru>,
	bpf@vger.kernel.org
Subject: [PATCH] tracing/kprobes: Fix build error when find_module() is not available
Date: Wed, 10 Jul 2024 08:36:31 +0900
Message-Id: <172056819167.201571.250053007194508038.stgit@devnote2>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272913
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.linux-trace-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Masami Hiramatsu (Google) <mhiramat@kernel.org>

The kernel test robot reported that the find_module() is not available
if CONFIG_MODULES=n.
Fix this error by hiding find_modules() in #ifdef CONFIG_MODULES with
related rcu locks as try_module_get_by_name().

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407070744.RcLkn8sq-lkp@intel.com/
Closes: https://lore.kernel.org/oe-kbuild-all/202407070917.VVUCBlaS-lkp@intel.com/
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
---
 kernel/trace/trace_kprobe.c |   25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 4cee3442bcce..61a6da808203 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -794,6 +794,24 @@ static int validate_module_probe_symbol(const char *modname, const char *symbol)
 	return 0;
 }
 
+#ifdef CONFIG_MODULES
+/* Return NULL if the module is not loaded or under unloading. */
+static struct module *try_module_get_by_name(const char *name)
+{
+	struct module *mod;
+
+	rcu_read_lock_sched();
+	mod = find_module(name);
+	if (mod && !try_module_get(mod))
+		mod = NULL;
+	rcu_read_unlock_sched();
+
+	return mod;
+}
+#else
+#define try_module_get_by_name(name)	(NULL)
+#endif
+
 static int validate_probe_symbol(char *symbol)
 {
 	struct module *mod = NULL;
@@ -805,12 +823,7 @@ static int validate_probe_symbol(char *symbol)
 		modname = symbol;
 		symbol = p + 1;
 		*p = '\0';
-		/* Return 0 (defer) if the module does not exist yet. */
-		rcu_read_lock_sched();
-		mod = find_module(modname);
-		if (mod && !try_module_get(mod))
-			mod = NULL;
-		rcu_read_unlock_sched();
+		mod = try_module_get_by_name(modname);
 		if (!mod)
 			goto out;
 	}

.

Date: Tue,  9 Jul 2024 16:49:13 -0700
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Mime-Version: 1.0
Message-ID: <20240709234913.2749386-1-pandoh@google.com>
Subject: [PATCH] iommu/vt-d: Fix identity map bounds in si_domain_init()
From: Jon Pan-Doh <pandoh@google.com>
To: David Woodhouse <dwmw2@infradead.org>, Lu Baolu <baolu.lu@linux.intel.com>, 
	Kevin Tian <kevin.tian@intel.com>
Cc: Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>, 
	Robin Murphy <robin.murphy@arm.com>, "H. Peter Anvin" <hpa@linux.intel.com>, Tejun Heo <tj@kernel.org>, 
	iommu@lists.linux.dev, linux-kernel@vger.kernel.org, 
	Jon Pan-Doh <pandoh@google.com>, Sudheer Dantuluri <dantuluris@google.com>, 
	Gary Zibrat <gzibrat@google.com>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272919
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.iommu
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Intel IOMMU operates on inclusive bounds (both generally aas well as
iommu_domain_identity_map()). Meanwhile, for_each_mem_pfn_range() uses
exclusive bounds for end_pfn. This creates an off-by-one error when
switching between the two.

Fixes: 5dfe8660a3d7 ("bootmem: Replace work_with_active_regions() with for_each_mem_pfn_range()")
Signed-off-by: Jon Pan-Doh <pandoh@google.com>
Tested-by: Sudheer Dantuluri <dantuluris@google.com>
Suggested-by: Gary Zibrat <gzibrat@google.com>
---
 drivers/iommu/intel/iommu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index fd11a080380c..f55ec1fd7942 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -2071,7 +2071,7 @@ static int __init si_domain_init(int hw)
 		for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, NULL) {
 			ret = iommu_domain_identity_map(si_domain,
 					mm_to_dma_pfn_start(start_pfn),
-					mm_to_dma_pfn_end(end_pfn));
+					mm_to_dma_pfn_end(end_pfn-1));
 			if (ret)
 				return ret;
 		}
-- 
2.45.2.803.g4e1b14247a-goog

.

From: Kees Cook <kees@kernel.org>
To: Brendan Higgins <brendan.higgins@linux.dev>
Cc: Kees Cook <kees@kernel.org>,
	David Gow <davidgow@google.com>,
	Rae Moar <rmoar@google.com>,
	linux-kselftest@vger.kernel.org,
	kunit-dev@googlegroups.com,
	linux-kernel@vger.kernel.org,
	linux-hardening@vger.kernel.org
Subject: [PATCH] kunit: executor: Simplify string allocation handling
Date: Tue,  9 Jul 2024 17:02:24 -0700
Message-Id: <20240710000220.work.852-kees@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272923
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-hardening,org.kernel.vger.linux-kselftest
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The alloc/copy code pattern is better consolidated to single kstrdup (and
kstrndup) calls instead. This gets rid of deprecated[1] strncpy() uses as
well. Replace one other strncpy() use with the more idiomatic strscpy().

Link: https://github.com/KSPP/linux/issues/90 [1]
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: David Gow <davidgow@google.com>
Cc: Rae Moar <rmoar@google.com>
Cc: linux-kselftest@vger.kernel.org
Cc: kunit-dev@googlegroups.com
---
 lib/kunit/executor.c      | 12 +++---------
 lib/kunit/executor_test.c |  2 +-
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/lib/kunit/executor.c b/lib/kunit/executor.c
index 70b9a43cd257..34b7b6833df3 100644
--- a/lib/kunit/executor.c
+++ b/lib/kunit/executor.c
@@ -70,32 +70,26 @@ struct kunit_glob_filter {
 static int kunit_parse_glob_filter(struct kunit_glob_filter *parsed,
 				    const char *filter_glob)
 {
-	const int len = strlen(filter_glob);
 	const char *period = strchr(filter_glob, '.');
 
 	if (!period) {
-		parsed->suite_glob = kzalloc(len + 1, GFP_KERNEL);
+		parsed->suite_glob = kstrdup(filter_glob, GFP_KERNEL);
 		if (!parsed->suite_glob)
 			return -ENOMEM;
-
 		parsed->test_glob = NULL;
-		strcpy(parsed->suite_glob, filter_glob);
 		return 0;
 	}
 
-	parsed->suite_glob = kzalloc(period - filter_glob + 1, GFP_KERNEL);
+	parsed->suite_glob = kstrndup(filter_glob, period - filter_glob, GFP_KERNEL);
 	if (!parsed->suite_glob)
 		return -ENOMEM;
 
-	parsed->test_glob = kzalloc(len - (period - filter_glob) + 1, GFP_KERNEL);
+	parsed->test_glob = kstrdup(period + 1, GFP_KERNEL);
 	if (!parsed->test_glob) {
 		kfree(parsed->suite_glob);
 		return -ENOMEM;
 	}
 
-	strncpy(parsed->suite_glob, filter_glob, period - filter_glob);
-	strncpy(parsed->test_glob, period + 1, len - (period - filter_glob));
-
 	return 0;
 }
 
diff --git a/lib/kunit/executor_test.c b/lib/kunit/executor_test.c
index 3f7f967e3688..7191be9c4f9b 100644
--- a/lib/kunit/executor_test.c
+++ b/lib/kunit/executor_test.c
@@ -286,7 +286,7 @@ static struct kunit_suite *alloc_fake_suite(struct kunit *test,
 
 	/* We normally never expect to allocate suites, hence the non-const cast. */
 	suite = kunit_kzalloc(test, sizeof(*suite), GFP_KERNEL);
-	strncpy((char *)suite->name, suite_name, sizeof(suite->name) - 1);
+	strscpy((char *)suite->name, suite_name);
 	suite->test_cases = test_cases;
 
 	return suite;
-- 
2.34.1

.

Date: Tue, 9 Jul 2024 17:04:35 -0700
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: linux-input@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Mirsad Todorovac <mtodorovac69@gmail.com>
Subject: [PATCH] Input: twl4030-pwrbutton - fix kernel-doc warning
Message-ID: <Zo3QE00GqCrA3M9b@google.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272924
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Do not use kernel-doc style for comment describing contents of the
source file, as it trips the script:

  scripts/kernel-doc -none   drivers/input/misc/twl4030-pwrbutton.c
drivers/input/misc/twl4030-pwrbutton.c:2: info: Scanning doc for function twl4030
drivers/input/misc/twl4030-pwrbutton.c:33: warning: expecting prototype for twl4030(). Prototype was for PWR_PWRON_IRQ() instead
1 warnings

Also remove file name from the same comment - it it not the best idea
to have it as they tend to get stale when sources get moved or renamed.

Reported-by: Mirsad Todorovac <mtodorovac69@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/input/misc/twl4030-pwrbutton.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/twl4030-pwrbutton.c
index e3ee0638ffba..f85cc289c053 100644
--- a/drivers/input/misc/twl4030-pwrbutton.c
+++ b/drivers/input/misc/twl4030-pwrbutton.c
@@ -1,5 +1,5 @@
-/**
- * twl4030-pwrbutton.c - TWL4030 Power Button Input Driver
+/*
+ * TWL4030 Power Button Input Driver
  *
  * Copyright (C) 2008-2009 Nokia Corporation
  *
-- 
2.45.2.803.g4e1b14247a-goog


-- 
Dmitry
.

From: Ram Tummala <rtummala@nvidia.com>
To: akpm@linux-foundation.org,
	fengwei.yin@intel.com
Cc: willy@infradead.org,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	apopple@nvidia.com,
	rtummala@nvidia.com,
	stable@vger.kernel.org
Subject: [PATCH] mm: Fix PTE_AF handling in fault path on architectures with HW AF support
Date: Tue,  9 Jul 2024 17:09:42 -0700
Message-Id: <20240710000942.623704-1-rtummala@nvidia.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272926 org.kvack.linux-mm:203171
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Commit 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
replaced do_set_pte() with set_pte_range() and that introduced a regression
in the following faulting path of non-anonymous vmas on CPUs with HW AF
support.

handle_pte_fault()
  do_pte_missing()
    do_fault()
      do_read_fault() || do_cow_fault() || do_shared_fault()
        finish_fault()
          set_pte_range()

The polarity of prefault calculation is incorrect. This leads to prefault
being incorrectly set for the faulting address. The following if check will
incorrectly clear the PTE_AF bit instead of setting it and the access will
fault again on the same address due to the missing PTE_AF bit.

    if (prefault && arch_wants_old_prefaulted_pte())
        entry = pte_mkold(entry);

On a subsequent fault on the same address, the faulting path will see a non
NULL vmf->pte and instead of reaching the do_pte_missing() path, PTE_AF
will be correctly set in handle_pte_fault() itself.

Due to this bug, performance degradation in the fault handling path will be
observed due to unnecessary double faulting.

Cc: stable@vger.kernel.org
Fixes: 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
Signed-off-by: Ram Tummala <rtummala@nvidia.com>
---
 mm/memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/memory.c b/mm/memory.c
index 0a769f34bbb2..03263034a040 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -4781,7 +4781,7 @@ void set_pte_range(struct vm_fault *vmf, struct folio *folio,
 {
 	struct vm_area_struct *vma = vmf->vma;
 	bool write = vmf->flags & FAULT_FLAG_WRITE;
-	bool prefault = in_range(vmf->address, addr, nr * PAGE_SIZE);
+	bool prefault = !in_range(vmf->address, addr, nr * PAGE_SIZE);
 	pte_t entry;
 
 	flush_icache_pages(vma, page, nr);
-- 
2.34.1

.

From: Remington Brasga <rbrasga@uci.edu>
To: Dave Kleikamp <shaggy@kernel.org>,
	Manas Ghandat <ghandatmanas@gmail.com>,
	Juntong Deng <juntong.deng@outlook.com>,
	Andrew Kanner <andrew.kanner@gmail.com>,
	Osama Muhammad <osmtendev@gmail.com>,
	Shuah Khan <skhan@linuxfoundation.org>
Cc: jfs-discussion@lists.sourceforge.net,
	linux-kernel@vger.kernel.org,
	linux-kernel-mentees@lists.linuxfoundation.org,
	syzbot+e38d703eeb410b17b473@syzkaller.appspotmail.com,
	Remington Brasga <rbrasga@uci.edu>
Subject: [PATCH] jfs: UBSAN: shift-out-of-bounds in dbFindBits
Date: Wed, 10 Jul 2024 00:12:44 +0000
Message-Id: <20240710001244.2707-1-rbrasga@uci.edu>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272927
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.linux-kernel-mentees
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Fix issue with UBSAN throwing shift-out-of-bounds warning.

Reported-by: syzbot+e38d703eeb410b17b473@syzkaller.appspotmail.com
Signed-off-by: Remington Brasga <rbrasga@uci.edu>
---
When nb = 32, `mask = mask >> nb` or shorthand `mask >>= nb` throws
shift-out-of-bounds warning.
`mask = (mask >> nb)` removes that warning. 

Link to the syzbot bug report: https://lore.kernel.org/all/0000000000006fc563061cbc7f9c@google.com/T/

 fs/jfs/jfs_dmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c
index cb3cda1390ad..636aae946e84 100644
--- a/fs/jfs/jfs_dmap.c
+++ b/fs/jfs/jfs_dmap.c
@@ -3020,7 +3020,7 @@ static int dbFindBits(u32 word, int l2nb)
 
 	/* scan the word for nb free bits at nb alignments.
 	 */
-	for (bitno = 0; mask != 0; bitno += nb, mask >>= nb) {
+	for (bitno = 0; mask != 0; bitno += nb, mask = (mask >> nb)) {
 		if ((mask & word) == mask)
 			break;
 	}
-- 
2.34.1

.

From: Kees Cook <kees@kernel.org>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Kees Cook <kees@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	linux-hardening@vger.kernel.org
Subject: [PATCH] mm/kmemleak: Replace strncpy() with strscpy()
Date: Tue,  9 Jul 2024 17:13:08 -0700
Message-Id: <20240710001300.work.004-kees@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272928 org.kvack.linux-mm:203172
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-hardening,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace the depreciated[1] strncpy() calls with strscpy(). Uses of
object->comm do not depend on the padding side-effect.

Link: https://github.com/KSPP/linux/issues/90 [1]
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org
---
 mm/kmemleak.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index d5b6fba44fc9..764b08100570 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -657,10 +657,10 @@ static struct kmemleak_object *__alloc_object(gfp_t gfp)
 	/* task information */
 	if (in_hardirq()) {
 		object->pid = 0;
-		strncpy(object->comm, "hardirq", sizeof(object->comm));
+		strscpy(object->comm, "hardirq");
 	} else if (in_serving_softirq()) {
 		object->pid = 0;
-		strncpy(object->comm, "softirq", sizeof(object->comm));
+		strscpy(object->comm, "softirq");
 	} else {
 		object->pid = current->pid;
 		/*
@@ -669,7 +669,7 @@ static struct kmemleak_object *__alloc_object(gfp_t gfp)
 		 * dependency issues with current->alloc_lock. In the worst
 		 * case, the command line is not correct.
 		 */
-		strncpy(object->comm, current->comm, sizeof(object->comm));
+		strscpy(object->comm, current->comm);
 	}
 
 	/* kernel backtrace */
-- 
2.34.1

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: linux@armlinux.org.uk
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [RESEND PATCH] ARM: vfp: Improve data types in vfp_estimate_div128to64()
Date: Wed, 10 Jul 2024 02:34:46 +0200
Message-ID: <20240710003445.323418-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272934
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The divisors mh and ml can both be u32 instead of u64.

Since do_div() implicitly casts the divisors from u64 to u32, changing
their data types to u32 also removes the following Coccinelle warnings
reported by do_div.cocci:

  arch/arm/vfp/vfp.h:121:2-8: WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead.
  arch/arm/vfp/vfp.h:135:2-8: WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead.

Use upper_32_bits() to compare 32-bit numbers instead of 64-bit numbers
and to prevent the warning:

  left shift count >= width of type [-Wshift-count-overflow]

Compile-tested only.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 arch/arm/vfp/vfp.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/arm/vfp/vfp.h b/arch/arm/vfp/vfp.h
index e43a630f8a16..29073d89ef00 100644
--- a/arch/arm/vfp/vfp.h
+++ b/arch/arm/vfp/vfp.h
@@ -109,12 +109,13 @@ static inline u64 vfp_hi64multiply64(u64 n, u64 m)
 
 static inline u64 vfp_estimate_div128to64(u64 nh, u64 nl, u64 m)
 {
-	u64 mh, ml, remh, reml, termh, terml, z;
+	u64 remh, reml, termh, terml, z;
+	u32 mh, ml;
 
 	if (nh >= m)
 		return ~0ULL;
 	mh = m >> 32;
-	if (mh << 32 <= nh) {
+	if (mh <= upper_32_bits(nh)) {
 		z = 0xffffffff00000000ULL;
 	} else {
 		z = nh;
@@ -129,7 +130,7 @@ static inline u64 vfp_estimate_div128to64(u64 nh, u64 nl, u64 m)
 		add128(&remh, &reml, remh, reml, mh, ml);
 	}
 	remh = (remh << 32) | (reml >> 32);
-	if (mh << 32 <= remh) {
+	if (mh <= upper_32_bits(remh)) {
 		z |= 0xffffffff;
 	} else {
 		do_div(remh, mh);
-- 
2.45.2

.

Date: Wed, 10 Jul 2024 11:05:45 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Christoph Hellwig <hch@lst.de>
Cc: Michael Kelley <mhklinux@outlook.com>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>
Subject: linux-next: build failure after merge of the dma-mapping tree
Message-ID: <20240710110545.110366a4@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/Zu6vUPG3LQ=OvX5OPgGAoki";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272942 org.kernel.vger.linux-next:62161
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/Zu6vUPG3LQ=OvX5OPgGAoki
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

After merging the dma-mapping tree, today's linux-next build (x86_64
allmodconfig) failed like this:

kernel/dma/swiotlb.c: In function 'swiotlb_alloc':
kernel/dma/swiotlb.c:1770:17: error: too few arguments to function 'swiotlb=
_release_slots'
 1770 |                 swiotlb_release_slots(dev, tlb_addr);
      |                 ^~~~~~~~~~~~~~~~~~~~~
kernel/dma/swiotlb.c:1443:13: note: declared here
 1443 | static void swiotlb_release_slots(struct device *dev, phys_addr_t t=
lb_addr,
      |             ^~~~~~~~~~~~~~~~~~~~~

Caused by commit

  b21a42af002d ("swiotlb: reduce swiotlb pool lookups")

I applied the following patch (which may or may not be correct):

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Wed, 10 Jul 2024 10:39:48 +1000
Subject: [PATCH] fixup for "swiotlb: reduce swiotlb pool lookups"

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 kernel/dma/swiotlb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
index 618602fd10df..b4d8167b2f8d 100644
--- a/kernel/dma/swiotlb.c
+++ b/kernel/dma/swiotlb.c
@@ -1767,7 +1767,7 @@ struct page *swiotlb_alloc(struct device *dev, size_t=
 size)
 	if (unlikely(!PAGE_ALIGNED(tlb_addr))) {
 		dev_WARN_ONCE(dev, 1, "Cannot allocate pages from non page-aligned swiot=
lb addr 0x%pa.\n",
 			      &tlb_addr);
-		swiotlb_release_slots(dev, tlb_addr);
+		swiotlb_release_slots(dev, tlb_addr, pool);
 		return NULL;
 	}
=20
--=20
2.43.0

--=20
Cheers,
Stephen Rothwell

--Sig_/Zu6vUPG3LQ=OvX5OPgGAoki
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaN3mkACgkQAVBC80lX
0GwwgwgAo7mAv53pb6h2+kms90r3zIk99v1b4s+lGRTjDG30AZrIzWV/i2O84/+Q
/VghfwttgkUvlicSP3vIVqwDm1uUcoqGtX2SoHmtlu80B/WfOPKQRNfiay7ghomE
XkapNnqY8kFtPi4NMHtlWPdyKdbLPhIKe+qccVv7vifYQvk75leXSErUPzZVBm7x
q4wT8PnpfcHkjGqKug4pISnXjMoMrv+BlHFSqsIDNGd/hWtlTc1wKxD6hEFiPfZu
q9xr8Go9HYyFCzMXHcnnKCLZjmSYNJPFRX6/+yDXLoMhdaqd1fevPEHb+YD9RHf1
R9GSKanvjG5NFd5XbQ3mHoH1TJoqlA==
=FVrp
-----END PGP SIGNATURE-----

--Sig_/Zu6vUPG3LQ=OvX5OPgGAoki--
.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: axboe@kernel.dk,
	asml.silence@gmail.com
Cc: io-uring@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] io_uring/napi: Remove unnecessary s64 cast
Date: Wed, 10 Jul 2024 03:05:21 +0200
Message-ID: <20240710010520.384009-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272943
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.io-uring
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Since the do_div() macro casts the divisor to u32 anyway, remove the
unnecessary s64 cast and fix the following Coccinelle/coccicheck
warning reported by do_div.cocci:

  WARNING: do_div() does a 64-by-32 division, please consider using div64_s64 instead

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 io_uring/napi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/io_uring/napi.c b/io_uring/napi.c
index 8c18ede595c4..762254a7ff3f 100644
--- a/io_uring/napi.c
+++ b/io_uring/napi.c
@@ -283,7 +283,7 @@ void __io_napi_adjust_timeout(struct io_ring_ctx *ctx, struct io_wait_queue *iow
 			s64 poll_to_ns = timespec64_to_ns(ts);
 			if (poll_to_ns > 0) {
 				u64 val = poll_to_ns + 999;
-				do_div(val, (s64) 1000);
+				do_div(val, 1000);
 				poll_to = val;
 			}
 		}
-- 
2.45.2

.

References: <20240710000942.623704-1-rtummala@nvidia.com>
 <Zo3SN_qlYUWLAlyR@casper.infradead.org>
From: Alistair Popple <apopple@nvidia.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Ram Tummala <rtummala@nvidia.com>, akpm@linux-foundation.org,
 fengwei.yin@intel.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org,
 stable@vger.kernel.org
Subject: Re: [PATCH] mm: Fix PTE_AF handling in fault path on architectures
 with HW AF support
Date: Wed, 10 Jul 2024 11:02:03 +1000
In-reply-to: <Zo3SN_qlYUWLAlyR@casper.infradead.org>
Message-ID: <875xtevyw6.fsf@nvdebian.thelocal>
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272944 org.kvack.linux-mm:203175
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail


Matthew Wilcox <willy@infradead.org> writes:

> On Tue, Jul 09, 2024 at 05:09:42PM -0700, Ram Tummala wrote:
>> Commit 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
>> replaced do_set_pte() with set_pte_range() and that introduced a regression
>> in the following faulting path of non-anonymous vmas on CPUs with HW AF
>
> At no point in this do you say what "AF" stands for.

It stands for "Access Flag", but that is specific to ARM64. As the fix
is in generic architecture independent code it would be better to use
that terminology (ie. old/young).
.

From: Ma Ke <make24@iscas.ac.cn>
To: shubhrajyoti.datta@amd.com,
	sai.krishna.potthuri@amd.com,
	bp@alien8.de,
	tony.luck@intel.com,
	james.morse@arm.com,
	mchehab@kernel.org,
	rric@kernel.org
Cc: linux-edac@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Ma Ke <make24@iscas.ac.cn>
Subject: [PATCH v2] EDAC/versal: Fix possible null pointer dereference in emif_get_id()
Date: Wed, 10 Jul 2024 09:07:46 +0800
Message-Id: <20240710010746.1741228-1-make24@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272945
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-edac
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In emif_get_id(), of_get_address() may return NULL which is later
dereferenced. Fix this bug by adding NULL check.

Fixes: 6f15b178cd63 ("EDAC/versal: Add a Xilinx Versal memory controller driver")
Signed-off-by: Ma Ke <make24@iscas.ac.cn>
---
Changes in v2:
- fixed the typo according to suggestions.
---
 drivers/edac/versal_edac.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/edac/versal_edac.c b/drivers/edac/versal_edac.c
index a556d23e8261..d837edac30e7 100644
--- a/drivers/edac/versal_edac.c
+++ b/drivers/edac/versal_edac.c
@@ -1053,6 +1053,9 @@ static u32 emif_get_id(struct device_node *node)
 	const __be32 *addrp;
 
 	addrp = of_get_address(node, 0, NULL, NULL);
+	if (!addrp)
+		return -EINVAL;
+
 	my_addr = (u32)of_translate_address(node, addrp);
 
 	for_each_matching_node(np, xlnx_edac_match) {
@@ -1060,6 +1063,9 @@ static u32 emif_get_id(struct device_node *node)
 			continue;
 
 		addrp = of_get_address(np, 0, NULL, NULL);
+		if (!addrp)
+			return -EINVAL;
+
 		addr = (u32)of_translate_address(np, addrp);
 
 		edac_printk(KERN_INFO, EDAC_MC,
-- 
2.25.1

.

From: Cheng Ming Lin <linchengming884@gmail.com>
To: miquel.raynal@bootlin.com,
	vigneshr@ti.com,
	linux-mtd@lists.infradead.org,
	linux-kernel@vger.kernel.org
Cc: richard@nod.at,
	alvinzhou@mxic.com.tw,
	leoyu@mxic.com.tw,
	Cheng Ming Lin <chengminglin@mxic.com.tw>
Subject: [PATCH 0/3] Add fixups for two-plane serial NAND flash
Date: Wed, 10 Jul 2024 09:15:38 +0800
Message-Id: <20240710011541.342682-1-linchengming884@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272947
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-mtd
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Cheng Ming Lin <chengminglin@mxic.com.tw>

Macronix serial NAND flash with a two-plane structure
requires insertion of Plane Select bit into the column
address during the write_to_cache operation.

Additionally, for MX35{U,F}2G14AC, insertion of Plane
Select bit into the column address is required during
the read_from_cache operation.

In spinand.h, add struct spi_nand_fixups as SPI NAND
fixup hooks.

In macronix.c, add fixup functions and update ID table.

In core.c, add an if statement to determine whether to
insert the Plane Select bit for the column address.

These flashes have been validated on Xilinx zynq-picozed
board which included Macronix SPI Host.

Cheng Ming Lin (3):
  include/linux/mtd/spinand.h: Add fixups for spinand
  mtd: spinand: macronix: Fixups for PLANE_SELECT_BIT
  mtd: spinand: Insert Plane Select bit for the column address

 drivers/mtd/nand/spi/core.c     |  7 +++++
 drivers/mtd/nand/spi/macronix.c | 51 +++++++++++++++++++++++++++++----
 include/linux/mtd/spinand.h     | 17 +++++++++++
 3 files changed, 69 insertions(+), 6 deletions(-)

-- 
2.25.1

.

From: Chen Ni <nichen@iscas.ac.cn>
To: sstabellini@kernel.org,
	linux@armlinux.org.uk
Cc: xen-devel@lists.xenproject.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH] xen/arm: Convert comma to semicolon
Date: Wed, 10 Jul 2024 09:42:08 +0800
Message-Id: <20240710014208.1719662-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272954 org.xenproject.lists.xen-devel:51828
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.xenproject.lists.xen-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
 arch/arm/xen/p2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/xen/p2m.c b/arch/arm/xen/p2m.c
index 309648c17f48..9da57a5b81c7 100644
--- a/arch/arm/xen/p2m.c
+++ b/arch/arm/xen/p2m.c
@@ -109,7 +109,7 @@ int set_foreign_p2m_mapping(struct gnttab_map_grant_ref *map_ops,
 		 * immediate unmapping.
 		 */
 		map_ops[i].status = GNTST_general_error;
-		unmap.host_addr = map_ops[i].host_addr,
+		unmap.host_addr = map_ops[i].host_addr;
 		unmap.handle = map_ops[i].handle;
 		map_ops[i].handle = INVALID_GRANT_HANDLE;
 		if (map_ops[i].flags & GNTMAP_device_map)
-- 
2.25.1

.

From: Chen Ni <nichen@iscas.ac.cn>
To: brgl@bgdev.pl,
	linux@armlinux.org.uk
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH] ARM: davinci: Convert comma to semicolon
Date: Wed, 10 Jul 2024 09:44:01 +0800
Message-Id: <20240710014401.1719716-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272955
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
 arch/arm/mach-davinci/pm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-davinci/pm.c b/arch/arm/mach-davinci/pm.c
index 8aa39db095d7..2c5155bd376b 100644
--- a/arch/arm/mach-davinci/pm.c
+++ b/arch/arm/mach-davinci/pm.c
@@ -61,7 +61,7 @@ static void davinci_pm_suspend(void)
 
 	/* Configure sleep count in deep sleep register */
 	val = __raw_readl(pm_config.deepsleep_reg);
-	val &= ~DEEPSLEEP_SLEEPCOUNT_MASK,
+	val &= ~DEEPSLEEP_SLEEPCOUNT_MASK;
 	val |= pm_config.sleepcount;
 	__raw_writel(val, pm_config.deepsleep_reg);
 
-- 
2.25.1

.

From: Ram Tummala <rtummala@nvidia.com>
To: akpm@linux-foundation.org,
	fengwei.yin@intel.com
Cc: willy@infradead.org,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	apopple@nvidia.com,
	rtummala@nvidia.com,
	stable@vger.kernel.org
Subject: [PATCH v2] mm: Fix old/young bit handling in the faulting path
Date: Tue,  9 Jul 2024 18:45:39 -0700
Message-Id: <20240710014539.746200-1-rtummala@nvidia.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272956 org.kvack.linux-mm:203177
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Commit 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
replaced do_set_pte() with set_pte_range() and that introduced a regression
in the following faulting path of non-anonymous vmas which caused the PTE
for the faulting address to be marked as old instead of young.

handle_pte_fault()
  do_pte_missing()
    do_fault()
      do_read_fault() || do_cow_fault() || do_shared_fault()
        finish_fault()
          set_pte_range()

The polarity of prefault calculation is incorrect. This leads to prefault
being incorrectly set for the faulting address. The following check will
incorrectly mark the PTE old rather than young. On some architectures this
will cause a double fault to mark it young when the access is retried.

    if (prefault && arch_wants_old_prefaulted_pte())
        entry = pte_mkold(entry);

On a subsequent fault on the same address, the faulting path will see a non
NULL vmf->pte and instead of reaching the do_pte_missing() path, PTE
will then be correctly marked young in handle_pte_fault() itself.

Due to this bug, performance degradation in the fault handling path will be
observed due to unnecessary double faulting.

Cc: stable@vger.kernel.org
Fixes: 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
Signed-off-by: Ram Tummala <rtummala@nvidia.com>
Reviewed-by: Yin Fengwei <fengwei.yin@intel.com>
---
 mm/memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/memory.c b/mm/memory.c
index 0a769f34bbb2..03263034a040 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -4781,7 +4781,7 @@ void set_pte_range(struct vm_fault *vmf, struct folio *folio,
 {
 	struct vm_area_struct *vma = vmf->vma;
 	bool write = vmf->flags & FAULT_FLAG_WRITE;
-	bool prefault = in_range(vmf->address, addr, nr * PAGE_SIZE);
+	bool prefault = !in_range(vmf->address, addr, nr * PAGE_SIZE);
 	pte_t entry;
 
 	flush_icache_pages(vma, page, nr);
-- 
2.34.1

.

From: alexs@kernel.org
To: Christoph Lameter <cl@linux.com>,
	Pekka Enberg <penberg@kernel.org>,
	David Rientjes <rientjes@google.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Hyeonggon Yoo <42.hyeyoo@gmail.com>,
	"Gustavo A . R . Silva" <gustavoars@kernel.org>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Cc: Petr Mladek <pmladek@suse.com>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Randy Dunlap <rdunlap@infradead.org>,
	Yoann Congal <yoann.congal@smile.fr>,
	"Alex Shi (Tencent)" <alexs@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>
Subject: [PATCH v2] mm/memcg: alignment memcg_data define condition
Date: Wed, 10 Jul 2024 09:56:08 +0800
Message-ID: <20240710015608.100801-1-alexs@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272962 org.kvack.linux-mm:203179
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: "Alex Shi (Tencent)" <alexs@kernel.org>

commit 21c690a349ba ("mm: introduce slabobj_ext to support slab object
extensions") changed the folio/page->memcg_data define condition from
MEMCG to SLAB_OBJ_EXT. And selected SLAB_OBJ_EXT for MEMCG, just for
SLAB_MATCH(memcg_data, obj_exts), even no other relationship between them.

Above action make memcg_data exposed and include SLAB_OBJ_EXT for
!MEMCG. That's incorrect in logcial and pay on code size.

So let's remove SLAB_OBJ_EXT from MEMCG and as Vlastimil Babka suggested,
add _unused_slab_obj_ext for SLAB_MATCH for slab.obj_exts while !MEMCG.
That could resolve the match issue, clean up the feature logical and
save the unnessary code adding.

Signed-off-by: Alex Shi (Tencent) <alexs@kernel.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yoann Congal <yoann.congal@smile.fr>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
---
 include/linux/mm_types.h | 8 ++++++--
 init/Kconfig             | 1 -
 mm/slab.h                | 4 ++++
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index ef09c4eef6d3..4ac3abc673d3 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -180,8 +180,10 @@ struct page {
 	/* Usage count. *DO NOT USE DIRECTLY*. See page_ref.h */
 	atomic_t _refcount;
 
-#ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 	unsigned long memcg_data;
+#elif defined(CONFIG_SLAB_OBJ_EXT)
+	unsigned long _unused_slab_obj_ext;
 #endif
 
 	/*
@@ -343,8 +345,10 @@ struct folio {
 			};
 			atomic_t _mapcount;
 			atomic_t _refcount;
-#ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 			unsigned long memcg_data;
+#elif defined(CONFIG_SLAB_OBJ_EXT)
+			unsigned long _unused_slab_obj_ext;
 #endif
 #if defined(WANT_PAGE_VIRTUAL)
 			void *virtual;
diff --git a/init/Kconfig b/init/Kconfig
index 26bf8bb0a7ce..61e43ac9fe75 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -965,7 +965,6 @@ config MEMCG
 	bool "Memory controller"
 	select PAGE_COUNTER
 	select EVENTFD
-	select SLAB_OBJ_EXT
 	help
 	  Provides control over the memory footprint of tasks in a cgroup.
 
diff --git a/mm/slab.h b/mm/slab.h
index 3586e6183224..8ffdd4f315f8 100644
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -98,7 +98,11 @@ SLAB_MATCH(flags, __page_flags);
 SLAB_MATCH(compound_head, slab_cache);	/* Ensure bit 0 is clear */
 SLAB_MATCH(_refcount, __page_refcount);
 #ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 SLAB_MATCH(memcg_data, obj_exts);
+#else
+SLAB_MATCH(_unused_slab_obj_ext, obj_exts);
+#endif
 #endif
 #undef SLAB_MATCH
 static_assert(sizeof(struct slab) <= sizeof(struct page));
-- 
2.43.0

.

Date: Wed, 10 Jul 2024 11:53:19 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Shawn Guo <shawnguo@kernel.org>, Olof Johansson <olof@lixom.net>, Arnd
 Bergmann <arnd@arndb.de>
Cc: Fabio Estevam <festevam@denx.de>, ARM
 <linux-arm-kernel@lists.infradead.org>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>
Subject: linux-next: duplicate patch in the imx-mxs tree
Message-ID: <20240710115319.10dae8e2@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/LCmrj5r2shomky_Tt6VYZnE";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272964 org.kernel.vger.linux-next:62163
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/LCmrj5r2shomky_Tt6VYZnE
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

The following commit is also in the arm-soc tree as a different commit
(but the same patch):

  3898bc187cde ("arm64: defconfig: Enable the IWLWIFI driver")

This is commit

  465830ad2534 ("arm64: defconfig: Enable the IWLWIFI driver")

in the arm-soc tree.

--=20
Cheers,
Stephen Rothwell

--Sig_/LCmrj5r2shomky_Tt6VYZnE
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaN6Y8ACgkQAVBC80lX
0GyxXgf+PhC90z+7WUNCXXmU536lmUz6cXSsEZAKK7daBZ7l/t9wvDeAgXf8dHR6
rkoujb6cvXLoBSsG2IbhncN4QykwVvH+jJ5vlFj5RwpK33to6nUwmDHft1CVBItO
9nfOXzXGVS2n9yaLqpYT/tqTgsWbjG+MRBv5uwq2WXZc7Od1qzULn6T5AbWY/yoq
G9Y7upPYW56p8AYakRS705FJJYT6VFyEu40583pJ7gW4Y2kxGIVd+8GXoPsE8S/5
u4WOC6aTFhMEUWYKvezr+VGzMvZni0hP/TJXA5i6bqsoqmWMfzbDtkw67562A1lT
J1K5cg7o9d9XFnTK8G1vCRXWlxDKHQ==
=/mtk
-----END PGP SIGNATURE-----

--Sig_/LCmrj5r2shomky_Tt6VYZnE--
.

Sender: Guenter Roeck <groeck7@gmail.com>
From: Guenter Roeck <linux@roeck-us.net>
To: Mark Brown <broonie@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Jean Delvare <jdelvare@suse.com>,
	linux-hwmon@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Guenter Roeck <linux@roeck-us.net>
Subject: [RFC PATCH 0/3] regmap: Implement regmap_multi_reg_read()
Date: Tue,  9 Jul 2024 18:56:19 -0700
Message-Id: <20240710015622.1960522-1-linux@roeck-us.net>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272965
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-hwmon
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

regmap_multi_reg_read() is similar to regmap_bilk_read() but reads from
an array of non-sequential registers. It is helpful if multiple non-
sequential registers need to be read in a single operation which would
otherwise have to be mutex protected.

The name of the new function was chosen to match the existing function
regmap_multi_reg_write().

The first patch of the series introduces the new function. The following
two patches provide examples for its use.

----------------------------------------------------------------
Guenter Roeck (3):
      regmap: Implement regmap_multi_reg_read()
      hwmon: (adt7470) Use multi-byte regmap operations
      hwmon: (tmp401) Use multi-byte regmap operations

 drivers/base/regmap/regmap.c | 103 ++++++++++++++++++++++++++++---------------
 drivers/hwmon/adt7470.c      |  22 +++------
 drivers/hwmon/tmp401.c       |  19 +++-----
 include/linux/regmap.h       |   2 +
 4 files changed, 84 insertions(+), 62 deletions(-)
.

From: peng guo <engguopeng@buaa.edu.cn>
To: dave@stgolabs.net,
	jonathan.cameron@huawei.com,
	dave.jiang@intel.com,
	alison.schofield@intel.com,
	vishal.l.verma@intel.com,
	ira.weiny@intel.com,
	dan.j.williams@intel.com
Cc: linux-cxl@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	wyguopeng@163.com,
	peng guo <engguopeng@buaa.edu.cn>
Subject: [PATCH v3] cxl/core: Support mbox op clear log of vendor debug logs
Date: Wed, 10 Jul 2024 10:31:12 +0800
Message-ID: <20240710023112.8063-1-engguopeng@buaa.edu.cn>
X-Mailing-List: linux-cxl@vger.kernel.org
List-Id: <linux-cxl.vger.kernel.org>
List-Subscribe: <mailto:linux-cxl+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-cxl+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-cxl:29374 org.kernel.vger.linux-kernel:1272970
Newsgroups: org.kernel.vger.linux-cxl,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

When user send a mbox cmd whose opcode is CXL_MBOX_OP_CLEAR_LOG and
the in_payload is normal vendor debug log UUID according to
the CXL specification
cxl_payload_from_user_allowed() will return false unexpectedly,
Sending mobox cmd operation failed and the kernel log will print:
Clear Log: input payload not allowed.

All CXL devices that support a debug log shall support the Vendor Debug
Log to allow the log to be accessed through a common host driver, for any
device, all versions of the CXL specification define the same value with
Log Identifier of: 5e1819d9-11a9-400c-811f-d60719403d86

refer to:
CXL spec r2.0 Table 169
CXL spec r3.0 Table 8-62
CXL spec r3.1 Table 8-71

Fix the definition value of DEFINE_CXL_VENDOR_DEBUG_UUID to match the
CXL r3.1 specification.

Fixes: 472b1ce6e9d6 ("cxl/mem: Enable commands via CEL")
Signed-off-by: peng guo <engguopeng@buaa.edu.cn>
---
v2 -> v3: Add a description of the impact of this issue on user usage
          Modify the fixes tag
v1 -> v2: update commit message  and addressed review comments

 drivers/cxl/cxlmem.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h
index af8169ccdbc0..feb1106559d2 100644
--- a/drivers/cxl/cxlmem.h
+++ b/drivers/cxl/cxlmem.h
@@ -563,7 +563,7 @@ enum cxl_opcode {
 		  0x3b, 0x3f, 0x17)
 
 #define DEFINE_CXL_VENDOR_DEBUG_UUID                                           \
-	UUID_INIT(0xe1819d9, 0x11a9, 0x400c, 0x81, 0x1f, 0xd6, 0x07, 0x19,     \
+	UUID_INIT(0x5e1819d9, 0x11a9, 0x400c, 0x81, 0x1f, 0xd6, 0x07, 0x19,     \
 		  0x40, 0x3d, 0x86)
 
 struct cxl_mbox_get_supported_logs {
-- 
2.43.0

.

From: George Liu <liuxiwei1013@gmail.com>
To: linux-aspeed@lists.ozlabs.org
Cc: devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	robh+dt@kernel.org,
	krzysztof.kozlowski+dt@linaro.org,
	conor+dt@kernel.org,
	George Liu <liuxiwei1013@gmail.com>
Subject: [PATCH v4] dt-bindings: vendor-prefixes: Add prefix for ieisystem
Date: Wed, 10 Jul 2024 10:22:49 +0800
Message-Id: <20240710022249.72234-1-liuxiwei@ieisystem.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272978
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add a vendor prefix entry for ieisystem

Link: https://en.ieisystem.com/

Signed-off-by: George Liu <liuxiwei1013@gmail.com>
---
v2 -> v3
 - match Signed-off-by email
v3 -> v4
 - add link
---
 Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 573578db9509..a559ac5789ae 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -609,6 +609,8 @@ patternProperties:
     description: IC Plus Corp.
   "^idt,.*":
     description: Integrated Device Technologies, Inc.
+  "^ieisystem,.*":
+    description: IEIT SYSTEMS Co.,Ltd.
   "^ifi,.*":
     description: Ingenieurburo Fur Ic-Technologie (I/F/I)
   "^ilitek,.*":
-- 
2.34.1

.

Date: Wed, 10 Jul 2024 12:33:27 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Krzysztof Kozlowski <krzk@kernel.org>, Olof Johansson <olof@lixom.net>,
 Arnd Bergmann <arnd@arndb.de>
Cc: ARM <linux-arm-kernel@lists.infradead.org>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>
Subject: linux-next: duplicate patch in the samsung-krzk tree
Message-ID: <20240710123327.632f7400@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/u0o/J.4qq3D.Yc2+5oo=v.j";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272983 org.kernel.vger.linux-next:62165
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/u0o/J.4qq3D.Yc2+5oo=v.j
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

The following commit is also in the arm-soc tree as a different commit
(but the same patch):

  85863cee8ce0 ("soc: samsung: exynos-pmu: add support for PMU_ALIVE non at=
omic registers")

This is commit

  97c4264f62a7 ("soc: samsung: exynos-pmu: add support for PMU_ALIVE non at=
omic registers")

in the arm-soc tree.

--=20
Cheers,
Stephen Rothwell

--Sig_/u0o/J.4qq3D.Yc2+5oo=v.j
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaN8vcACgkQAVBC80lX
0Gxkpgf+JFEIgY8nZkyyET4rhp1yvJ0yjPHE85PjRQmPGILYBxdZhGNKZnU/0JxK
hAJnl+q+9fsu5OLaBkx8FnTUb/H6YUCKG5WcwOyiIud1pxUC7TbTF6aBdgmbFKT3
HEay21LCrXv8j8MnJ2JUTMCVRBz1hL/PJxMPEOUU6n3Dv/ldu1Zs+5qeiO4ZYere
3PXLKX+e49UCYRmF/Pydh43Un0o0R3tKzr2IoQmResefdFGo69pvGR3C7/1PjyA7
tlnGaKsCrNONEJKt494ALu9dO6ceVTNr4DqcHCsCsfHF7YjzY9dxEQDHGlKwh2br
R7Pu1CMZC0/G5zMGlHWM33Vu+G0s8A==
=YYDo
-----END PGP SIGNATURE-----

--Sig_/u0o/J.4qq3D.Yc2+5oo=v.j--
.

From: Alistair Francis <alistair23@gmail.com>
To: bhelgaas@google.com,
	linux-pci@vger.kernel.org,
	Jonathan.Cameron@huawei.com,
	lukas@wunner.de
Cc: alex.williamson@redhat.com,
	christian.koenig@amd.com,
	kch@nvidia.com,
	gregkh@linuxfoundation.org,
	logang@deltatee.com,
	linux-kernel@vger.kernel.org,
	alistair23@gmail.com,
	chaitanyak@nvidia.com,
	rdunlap@infradead.org,
	Alistair Francis <alistair.francis@wdc.com>
Subject: [PATCH v14 1/4] PCI/DOE: Rename DOE protocol to feature
Date: Wed, 10 Jul 2024 12:33:07 +1000
Message-ID: <20240710023310.480713-1-alistair.francis@wdc.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272984 org.kernel.vger.linux-pci:145093
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

DOE r1.1 replaced all occurrences of "protocol" with the term "feature"
or "Data Object Type".

PCIe r6.1 (which was published July 24) incorporated that change.

Rename the existing terms protocol with feature.

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Lukas Wunner <lukas@wunner.de>
---
v14:
 - No changes
v13:
 - No changes
v12:
 - No changes
v11:
 - No changes
v10:
 - Split original patch into two
v9:
 - Rename two more DOE macros
v8:
 - Rename prot to feat as well
v7:
 - Initial patch

 drivers/pci/doe.c | 88 +++++++++++++++++++++++------------------------
 1 file changed, 44 insertions(+), 44 deletions(-)

diff --git a/drivers/pci/doe.c b/drivers/pci/doe.c
index 652d63df9d22..f776f5304a3e 100644
--- a/drivers/pci/doe.c
+++ b/drivers/pci/doe.c
@@ -22,7 +22,7 @@
 
 #include "pci.h"
 
-#define PCI_DOE_PROTOCOL_DISCOVERY 0
+#define PCI_DOE_FEATURE_DISCOVERY 0
 
 /* Timeout of 1 second from 6.30.2 Operation, PCI Spec r6.0 */
 #define PCI_DOE_TIMEOUT HZ
@@ -43,7 +43,7 @@
  *
  * @pdev: PCI device this mailbox belongs to
  * @cap_offset: Capability offset
- * @prots: Array of protocols supported (encoded as long values)
+ * @feats: Array of features supported (encoded as long values)
  * @wq: Wait queue for work item
  * @work_queue: Queue of pci_doe_work items
  * @flags: Bit array of PCI_DOE_FLAG_* flags
@@ -51,14 +51,14 @@
 struct pci_doe_mb {
 	struct pci_dev *pdev;
 	u16 cap_offset;
-	struct xarray prots;
+	struct xarray feats;
 
 	wait_queue_head_t wq;
 	struct workqueue_struct *work_queue;
 	unsigned long flags;
 };
 
-struct pci_doe_protocol {
+struct pci_doe_feature {
 	u16 vid;
 	u8 type;
 };
@@ -66,7 +66,7 @@ struct pci_doe_protocol {
 /**
  * struct pci_doe_task - represents a single query/response
  *
- * @prot: DOE Protocol
+ * @feat: DOE Feature
  * @request_pl: The request payload
  * @request_pl_sz: Size of the request payload (bytes)
  * @response_pl: The response payload
@@ -78,7 +78,7 @@ struct pci_doe_protocol {
  * @doe_mb: Used internally by the mailbox
  */
 struct pci_doe_task {
-	struct pci_doe_protocol prot;
+	struct pci_doe_feature feat;
 	const __le32 *request_pl;
 	size_t request_pl_sz;
 	__le32 *response_pl;
@@ -171,8 +171,8 @@ static int pci_doe_send_req(struct pci_doe_mb *doe_mb,
 		length = 0;
 
 	/* Write DOE Header */
-	val = FIELD_PREP(PCI_DOE_DATA_OBJECT_HEADER_1_VID, task->prot.vid) |
-		FIELD_PREP(PCI_DOE_DATA_OBJECT_HEADER_1_TYPE, task->prot.type);
+	val = FIELD_PREP(PCI_DOE_DATA_OBJECT_HEADER_1_VID, task->feat.vid) |
+		FIELD_PREP(PCI_DOE_DATA_OBJECT_HEADER_1_TYPE, task->feat.type);
 	pci_write_config_dword(pdev, offset + PCI_DOE_WRITE, val);
 	pci_write_config_dword(pdev, offset + PCI_DOE_WRITE,
 			       FIELD_PREP(PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH,
@@ -217,12 +217,12 @@ static int pci_doe_recv_resp(struct pci_doe_mb *doe_mb, struct pci_doe_task *tas
 	int i = 0;
 	u32 val;
 
-	/* Read the first dword to get the protocol */
+	/* Read the first dword to get the feature */
 	pci_read_config_dword(pdev, offset + PCI_DOE_READ, &val);
-	if ((FIELD_GET(PCI_DOE_DATA_OBJECT_HEADER_1_VID, val) != task->prot.vid) ||
-	    (FIELD_GET(PCI_DOE_DATA_OBJECT_HEADER_1_TYPE, val) != task->prot.type)) {
-		dev_err_ratelimited(&pdev->dev, "[%x] expected [VID, Protocol] = [%04x, %02x], got [%04x, %02x]\n",
-				    doe_mb->cap_offset, task->prot.vid, task->prot.type,
+	if ((FIELD_GET(PCI_DOE_DATA_OBJECT_HEADER_1_VID, val) != task->feat.vid) ||
+	    (FIELD_GET(PCI_DOE_DATA_OBJECT_HEADER_1_TYPE, val) != task->feat.type)) {
+		dev_err_ratelimited(&pdev->dev, "[%x] expected [VID, Feature] = [%04x, %02x], got [%04x, %02x]\n",
+				    doe_mb->cap_offset, task->feat.vid, task->feat.type,
 				    FIELD_GET(PCI_DOE_DATA_OBJECT_HEADER_1_VID, val),
 				    FIELD_GET(PCI_DOE_DATA_OBJECT_HEADER_1_TYPE, val));
 		return -EIO;
@@ -384,7 +384,7 @@ static void pci_doe_task_complete(struct pci_doe_task *task)
 }
 
 static int pci_doe_discovery(struct pci_doe_mb *doe_mb, u8 capver, u8 *index, u16 *vid,
-			     u8 *protocol)
+			     u8 *feature)
 {
 	u32 request_pl = FIELD_PREP(PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX,
 				    *index) |
@@ -395,7 +395,7 @@ static int pci_doe_discovery(struct pci_doe_mb *doe_mb, u8 capver, u8 *index, u1
 	u32 response_pl;
 	int rc;
 
-	rc = pci_doe(doe_mb, PCI_VENDOR_ID_PCI_SIG, PCI_DOE_PROTOCOL_DISCOVERY,
+	rc = pci_doe(doe_mb, PCI_VENDOR_ID_PCI_SIG, PCI_DOE_FEATURE_DISCOVERY,
 		     &request_pl_le, sizeof(request_pl_le),
 		     &response_pl_le, sizeof(response_pl_le));
 	if (rc < 0)
@@ -406,7 +406,7 @@ static int pci_doe_discovery(struct pci_doe_mb *doe_mb, u8 capver, u8 *index, u1
 
 	response_pl = le32_to_cpu(response_pl_le);
 	*vid = FIELD_GET(PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID, response_pl);
-	*protocol = FIELD_GET(PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL,
+	*feature = FIELD_GET(PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL,
 			      response_pl);
 	*index = FIELD_GET(PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX,
 			   response_pl);
@@ -414,12 +414,12 @@ static int pci_doe_discovery(struct pci_doe_mb *doe_mb, u8 capver, u8 *index, u1
 	return 0;
 }
 
-static void *pci_doe_xa_prot_entry(u16 vid, u8 prot)
+static void *pci_doe_xa_feat_entry(u16 vid, u8 prot)
 {
 	return xa_mk_value((vid << 8) | prot);
 }
 
-static int pci_doe_cache_protocols(struct pci_doe_mb *doe_mb)
+static int pci_doe_cache_features(struct pci_doe_mb *doe_mb)
 {
 	u8 index = 0;
 	u8 xa_idx = 0;
@@ -438,11 +438,11 @@ static int pci_doe_cache_protocols(struct pci_doe_mb *doe_mb)
 			return rc;
 
 		pci_dbg(doe_mb->pdev,
-			"[%x] Found protocol %d vid: %x prot: %x\n",
+			"[%x] Found feature %d vid: %x prot: %x\n",
 			doe_mb->cap_offset, xa_idx, vid, prot);
 
-		rc = xa_insert(&doe_mb->prots, xa_idx++,
-			       pci_doe_xa_prot_entry(vid, prot), GFP_KERNEL);
+		rc = xa_insert(&doe_mb->feats, xa_idx++,
+			       pci_doe_xa_feat_entry(vid, prot), GFP_KERNEL);
 		if (rc)
 			return rc;
 	} while (index);
@@ -466,7 +466,7 @@ static void pci_doe_cancel_tasks(struct pci_doe_mb *doe_mb)
  * @pdev: PCI device to create the DOE mailbox for
  * @cap_offset: Offset of the DOE mailbox
  *
- * Create a single mailbox object to manage the mailbox protocol at the
+ * Create a single mailbox object to manage the mailbox feature at the
  * cap_offset specified.
  *
  * RETURNS: created mailbox object on success
@@ -485,7 +485,7 @@ static struct pci_doe_mb *pci_doe_create_mb(struct pci_dev *pdev,
 	doe_mb->pdev = pdev;
 	doe_mb->cap_offset = cap_offset;
 	init_waitqueue_head(&doe_mb->wq);
-	xa_init(&doe_mb->prots);
+	xa_init(&doe_mb->feats);
 
 	doe_mb->work_queue = alloc_ordered_workqueue("%s %s DOE [%x]", 0,
 						dev_bus_name(&pdev->dev),
@@ -508,11 +508,11 @@ static struct pci_doe_mb *pci_doe_create_mb(struct pci_dev *pdev,
 
 	/*
 	 * The state machine and the mailbox should be in sync now;
-	 * Use the mailbox to query protocols.
+	 * Use the mailbox to query features.
 	 */
-	rc = pci_doe_cache_protocols(doe_mb);
+	rc = pci_doe_cache_features(doe_mb);
 	if (rc) {
-		pci_err(pdev, "[%x] failed to cache protocols : %d\n",
+		pci_err(pdev, "[%x] failed to cache features : %d\n",
 			doe_mb->cap_offset, rc);
 		goto err_cancel;
 	}
@@ -521,7 +521,7 @@ static struct pci_doe_mb *pci_doe_create_mb(struct pci_dev *pdev,
 
 err_cancel:
 	pci_doe_cancel_tasks(doe_mb);
-	xa_destroy(&doe_mb->prots);
+	xa_destroy(&doe_mb->feats);
 err_destroy_wq:
 	destroy_workqueue(doe_mb->work_queue);
 err_free:
@@ -539,31 +539,31 @@ static struct pci_doe_mb *pci_doe_create_mb(struct pci_dev *pdev,
 static void pci_doe_destroy_mb(struct pci_doe_mb *doe_mb)
 {
 	pci_doe_cancel_tasks(doe_mb);
-	xa_destroy(&doe_mb->prots);
+	xa_destroy(&doe_mb->feats);
 	destroy_workqueue(doe_mb->work_queue);
 	kfree(doe_mb);
 }
 
 /**
- * pci_doe_supports_prot() - Return if the DOE instance supports the given
- *			     protocol
+ * pci_doe_supports_feat() - Return if the DOE instance supports the given
+ *			     feature
  * @doe_mb: DOE mailbox capability to query
- * @vid: Protocol Vendor ID
- * @type: Protocol type
+ * @vid: Feature Vendor ID
+ * @type: Feature type
  *
- * RETURNS: True if the DOE mailbox supports the protocol specified
+ * RETURNS: True if the DOE mailbox supports the feature specified
  */
-static bool pci_doe_supports_prot(struct pci_doe_mb *doe_mb, u16 vid, u8 type)
+static bool pci_doe_supports_feat(struct pci_doe_mb *doe_mb, u16 vid, u8 type)
 {
 	unsigned long index;
 	void *entry;
 
-	/* The discovery protocol must always be supported */
-	if (vid == PCI_VENDOR_ID_PCI_SIG && type == PCI_DOE_PROTOCOL_DISCOVERY)
+	/* The discovery feature must always be supported */
+	if (vid == PCI_VENDOR_ID_PCI_SIG && type == PCI_DOE_FEATURE_DISCOVERY)
 		return true;
 
-	xa_for_each(&doe_mb->prots, index, entry)
-		if (entry == pci_doe_xa_prot_entry(vid, type))
+	xa_for_each(&doe_mb->feats, index, entry)
+		if (entry == pci_doe_xa_feat_entry(vid, type))
 			return true;
 
 	return false;
@@ -591,7 +591,7 @@ static bool pci_doe_supports_prot(struct pci_doe_mb *doe_mb, u16 vid, u8 type)
 static int pci_doe_submit_task(struct pci_doe_mb *doe_mb,
 			       struct pci_doe_task *task)
 {
-	if (!pci_doe_supports_prot(doe_mb, task->prot.vid, task->prot.type))
+	if (!pci_doe_supports_feat(doe_mb, task->feat.vid, task->feat.type))
 		return -EINVAL;
 
 	if (test_bit(PCI_DOE_FLAG_DEAD, &doe_mb->flags))
@@ -637,8 +637,8 @@ int pci_doe(struct pci_doe_mb *doe_mb, u16 vendor, u8 type,
 {
 	DECLARE_COMPLETION_ONSTACK(c);
 	struct pci_doe_task task = {
-		.prot.vid = vendor,
-		.prot.type = type,
+		.feat.vid = vendor,
+		.feat.type = type,
 		.request_pl = request,
 		.request_pl_sz = request_sz,
 		.response_pl = response,
@@ -663,9 +663,9 @@ EXPORT_SYMBOL_GPL(pci_doe);
  *
  * @pdev: PCI device
  * @vendor: Vendor ID
- * @type: Data Object Type
+ * @prot: Data Object Type
  *
- * Find first DOE mailbox of a PCI device which supports the given protocol.
+ * Find first DOE mailbox of a PCI device which supports the given feature.
  *
  * RETURNS: Pointer to the DOE mailbox or NULL if none was found.
  */
@@ -676,7 +676,7 @@ struct pci_doe_mb *pci_find_doe_mailbox(struct pci_dev *pdev, u16 vendor,
 	unsigned long index;
 
 	xa_for_each(&pdev->doe_mbs, index, doe_mb)
-		if (pci_doe_supports_prot(doe_mb, vendor, type))
+		if (pci_doe_supports_feat(doe_mb, vendor, type))
 			return doe_mb;
 
 	return NULL;
-- 
2.45.2

.

Date: Wed, 10 Jul 2024 12:38:42 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Alexandre Torgue <alexandre.torgue@st.com>, Olof Johansson
 <olof@lixom.net>, Arnd Bergmann <arnd@arndb.de>
Cc: ARM <linux-arm-kernel@lists.infradead.org>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>
Subject: linux-next: duplicate patch in the stm32 tree
Message-ID: <20240710123842.2b2fbd10@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/tYbao7QuKvzMKmvCS/xwD_g";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272991 org.kernel.vger.linux-next:62166
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/tYbao7QuKvzMKmvCS/xwD_g
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

The following commit is also in the arm-soc tree as a different commit
(but the same patch):

  1eafc48af859 ("arm64: stm32: enable scmi regulator for stm32")

This is commit

  e9a316affb9a ("arm64: stm32: enable scmi regulator for stm32")

in the arm-soc tree.

--=20
Cheers,
Stephen Rothwell

--Sig_/tYbao7QuKvzMKmvCS/xwD_g
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaN9DIACgkQAVBC80lX
0Gx63gf/ZU+uF3K+v0YxihNQL6BUvg+symsADofgK1tfP04co59SsosFnuHOCZY4
Te+MqZ2kaxlcJXZ9ICSoflFrmxt2Od0TvNUmwbVtmc7MwhPLWDkMXKWAUVXGHQ8U
PF6VvPVUgrNR12QP8Ec0f1VVbnptOYLfaHPfbt+j/BH24qYoFH1qBnIDU2GpHWpl
7x/SO8A29Z25fPIUHPZJKRcYx8kfa17vEni7vcv+cnzsOduIBBUlm+EJRA658C4r
NDceTUb5YWE82Xr/P3IgaK+wdunQrO2YEGNcC7lWs8oMOqdLQ7zXsWswwWoMDGP3
ATNsF+Gv9JsGazFmx2txjytGcYsTcA==
=S5Kx
-----END PGP SIGNATURE-----

--Sig_/tYbao7QuKvzMKmvCS/xwD_g--
.

From: Zhiguo Jiang <justinjiang@vivo.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>
Cc: opensource.kernel@vivo.com,
	Zhiguo Jiang <justinjiang@vivo.com>
Subject: [PATCH v8] mm: shrink skip folio mapped by an exiting process
Date: Wed, 10 Jul 2024 10:39:01 +0800
Message-ID: <20240710023901.1624-1-justinjiang@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272992 org.kvack.linux-mm:203189
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The releasing process of the non-shared anonymous folio mapped solely by
an exiting process may go through two flows: 1) the anonymous folio is
firstly is swaped-out into swapspace and transformed into a swp_entry
in shrink_folio_list; 2) then the swp_entry is released in the process
exiting flow. This will result in the high cpu load of releasing a
non-shared anonymous folio mapped solely by an exiting process.

When the low system memory and the exiting process exist at the same
time, it will be likely to happen, because the non-shared anonymous
folio mapped solely by an exiting process may be reclaimed by
shrink_folio_list.

This patch is that shrink skips the non-shared anonymous folio solely
mapped by an exting process and this folio is only released directly in
the process exiting flow, which will save swap-out time and alleviate
the load of the process exiting. 

Reviewed-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: David Hildenbrand <david@redhat.com>
Acked-by: Barry Song <baohua@kernel.org>
Signed-off-by: Zhiguo Jiang <justinjiang@vivo.com>
---

Change log:
v7->v8:
1.Add tags of Reviewed-by and Acked-by.
2.Add #include <linux/oom.h> to solve compilation issue.
v6->v7:
1.Modify tab indentation to space indentation of the continuation
lines of the condition.
v5->v6:
1.Move folio_likely_mapped_shared() under the PTL.
2.Add check_stable_address_space() to replace MMF_OOM_SKIP.
3.Remove folio_test_anon(folio).
v4->v5:
1.Further modify to skip non-shared anonymous folio only.
2.Update comments for pra->referenced = -1.
v3->v4:
1.Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process.
v2->v3:
Nothing.
v1->v2:
1.The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

Comments from participants and my responses:
[v7->v8]:
1.Barry Song <baohua@kernel.org>
You should have collected tags such as reviewed-by, acked-by you got in
v6 while sending v7.
-->
Added in patch v8.

You didn't even pass the compilation stage because you're missing
'linux/oom.h'. It's quite disappointing because I believe in your idea,
but you didn't even build it before sending.
-->
Sorry, I overlooked the compilation of folio_likely_mapped_shared() added
in patch v5. Compiled and Updated have been compeleted in patch v8.

[v6->v7]:
1.Matthew Wilcox <willy@infradead.org>
You told me you'd fix the indentation.  You cannot indent both the
continuation lines of the condition and the body of the if by one tab
each!
-->
Modify tab indentation to space indentation of the continuation
lines of the condition.

[v5->v6]:
1.David Hildenbrand <david@redhat.com>
I'm currently working on moving all folio_likely_mapped_shared() under
the PTL, where we are then sure that the folio is actually mapped by
this process (e.g., no concurrent unmapping poisslbe). Can we do the
same here directly? 
-->
You are right. we might use page_vma_mapped_walk_done() to bail out.
(Barry Song)

2.Barry Song <baohua@kernel.org>
By the way, I am not convinced that using test_bit(MMF_OOM_SKIP,
&vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap()
automatically has MMF_OOM_SKIP. What is the purpose of this check?
Is there a better way to determine if a process is an OOM target?
What about check_stable_address_space() ?
-->
Sorry, I overlook the situation with if (is_global_init(p)),
MMF_OOM_SKIP is indeed not suitable. It seems feasible for
check_stable_address_space() replacing MMF_OOM_SKIP.
check_stable_address_space() can indicate oom kill, and
!atomic_read(&vma->vm_mm->mm_users) can indicate the normal
process exiting. 

I also think we actually can remove "folio_test_anon(folio)".
-->
Yes, update in patch v6.

[v4->v5]:
1.Barry Song <baohua@kernel.org>
I don't think this is correct. folio_likely_mapped_shared() is almost
"correct" but not always.
Please explain why you set  pra->referenced =  -1. Please address all
comments before you send a new version.
-->
Update in patch v5.

2.Matthew Wilcox <willy@infradead.org>
How is the file folio similar?  File folios are never written to swap,
and they'll be written back from the page cache whenever the filesystem
decides it's a good time to do so.
-->
What do you mean is that the file folio will not have any relevant
identifier left in memory after it is reclamed in the shrink flow,
and it will not be released again during an exiting process? If that's
the case, I think we only need the anon folio is skipped here. 

[v3->v4]:
1.Barry Song <baohua@kernel.org>
This is clearly version 3, as you previously sent version 2, correct?
-->
Yes.

Could you please describe the specific impact on users, including user
experience and power consumption? How serious is this problem?
-->
At present, I do not have a suitable method to accurately measure the
optimization benefit datas of this modifications, but I believe it
theoretically has some benefits.
Launching large memory app (for example, starting the camera) in multiple
backend scenes may result in the high cpu load of the exiting processes. 

Applications?
-->
Yes, when system is low memory, it more likely to occur.

I'm not completely convinced this patch is correct, but it appears to be
heading in the right direction. Therefore, I expect to see new versions
rather than it being dead.
You changed the file mode to 755, which is incorrect.
-->
Solved.

Why use -1? Is this meant to simulate lock contention to keep the folio
without activating it? Please do have some comments to explain why.
I'm not convinced this change is appropriate for shared folios. It seems
more suitable for exclusive folios used solely by the exiting process.
-->
The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase
the folios will be freed soon in the exiting process flow.
Yes, the shared folios can not be simply skipped. I have made relevant
modifications in patch v4 and please help to further review.
https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/

2.David Hildenbrand <david@redhat.com>
but what if it is shared among multiple processes and only one of them
is exiting?
-->
Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process in next version v4.

[v2->v3:]
Nothing.

[v1->v2]:
1.Matthew Wilcox <willy@infradead.org>
What testing have you done of this patch?  How often does it happen?
Are there particular workloads that benefit from this?  (I'm not sure
what "mutil backed-applications" are?)
And I do mean specifically of this patch, because to my eyes it
shouldn't even compile. Except on 32-bit where it'll say "warning:
integer constant out of range".
-->
Yes, I have tested. When the low system memory and the exiting process
exist at the same time, it will happen. This modification can alleviate
the load of the exiting process. 
"mutil backed-applications" means that there are a large number of
the backend applications in the system.
The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

 mm/rmap.c   | 15 +++++++++++++++
 mm/vmscan.c |  7 ++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 mm/rmap.c

diff --git a/mm/rmap.c b/mm/rmap.c
index 26806b49a86f..5b92c3dadcc2 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -75,6 +75,7 @@
 #include <linux/memremap.h>
 #include <linux/userfaultfd_k.h>
 #include <linux/mm_inline.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 
@@ -870,6 +871,20 @@ static bool folio_referenced_one(struct folio *folio,
 			continue;
 		}
 
+		/*
+		 * Skip the non-shared swapbacked folio mapped solely by
+		 * the exiting or OOM-reaped process. This avoids redundant
+		 * swap-out followed by an immediate unmap.
+		 */
+		if ((!atomic_read(&vma->vm_mm->mm_users) ||
+		    check_stable_address_space(vma->vm_mm)) &&
+		    folio_test_swapbacked(folio) &&
+		    !folio_likely_mapped_shared(folio)) {
+			pra->referenced = -1;
+			page_vma_mapped_walk_done(&pvmw);
+			return false;
+		}
+
 		if (pvmw.pte) {
 			if (lru_gen_enabled() &&
 			    pte_young(ptep_get(pvmw.pte))) {
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 80f9a486cf27..1d5f78a3dbeb 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio,
 	if (vm_flags & VM_LOCKED)
 		return FOLIOREF_ACTIVATE;
 
-	/* rmap lock contention: rotate */
+	/*
+	 * There are two cases to consider.
+	 * 1) Rmap lock contention: rotate.
+	 * 2) Skip the non-shared swapbacked folio mapped solely by
+	 *    the exiting or OOM-reaped process.
+	 */
 	if (referenced_ptes == -1)
 		return FOLIOREF_KEEP;
 
-- 
2.39.0

.

Date: Wed, 10 Jul 2024 12:42:47 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Theodore Ts'o <tytso@mit.edu>, Jan Kara <jack@suse.cz>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Linux Next
 Mailing List <linux-next@vger.kernel.org>
Subject: linux-next: duplicate patch in the ext4 tree
Message-ID: <20240710124247.1180c19b@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/yZNse3IwUdAju_q5TTHk3Y7";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272995 org.kernel.vger.linux-next:62167
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/yZNse3IwUdAju_q5TTHk3Y7
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

The following commit is also in the ext3 tree as a different commit
(but the same patch):

  89a8718cef85 ("jbd2: add missing MODULE_DESCRIPTION()")

This is commit

  96544a93eda4 ("jbd2: add missing MODULE_DESCRIPTION()")

in the ext3 tree.

--=20
Cheers,
Stephen Rothwell

--Sig_/yZNse3IwUdAju_q5TTHk3Y7
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaN9ScACgkQAVBC80lX
0GwzLgf/RTfl2mHWaPXSWgYAYF3PCq+PcNQ6RBW7ljk9MCsWZpzQODAO3T64TpbY
1b3DbDP01g9ZM0JPvnrG1jB2gZytYhwnhgCHKI/AMU80FV6ZJsLfMdLA5zKHoIGQ
bHgc+BpAFX6UI4K50UooCNH8M1moAAF3OZ3wkkD6vvvU5B7NZRQSWrbetmMiAm0E
spEbPX7/3EW4o+L7IpQX6GreC08EcB3W4H40Yekm+UCPTkcb4gmmlUx0x4SYm6HJ
Xxh4lF9gUIhOC1MkLX9uuLZCDAIRT1foNXnbBDd9ch224tsMSIeWeucKHJe0ZPYZ
f5l6rXtWp0vf4MfrGa55QNOYvPxk5w==
=bTGL
-----END PGP SIGNATURE-----

--Sig_/yZNse3IwUdAju_q5TTHk3Y7--
.

From: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
To: chandan.babu@oracle.com
Cc: djwong@kernel.org,
	linux-xfs@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Jiapeng Chong <jiapeng.chong@linux.alibaba.com>,
	Abaci Robot <abaci@linux.alibaba.com>
Subject: [PATCH -next] xfs: Remove duplicate xfs_trans_priv.h header
Date: Wed, 10 Jul 2024 10:45:14 +0800
Message-Id: <20240710024514.49176-1-jiapeng.chong@linux.alibaba.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272996
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-xfs
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

./fs/xfs/libxfs/xfs_defer.c: xfs_trans_priv.h is included more than once.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=9491
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
---
 fs/xfs/libxfs/xfs_defer.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/fs/xfs/libxfs/xfs_defer.c b/fs/xfs/libxfs/xfs_defer.c
index 40021849b42f..2cd212ad2c1d 100644
--- a/fs/xfs/libxfs/xfs_defer.c
+++ b/fs/xfs/libxfs/xfs_defer.c
@@ -28,7 +28,6 @@
 #include "xfs_da_format.h"
 #include "xfs_da_btree.h"
 #include "xfs_attr.h"
-#include "xfs_trans_priv.h"
 #include "xfs_exchmaps.h"
 
 static struct kmem_cache	*xfs_defer_pending_cache;
-- 
2.20.1.7.g153144c

.

Date: Wed, 10 Jul 2024 10:51:29 +0800
From: kernel test robot <oliver.sang@intel.com>
To: Usama Arif <usamaarif642@gmail.com>
CC: <oe-lkp@lists.linux.dev>, <lkp@intel.com>, Linux Memory Management List
	<linux-mm@kvack.org>, Andrew Morton <akpm@linux-foundation.org>, "Chengming
 Zhou" <chengming.zhou@linux.dev>, Yosry Ahmed <yosryahmed@google.com>, "Nhat
 Pham" <nphamcs@gmail.com>, Johannes Weiner <hannes@cmpxchg.org>, "David
 Hildenbrand" <david@redhat.com>, "Huang, Ying" <ying.huang@intel.com>, "Hugh
 Dickins" <hughd@google.com>, Matthew Wilcox <willy@infradead.org>, "Shakeel
 Butt" <shakeel.butt@linux.dev>, Andi Kleen <ak@linux.intel.com>,
	<linux-kernel@vger.kernel.org>, <ltp@lists.linux.it>, <oliver.sang@intel.com>
Subject: [linux-next:master] [mm]  47325a5c88:
 WARNING:at_mm/slub.c:#free_large_kmalloc
Message-ID: <202407101031.c6c3c651-lkp@intel.com>
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272998 org.kvack.linux-mm:203192
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp,it.linux.lists.ltp,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail



Hello,

kernel test robot noticed "WARNING:at_mm/slub.c:#free_large_kmalloc" on:

commit: 47325a5c88c5ee373c973e47c27c7dadcfe88a32 ("mm-store-zero-pages-to-be-swapped-out-in-a-bitmap-v8")
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master

[test failed on linux-next/master 82d01fe6ee52086035b201cfa1410a3b04384257]

in testcase: ltp
version: ltp-x86_64-14c1f76-1_20240706
with following parameters:

	test: commands



compiler: gcc-13
test machine: 8 threads 1 sockets Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz (Ivy Bridge) with 16G memory

(please refer to attached dmesg/kmsg for entire log/backtrace)



If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202407101031.c6c3c651-lkp@intel.com


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20240710/202407101031.c6c3c651-lkp@intel.com



kern  :warn  : [  455.633948] Swap area shorter than signature indicates
kern  :warn  : [  455.634133] ------------[ cut here ]------------
kern  :warn  : [  455.634268] WARNING: CPU: 3 PID: 8129 at mm/slub.c:4538 free_large_kmalloc+0x93/0xe0
kern  :warn  : [  455.635173] Modules linked in: msdos minix vfat fat xfs ext2 netconsole btrfs blake2b_generic xor zstd_compress raid6_pq libcrc32c intel_rapl_msr intel_rapl_common sd_mod x86_pkg_temp_thermal t10_pi intel_powerclamp coretemp crc64_rocksoft_generic crc64_rocksoft crc64 kvm_intel sg ipmi_devintf ipmi_msghandler i915 kvm crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel sha512_ssse3 drm_buddy intel_gtt firewire_ohci rapl mxm_wmi intel_cstate drm_display_helper firewire_core ahci libahci crc_itu_t i2c_i801 intel_uncore ttm libata drm_kms_helper i2c_smbus lpc_ich video wmi binfmt_misc drm loop fuse dm_mod ip_tables
kern  :warn  : [  455.636742] CPU: 3 PID: 8129 Comm: swapon Not tainted 6.10.0-rc6-00357-g47325a5c88c5 #1
kern  :warn  : [  455.636935] Hardware name:  /DZ77BH-55K, BIOS BHZ7710H.86A.0097.2012.1228.1346 12/28/2012
kern  :warn  : [  455.637127] RIP: 0010:free_large_kmalloc+0x93/0xe0
kern  :warn  : [  455.637267] Code: 00 41 f7 c4 00 02 00 00 74 01 fb f0 ff 4b 34 74 0b 5b 5d 41 5c 41 5d c3 cc cc cc cc 48 89 df 5b 5d 41 5c 41 5d e9 8d 3f eb ff <0f> 0b 80 3d 14 d8 06 04 00 74 1c 48 89 ef e8 ea b0 1d 02 48 8b 74
kern  :warn  : [  455.637951] RSP: 0018:ffffc9000247fdd8 EFLAGS: 00010246
kern  :warn  : [  455.638098] RAX: 0017ffffc0000000 RBX: ffffea00055cf900 RCX: 0000000000000000
kern  :warn  : [  455.638273] RDX: ffffea0005bb6508 RSI: ffff8881573e4000 RDI: ffffea00055cf900
kern  :warn  : [  455.638505] RBP: ffff8881573e4000 R08: 0000000000000001 R09: fffff5200048ffb5
kern  :warn  : [  455.638679] R10: 0000000000000003 R11: 0000000000000001 R12: ffff8881ee6b2c28
kern  :warn  : [  455.638853] R13: ffff8881393c7890 R14: 00000000ffffffea R15: ffff8881393c7800
kern  :warn  : [  455.639028] FS:  00007fa00e70c840(0000) GS:ffff88833c580000(0000) knlGS:0000000000000000
kern  :warn  : [  455.639218] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
kern  :warn  : [  455.639424] CR2: 00005624b13e8000 CR3: 00000003df01e002 CR4: 00000000001706f0
kern  :warn  : [  455.639600] Call Trace:
kern  :warn  : [  455.639695]  <TASK>
kern  :warn  : [  455.639787]  ? __warn+0xcc/0x260
kern  :warn  : [  455.639900]  ? free_large_kmalloc+0x93/0xe0
kern  :warn  : [  455.640025]  ? report_bug+0x261/0x2c0
kern  :warn  : [  455.640141]  ? handle_bug+0x6d/0x90
kern  :warn  : [  455.640254]  ? exc_invalid_op+0x17/0x40
kern  :warn  : [  455.640428]  ? asm_exc_invalid_op+0x1a/0x20
kern  :warn  : [  455.640555]  ? free_large_kmalloc+0x93/0xe0
kern  :warn  : [  455.640679]  __do_sys_swapon+0xaf3/0x1ea0
kern  :warn  : [  455.640806]  ? poison_slab_object+0xc5/0x170
kern  :warn  : [  455.640934]  ? __pfx___do_sys_swapon+0x10/0x10
kern  :warn  : [  455.641063]  ? __x64_sys_close+0x7c/0xd0
kern  :warn  : [  455.641184]  ? kmem_cache_free+0xd5/0x3e0
kern  :warn  : [  455.641307]  do_syscall_64+0x5f/0x170
kern  :warn  : [  455.641489]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
kern  :warn  : [  455.641629] RIP: 0033:0x7fa00e8d7f97
kern  :warn  : [  455.641746] Code: 73 01 c3 48 8b 0d 69 2e 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 a7 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 39 2e 0d 00 f7 d8 64 89 01 48
kern  :warn  : [  455.642117] RSP: 002b:00007ffc063cb6e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a7
kern  :warn  : [  455.642302] RAX: ffffffffffffffda RBX: 00005624b13d89a0 RCX: 00007fa00e8d7f97
kern  :warn  : [  455.642535] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00005624b13d89a0
kern  :warn  : [  455.642709] RBP: 0000000000000000 R08: 0000000000000ff6 R09: 0000000000001000
kern  :warn  : [  455.642882] R10: 4e45505355533253 R11: 0000000000000246 R12: 00007ffc063cb91c
kern  :warn  : [  455.643056] R13: 00000000ffffffff R14: 0000000012c00000 R15: 00005624b13d95d0
kern  :warn  : [  455.643231]  </TASK>
kern  :warn  : [  455.643321] ---[ end trace 0000000000000000 ]---
kern  :warn  : [  455.643507] object pointer: 0x000000003fde23f4
kern  :err   : [  455.643635] ==================================================================
kern  :err   : [  455.643807] BUG: KASAN: double-free in __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.643978] Free of addr ffff8881573e4000 by task swapon/8129

kern  :err   : [  455.644198] CPU: 3 PID: 8129 Comm: swapon Tainted: G        W          6.10.0-rc6-00357-g47325a5c88c5 #1
kern  :err   : [  455.644406] Hardware name:  /DZ77BH-55K, BIOS BHZ7710H.86A.0097.2012.1228.1346 12/28/2012
kern  :err   : [  455.644590] Call Trace:
kern  :err   : [  455.644681]  <TASK>
kern  :err   : [  455.644768]  dump_stack_lvl+0x53/0x70
kern  :err   : [  455.644883]  print_address_description+0x30/0x410
kern  :err   : [  455.645033]  ? __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.645158]  print_report+0xb9/0x2b0
kern  :err   : [  455.645275]  ? __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.645397]  ? kasan_addr_to_slab+0xd/0xb0
kern  :err   : [  455.645516]  ? __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.645639]  kasan_report_invalid_free+0x94/0xc0
kern  :err   : [  455.645769]  ? __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.645891]  free_large_kmalloc+0xb8/0xe0
kern  :err   : [  455.646010]  __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.646130]  ? poison_slab_object+0xc5/0x170
kern  :err   : [  455.646254]  ? __pfx___do_sys_swapon+0x10/0x10
kern  :err   : [  455.646379]  ? __x64_sys_close+0x7c/0xd0
kern  :err   : [  455.646498]  ? kmem_cache_free+0xd5/0x3e0
kern  :err   : [  455.646619]  do_syscall_64+0x5f/0x170
kern  :err   : [  455.646735]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
kern  :err   : [  455.646871] RIP: 0033:0x7fa00e8d7f97
kern  :err   : [  455.646985] Code: 73 01 c3 48 8b 0d 69 2e 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 a7 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 39 2e 0d 00 f7 d8 64 89 01 48
kern  :err   : [  455.647343] RSP: 002b:00007ffc063cb6e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a7
kern  :err   : [  455.647521] RAX: ffffffffffffffda RBX: 00005624b13d89a0 RCX: 00007fa00e8d7f97
kern  :err   : [  455.647692] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00005624b13d89a0
kern  :err   : [  455.647863] RBP: 0000000000000000 R08: 0000000000000ff6 R09: 0000000000001000
kern  :err   : [  455.648036] R10: 4e45505355533253 R11: 0000000000000246 R12: 00007ffc063cb91c
kern  :err   : [  455.648208] R13: 00000000ffffffff R14: 0000000012c00000 R15: 00005624b13d95d0
kern  :err   : [  455.648387]  </TASK>

kern  :err   : [  455.648549] The buggy address belongs to the physical page:
kern  :warn  : [  455.648692] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff8881573e5b30 pfn:0x1573e4
kern  :warn  : [  455.648902] flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)
kern  :warn  : [  455.649065] raw: 0017ffffc0000000 ffffea0005bb6508 ffff88833c7cb600 0000000000000000
kern  :warn  : [  455.649249] raw: ffff8881573e5b30 0000000000000000 00000000ffffffff 0000000000000000
kern  :warn  : [  455.649430] page dumped because: kasan: bad access detected

kern  :err   : [  455.649647] Memory state around the buggy address:
kern  :err   : [  455.649777]  ffff8881573e3f00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.649945]  ffff8881573e3f80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.650115] >ffff8881573e4000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.650286]                    ^
kern  :err   : [  455.650392]  ffff8881573e4080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.650563]  ffff8881573e4100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.650733] ==================================================================
kern  :warn  : [  455.650954] Disabling lock debugging due to kernel taint
user  :notice: [  455.655806] mkswap01 3 TINFO: Can not do swapon on /dev/loop0.



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

From: sxwjean@me.com
To: vbabka@suse.cz,
	surenb@google.com
Cc: cl@linux.co,
	penberg@kernel.org,
	rientjes@google.com,
	iamjoonsoo.kim@lge.com,
	akpm@linux-foundation.org,
	roman.gushchin@linux.dev,
	42.hyeyoo@gmail.com,
	xiongwei.song@linux.dev,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	kernel test robot <lkp@intel.com>
Subject: [PATCH] mm/slub: quiet the clang warning with -Wunused-function enabled
Date: Wed, 10 Jul 2024 10:54:18 +0800
Message-Id: <20240710025418.394321-1-sxwjean@me.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272999 org.kvack.linux-mm:203193
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Xiongwei Song <xiongwei.song@linux.dev>

The only user of prepare_slab_obj_exts_hook() is
alloc_tagging_slab_alloc_hook(), which can build with
CONFIG_MEM_ALLOC_PROFILING enabled. So, the warning was triggerred
when disabling CONFIG_MEM_ALLOC_PROFILING. Let's add "__maybe_unused"
for prepare_slab_obj_exts_hook().

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407050845.zNONqauD-lkp@intel.com/
Signed-off-by: Xiongwei Song <xiongwei.song@linux.dev>
---
 mm/slub.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/slub.c b/mm/slub.c
index ce39544acf7c..2e26f20759c0 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2027,7 +2027,7 @@ static inline bool need_slab_obj_ext(void)
 	return false;
 }
 
-static inline struct slabobj_ext *
+static inline struct slabobj_ext * __maybe_unused
 prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p)
 {
 	struct slab *slab;
@@ -2068,7 +2068,7 @@ static inline bool need_slab_obj_ext(void)
 	return false;
 }
 
-static inline struct slabobj_ext *
+static inline struct slabobj_ext * __maybe_unused
 prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p)
 {
 	return NULL;
-- 
2.34.1

.

Return-Path: <linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org>
From: Chunyan Zhang <zhangchunyan@iscas.ac.cn>
To: Paul Walmsley <paul.walmsley@sifive.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Albert Ou <aou@eecs.berkeley.edu>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Chunyan Zhang <zhang.lyra@gmail.com>
Subject: [PATCH] riscv/mm: Add soft-dirty page tracking support
Date: Wed, 10 Jul 2024 11:30:04 +0800
Message-Id: <20240710033004.3923527-1-zhangchunyan@iscas.ac.cn>
MIME-Version: 1.0
X-BeenThere: linux-riscv@lists.infradead.org
X-Mailman-Version: 2.1.34
List-Id: <linux-riscv.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
List-Post: <mailto:linux-riscv@lists.infradead.org>
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79556 org.kernel.vger.linux-kernel:1273000
Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The PTE bit (9) is reserved for software, so we can use it for
soft-dirty tracking. This patch adds its standard handlers for
PTE, PMD, and swap entry.

To add swap PTE soft-dirty tracking, we borrow bit (4) which is
available for swap PTEs on RISC-V systems.

This patch has been tested with the kselftest mm suite in which
soft-dirty and madv_populate run and pass, and no regressions
are observed in any of the other tests.

Signed-off-by: Chunyan Zhang <zhangchunyan@iscas.ac.cn>
---
 arch/riscv/Kconfig                    |  1 +
 arch/riscv/include/asm/pgtable-bits.h | 13 ++++++
 arch/riscv/include/asm/pgtable.h      | 65 ++++++++++++++++++++++++++-
 3 files changed, 78 insertions(+), 1 deletion(-)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index b94176e25be1..2e3ad2925a6b 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -118,6 +118,7 @@ config RISCV
 	select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
 	select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET
 	select HAVE_ARCH_SECCOMP_FILTER
+	select HAVE_ARCH_SOFT_DIRTY
 	select HAVE_ARCH_THREAD_STRUCT_WHITELIST
 	select HAVE_ARCH_TRACEHOOK
 	select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT && MMU
diff --git a/arch/riscv/include/asm/pgtable-bits.h b/arch/riscv/include/asm/pgtable-bits.h
index 179bd4afece4..bab48f5fd1e2 100644
--- a/arch/riscv/include/asm/pgtable-bits.h
+++ b/arch/riscv/include/asm/pgtable-bits.h
@@ -19,6 +19,19 @@
 #define _PAGE_SOFT      (3 << 8)    /* Reserved for software */
 
 #define _PAGE_SPECIAL   (1 << 8)    /* RSW: 0x1 */
+
+#ifdef CONFIG_MEM_SOFT_DIRTY
+#define _PAGE_SOFT_DIRTY	(1 << 9)    /* RSW: 0x2 for software dirty tracking */
+/*
+ * BIT 4 is not involved into swap entry computation, so we
+ * can borrow it for swap page soft-dirty tracking.
+ */
+#define _PAGE_SWP_SOFT_DIRTY	_PAGE_USER
+#else
+#define _PAGE_SOFT_DIRTY	0
+#define _PAGE_SWP_SOFT_DIRTY	0
+#endif /* CONFIG_MEM_SOFT_DIRTY */
+
 #define _PAGE_TABLE     _PAGE_PRESENT
 
 /*
diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
index aad8b8ca51f1..46f512f52580 100644
--- a/arch/riscv/include/asm/pgtable.h
+++ b/arch/riscv/include/asm/pgtable.h
@@ -408,7 +408,7 @@ static inline pte_t pte_mkwrite_novma(pte_t pte)
 
 static inline pte_t pte_mkdirty(pte_t pte)
 {
-	return __pte(pte_val(pte) | _PAGE_DIRTY);
+	return __pte(pte_val(pte) | _PAGE_DIRTY | _PAGE_SOFT_DIRTY);
 }
 
 static inline pte_t pte_mkclean(pte_t pte)
@@ -436,6 +436,36 @@ static inline pte_t pte_mkhuge(pte_t pte)
 	return pte;
 }
 
+static inline int pte_soft_dirty(pte_t pte)
+{
+	return pte_val(pte) & _PAGE_SOFT_DIRTY;
+}
+
+static inline pte_t pte_mksoft_dirty(pte_t pte)
+{
+	return __pte(pte_val(pte) | _PAGE_SOFT_DIRTY);
+}
+
+static inline pte_t pte_clear_soft_dirty(pte_t pte)
+{
+	return __pte(pte_val(pte) & ~(_PAGE_SOFT_DIRTY));
+}
+
+static inline int pte_swp_soft_dirty(pte_t pte)
+{
+	return pte_val(pte) & _PAGE_SWP_SOFT_DIRTY;
+}
+
+static inline pte_t pte_swp_mksoft_dirty(pte_t pte)
+{
+	return __pte(pte_val(pte) | _PAGE_SWP_SOFT_DIRTY);
+}
+
+static inline pte_t pte_swp_clear_soft_dirty(pte_t pte)
+{
+	return __pte(pte_val(pte) & ~(_PAGE_SWP_SOFT_DIRTY));
+}
+
 #ifdef CONFIG_RISCV_ISA_SVNAPOT
 #define pte_leaf_size(pte)	(pte_napot(pte) ?				\
 					napot_cont_size(napot_cont_order(pte)) :\
@@ -721,6 +751,38 @@ static inline pmd_t pmd_mkdirty(pmd_t pmd)
 	return pte_pmd(pte_mkdirty(pmd_pte(pmd)));
 }
 
+static inline int pmd_soft_dirty(pmd_t pmd)
+{
+	return pte_soft_dirty(pmd_pte(pmd));
+}
+
+static inline pmd_t pmd_mksoft_dirty(pmd_t pmd)
+{
+	return pte_pmd(pte_mksoft_dirty(pmd_pte(pmd)));
+}
+
+static inline pmd_t pmd_clear_soft_dirty(pmd_t pmd)
+{
+	return pte_pmd(pte_clear_soft_dirty(pmd_pte(pmd)));
+}
+
+#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION
+static inline int pmd_swp_soft_dirty(pmd_t pmd)
+{
+	return pte_swp_soft_dirty(pmd_pte(pmd));
+}
+
+static inline pmd_t pmd_swp_mksoft_dirty(pmd_t pmd)
+{
+	return pte_pmd(pte_swp_mksoft_dirty(pmd_pte(pmd)));
+}
+
+static inline pmd_t pmd_swp_clear_soft_dirty(pmd_t pmd)
+{
+	return pte_pmd(pte_swp_clear_soft_dirty(pmd_pte(pmd)));
+}
+#endif /* CONFIG_ARCH_ENABLE_THP_MIGRATION */
+
 static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
 				pmd_t *pmdp, pmd_t pmd)
 {
@@ -811,6 +873,7 @@ extern pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,
  * Format of swap PTE:
  *	bit            0:	_PAGE_PRESENT (zero)
  *	bit       1 to 3:       _PAGE_LEAF (zero)
+ *	bit            4:	_PAGE_SWP_SOFT_DIRTY
  *	bit            5:	_PAGE_PROT_NONE (zero)
  *	bit            6:	exclusive marker
  *	bits      7 to 11:	swap type
-- 
2.34.1


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
.

From: Chen Ni <nichen@iscas.ac.cn>
To: fenghua.yu@intel.com,
	dave.jiang@intel.com,
	vkoul@kernel.org
Cc: dmaengine@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH] dmaengine: idxd: Convert comma to semicolon
Date: Wed, 10 Jul 2024 11:07:25 +0800
Message-Id: <20240710030725.1960882-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273009
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.dmaengine
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
 drivers/dma/idxd/perfmon.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/idxd/perfmon.c b/drivers/dma/idxd/perfmon.c
index 5e94247e1ea7..e596ea60ed3c 100644
--- a/drivers/dma/idxd/perfmon.c
+++ b/drivers/dma/idxd/perfmon.c
@@ -480,8 +480,8 @@ static void idxd_pmu_init(struct idxd_pmu *idxd_pmu)
 	idxd_pmu->pmu.attr_groups	= perfmon_attr_groups;
 	idxd_pmu->pmu.task_ctx_nr	= perf_invalid_context;
 	idxd_pmu->pmu.event_init	= perfmon_pmu_event_init;
-	idxd_pmu->pmu.pmu_enable	= perfmon_pmu_enable,
-	idxd_pmu->pmu.pmu_disable	= perfmon_pmu_disable,
+	idxd_pmu->pmu.pmu_enable	= perfmon_pmu_enable;
+	idxd_pmu->pmu.pmu_disable	= perfmon_pmu_disable;
 	idxd_pmu->pmu.add		= perfmon_pmu_event_add;
 	idxd_pmu->pmu.del		= perfmon_pmu_event_del;
 	idxd_pmu->pmu.start		= perfmon_pmu_event_start;
-- 
2.25.1

.

From: Zhiguo Jiang <justinjiang@vivo.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>
Cc: opensource.kernel@vivo.com,
	Zhiguo Jiang <justinjiang@vivo.com>
Subject: [PATCH v9] mm: shrink skip folio mapped by an exiting process
Date: Wed, 10 Jul 2024 11:10:20 +0800
Message-ID: <20240710031020.1681-1-justinjiang@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273013 org.kvack.linux-mm:203201
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The releasing process of the non-shared anonymous folio mapped solely by
an exiting process may go through two flows: 1) the anonymous folio is
firstly is swaped-out into swapspace and transformed into a swp_entry
in shrink_folio_list; 2) then the swp_entry is released in the process
exiting flow. This will result in the high cpu load of releasing a
non-shared anonymous folio mapped solely by an exiting process.

When the low system memory and the exiting process exist at the same
time, it will be likely to happen, because the non-shared anonymous
folio mapped solely by an exiting process may be reclaimed by
shrink_folio_list.

This patch is that shrink skips the non-shared anonymous folio solely
mapped by an exting process and this folio is only released directly in
the process exiting flow, which will save swap-out time and alleviate
the load of the process exiting. 

Acked-by: Barry Song <baohua@kernel.org>
Signed-off-by: Zhiguo Jiang <justinjiang@vivo.com>
---

Change log:
v8->v9:
1.Update Reviewed-by tag information.
v7->v8:
1.Add tags of Reviewed-by and Acked-by.
2.Add #include <linux/oom.h> to solve compilation issue.
v6->v7:
1.Modify tab indentation to space indentation of the continuation
lines of the condition.
v5->v6:
1.Move folio_likely_mapped_shared() under the PTL.
2.Add check_stable_address_space() to replace MMF_OOM_SKIP.
3.Remove folio_test_anon(folio).
v4->v5:
1.Further modify to skip non-shared anonymous folio only.
2.Update comments for pra->referenced = -1.
v3->v4:
1.Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process.
v2->v3:
Nothing.
v1->v2:
1.The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

Comments from participants and my responses:
[v8->v9]:
1.Barry Song <baohua@kernel.org>
No, this is a disaster. Please ask someone for help before you send it.
Neither Willy nor David has ever posted any Reviewed-by tags.
Please do get someone to help you. Stop posting like this!
-->
Update Reviewed-by tag information in v9.

[v7->v8]:
1.Barry Song <baohua@kernel.org>
You should have collected tags such as reviewed-by, acked-by you got in
v6 while sending v7.
-->
Added in patch v8.

You didn't even pass the compilation stage because you're missing
'linux/oom.h'. It's quite disappointing because I believe in your idea,
but you didn't even build it before sending.
-->
Sorry, I overlooked the compilation of folio_likely_mapped_shared() added
in patch v5. Compiled and Updated have been compeleted in patch v8.

[v6->v7]:
1.Matthew Wilcox <willy@infradead.org>
You told me you'd fix the indentation.  You cannot indent both the
continuation lines of the condition and the body of the if by one tab
each!
-->
Modify tab indentation to space indentation of the continuation
lines of the condition.

[v5->v6]:
1.David Hildenbrand <david@redhat.com>
I'm currently working on moving all folio_likely_mapped_shared() under
the PTL, where we are then sure that the folio is actually mapped by
this process (e.g., no concurrent unmapping poisslbe). Can we do the
same here directly? 
-->
You are right. we might use page_vma_mapped_walk_done() to bail out.
(Barry Song)

2.Barry Song <baohua@kernel.org>
By the way, I am not convinced that using test_bit(MMF_OOM_SKIP,
&vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap()
automatically has MMF_OOM_SKIP. What is the purpose of this check?
Is there a better way to determine if a process is an OOM target?
What about check_stable_address_space() ?
-->
Sorry, I overlook the situation with if (is_global_init(p)),
MMF_OOM_SKIP is indeed not suitable. It seems feasible for
check_stable_address_space() replacing MMF_OOM_SKIP.
check_stable_address_space() can indicate oom kill, and
!atomic_read(&vma->vm_mm->mm_users) can indicate the normal
process exiting. 

I also think we actually can remove "folio_test_anon(folio)".
-->
Yes, update in patch v6.

[v4->v5]:
1.Barry Song <baohua@kernel.org>
I don't think this is correct. folio_likely_mapped_shared() is almost
"correct" but not always.
Please explain why you set  pra->referenced =  -1. Please address all
comments before you send a new version.
-->
Update in patch v5.

2.Matthew Wilcox <willy@infradead.org>
How is the file folio similar?  File folios are never written to swap,
and they'll be written back from the page cache whenever the filesystem
decides it's a good time to do so.
-->
What do you mean is that the file folio will not have any relevant
identifier left in memory after it is reclamed in the shrink flow,
and it will not be released again during an exiting process? If that's
the case, I think we only need the anon folio is skipped here. 

[v3->v4]:
1.Barry Song <baohua@kernel.org>
This is clearly version 3, as you previously sent version 2, correct?
-->
Yes.

Could you please describe the specific impact on users, including user
experience and power consumption? How serious is this problem?
-->
At present, I do not have a suitable method to accurately measure the
optimization benefit datas of this modifications, but I believe it
theoretically has some benefits.
Launching large memory app (for example, starting the camera) in multiple
backend scenes may result in the high cpu load of the exiting processes. 

Applications?
-->
Yes, when system is low memory, it more likely to occur.

I'm not completely convinced this patch is correct, but it appears to be
heading in the right direction. Therefore, I expect to see new versions
rather than it being dead.
You changed the file mode to 755, which is incorrect.
-->
Solved.

Why use -1? Is this meant to simulate lock contention to keep the folio
without activating it? Please do have some comments to explain why.
I'm not convinced this change is appropriate for shared folios. It seems
more suitable for exclusive folios used solely by the exiting process.
-->
The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase
the folios will be freed soon in the exiting process flow.
Yes, the shared folios can not be simply skipped. I have made relevant
modifications in patch v4 and please help to further review.
https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/

2.David Hildenbrand <david@redhat.com>
but what if it is shared among multiple processes and only one of them
is exiting?
-->
Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process in next version v4.

[v2->v3:]
Nothing.

[v1->v2]:
1.Matthew Wilcox <willy@infradead.org>
What testing have you done of this patch?  How often does it happen?
Are there particular workloads that benefit from this?  (I'm not sure
what "mutil backed-applications" are?)
And I do mean specifically of this patch, because to my eyes it
shouldn't even compile. Except on 32-bit where it'll say "warning:
integer constant out of range".
-->
Yes, I have tested. When the low system memory and the exiting process
exist at the same time, it will happen. This modification can alleviate
the load of the exiting process. 
"mutil backed-applications" means that there are a large number of
the backend applications in the system.
The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

 mm/rmap.c   | 15 +++++++++++++++
 mm/vmscan.c |  7 ++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/mm/rmap.c b/mm/rmap.c
index 26806b49a86f..5b92c3dadcc2 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -75,6 +75,7 @@
 #include <linux/memremap.h>
 #include <linux/userfaultfd_k.h>
 #include <linux/mm_inline.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 
@@ -870,6 +871,20 @@ static bool folio_referenced_one(struct folio *folio,
 			continue;
 		}
 
+		/*
+		 * Skip the non-shared swapbacked folio mapped solely by
+		 * the exiting or OOM-reaped process. This avoids redundant
+		 * swap-out followed by an immediate unmap.
+		 */
+		if ((!atomic_read(&vma->vm_mm->mm_users) ||
+		    check_stable_address_space(vma->vm_mm)) &&
+		    folio_test_swapbacked(folio) &&
+		    !folio_likely_mapped_shared(folio)) {
+			pra->referenced = -1;
+			page_vma_mapped_walk_done(&pvmw);
+			return false;
+		}
+
 		if (pvmw.pte) {
 			if (lru_gen_enabled() &&
 			    pte_young(ptep_get(pvmw.pte))) {
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 80f9a486cf27..1d5f78a3dbeb 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio,
 	if (vm_flags & VM_LOCKED)
 		return FOLIOREF_ACTIVATE;
 
-	/* rmap lock contention: rotate */
+	/*
+	 * There are two cases to consider.
+	 * 1) Rmap lock contention: rotate.
+	 * 2) Skip the non-shared swapbacked folio mapped solely by
+	 *    the exiting or OOM-reaped process.
+	 */
 	if (referenced_ptes == -1)
 		return FOLIOREF_KEEP;
 
-- 
2.39.0

.

From: Chen Ni <nichen@iscas.ac.cn>
To: linus.walleij@linaro.org,
	brgl@bgdev.pl
Cc: linux-gpio@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH] gpio: mc33880: Convert comma to semicolon
Date: Wed, 10 Jul 2024 11:11:08 +0800
Message-Id: <20240710031108.2002416-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273017
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-gpio
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
 drivers/gpio/gpio-mc33880.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpio/gpio-mc33880.c b/drivers/gpio/gpio-mc33880.c
index 94f6fefc011b..5fb357d7b78a 100644
--- a/drivers/gpio/gpio-mc33880.c
+++ b/drivers/gpio/gpio-mc33880.c
@@ -99,7 +99,7 @@ static int mc33880_probe(struct spi_device *spi)
 
 	mc->spi = spi;
 
-	mc->chip.label = DRIVER_NAME,
+	mc->chip.label = DRIVER_NAME;
 	mc->chip.set = mc33880_set;
 	mc->chip.base = pdata->base;
 	mc->chip.ngpio = PIN_NUMBER;
-- 
2.25.1

.

From: Tianyang Zhang <zhangtianyang@loongson.cn>
To: corbet@lwn.net,
	alexs@kernel.org,
	siyanteng@loongson.cn,
	chenhuacai@kernel.org,
	kernel@xen0n.name,
	tglx@linutronix.de,
	jiaxun.yang@flygoat.com,
	gaoliang@loongson.cn,
	wangliupu@loongson.cn,
	lvjianmin@loongson.cn,
	zhangtianyang@loongson.cn,
	yijun@loongson.cn,
	mhocko@suse.com,
	akpm@linux-foundation.org,
	dianders@chromium.org,
	maobibo@loongson.cn,
	xry111@xry111.site,
	zhaotianrui@loongson.cn,
	nathan@kernel.org,
	yangtiezhu@loongson.cn,
	zhoubinbin@loongson.cn
Cc: loongarch@lists.linux.dev,
	linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH V4] LoongArch: Add AVEC irqchip support
Date: Wed, 10 Jul 2024 11:14:14 +0800
Message-Id: <20240710031414.6069-1-zhangtianyang@loongson.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273019
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.loongarch,org.kernel.vger.linux-doc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Introduce the advanced extended interrupt controllers. This feature will
allow each core to have 256 independent interrupt vectors and MSI
interrupts can be independently routed to any vector on any CPU.

Co-developed-by: Jianmin Lv <lvjianmin@loongson.cn>
Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn>
Co-developed-by: Liupu Wang <wangliupu@loongson.cn>
Signed-off-by: Liupu Wang <wangliupu@loongson.cn>
Co-developed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn>
---
 .../arch/loongarch/irq-chip-model.rst         |  33 ++
 .../zh_CN/arch/loongarch/irq-chip-model.rst   |  37 +-
 arch/loongarch/Kconfig                        |   1 +
 arch/loongarch/include/asm/cpu-features.h     |   1 +
 arch/loongarch/include/asm/cpu.h              |   2 +
 arch/loongarch/include/asm/irq.h              |  23 +-
 arch/loongarch/include/asm/loongarch.h        |  19 +-
 arch/loongarch/include/asm/smp.h              |   2 +
 arch/loongarch/kernel/cpu-probe.c             |   3 +-
 arch/loongarch/kernel/smp.c                   |   5 +
 drivers/irqchip/Makefile                      |   2 +-
 drivers/irqchip/irq-loongarch-avec.c          | 433 ++++++++++++++++++
 drivers/irqchip/irq-loongarch-cpu.c           |   4 +-
 drivers/irqchip/irq-loongson-eiointc.c        |   3 +
 drivers/irqchip/irq-loongson-pch-msi.c        |  42 +-
 15 files changed, 596 insertions(+), 14 deletions(-)
 create mode 100644 drivers/irqchip/irq-loongarch-avec.c

Changes log:
V0->V1:
        1.Modified some formats and declarations
        2.Removed kmalloc/kfree when adding affinity related data to pending_list,
          and used moving tag to replace the original behavior
        3.Adjusted the process that enables AVEC interrupts, now it is at the end of all processes
        4.Removed CPUHP related callbacks, now irq_matrix_online/irq_matrix_offline is completed in start_secondary/loongson_cpu_disable
        5.Adjusted compatibility issues for CONFIG_ACPI
        6.About question:
        > irr = csr_read64(LOONGARCH_CSR_IRR0 + vector / 64);
        > should be good enough, no?
        csr_read64 was built-in as __csrrd_d, it doesn't seem to support variables as parameters
        >>>>
        drivers/irqchip/irq-loongarch-avec.c: In function â€˜complete_irq_movingâ€™:
        ./arch/loongarch/include/asm/loongarch.h:164:25: error: invalid argument to built-in function
          164 | #define csr_read64(reg) __csrrd_d(reg)
              |                         ^~~~~~~~~
        drivers/irqchip/irq-loongarch-avec.c:170:23: note: in expansion of macro â€˜csr_read64â€™
          170 |                 irr = csr_read64(LOONGARCH_CSR_IRR_BASE + vector / VECTORS_PER_REG);
              |                       ^~~~~~~~~~
        >>>>
        So we have temporarily retained the previous implementation.

V1->V2:
        Fixed up coding style. Made on/offline functions void
        Added compatibility when CONFIG_SMP is turned off

V2->V3:
	Squash two patches into one

V3->V4:
	Update NR_IRQS
	Update Register's name
	Fixed up coding style

diff --git a/Documentation/arch/loongarch/irq-chip-model.rst b/Documentation/arch/loongarch/irq-chip-model.rst
index 7988f4192363..a90c78c8e5bb 100644
--- a/Documentation/arch/loongarch/irq-chip-model.rst
+++ b/Documentation/arch/loongarch/irq-chip-model.rst
@@ -85,6 +85,39 @@ to CPUINTC directly::
     | Devices |
     +---------+
 
+Advanced Extended IRQ model
+===========================
+
+In this model, IPI (Inter-Processor Interrupt) and CPU Local Timer interrupt go
+to CPUINTC directly, CPU UARTS interrupts go to LIOINTC, PCH-MSI interrupts go to AVEC,
+and then go to CPUINTC, Other devices interrupts go to PCH-PIC/PCH-LPC and gathered
+by EIOINTC, and then go to CPUINTC directly::
+
+ +-----+     +--------------------------+     +-------+
+ | IPI | --> |           CPUINTC        | <-- | Timer |
+ +-----+     +--------------------------+     +-------+
+              ^        ^             ^
+              |        |             |
+      +--------+  +---------+ +---------+     +-------+
+      | AVEC   |  | EIOINTC | | LIOINTC | <-- | UARTs |
+      +--------+  +---------+ +---------+     +-------+
+           ^            ^
+           |            |
+         +---------+  +---------+
+         | PCH-MSI |  | PCH-PIC |
+         +---------+  +---------+
+            ^          ^       ^
+            |          |       |
+    +---------+ +---------+ +---------+
+    | Devices | | PCH-LPC | | Devices |
+    +---------+ +---------+ +---------+
+                     ^
+                     |
+                +---------+
+                | Devices |
+                +---------+
+
+
 ACPI-related definitions
 ========================
 
diff --git a/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst b/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
index f1e9ab18206c..b54567380c90 100644
--- a/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
+++ b/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
@@ -9,9 +9,8 @@
 LoongArchçš„IRQèŠ¯ç‰‡æ¨¡åž‹ï¼ˆå±‚çº§å…³ç³»ï¼‰
 ==================================
 
-ç›®å‰�ï¼ŒåŸºäºŽLoongArchçš„å¤„ç�†å™¨ï¼ˆå¦‚é¾™èŠ¯3A5000ï¼‰å�ªèƒ½ä¸ŽLS7AèŠ¯ç‰‡ç»„é…�å�ˆå·¥ä½œã€‚LoongArchè®¡ç®—æœº
-ä¸­çš„ä¸­æ–­æŽ§åˆ¶å™¨ï¼ˆå�³IRQèŠ¯ç‰‡ï¼‰åŒ…æ‹¬CPUINTCï¼ˆCPU Core Interrupt Controllerï¼‰ã€�LIOINTCï¼ˆ
-Legacy I/O Interrupt Controllerï¼‰ã€�EIOINTCï¼ˆExtended I/O Interrupt Controllerï¼‰ã€�
+LoongArchè®¡ç®—æœºä¸­çš„ä¸­æ–­æŽ§åˆ¶å™¨ï¼ˆå�³IRQèŠ¯ç‰‡ï¼‰åŒ…æ‹¬CPUINTCï¼ˆCPU Core Interrupt Controllerï¼‰ã€�
+LIOINTCï¼ˆLegacy I/O Interrupt Controllerï¼‰ã€�EIOINTCï¼ˆExtended I/O Interrupt Controllerï¼‰ã€�
 HTVECINTCï¼ˆHyper-Transport Vector Interrupt Controllerï¼‰ã€�PCH-PICï¼ˆLS7AèŠ¯ç‰‡ç»„çš„ä¸»ä¸­
 æ–­æŽ§åˆ¶å™¨ï¼‰ã€�PCH-LPCï¼ˆLS7AèŠ¯ç‰‡ç»„çš„LPCä¸­æ–­æŽ§åˆ¶å™¨ï¼‰å’ŒPCH-MSIï¼ˆMSIä¸­æ–­æŽ§åˆ¶å™¨ï¼‰ã€‚
 
@@ -87,6 +86,38 @@ PCH-LPC/PCH-MSIï¼Œç„¶å�Žè¢«EIOINTCç»Ÿä¸€æ”¶é›†ï¼Œå†�ç›´æŽ¥åˆ°è¾¾CPUINTC::
     | Devices |
     +---------+
 
+é«˜çº§æ‰©å±•IRQæ¨¡åž‹
+=======================
+
+åœ¨è¿™ç§�æ¨¡åž‹é‡Œé�¢ï¼ŒIPIï¼ˆInter-Processor Interruptï¼‰å’ŒCPUæœ¬åœ°æ—¶é’Ÿä¸­æ–­ç›´æŽ¥å�‘é€�åˆ°CPUINTCï¼Œ
+CPUä¸²å�£ï¼ˆUARTsï¼‰ä¸­æ–­å�‘é€�åˆ°LIOINTCï¼ŒPCH-MSIä¸­æ–­å�‘é€�åˆ°AVECï¼Œè€Œå�Žé€šè¿‡AVECé€�è¾¾CPUINTCï¼Œè€Œ
+å…¶ä»–æ‰€æœ‰è®¾å¤‡çš„ä¸­æ–­åˆ™åˆ†åˆ«å�‘é€�åˆ°æ‰€è¿žæŽ¥çš„PCH-PIC/PCH-LPCï¼Œç„¶å�Žç”±EIOINTCç»Ÿä¸€æ”¶é›†ï¼Œå†�ç›´
+æŽ¥åˆ°è¾¾CPUINTC::
+
+ +-----+     +--------------------------+     +-------+
+ | IPI | --> |           CPUINTC        | <-- | Timer |
+ +-----+     +--------------------------+     +-------+
+              ^        ^             ^
+              |        |             |
+      +--------+  +---------+ +---------+     +-------+
+      | AVEC   |  | EIOINTC | | LIOINTC | <-- | UARTs |
+      +--------+  +---------+ +---------+     +-------+
+              ^        ^
+              |        |
+      +---------+  +-------------+
+      | PCH-MSI |  |   PCH-PIC   |
+      +---------+  +-------------+
+            ^          ^       ^
+            |          |       |
+    +---------+ +---------+ +---------+
+    | Devices | | PCH-LPC | | Devices |
+    +---------+ +---------+ +---------+
+                     ^
+                     |
+                +---------+
+                | Devices |
+                +---------+
+
 ACPIç›¸å…³çš„å®šä¹‰
 ==============
 
diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
index e38139c576ee..a66e49b5a68c 100644
--- a/arch/loongarch/Kconfig
+++ b/arch/loongarch/Kconfig
@@ -83,6 +83,7 @@ config LOONGARCH
 	select GENERIC_ENTRY
 	select GENERIC_GETTIMEOFDAY
 	select GENERIC_IOREMAP if !ARCH_IOREMAP
+	select GENERIC_IRQ_MATRIX_ALLOCATOR
 	select GENERIC_IRQ_MULTI_HANDLER
 	select GENERIC_IRQ_PROBE
 	select GENERIC_IRQ_SHOW
diff --git a/arch/loongarch/include/asm/cpu-features.h b/arch/loongarch/include/asm/cpu-features.h
index 2eafe6a6aca8..16a716f88a5c 100644
--- a/arch/loongarch/include/asm/cpu-features.h
+++ b/arch/loongarch/include/asm/cpu-features.h
@@ -65,5 +65,6 @@
 #define cpu_has_guestid		cpu_opt(LOONGARCH_CPU_GUESTID)
 #define cpu_has_hypervisor	cpu_opt(LOONGARCH_CPU_HYPERVISOR)
 #define cpu_has_ptw		cpu_opt(LOONGARCH_CPU_PTW)
+#define cpu_has_avecint		cpu_opt(LOONGARCH_CPU_AVECINT)
 
 #endif /* __ASM_CPU_FEATURES_H */
diff --git a/arch/loongarch/include/asm/cpu.h b/arch/loongarch/include/asm/cpu.h
index 48b9f7168bcc..843f9c4ec980 100644
--- a/arch/loongarch/include/asm/cpu.h
+++ b/arch/loongarch/include/asm/cpu.h
@@ -99,6 +99,7 @@ enum cpu_type_enum {
 #define CPU_FEATURE_GUESTID		24	/* CPU has GuestID feature */
 #define CPU_FEATURE_HYPERVISOR		25	/* CPU has hypervisor (running in VM) */
 #define CPU_FEATURE_PTW			26	/* CPU has hardware page table walker */
+#define CPU_FEATURE_AVECINT		27	/* CPU has avec interrupt */
 
 #define LOONGARCH_CPU_CPUCFG		BIT_ULL(CPU_FEATURE_CPUCFG)
 #define LOONGARCH_CPU_LAM		BIT_ULL(CPU_FEATURE_LAM)
@@ -127,5 +128,6 @@ enum cpu_type_enum {
 #define LOONGARCH_CPU_GUESTID		BIT_ULL(CPU_FEATURE_GUESTID)
 #define LOONGARCH_CPU_HYPERVISOR	BIT_ULL(CPU_FEATURE_HYPERVISOR)
 #define LOONGARCH_CPU_PTW		BIT_ULL(CPU_FEATURE_PTW)
+#define LOONGARCH_CPU_AVECINT		BIT_ULL(CPU_FEATURE_AVECINT)
 
 #endif /* _ASM_CPU_H */
diff --git a/arch/loongarch/include/asm/irq.h b/arch/loongarch/include/asm/irq.h
index 480418bc5071..899e6f9a9eaa 100644
--- a/arch/loongarch/include/asm/irq.h
+++ b/arch/loongarch/include/asm/irq.h
@@ -39,11 +39,22 @@ void spurious_interrupt(void);
 
 #define NR_IRQS_LEGACY 16
 
+/*
+ * 256 vectors Map:
+ *
+ * 0 - 15: mapping legacy IPs, e.g. IP0-12.
+ * 16 - 255: mapping a vector for external IRQ.
+ *
+ */
+#define NR_VECTORS		256
+#define IRQ_MATRIX_BITS		NR_VECTORS
+#define NR_LEGACY_VECTORS	16
+
 #define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
 void arch_trigger_cpumask_backtrace(const struct cpumask *mask, int exclude_cpu);
 
 #define MAX_IO_PICS 2
-#define NR_IRQS	(64 + (256 * MAX_IO_PICS))
+#define NR_IRQS	((64 + (64 * MAX_IO_PICS)) + NR_VECTORS * NR_CPUS)
 
 struct acpi_vector_group {
 	int node;
@@ -65,7 +76,7 @@ extern struct acpi_vector_group msi_group[MAX_IO_PICS];
 #define LOONGSON_LPC_LAST_IRQ		(LOONGSON_LPC_IRQ_BASE + 15)
 
 #define LOONGSON_CPU_IRQ_BASE		16
-#define LOONGSON_CPU_LAST_IRQ		(LOONGSON_CPU_IRQ_BASE + 14)
+#define LOONGSON_CPU_LAST_IRQ		(LOONGSON_CPU_IRQ_BASE + 15)
 
 #define LOONGSON_PCH_IRQ_BASE		64
 #define LOONGSON_PCH_ACPI_IRQ		(LOONGSON_PCH_IRQ_BASE + 47)
@@ -101,6 +112,14 @@ int pch_msi_acpi_init(struct irq_domain *parent,
 					struct acpi_madt_msi_pic *acpi_pchmsi);
 int pch_pic_acpi_init(struct irq_domain *parent,
 					struct acpi_madt_bio_pic *acpi_pchpic);
+
+int __init pch_msi_acpi_init_v2(struct irq_domain *parent,
+		struct acpi_madt_msi_pic *pch_msi_entry);
+int __init loongarch_avec_acpi_init(struct irq_domain *parent);
+void complete_irq_moving(void);
+void loongarch_avec_offline_cpu(unsigned int cpu);
+void loongarch_avec_online_cpu(unsigned int cpu);
+
 int find_pch_pic(u32 gsi);
 struct fwnode_handle *get_pch_msi_handle(int pci_segment);
 
diff --git a/arch/loongarch/include/asm/loongarch.h b/arch/loongarch/include/asm/loongarch.h
index eb09adda54b7..805f51eaac06 100644
--- a/arch/loongarch/include/asm/loongarch.h
+++ b/arch/loongarch/include/asm/loongarch.h
@@ -72,7 +72,6 @@
 #define  CPUCFG1_RPLV			BIT(23)
 #define  CPUCFG1_HUGEPG			BIT(24)
 #define  CPUCFG1_CRC32			BIT(25)
-#define  CPUCFG1_MSGINT			BIT(26)
 
 #define LOONGARCH_CPUCFG2		0x2
 #define  CPUCFG2_FP			BIT(0)
@@ -252,8 +251,8 @@
 #define  CSR_ESTAT_EXC_WIDTH		6
 #define  CSR_ESTAT_EXC			(_ULCAST_(0x3f) << CSR_ESTAT_EXC_SHIFT)
 #define  CSR_ESTAT_IS_SHIFT		0
-#define  CSR_ESTAT_IS_WIDTH		14
-#define  CSR_ESTAT_IS			(_ULCAST_(0x3fff) << CSR_ESTAT_IS_SHIFT)
+#define  CSR_ESTAT_IS_WIDTH		15
+#define  CSR_ESTAT_IS			(_ULCAST_(0x7fff) << CSR_ESTAT_IS_SHIFT)
 
 #define LOONGARCH_CSR_ERA		0x6	/* ERA */
 
@@ -999,10 +998,17 @@
 #define CSR_FWPC_SKIP_SHIFT		16
 #define CSR_FWPC_SKIP			(_ULCAST_(1) << CSR_FWPC_SKIP_SHIFT)
 
+#define LOONGARCH_CSR_ISR0		0xa0
+#define LOONGARCH_CSR_ISR1		0xa1
+#define LOONGARCH_CSR_ISR2		0xa2
+#define LOONGARCH_CSR_ISR3		0xa3
+
+#define	LOONGARCH_CSR_IRR		0xa4
+
 /*
  * CSR_ECFG IM
  */
-#define ECFG0_IM		0x00001fff
+#define ECFG0_IM		0x00005fff
 #define ECFGB_SIP0		0
 #define ECFGF_SIP0		(_ULCAST_(1) << ECFGB_SIP0)
 #define ECFGB_SIP1		1
@@ -1045,6 +1051,7 @@
 #define  IOCSRF_EIODECODE		BIT_ULL(9)
 #define  IOCSRF_FLATMODE		BIT_ULL(10)
 #define  IOCSRF_VM			BIT_ULL(11)
+#define  IOCSRF_AVEC			BIT_ULL(15)
 
 #define LOONGARCH_IOCSR_VENDOR		0x10
 
@@ -1055,6 +1062,7 @@
 #define LOONGARCH_IOCSR_MISC_FUNC	0x420
 #define  IOCSR_MISC_FUNC_TIMER_RESET	BIT_ULL(21)
 #define  IOCSR_MISC_FUNC_EXT_IOI_EN	BIT_ULL(48)
+#define  IOCSR_MISC_FUNC_AVEC_EN	BIT_ULL(51)
 
 #define LOONGARCH_IOCSR_CPUTEMP		0x428
 
@@ -1375,9 +1383,10 @@ __BUILD_CSR_OP(tlbidx)
 #define INT_TI		11	/* Timer */
 #define INT_IPI		12
 #define INT_NMI		13
+#define INT_AVEC	14
 
 /* ExcCodes corresponding to interrupts */
-#define EXCCODE_INT_NUM		(INT_NMI + 1)
+#define EXCCODE_INT_NUM		(INT_AVEC + 1)
 #define EXCCODE_INT_START	64
 #define EXCCODE_INT_END		(EXCCODE_INT_START + EXCCODE_INT_NUM - 1)
 
diff --git a/arch/loongarch/include/asm/smp.h b/arch/loongarch/include/asm/smp.h
index 278700cfee88..2399004596a3 100644
--- a/arch/loongarch/include/asm/smp.h
+++ b/arch/loongarch/include/asm/smp.h
@@ -69,9 +69,11 @@ extern int __cpu_logical_map[NR_CPUS];
 #define ACTION_BOOT_CPU	0
 #define ACTION_RESCHEDULE	1
 #define ACTION_CALL_FUNCTION	2
+#define ACTION_CLEAR_VECT	3
 #define SMP_BOOT_CPU		BIT(ACTION_BOOT_CPU)
 #define SMP_RESCHEDULE		BIT(ACTION_RESCHEDULE)
 #define SMP_CALL_FUNCTION	BIT(ACTION_CALL_FUNCTION)
+#define SMP_CLEAR_VECT		BIT(ACTION_CLEAR_VECT)
 
 struct secondary_data {
 	unsigned long stack;
diff --git a/arch/loongarch/kernel/cpu-probe.c b/arch/loongarch/kernel/cpu-probe.c
index 55320813ee08..3b2e72e8f9bd 100644
--- a/arch/loongarch/kernel/cpu-probe.c
+++ b/arch/loongarch/kernel/cpu-probe.c
@@ -106,7 +106,6 @@ static void cpu_probe_common(struct cpuinfo_loongarch *c)
 		elf_hwcap |= HWCAP_LOONGARCH_CRC32;
 	}
 
-
 	config = read_cpucfg(LOONGARCH_CPUCFG2);
 	if (config & CPUCFG2_LAM) {
 		c->options |= LOONGARCH_CPU_LAM;
@@ -176,6 +175,8 @@ static void cpu_probe_common(struct cpuinfo_loongarch *c)
 		c->options |= LOONGARCH_CPU_EIODECODE;
 	if (config & IOCSRF_VM)
 		c->options |= LOONGARCH_CPU_HYPERVISOR;
+	if (config & IOCSRF_AVEC)
+		c->options |= LOONGARCH_CPU_AVECINT;
 
 	config = csr_read32(LOONGARCH_CSR_ASID);
 	config = (config & CSR_ASID_BIT) >> CSR_ASID_BIT_SHIFT;
diff --git a/arch/loongarch/kernel/smp.c b/arch/loongarch/kernel/smp.c
index 0dfe2388ef41..6dfedef306f3 100644
--- a/arch/loongarch/kernel/smp.c
+++ b/arch/loongarch/kernel/smp.c
@@ -234,6 +234,9 @@ static irqreturn_t loongson_ipi_interrupt(int irq, void *dev)
 		per_cpu(irq_stat, cpu).ipi_irqs[IPI_CALL_FUNCTION]++;
 	}
 
+	if (action & SMP_CLEAR_VECT)
+		complete_irq_moving();
+
 	return IRQ_HANDLED;
 }
 
@@ -388,6 +391,7 @@ int loongson_cpu_disable(void)
 	irq_migrate_all_off_this_cpu();
 	clear_csr_ecfg(ECFG0_IM);
 	local_irq_restore(flags);
+	loongarch_avec_offline_cpu(cpu);
 	local_flush_tlb_all();
 
 	return 0;
@@ -566,6 +570,7 @@ asmlinkage void start_secondary(void)
 	 * early is dangerous.
 	 */
 	WARN_ON_ONCE(!irqs_disabled());
+	loongarch_avec_online_cpu(cpu);
 	loongson_smp_finish();
 
 	cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index 2df72b7b165b..de091a9f7c88 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -110,7 +110,7 @@ obj-$(CONFIG_LS1X_IRQ)			+= irq-ls1x.o
 obj-$(CONFIG_TI_SCI_INTR_IRQCHIP)	+= irq-ti-sci-intr.o
 obj-$(CONFIG_TI_SCI_INTA_IRQCHIP)	+= irq-ti-sci-inta.o
 obj-$(CONFIG_TI_PRUSS_INTC)		+= irq-pruss-intc.o
-obj-$(CONFIG_IRQ_LOONGARCH_CPU)		+= irq-loongarch-cpu.o
+obj-$(CONFIG_IRQ_LOONGARCH_CPU)		+= irq-loongarch-cpu.o irq-loongarch-avec.o
 obj-$(CONFIG_LOONGSON_LIOINTC)		+= irq-loongson-liointc.o
 obj-$(CONFIG_LOONGSON_EIOINTC)		+= irq-loongson-eiointc.o
 obj-$(CONFIG_LOONGSON_HTPIC)		+= irq-loongson-htpic.o
diff --git a/drivers/irqchip/irq-loongarch-avec.c b/drivers/irqchip/irq-loongarch-avec.c
new file mode 100644
index 000000000000..9a6832986b3d
--- /dev/null
+++ b/drivers/irqchip/irq-loongarch-avec.c
@@ -0,0 +1,433 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2020-2024 Loongson Technologies, Inc.
+ */
+
+#include <linux/cpuhotplug.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/irqchip.h>
+#include <linux/irqchip/chained_irq.h>
+#include <linux/irqdomain.h>
+#include <linux/kernel.h>
+#include <linux/msi.h>
+#include <linux/radix-tree.h>
+#include <linux/spinlock.h>
+
+#include <asm/loongarch.h>
+#include <asm/setup.h>
+
+#define VECTORS_PER_REG		64
+#define IRR_INVALID_MASK	0x80000000UL
+#define IRR_VECTOR_MASK		0xffUL
+#define AVEC_MSG_OFFSET		0x100000
+
+static phys_addr_t msi_base_v2;
+static DEFINE_PER_CPU(struct irq_desc * [NR_VECTORS], irq_map);
+
+#ifdef CONFIG_SMP
+struct pending_list {
+	struct list_head	head;
+};
+
+static DEFINE_PER_CPU(struct pending_list, pending_list);
+static struct cpumask intersect_mask;
+#endif
+
+struct loongarch_avec_chip {
+	struct fwnode_handle	*fwnode;
+	struct irq_domain	*domain;
+	struct irq_matrix	*vector_matrix;
+	raw_spinlock_t		lock;
+};
+
+static struct loongarch_avec_chip loongarch_avec;
+
+struct loongarch_avec_data {
+	struct list_head	entry;
+	unsigned int		cpu;
+	unsigned int		vec;
+	unsigned int		prev_cpu;
+	unsigned int		prev_vec;
+	unsigned int		moving		: 1,
+				managed		: 1;
+};
+
+static inline void loongarch_avec_ack_irq(struct irq_data *d)
+{
+}
+
+static inline void loongarch_avec_unmask_irq(struct irq_data *d)
+{
+}
+
+static inline void loongarch_avec_mask_irq(struct irq_data *d)
+{
+}
+
+#ifdef CONFIG_SMP
+static inline void pending_list_init(int cpu)
+{
+	struct pending_list *plist = per_cpu_ptr(&pending_list, cpu);
+
+	INIT_LIST_HEAD(&plist->head);
+}
+
+static void loongarch_avec_sync(struct loongarch_avec_data *adata)
+{
+	struct pending_list *plist;
+
+	if (cpu_online(adata->prev_cpu)) {
+		plist = per_cpu_ptr(&pending_list, adata->prev_cpu);
+		list_add_tail(&adata->entry, &plist->head);
+		adata->moving = true;
+		mp_ops.send_ipi_single(adata->prev_cpu, ACTION_CLEAR_VECT);
+	}
+}
+
+static int loongarch_avec_set_affinity(struct irq_data *data, const struct cpumask *dest,
+				       bool force)
+{
+	struct loongarch_avec_data *adata;
+	unsigned int cpu, vector;
+	unsigned long flags;
+	int ret;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	adata = irq_data_get_irq_chip_data(data);
+
+	if (adata->vec && cpu_online(adata->cpu) && cpumask_test_cpu(adata->cpu, dest)) {
+		raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+		return 0;
+	}
+	if (adata->moving)
+		return -EBUSY;
+
+	cpumask_and(&intersect_mask, dest, cpu_online_mask);
+
+	ret = irq_matrix_alloc(loongarch_avec.vector_matrix, &intersect_mask, false, &cpu);
+	if (ret < 0) {
+		raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+		return ret;
+	}
+	vector = ret;
+	adata->cpu = cpu;
+	adata->vec = vector;
+	per_cpu_ptr(irq_map, adata->cpu)[adata->vec] = irq_data_to_desc(data);
+	loongarch_avec_sync(adata);
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+	irq_data_update_effective_affinity(data, cpumask_of(cpu));
+
+	return IRQ_SET_MASK_OK;
+}
+
+void complete_irq_moving(void)
+{
+	struct pending_list *plist = this_cpu_ptr(&pending_list);
+	struct loongarch_avec_data *adata, *tmp;
+	int cpu, vector, bias;
+	u64 irr;
+
+	raw_spin_lock(&loongarch_avec.lock);
+
+	list_for_each_entry_safe(adata, tmp, &plist->head, entry) {
+		cpu = adata->prev_cpu;
+		vector = adata->prev_vec;
+		bias = vector / VECTORS_PER_REG;
+		switch (bias) {
+		case 0:
+			irr = csr_read64(LOONGARCH_CSR_ISR0);
+		case 1:
+			irr = csr_read64(LOONGARCH_CSR_ISR1);
+		case 2:
+			irr = csr_read64(LOONGARCH_CSR_ISR2);
+		case 3:
+			irr = csr_read64(LOONGARCH_CSR_ISR3);
+		}
+
+		if (irr & (1UL << (vector % VECTORS_PER_REG))) {
+			mp_ops.send_ipi_single(cpu, ACTION_CLEAR_VECT);
+			continue;
+		}
+		list_del(&adata->entry);
+		irq_matrix_free(loongarch_avec.vector_matrix, cpu, vector, adata->managed);
+		this_cpu_write(irq_map[vector], NULL);
+		adata->prev_cpu = adata->cpu;
+		adata->prev_vec = adata->vec;
+		adata->moving = 0;
+	}
+	raw_spin_unlock(&loongarch_avec.lock);
+}
+
+void loongarch_avec_offline_cpu(unsigned int cpu)
+{
+	struct pending_list *plist = per_cpu_ptr(&pending_list, cpu);
+	unsigned long flags;
+
+	if (!loongarch_avec.vector_matrix)
+		return;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	if (list_empty(&plist->head))
+		irq_matrix_offline(loongarch_avec.vector_matrix);
+	else
+		pr_warn("cpu %d advanced extioi is busy\n", cpu);
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+void loongarch_avec_online_cpu(unsigned int cpu)
+{
+	unsigned long flags;
+
+	if (!loongarch_avec.vector_matrix)
+		return;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+
+	irq_matrix_online(loongarch_avec.vector_matrix);
+
+	pending_list_init(cpu);
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+#else
+#define loongarch_avec_set_affinity		NULL
+#endif
+
+static void loongarch_avec_compose_msg(struct irq_data *d,
+		struct msi_msg *msg)
+{
+	struct loongarch_avec_data *avec_data;
+
+	avec_data = irq_data_get_irq_chip_data(d);
+
+	msg->address_hi = 0xfd;
+	msg->address_lo = ((avec_data->vec & 0xff) << 4) |
+			  ((cpu_logical_map(avec_data->cpu & 0xffff)) << 12);
+	msg->data = 0x0;
+
+}
+
+static struct irq_chip loongarch_avec_controller = {
+	.name			= "AVECINTC",
+	.irq_ack		= loongarch_avec_ack_irq,
+	.irq_mask		= loongarch_avec_mask_irq,
+	.irq_unmask		= loongarch_avec_unmask_irq,
+	.irq_set_affinity	= loongarch_avec_set_affinity,
+	.irq_compose_msi_msg	= loongarch_avec_compose_msg,
+};
+
+static void loongarch_avec_dispatch(struct irq_desc *desc)
+{
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	unsigned long vector;
+	struct irq_desc *d;
+
+	chained_irq_enter(chip, desc);
+	vector = csr_read64(LOONGARCH_CSR_IRR);
+	if (vector & IRR_INVALID_MASK)
+		return;
+
+	vector &= IRR_VECTOR_MASK;
+
+	d = this_cpu_read(irq_map[vector]);
+	if (d) {
+		generic_handle_irq_desc(d);
+	} else {
+		pr_warn("IRQ ERROR:Unexpected irq  occur on cpu %d[vector %ld]\n",
+			smp_processor_id(), vector);
+	}
+
+	chained_irq_exit(chip, desc);
+}
+
+static int loongarch_avec_alloc(struct irq_domain *domain, unsigned int virq,
+				unsigned int nr_irqs, void *arg)
+{
+	struct loongarch_avec_data *adata;
+	struct irq_data *irqd;
+	unsigned int cpu, vector, i, ret;
+	unsigned long flags;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	for (i = 0; i < nr_irqs; i++) {
+		irqd = irq_domain_get_irq_data(domain, virq + i);
+		adata = kzalloc(sizeof(*adata), GFP_KERNEL);
+		if (!adata) {
+			raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+			return -ENOMEM;
+		}
+		ret = irq_matrix_alloc(loongarch_avec.vector_matrix, cpu_online_mask, false, &cpu);
+		if (ret < 0) {
+			raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+			return ret;
+		}
+		vector = ret;
+		adata->prev_cpu = adata->cpu = cpu;
+		adata->prev_vec = adata->vec = vector;
+		adata->managed = irqd_affinity_is_managed(irqd);
+		irq_domain_set_info(domain, virq + i, virq + i, &loongarch_avec_controller,
+				adata, handle_edge_irq, NULL, NULL);
+		adata->moving = 0;
+		irqd_set_single_target(irqd);
+		irqd_set_affinity_on_activate(irqd);
+
+		per_cpu_ptr(irq_map, adata->cpu)[adata->vec] = irq_data_to_desc(irqd);
+	}
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+
+	return 0;
+}
+
+static void clear_free_vector(struct irq_data *irqd)
+{
+	struct loongarch_avec_data *adata = irq_data_get_irq_chip_data(irqd);
+	bool managed = irqd_affinity_is_managed(irqd);
+
+	per_cpu(irq_map, adata->cpu)[adata->vec] = NULL;
+	irq_matrix_free(loongarch_avec.vector_matrix, adata->cpu, adata->vec, managed);
+	adata->cpu = 0;
+	adata->vec = 0;
+#ifdef CONFIG_SMP
+	if (!adata->moving)
+		return;
+
+	per_cpu(irq_map, adata->prev_cpu)[adata->prev_vec] = 0;
+	irq_matrix_free(loongarch_avec.vector_matrix, adata->prev_cpu,
+			adata->prev_vec, adata->managed);
+	adata->prev_vec = 0;
+	adata->prev_cpu = 0;
+	adata->moving = 0;
+	list_del_init(&adata->entry);
+#endif
+}
+
+static void loongarch_avec_free(struct irq_domain *domain, unsigned int virq,
+		unsigned int nr_irqs)
+{
+	struct irq_data *d;
+	unsigned long flags;
+	unsigned int i;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	for (i = 0; i < nr_irqs; i++) {
+		d = irq_domain_get_irq_data(domain, virq + i);
+		if (d) {
+			clear_free_vector(d);
+			irq_domain_reset_irq_data(d);
+
+		}
+	}
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+static const struct irq_domain_ops loongarch_avec_domain_ops = {
+	.alloc		= loongarch_avec_alloc,
+	.free		= loongarch_avec_free,
+};
+
+static int __init irq_matrix_init(void)
+{
+	int i;
+
+	loongarch_avec.vector_matrix = irq_alloc_matrix(NR_VECTORS, 0, NR_VECTORS - 1);
+	if (!loongarch_avec.vector_matrix)
+		return -ENOMEM;
+	for (i = 0; i < NR_LEGACY_VECTORS; i++)
+		irq_matrix_assign_system(loongarch_avec.vector_matrix, i, false);
+
+	irq_matrix_online(loongarch_avec.vector_matrix);
+
+	return 0;
+}
+
+static int __init loongarch_avec_init(struct irq_domain *parent)
+{
+	int ret = 0, parent_irq;
+	unsigned long tmp;
+
+	raw_spin_lock_init(&loongarch_avec.lock);
+
+	loongarch_avec.fwnode = irq_domain_alloc_named_fwnode("CORE_AVEC");
+	if (!loongarch_avec.fwnode) {
+		pr_err("Unable to allocate domain handle\n");
+		ret = -ENOMEM;
+		goto out;
+	}
+
+	loongarch_avec.domain = irq_domain_create_tree(loongarch_avec.fwnode,
+			&loongarch_avec_domain_ops, NULL);
+	if (!loongarch_avec.domain) {
+		pr_err("core-vec: cannot create IRQ domain\n");
+		ret = -ENOMEM;
+		goto out_free_handle;
+	}
+
+	parent_irq = irq_create_mapping(parent, INT_AVEC);
+	if (!parent_irq) {
+		pr_err("Failed to mapping hwirq\n");
+		ret = -EINVAL;
+		goto out_remove_domain;
+	}
+	irq_set_chained_handler_and_data(parent_irq, loongarch_avec_dispatch, NULL);
+
+	ret = irq_matrix_init();
+	if (ret) {
+		pr_err("Failed to init irq matrix\n");
+		goto out_free_matrix;
+	}
+#ifdef CONFIG_SMP
+	pending_list_init(0);
+#endif
+	tmp = iocsr_read64(LOONGARCH_IOCSR_MISC_FUNC);
+	tmp |= IOCSR_MISC_FUNC_AVEC_EN;
+	iocsr_write64(tmp, LOONGARCH_IOCSR_MISC_FUNC);
+
+	return ret;
+
+out_free_matrix:
+	kfree(loongarch_avec.vector_matrix);
+out_remove_domain:
+	irq_domain_remove(loongarch_avec.domain);
+out_free_handle:
+	irq_domain_free_fwnode(loongarch_avec.fwnode);
+out:
+	return ret;
+}
+
+static int __init pch_msi_parse_madt(union acpi_subtable_headers *header,
+				     const unsigned long end)
+{
+	struct acpi_madt_msi_pic *pchmsi_entry = (struct acpi_madt_msi_pic *)header;
+
+	msi_base_v2 = pchmsi_entry->msg_address - AVEC_MSG_OFFSET;
+	return pch_msi_acpi_init_v2(loongarch_avec.domain, pchmsi_entry);
+}
+
+static inline int __init acpi_cascade_irqdomain_init(void)
+{
+	return acpi_table_parse_madt(ACPI_MADT_TYPE_MSI_PIC, pch_msi_parse_madt, 1);
+}
+
+int __init loongarch_avec_acpi_init(struct irq_domain *parent)
+{
+	int ret = 0;
+
+	ret = loongarch_avec_init(parent);
+	if (ret) {
+		pr_err("Failed to init irq domain\n");
+		return ret;
+	}
+
+	ret = acpi_cascade_irqdomain_init();
+	if (ret) {
+		pr_err("Failed to cascade IRQ domain\n");
+		return ret;
+	}
+
+	return ret;
+}
diff --git a/drivers/irqchip/irq-loongarch-cpu.c b/drivers/irqchip/irq-loongarch-cpu.c
index 9d8f2c406043..1ecac59925c6 100644
--- a/drivers/irqchip/irq-loongarch-cpu.c
+++ b/drivers/irqchip/irq-loongarch-cpu.c
@@ -138,7 +138,9 @@ static int __init acpi_cascade_irqdomain_init(void)
 	if (r < 0)
 		return r;
 
-	return 0;
+	if (cpu_has_avecint)
+		r = loongarch_avec_acpi_init(irq_domain);
+	return r;
 }
 
 static int __init cpuintc_acpi_init(union acpi_subtable_headers *header,
diff --git a/drivers/irqchip/irq-loongson-eiointc.c b/drivers/irqchip/irq-loongson-eiointc.c
index c7ddebf312ad..1f9a30488137 100644
--- a/drivers/irqchip/irq-loongson-eiointc.c
+++ b/drivers/irqchip/irq-loongson-eiointc.c
@@ -359,6 +359,9 @@ static int __init acpi_cascade_irqdomain_init(void)
 	if (r < 0)
 		return r;
 
+	if (cpu_has_avecint)
+		return 0;
+
 	r = acpi_table_parse_madt(ACPI_MADT_TYPE_MSI_PIC, pch_msi_parse_madt, 1);
 	if (r < 0)
 		return r;
diff --git a/drivers/irqchip/irq-loongson-pch-msi.c b/drivers/irqchip/irq-loongson-pch-msi.c
index dd4d699170f4..8b7aae22e782 100644
--- a/drivers/irqchip/irq-loongson-pch-msi.c
+++ b/drivers/irqchip/irq-loongson-pch-msi.c
@@ -16,7 +16,6 @@
 #include <linux/slab.h>
 
 static int nr_pics;
-
 struct pch_msi_data {
 	struct mutex	msi_map_lock;
 	phys_addr_t	doorbell;
@@ -100,6 +99,17 @@ static struct irq_chip middle_irq_chip = {
 	.irq_compose_msi_msg	= pch_msi_compose_msi_msg,
 };
 
+static struct irq_chip pch_msi_irq_chip_v2 = {
+	.name			= "MSI",
+	.irq_ack		= irq_chip_ack_parent,
+};
+
+static struct msi_domain_info pch_msi_domain_info_v2 = {
+	.flags		= MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
+			MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX,
+	.chip	= &pch_msi_irq_chip_v2,
+};
+
 static int pch_msi_parent_domain_alloc(struct irq_domain *domain,
 					unsigned int virq, int hwirq)
 {
@@ -268,6 +278,9 @@ struct fwnode_handle *get_pch_msi_handle(int pci_segment)
 {
 	int i;
 
+	if (cpu_has_avecint)
+		return pch_msi_handle[0];
+
 	for (i = 0; i < MAX_IO_PICS; i++) {
 		if (msi_group[i].pci_segment == pci_segment)
 			return pch_msi_handle[i];
@@ -289,4 +302,31 @@ int __init pch_msi_acpi_init(struct irq_domain *parent,
 
 	return ret;
 }
+
+int __init pch_msi_acpi_init_v2(struct irq_domain *parent, struct acpi_madt_msi_pic *msi_entry)
+{
+	struct irq_domain *msi_domain;
+
+	if (pch_msi_handle[0])
+		return 0;
+
+	pch_msi_handle[0] = irq_domain_alloc_named_fwnode("msipic-v2");
+	if (!pch_msi_handle[0]) {
+		pr_err("Unable to allocate domain handle\n");
+		kfree(pch_msi_handle[0]);
+		return -ENOMEM;
+	}
+
+	msi_domain = pci_msi_create_irq_domain(pch_msi_handle[0],
+			&pch_msi_domain_info_v2,
+			parent);
+	if (!msi_domain) {
+		pr_err("Failed to create PCI MSI domain\n");
+		kfree(pch_msi_handle[0]);
+		return -ENOMEM;
+	}
+
+	pr_info("IRQ domain MSIPIC-V2 init done.\n");
+	return 0;
+}
 #endif
-- 
2.20.1

.

From: Chen Ni <nichen@iscas.ac.cn>
To: vkoul@kernel.org,
	kishon@kernel.org,
	thomas.richard@bootlin.com,
	rogerq@kernel.org,
	theo.lebrun@bootlin.com,
	c-vankar@ti.com
Cc: linux-phy@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH] phy: ti: phy-j721e-wiz: convert comma to semicolon
Date: Wed, 10 Jul 2024 11:16:26 +0800
Message-Id: <20240710031626.2003110-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273022
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-phy
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
 drivers/phy/ti/phy-j721e-wiz.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/phy/ti/phy-j721e-wiz.c b/drivers/phy/ti/phy-j721e-wiz.c
index 7f626c597025..bb16fdfe63df 100644
--- a/drivers/phy/ti/phy-j721e-wiz.c
+++ b/drivers/phy/ti/phy-j721e-wiz.c
@@ -1578,8 +1578,8 @@ static int wiz_probe(struct platform_device *pdev)
 
 	phy_reset_dev = &wiz->wiz_phy_reset_dev;
 	phy_reset_dev->dev = dev;
-	phy_reset_dev->ops = &wiz_phy_reset_ops,
-	phy_reset_dev->owner = THIS_MODULE,
+	phy_reset_dev->ops = &wiz_phy_reset_ops;
+	phy_reset_dev->owner = THIS_MODULE;
 	phy_reset_dev->of_node = node;
 	/* Reset for each of the lane and one for the entire SERDES */
 	phy_reset_dev->nr_resets = num_lanes + 1;
-- 
2.25.1

.

From: Chen Ni <nichen@iscas.ac.cn>
To: sre@kernel.org
Cc: linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH] power: supply: cpcap-charger: Convert comma to semicolon
Date: Wed, 10 Jul 2024 11:20:23 +0800
Message-Id: <20240710032023.2003742-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273023
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
 drivers/power/supply/cpcap-charger.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/supply/cpcap-charger.c b/drivers/power/supply/cpcap-charger.c
index cebca34ff872..91e7292d86bb 100644
--- a/drivers/power/supply/cpcap-charger.c
+++ b/drivers/power/supply/cpcap-charger.c
@@ -904,7 +904,7 @@ static int cpcap_charger_probe(struct platform_device *pdev)
 	psy_cfg.of_node = pdev->dev.of_node;
 	psy_cfg.drv_data = ddata;
 	psy_cfg.supplied_to = cpcap_charger_supplied_to;
-	psy_cfg.num_supplicants = ARRAY_SIZE(cpcap_charger_supplied_to),
+	psy_cfg.num_supplicants = ARRAY_SIZE(cpcap_charger_supplied_to);
 
 	ddata->usb = devm_power_supply_register(ddata->dev,
 						&cpcap_charger_usb_desc,
-- 
2.25.1

.

From: Chen Ni <nichen@iscas.ac.cn>
To: njavali@marvell.com,
	GR-QLogic-Storage-Upstream@marvell.com,
	James.Bottomley@HansenPartnership.com,
	martin.petersen@oracle.com
Cc: linux-scsi@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH] scsi: qla2xxx: Convert comma to semicolon
Date: Wed, 10 Jul 2024 11:24:23 +0800
Message-Id: <20240710032423.2003805-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273025
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
 drivers/scsi/qla2xxx/qla_init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 8377624d76c9..e2ca9a14b643 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -423,7 +423,7 @@ qla2x00_async_logout(struct scsi_qla_host *vha, fc_port_t *fcport)
 	sp->type = SRB_LOGOUT_CMD;
 	sp->name = "logout";
 	qla2x00_init_async_sp(sp, qla2x00_get_async_timeout(vha) + 2,
-			      qla2x00_async_logout_sp_done),
+			      qla2x00_async_logout_sp_done);
 
 	ql_dbg(ql_dbg_disc, vha, 0x2070,
 	    "Async-logout - hdl=%x loop-id=%x portid=%02x%02x%02x %8phC explicit %d.\n",
-- 
2.25.1

.

From: Boqun Feng <boqun.feng@gmail.com>
To: rust-for-linux@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org
Cc: Miguel Ojeda <ojeda@kernel.org>,
	Alex Gaynor <alex.gaynor@gmail.com>,
	Wedson Almeida Filho <wedsonaf@gmail.com>,
	Boqun Feng <boqun.feng@gmail.com>,
	Gary Guo <gary@garyguo.net>,
	=?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= <bjorn3_gh@protonmail.com>,
	Benno Lossin <benno.lossin@proton.me>,
	Andreas Hindborg <a.hindborg@samsung.com>,
	Alice Ryhl <aliceryhl@google.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Danilo Krummrich <dakr@redhat.com>,
	Trevor Gross <tmgross@umich.edu>,
	gregkh@linuxfoundation.org
Subject: [RFC PATCH] rust: types: Add explanation for ARef pattern
Date: Tue,  9 Jul 2024 20:24:47 -0700
Message-ID: <20240710032447.2161189-1-boqun.feng@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273028
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.kernel.vger.rust-for-linux
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

As the usage of `ARef` and `AlwaysRefCounted` is growing, it makes sense
to add explanation of the "ARef pattern" to cover the most "DO" and "DO
NOT" cases when wrapping a self-refcounted C type.

Hence an "ARef pattern" section is added in the documentation of `ARef`.

Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
---
This is motivated by:

	https://lore.kernel.org/rust-for-linux/20240705110228.qqhhynbwwuwpcdeo@vireshk-i7/

 rust/kernel/types.rs | 156 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 156 insertions(+)

diff --git a/rust/kernel/types.rs b/rust/kernel/types.rs
index bd189d646adb..70fdc780882e 100644
--- a/rust/kernel/types.rs
+++ b/rust/kernel/types.rs
@@ -329,6 +329,162 @@ pub unsafe trait AlwaysRefCounted {
 ///
 /// The pointer stored in `ptr` is non-null and valid for the lifetime of the [`ARef`] instance. In
 /// particular, the [`ARef`] instance owns an increment on the underlying object's reference count.
+///
+/// # [`ARef`] pattern
+///
+/// "[`ARef`] pattern" is preferred when wrapping a C struct which has its own refcounting
+/// mechanism, because it decouples the operations on the object itself (usually via a `&Foo`) vs the
+/// operations on a pointer to the object (usually via an `ARef<Foo>`). For example, given a `struct
+/// foo` defined in C, which has its own refcounting operations `get_foo()` and `put_foo()`. Without
+/// "[`ARef`] pattern", i.e. **bad case**:
+///
+/// ```ignore
+/// pub struct Foo(NonNull<foo>);
+///
+/// impl Foo {
+///     // An operation on the pointer.
+///     pub unsafe fn from_ptr(ptr: *mut foo) -> Self {
+///         // Note that whether `get_foo()` is needed here depends on the exact semantics of
+///         // `from_ptr()`: is it creating a new reference, or it continues using the caller's
+///         // reference?
+///         unsafe { get_foo(ptr); }
+///
+///         unsafe { Foo(NonNull::new_unchecked(foo)) }
+///     }
+///
+///     // An operation on the object.
+///     pub fn get_bar(&self) -> Bar {
+///         unsafe { (*foo.0.as_ptr()).bar }
+///     }
+/// }
+///
+/// // Plus `impl Clone` and `impl Drop` are also needed to implement manually.
+/// impl Clone for Foo {
+///     fn clone(&self) -> Self {
+///         unsafe { get_foo(self.0.as_ptr()); }
+///
+///         Foo(self.0)
+///     }
+/// }
+///
+/// impl Drop for Foo {
+///     fn drop(&mut self) {
+///         unsafe { put_foo(self.0.as_ptr()); }
+///     }
+/// }
+/// ```
+///
+/// In this case, it's hard to tell whether `Foo` represent an object of `foo` or a pointer to
+/// `foo`.
+///
+/// However, if using [`ARef`] pattern, `foo` can be wrapped as follow:
+///
+/// ```ignore
+/// /// Note: `Opaque` is needed in most cases since there usually exist C operations on
+/// /// `struct foo *`, and `#[repr(transparent)]` is needed for the safety of converting a `*mut
+/// /// foo` to a `*mut Foo`
+/// #[repr(transparent)]
+/// pub struct Foo(Opaque<foo>);
+///
+/// impl Foo {
+///     pub fn get_bar(&self) -> Bar {
+///         // SAFETY: `self.0.get()` is a valid pointer.
+///         //
+///         // Note: Usually extra safety comments are needed here to explain why accessing `.bar`
+///         // doesn't race with C side. Most cases are either calling a C function, which has its
+///         // own concurrent access protection, or holding a lock.
+///         unsafe { (*self.0.get()).bar }
+///     }
+/// }
+/// ```
+///
+/// ## Avoid `impl AlwaysRefCounted` if unnecesarry
+///
+/// If Rust code doesn't touch the part where the object lifetimes of `foo` are maintained, `impl
+/// AlwaysRefCounted` can be temporarily avoided: it can always be added later as an extension of
+/// the functionality of the Rust code. This is usually the case for callbacks where the object
+/// lifetimes are already maintained by a framework. In such a case, an `unsafe` `fn(*mut foo) ->
+/// &Foo` function usually suffices:
+///
+/// ```ignore
+/// impl Foo {
+///     /// # Safety
+///     ///
+///     /// `ptr` has to be a valid pointer to `foo` for the entire lifetime `'a'.
+///     pub unsafe fn as_ref<'a>(ptr: *mut foo) -> &'a Self {
+///         // SAFETY: Per function safety requirement, reborrow is valid.
+///         unsafe { &*ptr.cast() }
+///     }
+/// }
+/// ```
+///
+/// ## Type invariants of `impl AlwaysRefCounted`
+///
+/// Types that `impl AlwaysRefCounted` usually needs an invariant to describe why the type can meet
+/// the safety requirement of `AlwaysRefCounted`, e.g.
+///
+/// ```ignore
+/// /// # Invariants:
+/// ///
+/// /// Instances of this type are always refcounted, that is, a call to `get_foo` ensures that the
+/// /// allocation remains valid at least until the matching call to `put_foo`.
+/// #[repr(transparent)]
+/// pub struct Foo(Opaque<foo>);
+///
+/// // SAFETY: `Foo` is always ref-counted per type invariants.
+/// unsafe impl AlwaysRefCounted for Foo {
+///     fn inc_ref(&self) {
+///         // SAFETY: `self.0.get()` is a valid pointer and per type invariants, the existence of
+///         // `&self` means it has a non-zero reference count.
+///         unsafe { get_foo(self.0.get()); }
+///     }
+///
+///     unsafe dec_ref(obj: NonNull<Self>) {
+///         // SAFETY: The refcount of `obj` is non-zero per function safety requirement, and the
+///         // cast is OK since `foo` is transparent to `Foo`.
+///         unsafe { put_foo(obj.cast()); }
+///     }
+/// }
+/// ```
+///
+/// After `impl AlwaysRefCounted for foo`, `clone()` (`get_foo()`) and `drop()` (`put_foo()`)  are
+/// available to `ARef<Foo>` thanks to the generic implementation.
+///
+/// ## `ARef<Self>` vs `&Self`
+///
+/// For an `impl AlwaysRefCounted` type, `ARef<Self>` represents an owner of one reference count,
+/// e.g.
+///
+/// ```ignore
+/// impl Foo {
+///     /// Gets a ref-counted reference of [`Self`].
+///     ///
+///     /// # Safety
+///     ///
+///     /// - `ptr` must be a valid pointer to `foo` with at least one reference count.
+///     pub unsafe fn from_ptr(ptr: *mut foo) -> ARef<Self> {
+///         // SAFETY: `ptr` is a valid pointer per function safety requirement. The cast is OK
+///         // since `foo` is transparent to `Foo`.
+///         //
+///         // Note: `.into()` here increases the reference count, so the returned value has its own
+///         // reference count.
+///         unsafe { &*(ptr.cast::<Foo>()) }.into()
+///     }
+/// }
+/// ```
+///
+/// Another function that returns an `ARef<Self>` but with a different semantics is
+/// [`ARef::from_raw`]: it takes away the refcount of the input pointer, i.e. no refcount
+/// incrementation inside the function.
+///
+/// However `&Self` represents a reference to the object, and the lifetime of the **reference** is
+/// known at compile-time. E.g. the `Foo::as_ref()` above.
+///
+/// ## `impl Drop` of an `impl AlwaysRefCounted` should not touch the refcount
+///
+/// [`ARef`] descreases the refcount automatically (in [`ARef::drop`]) when it goes out of the
+/// scope, therefore there's no need to `impl Drop` for the type of objects (e.g. `Foo`) to decrease
+/// the refcount.
 pub struct ARef<T: AlwaysRefCounted> {
     ptr: NonNull<T>,
     _p: PhantomData<T>,
-- 
2.45.2

.

From: libaokun@huaweicloud.com
To: linux-ext4@vger.kernel.org
Cc: tytso@mit.edu,
	adilger.kernel@dilger.ca,
	jack@suse.cz,
	ritesh.list@gmail.com,
	linux-kernel@vger.kernel.org,
	yi.zhang@huawei.com,
	yangerkun@huawei.com,
	libaokun@huaweicloud.com,
	Baokun Li <libaokun1@huawei.com>
Subject: [PATCH 00/20] ext4: some bugfixes and cleanups for ext4 extents path
Date: Wed, 10 Jul 2024 12:06:34 +0800
Message-Id: <20240710040654.1714672-1-libaokun@huaweicloud.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273053
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-ext4
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Baokun Li <libaokun1@huawei.com>

Hi all!

This patch series is a hardening of ext4 extents path related code.
The following is a brief overview of the patches, see the patches for
more details.

Patch 1-2: Refactor ext4_ext_rm_idx() as suggested by Jan, and add
appropriate error handling branches to ext4_ext_rm_idx() and
ext4_ext_correct_indexes() to avoid inconsistent extents tree.
 PS: This comes from the previous work of my colleague zhanchengbin
 (see link), who is no longer in charge of these and I have taken over.
 Link: https://lore.kernel.org/r/20230213080514.535568-3-zhanchengbin1@huawei.com/

Patch 3-4: Fix an issue that caused p_bh to be released twice if it wasn't
set to NULL after path->p_bh was released. And add a helper function after
the quick fix to prevent this from happening again.

Patch 5-7: Quick fixes for use-after-free and double-free problems caused
by mixing path(pointer to an extent path) and ppath(pointer to an extent
path pointer).

Patch 8-19: Now the use of path and ppath is so confusing that we can
trigger use-after-free or double-free by accessing a stale pointer, or
we can get a memory leak by forgetting to update ppath. And it's very
difficult to read the code. So to make the code more readable, get rid
of ppath and pass path between functions uniformly to avoid these risks.

Patch 20: Reduces the consumption of unnecessary memory operations by
avoiding repetitive allocation and release paths.

"kvm-xfstests -c ext4/all -g auto" has been executed with no new failures.

Comments and questions are, as always, welcome.
Please let me know what you think.

Thanks,
Baokun

Baokun Li (20):
  ext4: refactor ext4_ext_rm_idx() to index 'path'
  ext4: prevent partial update of the extents path
  ext4: fix double brelse() the buffer of the extents path
  ext4: add new ext4_ext_path_brelse() helper
  ext4: fix slab-use-after-free in ext4_split_extent_at()
  ext4: avoid use-after-free in ext4_ext_show_leaf()
  ext4: drop ppath from ext4_ext_replay_update_ex() to avoid double-free
  ext4: get rid of ppath in ext4_find_extent()
  ext4: get rid of ppath in get_ext_path()
  ext4: get rid of ppath in ext4_ext_create_new_leaf()
  ext4: get rid of ppath in ext4_ext_insert_extent()
  ext4: get rid of ppath in ext4_split_extent_at()
  ext4: get rid of ppath in ext4_force_split_extent_at()
  ext4: get rid of ppath in ext4_split_extent()
  ext4: get rid of ppath in ext4_split_convert_extents()
  ext4: get rid of ppath in ext4_convert_unwritten_extents_endio()
  ext4: get rid of ppath in ext4_ext_convert_to_initialized()
  ext4: get rid of ppath in ext4_ext_handle_unwritten_extents()
  ext4: get rid of ppath in convert_initialized_extent()
  ext4: avoid unnecessary extent path frees and allocations

 fs/ext4/ext4.h        |   9 +-
 fs/ext4/extents.c     | 746 +++++++++++++++++++++++-------------------
 fs/ext4/fast_commit.c |  17 +-
 fs/ext4/migrate.c     |   5 +-
 fs/ext4/move_extent.c |  36 +-
 5 files changed, 439 insertions(+), 374 deletions(-)

-- 
2.39.2

.

Date: Wed, 10 Jul 2024 14:10:10 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Lee Jones <lee@kernel.org>, Ulf Hansson <ulf.hansson@linaro.org>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>, Wolfram Sang
 <wsa+renesas@sang-engineering.com>
Subject: linux-next: manual merge of the mfd tree with the mmc tree
Message-ID: <20240710141010.4fbd65a0@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/c490n6ucVeH+kRFRvoypLYm";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273068 org.kernel.vger.linux-next:62169
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/c490n6ucVeH+kRFRvoypLYm
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

Today's linux-next merge of the mfd tree got a conflict in:

  include/linux/mfd/tmio.h

between commits:

  89f415b99050 ("mfd: tmio: Remove obsolete .set_clk_div() callback")
  f86937afb446 ("mmc: tmio: Remove obsolete .set_pwr() callback()")

from the mmc tree and commit:

  70b46487b155 ("mfd: tmio: Move header to platform_data")

from the mfd tree.

I fixed it up (I removed the file and applied the following patch) and
can carry the fix as necessary. This is now fixed as far as linux-next
is concerned, but any non trivial conflicts should be mentioned to your
upstream maintainer when your tree is submitted for merging.  You may
also want to consider cooperating with the maintainer of the conflicting
tree to minimise any particularly complex conflicts.

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Wed, 10 Jul 2024 14:06:29 +1000
Subject: [PATCH] fixup for "mfd: tmio: Move header to platform_data"

interacting with "mfd: tmio: Remove obsolete .set_clk_div() callback"
and "mmc: tmio: Remove obsolete .set_pwr() callback()" from the mmc tree

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 include/linux/platform_data/tmio.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/include/linux/platform_data/tmio.h b/include/linux/platform_da=
ta/tmio.h
index 1cf418643da9..b060124ba1ae 100644
--- a/include/linux/platform_data/tmio.h
+++ b/include/linux/platform_data/tmio.h
@@ -58,7 +58,5 @@ struct tmio_mmc_data {
 	dma_addr_t			dma_rx_offset;
 	unsigned int			max_blk_count;
 	unsigned short			max_segs;
-	void (*set_pwr)(struct platform_device *host, int state);
-	void (*set_clk_div)(struct platform_device *host, int state);
 };
 #endif
--=20
2.43.0

--=20
Cheers,
Stephen Rothwell

--Sig_/c490n6ucVeH+kRFRvoypLYm
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaOCaIACgkQAVBC80lX
0Gy0eQf/QrPDbRIZf1kFbH0j7SPaEM363P2SsQ+/5zariThhhecZ4u12koRpFcJl
2y5VQ3y/RRtOAsXMkDK27C4ukZbGayftoJFLTW0AboOtfQeUfYNqj/+PRfVTUKRF
S/f2J831bqJtCVzT0NDKTyhrg8lg3zJGGB5p0pBN1Sp3VNsElYLtYeQHi7bREdtG
iq1hs8L3M2WW+WSJezmvoQTesIhcC1hwUGwFgzUgp29ftPRCae6qKkfKLXqy3Fv9
48DIaLF/i+BCiYqEz6wwuY/11C/U4hMjDG1jkLr0jZiaokJ9nXRHE9zQfRNrgT3k
HOOgE1B5UK29y3TA2sRZcqkUuawynQ==
=f/Kj
-----END PGP SIGNATURE-----

--Sig_/c490n6ucVeH+kRFRvoypLYm--
.

From: Chris Packham <chris.packham@alliedtelesis.co.nz>
To: tglx@linutronix.de,
	robh@kernel.org,
	krzk+dt@kernel.org,
	conor+dt@kernel.org,
	tsbogend@alpha.franken.de,
	daniel.lezcano@linaro.org,
	paulburton@kernel.org,
	peterz@infradead.org,
	mail@birger-koblitz.de,
	bert@biot.com,
	john@phrozen.org,
	sander@svanheule.net
Cc: linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org,
	linux-mips@vger.kernel.org,
	kabel@kernel.org,
	ericwouds@gmail.com,
	Chris Packham <chris.packham@alliedtelesis.co.nz>
Subject: [PATCH v5 00/10] mips: Support for RTL9302C
Date: Wed, 10 Jul 2024 16:35:14 +1200
Message-ID: <20240710043524.1535151-1-chris.packham@alliedtelesis.co.nz>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273071
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-mips
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series adds basic support for the RTL9302C reference board. Currentl=
y the
focus is on the CPU block stuff. I hope to get around to the DSA switch d=
river
eventually but this is a small start that lets me boot a mainline kernel =
on the
board I have. I initialiy started with code from openwrt but have paired =
it
down to just the clocksource driver and devicetree.

The first two patches in this series are fixing some complaints from make
dtbs_check for some existing realtek dts files. They can be applied on th=
eir
own if desired.

Chris Packham (10):
  mips: dts: realtek: use "serial" instead of "uart" in node name
  mips: dts: realtek: add device_type property to cpu node
  dt-bindings: vendor-prefixes: Add Cameo Communications
  dt-bindings: mips: realtek: Add rtl930x-soc compatible
  dt-bindings: timer: Add schema for realtek,otto-timer
  dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
  clocksource: realtek: Add timer driver for rtl-otto platforms
  mips: select REALTEK_OTTO_TIMER for Realtek platforms
  mips: generic: add fdt fixup for Realtek reference board
  mips: dts: realtek: Add RTL9302C board

 .../realtek,rtl-intc.yaml                     |  20 +-
 .../devicetree/bindings/mips/realtek-rtl.yaml |   4 +
 .../bindings/timer/realtek,otto-timer.yaml    |  63 ++++
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 arch/mips/Kconfig                             |   1 +
 arch/mips/boot/dts/realtek/Makefile           |   1 +
 .../cameo-rtl9302c-2x-rtl8224-2xge.dts        |  73 +++++
 arch/mips/boot/dts/realtek/rtl838x.dtsi       |   1 +
 arch/mips/boot/dts/realtek/rtl83xx.dtsi       |   4 +-
 arch/mips/boot/dts/realtek/rtl930x.dtsi       |  79 +++++
 arch/mips/generic/Makefile                    |   1 +
 arch/mips/generic/board-realtek.c             |  79 +++++
 drivers/clocksource/Kconfig                   |  10 +
 drivers/clocksource/Makefile                  |   1 +
 drivers/clocksource/timer-rtl-otto.c          | 291 ++++++++++++++++++
 include/linux/cpuhotplug.h                    |   1 +
 16 files changed, 628 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/timer/realtek,otto-=
timer.yaml
 create mode 100644 arch/mips/boot/dts/realtek/cameo-rtl9302c-2x-rtl8224-=
2xge.dts
 create mode 100644 arch/mips/boot/dts/realtek/rtl930x.dtsi
 create mode 100644 arch/mips/generic/board-realtek.c
 create mode 100644 drivers/clocksource/timer-rtl-otto.c

--=20
2.45.2

.

From: Tianyang Zhang <zhangtianyang@loongson.cn>
To: corbet@lwn.net,
	alexs@kernel.org,
	siyanteng@loongson.cn,
	chenhuacai@kernel.org,
	kernel@xen0n.name,
	tglx@linutronix.de,
	jiaxun.yang@flygoat.com,
	gaoliang@loongson.cn,
	wangliupu@loongson.cn,
	lvjianmin@loongson.cn,
	zhangtianyang@loongson.cn,
	yijun@loongson.cn,
	mhocko@suse.com,
	akpm@linux-foundation.org,
	dianders@chromium.org,
	maobibo@loongson.cn,
	xry111@xry111.site,
	zhaotianrui@loongson.cn,
	nathan@kernel.org,
	yangtiezhu@loongson.cn,
	zhoubinbin@loongson.cn
Cc: loongarch@lists.linux.dev,
	linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH V4][RESEND] LoongArch: Add AVEC irqchip support
Date: Wed, 10 Jul 2024 12:38:59 +0800
Message-Id: <20240710043859.13053-1-zhangtianyang@loongson.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273081
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.loongarch,org.kernel.vger.linux-doc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Introduce the advanced extended interrupt controllers. This feature will
allow each core to have 256 independent interrupt vectors and MSI
interrupts can be independently routed to any vector on any CPU.

Co-developed-by: Jianmin Lv <lvjianmin@loongson.cn>
Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn>
Co-developed-by: Liupu Wang <wangliupu@loongson.cn>
Signed-off-by: Liupu Wang <wangliupu@loongson.cn>
Co-developed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn>
---
 .../arch/loongarch/irq-chip-model.rst         |  33 ++
 .../zh_CN/arch/loongarch/irq-chip-model.rst   |  37 +-
 arch/loongarch/Kconfig                        |   1 +
 arch/loongarch/include/asm/cpu-features.h     |   1 +
 arch/loongarch/include/asm/cpu.h              |   2 +
 arch/loongarch/include/asm/irq.h              |  23 +-
 arch/loongarch/include/asm/loongarch.h        |  19 +-
 arch/loongarch/include/asm/smp.h              |   2 +
 arch/loongarch/kernel/cpu-probe.c             |   3 +-
 arch/loongarch/kernel/smp.c                   |   5 +
 drivers/irqchip/Makefile                      |   2 +-
 drivers/irqchip/irq-loongarch-avec.c          | 433 ++++++++++++++++++
 drivers/irqchip/irq-loongarch-cpu.c           |   4 +-
 drivers/irqchip/irq-loongson-eiointc.c        |   3 +
 drivers/irqchip/irq-loongson-pch-msi.c        |  42 +-
 15 files changed, 596 insertions(+), 14 deletions(-)
 create mode 100644 drivers/irqchip/irq-loongarch-avec.c

Changes log:
 V0->V1:
         1.Modified some formats and declarations
         2.Removed kmalloc/kfree when adding affinity related data to pending_list,
           and used moving tag to replace the original behavior
         3.Adjusted the process that enables AVEC interrupts, now it is at the end of all processes
         4.Removed CPUHP related callbacks, now irq_matrix_online/irq_matrix_offline is completed in start_secondary/loongson_cpu_disable
         5.Adjusted compatibility issues for CONFIG_ACPI
         6.About question:
         > irr = csr_read64(LOONGARCH_CSR_IRR0 + vector / 64);
         > should be good enough, no?
         csr_read64 was built-in as __csrrd_d, it doesn't seem to support variables as parameters
         >>>>
         drivers/irqchip/irq-loongarch-avec.c: In function â€˜complete_irq_movingâ€™:
         ./arch/loongarch/include/asm/loongarch.h:164:25: error: invalid argument to built-in function
           164 | #define csr_read64(reg) __csrrd_d(reg)
               |                         ^~~~~~~~~
         drivers/irqchip/irq-loongarch-avec.c:170:23: note: in expansion of macro â€˜csr_read64â€™
           170 |                 irr = csr_read64(LOONGARCH_CSR_IRR_BASE + vector / VECTORS_PER_REG);
               |                       ^~~~~~~~~~
         >>>>
         So we have temporarily retained the previous implementation.
 
 V1->V2:
         Fixed up coding style. Made on/offline functions void
         Added compatibility when CONFIG_SMP is turned off
 
 V2->V3:
 	Squash two patches into one
 
 V3->V4:
 	Update NR_IRQS
 	Update Register's name
 	Fixed up coding style
 
diff --git a/Documentation/arch/loongarch/irq-chip-model.rst b/Documentation/arch/loongarch/irq-chip-model.rst
index 7988f4192363..a90c78c8e5bb 100644
--- a/Documentation/arch/loongarch/irq-chip-model.rst
+++ b/Documentation/arch/loongarch/irq-chip-model.rst
@@ -85,6 +85,39 @@ to CPUINTC directly::
     | Devices |
     +---------+
 
+Advanced Extended IRQ model
+===========================
+
+In this model, IPI (Inter-Processor Interrupt) and CPU Local Timer interrupt go
+to CPUINTC directly, CPU UARTS interrupts go to LIOINTC, PCH-MSI interrupts go to AVEC,
+and then go to CPUINTC, Other devices interrupts go to PCH-PIC/PCH-LPC and gathered
+by EIOINTC, and then go to CPUINTC directly::
+
+ +-----+     +--------------------------+     +-------+
+ | IPI | --> |           CPUINTC        | <-- | Timer |
+ +-----+     +--------------------------+     +-------+
+              ^        ^             ^
+              |        |             |
+      +--------+  +---------+ +---------+     +-------+
+      | AVEC   |  | EIOINTC | | LIOINTC | <-- | UARTs |
+      +--------+  +---------+ +---------+     +-------+
+           ^            ^
+           |            |
+         +---------+  +---------+
+         | PCH-MSI |  | PCH-PIC |
+         +---------+  +---------+
+            ^          ^       ^
+            |          |       |
+    +---------+ +---------+ +---------+
+    | Devices | | PCH-LPC | | Devices |
+    +---------+ +---------+ +---------+
+                     ^
+                     |
+                +---------+
+                | Devices |
+                +---------+
+
+
 ACPI-related definitions
 ========================
 
diff --git a/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst b/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
index f1e9ab18206c..b54567380c90 100644
--- a/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
+++ b/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst
@@ -9,9 +9,8 @@
 LoongArchçš„IRQèŠ¯ç‰‡æ¨¡åž‹ï¼ˆå±‚çº§å…³ç³»ï¼‰
 ==================================
 
-ç›®å‰�ï¼ŒåŸºäºŽLoongArchçš„å¤„ç�†å™¨ï¼ˆå¦‚é¾™èŠ¯3A5000ï¼‰å�ªèƒ½ä¸ŽLS7AèŠ¯ç‰‡ç»„é…�å�ˆå·¥ä½œã€‚LoongArchè®¡ç®—æœº
-ä¸­çš„ä¸­æ–­æŽ§åˆ¶å™¨ï¼ˆå�³IRQèŠ¯ç‰‡ï¼‰åŒ…æ‹¬CPUINTCï¼ˆCPU Core Interrupt Controllerï¼‰ã€�LIOINTCï¼ˆ
-Legacy I/O Interrupt Controllerï¼‰ã€�EIOINTCï¼ˆExtended I/O Interrupt Controllerï¼‰ã€�
+LoongArchè®¡ç®—æœºä¸­çš„ä¸­æ–­æŽ§åˆ¶å™¨ï¼ˆå�³IRQèŠ¯ç‰‡ï¼‰åŒ…æ‹¬CPUINTCï¼ˆCPU Core Interrupt Controllerï¼‰ã€�
+LIOINTCï¼ˆLegacy I/O Interrupt Controllerï¼‰ã€�EIOINTCï¼ˆExtended I/O Interrupt Controllerï¼‰ã€�
 HTVECINTCï¼ˆHyper-Transport Vector Interrupt Controllerï¼‰ã€�PCH-PICï¼ˆLS7AèŠ¯ç‰‡ç»„çš„ä¸»ä¸­
 æ–­æŽ§åˆ¶å™¨ï¼‰ã€�PCH-LPCï¼ˆLS7AèŠ¯ç‰‡ç»„çš„LPCä¸­æ–­æŽ§åˆ¶å™¨ï¼‰å’ŒPCH-MSIï¼ˆMSIä¸­æ–­æŽ§åˆ¶å™¨ï¼‰ã€‚
 
@@ -87,6 +86,38 @@ PCH-LPC/PCH-MSIï¼Œç„¶å�Žè¢«EIOINTCç»Ÿä¸€æ”¶é›†ï¼Œå†�ç›´æŽ¥åˆ°è¾¾CPUINTC::
     | Devices |
     +---------+
 
+é«˜çº§æ‰©å±•IRQæ¨¡åž‹
+=======================
+
+åœ¨è¿™ç§�æ¨¡åž‹é‡Œé�¢ï¼ŒIPIï¼ˆInter-Processor Interruptï¼‰å’ŒCPUæœ¬åœ°æ—¶é’Ÿä¸­æ–­ç›´æŽ¥å�‘é€�åˆ°CPUINTCï¼Œ
+CPUä¸²å�£ï¼ˆUARTsï¼‰ä¸­æ–­å�‘é€�åˆ°LIOINTCï¼ŒPCH-MSIä¸­æ–­å�‘é€�åˆ°AVECï¼Œè€Œå�Žé€šè¿‡AVECé€�è¾¾CPUINTCï¼Œè€Œ
+å…¶ä»–æ‰€æœ‰è®¾å¤‡çš„ä¸­æ–­åˆ™åˆ†åˆ«å�‘é€�åˆ°æ‰€è¿žæŽ¥çš„PCH-PIC/PCH-LPCï¼Œç„¶å�Žç”±EIOINTCç»Ÿä¸€æ”¶é›†ï¼Œå†�ç›´
+æŽ¥åˆ°è¾¾CPUINTC::
+
+ +-----+     +--------------------------+     +-------+
+ | IPI | --> |           CPUINTC        | <-- | Timer |
+ +-----+     +--------------------------+     +-------+
+              ^        ^             ^
+              |        |             |
+      +--------+  +---------+ +---------+     +-------+
+      | AVEC   |  | EIOINTC | | LIOINTC | <-- | UARTs |
+      +--------+  +---------+ +---------+     +-------+
+              ^        ^
+              |        |
+      +---------+  +-------------+
+      | PCH-MSI |  |   PCH-PIC   |
+      +---------+  +-------------+
+            ^          ^       ^
+            |          |       |
+    +---------+ +---------+ +---------+
+    | Devices | | PCH-LPC | | Devices |
+    +---------+ +---------+ +---------+
+                     ^
+                     |
+                +---------+
+                | Devices |
+                +---------+
+
 ACPIç›¸å…³çš„å®šä¹‰
 ==============
 
diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
index e38139c576ee..a66e49b5a68c 100644
--- a/arch/loongarch/Kconfig
+++ b/arch/loongarch/Kconfig
@@ -83,6 +83,7 @@ config LOONGARCH
 	select GENERIC_ENTRY
 	select GENERIC_GETTIMEOFDAY
 	select GENERIC_IOREMAP if !ARCH_IOREMAP
+	select GENERIC_IRQ_MATRIX_ALLOCATOR
 	select GENERIC_IRQ_MULTI_HANDLER
 	select GENERIC_IRQ_PROBE
 	select GENERIC_IRQ_SHOW
diff --git a/arch/loongarch/include/asm/cpu-features.h b/arch/loongarch/include/asm/cpu-features.h
index 2eafe6a6aca8..16a716f88a5c 100644
--- a/arch/loongarch/include/asm/cpu-features.h
+++ b/arch/loongarch/include/asm/cpu-features.h
@@ -65,5 +65,6 @@
 #define cpu_has_guestid		cpu_opt(LOONGARCH_CPU_GUESTID)
 #define cpu_has_hypervisor	cpu_opt(LOONGARCH_CPU_HYPERVISOR)
 #define cpu_has_ptw		cpu_opt(LOONGARCH_CPU_PTW)
+#define cpu_has_avecint		cpu_opt(LOONGARCH_CPU_AVECINT)
 
 #endif /* __ASM_CPU_FEATURES_H */
diff --git a/arch/loongarch/include/asm/cpu.h b/arch/loongarch/include/asm/cpu.h
index 48b9f7168bcc..843f9c4ec980 100644
--- a/arch/loongarch/include/asm/cpu.h
+++ b/arch/loongarch/include/asm/cpu.h
@@ -99,6 +99,7 @@ enum cpu_type_enum {
 #define CPU_FEATURE_GUESTID		24	/* CPU has GuestID feature */
 #define CPU_FEATURE_HYPERVISOR		25	/* CPU has hypervisor (running in VM) */
 #define CPU_FEATURE_PTW			26	/* CPU has hardware page table walker */
+#define CPU_FEATURE_AVECINT		27	/* CPU has avec interrupt */
 
 #define LOONGARCH_CPU_CPUCFG		BIT_ULL(CPU_FEATURE_CPUCFG)
 #define LOONGARCH_CPU_LAM		BIT_ULL(CPU_FEATURE_LAM)
@@ -127,5 +128,6 @@ enum cpu_type_enum {
 #define LOONGARCH_CPU_GUESTID		BIT_ULL(CPU_FEATURE_GUESTID)
 #define LOONGARCH_CPU_HYPERVISOR	BIT_ULL(CPU_FEATURE_HYPERVISOR)
 #define LOONGARCH_CPU_PTW		BIT_ULL(CPU_FEATURE_PTW)
+#define LOONGARCH_CPU_AVECINT		BIT_ULL(CPU_FEATURE_AVECINT)
 
 #endif /* _ASM_CPU_H */
diff --git a/arch/loongarch/include/asm/irq.h b/arch/loongarch/include/asm/irq.h
index 480418bc5071..899e6f9a9eaa 100644
--- a/arch/loongarch/include/asm/irq.h
+++ b/arch/loongarch/include/asm/irq.h
@@ -39,11 +39,22 @@ void spurious_interrupt(void);
 
 #define NR_IRQS_LEGACY 16
 
+/*
+ * 256 vectors Map:
+ *
+ * 0 - 15: mapping legacy IPs, e.g. IP0-12.
+ * 16 - 255: mapping a vector for external IRQ.
+ *
+ */
+#define NR_VECTORS		256
+#define IRQ_MATRIX_BITS		NR_VECTORS
+#define NR_LEGACY_VECTORS	16
+
 #define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
 void arch_trigger_cpumask_backtrace(const struct cpumask *mask, int exclude_cpu);
 
 #define MAX_IO_PICS 2
-#define NR_IRQS	(64 + (256 * MAX_IO_PICS))
+#define NR_IRQS	((64 + (64 * MAX_IO_PICS)) + NR_VECTORS * NR_CPUS)
 
 struct acpi_vector_group {
 	int node;
@@ -65,7 +76,7 @@ extern struct acpi_vector_group msi_group[MAX_IO_PICS];
 #define LOONGSON_LPC_LAST_IRQ		(LOONGSON_LPC_IRQ_BASE + 15)
 
 #define LOONGSON_CPU_IRQ_BASE		16
-#define LOONGSON_CPU_LAST_IRQ		(LOONGSON_CPU_IRQ_BASE + 14)
+#define LOONGSON_CPU_LAST_IRQ		(LOONGSON_CPU_IRQ_BASE + 15)
 
 #define LOONGSON_PCH_IRQ_BASE		64
 #define LOONGSON_PCH_ACPI_IRQ		(LOONGSON_PCH_IRQ_BASE + 47)
@@ -101,6 +112,14 @@ int pch_msi_acpi_init(struct irq_domain *parent,
 					struct acpi_madt_msi_pic *acpi_pchmsi);
 int pch_pic_acpi_init(struct irq_domain *parent,
 					struct acpi_madt_bio_pic *acpi_pchpic);
+
+int __init pch_msi_acpi_init_v2(struct irq_domain *parent,
+		struct acpi_madt_msi_pic *pch_msi_entry);
+int __init loongarch_avec_acpi_init(struct irq_domain *parent);
+void complete_irq_moving(void);
+void loongarch_avec_offline_cpu(unsigned int cpu);
+void loongarch_avec_online_cpu(unsigned int cpu);
+
 int find_pch_pic(u32 gsi);
 struct fwnode_handle *get_pch_msi_handle(int pci_segment);
 
diff --git a/arch/loongarch/include/asm/loongarch.h b/arch/loongarch/include/asm/loongarch.h
index eb09adda54b7..805f51eaac06 100644
--- a/arch/loongarch/include/asm/loongarch.h
+++ b/arch/loongarch/include/asm/loongarch.h
@@ -72,7 +72,6 @@
 #define  CPUCFG1_RPLV			BIT(23)
 #define  CPUCFG1_HUGEPG			BIT(24)
 #define  CPUCFG1_CRC32			BIT(25)
-#define  CPUCFG1_MSGINT			BIT(26)
 
 #define LOONGARCH_CPUCFG2		0x2
 #define  CPUCFG2_FP			BIT(0)
@@ -252,8 +251,8 @@
 #define  CSR_ESTAT_EXC_WIDTH		6
 #define  CSR_ESTAT_EXC			(_ULCAST_(0x3f) << CSR_ESTAT_EXC_SHIFT)
 #define  CSR_ESTAT_IS_SHIFT		0
-#define  CSR_ESTAT_IS_WIDTH		14
-#define  CSR_ESTAT_IS			(_ULCAST_(0x3fff) << CSR_ESTAT_IS_SHIFT)
+#define  CSR_ESTAT_IS_WIDTH		15
+#define  CSR_ESTAT_IS			(_ULCAST_(0x7fff) << CSR_ESTAT_IS_SHIFT)
 
 #define LOONGARCH_CSR_ERA		0x6	/* ERA */
 
@@ -999,10 +998,17 @@
 #define CSR_FWPC_SKIP_SHIFT		16
 #define CSR_FWPC_SKIP			(_ULCAST_(1) << CSR_FWPC_SKIP_SHIFT)
 
+#define LOONGARCH_CSR_ISR0		0xa0
+#define LOONGARCH_CSR_ISR1		0xa1
+#define LOONGARCH_CSR_ISR2		0xa2
+#define LOONGARCH_CSR_ISR3		0xa3
+
+#define	LOONGARCH_CSR_IRR		0xa4
+
 /*
  * CSR_ECFG IM
  */
-#define ECFG0_IM		0x00001fff
+#define ECFG0_IM		0x00005fff
 #define ECFGB_SIP0		0
 #define ECFGF_SIP0		(_ULCAST_(1) << ECFGB_SIP0)
 #define ECFGB_SIP1		1
@@ -1045,6 +1051,7 @@
 #define  IOCSRF_EIODECODE		BIT_ULL(9)
 #define  IOCSRF_FLATMODE		BIT_ULL(10)
 #define  IOCSRF_VM			BIT_ULL(11)
+#define  IOCSRF_AVEC			BIT_ULL(15)
 
 #define LOONGARCH_IOCSR_VENDOR		0x10
 
@@ -1055,6 +1062,7 @@
 #define LOONGARCH_IOCSR_MISC_FUNC	0x420
 #define  IOCSR_MISC_FUNC_TIMER_RESET	BIT_ULL(21)
 #define  IOCSR_MISC_FUNC_EXT_IOI_EN	BIT_ULL(48)
+#define  IOCSR_MISC_FUNC_AVEC_EN	BIT_ULL(51)
 
 #define LOONGARCH_IOCSR_CPUTEMP		0x428
 
@@ -1375,9 +1383,10 @@ __BUILD_CSR_OP(tlbidx)
 #define INT_TI		11	/* Timer */
 #define INT_IPI		12
 #define INT_NMI		13
+#define INT_AVEC	14
 
 /* ExcCodes corresponding to interrupts */
-#define EXCCODE_INT_NUM		(INT_NMI + 1)
+#define EXCCODE_INT_NUM		(INT_AVEC + 1)
 #define EXCCODE_INT_START	64
 #define EXCCODE_INT_END		(EXCCODE_INT_START + EXCCODE_INT_NUM - 1)
 
diff --git a/arch/loongarch/include/asm/smp.h b/arch/loongarch/include/asm/smp.h
index 278700cfee88..2399004596a3 100644
--- a/arch/loongarch/include/asm/smp.h
+++ b/arch/loongarch/include/asm/smp.h
@@ -69,9 +69,11 @@ extern int __cpu_logical_map[NR_CPUS];
 #define ACTION_BOOT_CPU	0
 #define ACTION_RESCHEDULE	1
 #define ACTION_CALL_FUNCTION	2
+#define ACTION_CLEAR_VECT	3
 #define SMP_BOOT_CPU		BIT(ACTION_BOOT_CPU)
 #define SMP_RESCHEDULE		BIT(ACTION_RESCHEDULE)
 #define SMP_CALL_FUNCTION	BIT(ACTION_CALL_FUNCTION)
+#define SMP_CLEAR_VECT		BIT(ACTION_CLEAR_VECT)
 
 struct secondary_data {
 	unsigned long stack;
diff --git a/arch/loongarch/kernel/cpu-probe.c b/arch/loongarch/kernel/cpu-probe.c
index 55320813ee08..3b2e72e8f9bd 100644
--- a/arch/loongarch/kernel/cpu-probe.c
+++ b/arch/loongarch/kernel/cpu-probe.c
@@ -106,7 +106,6 @@ static void cpu_probe_common(struct cpuinfo_loongarch *c)
 		elf_hwcap |= HWCAP_LOONGARCH_CRC32;
 	}
 
-
 	config = read_cpucfg(LOONGARCH_CPUCFG2);
 	if (config & CPUCFG2_LAM) {
 		c->options |= LOONGARCH_CPU_LAM;
@@ -176,6 +175,8 @@ static void cpu_probe_common(struct cpuinfo_loongarch *c)
 		c->options |= LOONGARCH_CPU_EIODECODE;
 	if (config & IOCSRF_VM)
 		c->options |= LOONGARCH_CPU_HYPERVISOR;
+	if (config & IOCSRF_AVEC)
+		c->options |= LOONGARCH_CPU_AVECINT;
 
 	config = csr_read32(LOONGARCH_CSR_ASID);
 	config = (config & CSR_ASID_BIT) >> CSR_ASID_BIT_SHIFT;
diff --git a/arch/loongarch/kernel/smp.c b/arch/loongarch/kernel/smp.c
index 0dfe2388ef41..6dfedef306f3 100644
--- a/arch/loongarch/kernel/smp.c
+++ b/arch/loongarch/kernel/smp.c
@@ -234,6 +234,9 @@ static irqreturn_t loongson_ipi_interrupt(int irq, void *dev)
 		per_cpu(irq_stat, cpu).ipi_irqs[IPI_CALL_FUNCTION]++;
 	}
 
+	if (action & SMP_CLEAR_VECT)
+		complete_irq_moving();
+
 	return IRQ_HANDLED;
 }
 
@@ -388,6 +391,7 @@ int loongson_cpu_disable(void)
 	irq_migrate_all_off_this_cpu();
 	clear_csr_ecfg(ECFG0_IM);
 	local_irq_restore(flags);
+	loongarch_avec_offline_cpu(cpu);
 	local_flush_tlb_all();
 
 	return 0;
@@ -566,6 +570,7 @@ asmlinkage void start_secondary(void)
 	 * early is dangerous.
 	 */
 	WARN_ON_ONCE(!irqs_disabled());
+	loongarch_avec_online_cpu(cpu);
 	loongson_smp_finish();
 
 	cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index 2df72b7b165b..de091a9f7c88 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -110,7 +110,7 @@ obj-$(CONFIG_LS1X_IRQ)			+= irq-ls1x.o
 obj-$(CONFIG_TI_SCI_INTR_IRQCHIP)	+= irq-ti-sci-intr.o
 obj-$(CONFIG_TI_SCI_INTA_IRQCHIP)	+= irq-ti-sci-inta.o
 obj-$(CONFIG_TI_PRUSS_INTC)		+= irq-pruss-intc.o
-obj-$(CONFIG_IRQ_LOONGARCH_CPU)		+= irq-loongarch-cpu.o
+obj-$(CONFIG_IRQ_LOONGARCH_CPU)		+= irq-loongarch-cpu.o irq-loongarch-avec.o
 obj-$(CONFIG_LOONGSON_LIOINTC)		+= irq-loongson-liointc.o
 obj-$(CONFIG_LOONGSON_EIOINTC)		+= irq-loongson-eiointc.o
 obj-$(CONFIG_LOONGSON_HTPIC)		+= irq-loongson-htpic.o
diff --git a/drivers/irqchip/irq-loongarch-avec.c b/drivers/irqchip/irq-loongarch-avec.c
new file mode 100644
index 000000000000..fe3ca3e3ceb2
--- /dev/null
+++ b/drivers/irqchip/irq-loongarch-avec.c
@@ -0,0 +1,433 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2020-2024 Loongson Technologies, Inc.
+ */
+
+#include <linux/cpuhotplug.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/irqchip.h>
+#include <linux/irqchip/chained_irq.h>
+#include <linux/irqdomain.h>
+#include <linux/kernel.h>
+#include <linux/msi.h>
+#include <linux/radix-tree.h>
+#include <linux/spinlock.h>
+
+#include <asm/loongarch.h>
+#include <asm/setup.h>
+
+#define VECTORS_PER_REG		64
+#define IRR_INVALID_MASK	0x80000000UL
+#define IRR_VECTOR_MASK		0xffUL
+#define AVEC_MSG_OFFSET		0x100000
+
+static phys_addr_t msi_base_v2;
+static DEFINE_PER_CPU(struct irq_desc * [NR_VECTORS], irq_map);
+
+#ifdef CONFIG_SMP
+struct pending_list {
+	struct list_head	head;
+};
+
+static DEFINE_PER_CPU(struct pending_list, pending_list);
+static struct cpumask intersect_mask;
+#endif
+
+struct loongarch_avec_chip {
+	struct fwnode_handle	*fwnode;
+	struct irq_domain	*domain;
+	struct irq_matrix	*vector_matrix;
+	raw_spinlock_t		lock;
+};
+
+static struct loongarch_avec_chip loongarch_avec;
+
+struct loongarch_avec_data {
+	struct list_head	entry;
+	unsigned int		cpu;
+	unsigned int		vec;
+	unsigned int		prev_cpu;
+	unsigned int		prev_vec;
+	unsigned int		moving		: 1,
+				managed		: 1;
+};
+
+static inline void loongarch_avec_ack_irq(struct irq_data *d)
+{
+}
+
+static inline void loongarch_avec_unmask_irq(struct irq_data *d)
+{
+}
+
+static inline void loongarch_avec_mask_irq(struct irq_data *d)
+{
+}
+
+#ifdef CONFIG_SMP
+static inline void pending_list_init(int cpu)
+{
+	struct pending_list *plist = per_cpu_ptr(&pending_list, cpu);
+
+	INIT_LIST_HEAD(&plist->head);
+}
+
+static void loongarch_avec_sync(struct loongarch_avec_data *adata)
+{
+	struct pending_list *plist;
+
+	if (cpu_online(adata->prev_cpu)) {
+		plist = per_cpu_ptr(&pending_list, adata->prev_cpu);
+		list_add_tail(&adata->entry, &plist->head);
+		adata->moving = true;
+		mp_ops.send_ipi_single(adata->prev_cpu, ACTION_CLEAR_VECT);
+	}
+}
+
+static int loongarch_avec_set_affinity(struct irq_data *data, const struct cpumask *dest,
+				       bool force)
+{
+	struct loongarch_avec_data *adata;
+	unsigned int cpu, vector;
+	unsigned long flags;
+	int ret;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	adata = irq_data_get_irq_chip_data(data);
+
+	if (adata->vec && cpu_online(adata->cpu) && cpumask_test_cpu(adata->cpu, dest)) {
+		raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+		return 0;
+	}
+	if (adata->moving)
+		return -EBUSY;
+
+	cpumask_and(&intersect_mask, dest, cpu_online_mask);
+
+	ret = irq_matrix_alloc(loongarch_avec.vector_matrix, &intersect_mask, false, &cpu);
+	if (ret < 0) {
+		raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+		return ret;
+	}
+	vector = ret;
+	adata->cpu = cpu;
+	adata->vec = vector;
+	per_cpu_ptr(irq_map, adata->cpu)[adata->vec] = irq_data_to_desc(data);
+	loongarch_avec_sync(adata);
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+	irq_data_update_effective_affinity(data, cpumask_of(cpu));
+
+	return IRQ_SET_MASK_OK;
+}
+
+void complete_irq_moving(void)
+{
+	struct pending_list *plist = this_cpu_ptr(&pending_list);
+	struct loongarch_avec_data *adata, *tmp;
+	int cpu, vector, bias;
+	u64 irr;
+
+	raw_spin_lock(&loongarch_avec.lock);
+
+	list_for_each_entry_safe(adata, tmp, &plist->head, entry) {
+		cpu = adata->prev_cpu;
+		vector = adata->prev_vec;
+		bias = vector / VECTORS_PER_REG;
+		switch (bias) {
+		case 0:
+			irr = csr_read64(LOONGARCH_CSR_ISR0);
+		case 1:
+			irr = csr_read64(LOONGARCH_CSR_ISR1);
+		case 2:
+			irr = csr_read64(LOONGARCH_CSR_ISR2);
+		case 3:
+			irr = csr_read64(LOONGARCH_CSR_ISR3);
+		}
+
+		if (irr & (1UL << (vector % VECTORS_PER_REG))) {
+			mp_ops.send_ipi_single(cpu, ACTION_CLEAR_VECT);
+			continue;
+		}
+		list_del(&adata->entry);
+		irq_matrix_free(loongarch_avec.vector_matrix, cpu, vector, adata->managed);
+		this_cpu_write(irq_map[vector], NULL);
+		adata->prev_cpu = adata->cpu;
+		adata->prev_vec = adata->vec;
+		adata->moving = 0;
+	}
+	raw_spin_unlock(&loongarch_avec.lock);
+}
+
+void loongarch_avec_offline_cpu(unsigned int cpu)
+{
+	struct pending_list *plist = per_cpu_ptr(&pending_list, cpu);
+	unsigned long flags;
+
+	if (!loongarch_avec.vector_matrix)
+		return;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	if (list_empty(&plist->head))
+		irq_matrix_offline(loongarch_avec.vector_matrix);
+	else
+		pr_warn("cpu %d advanced extioi is busy\n", cpu);
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+void loongarch_avec_online_cpu(unsigned int cpu)
+{
+	unsigned long flags;
+
+	if (!loongarch_avec.vector_matrix)
+		return;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+
+	irq_matrix_online(loongarch_avec.vector_matrix);
+
+	pending_list_init(cpu);
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+#else
+#define loongarch_avec_set_affinity		NULL
+#endif
+
+static void loongarch_avec_compose_msg(struct irq_data *d,
+		struct msi_msg *msg)
+{
+	struct loongarch_avec_data *avec_data;
+
+	avec_data = irq_data_get_irq_chip_data(d);
+
+	msg->address_hi = 0x0;
+	msg->address_lo = (msi_base_v2 | (avec_data->vec & 0xff) << 4) |
+			  ((cpu_logical_map(avec_data->cpu & 0xffff)) << 12);
+	msg->data = 0x0;
+
+}
+
+static struct irq_chip loongarch_avec_controller = {
+	.name			= "AVECINTC",
+	.irq_ack		= loongarch_avec_ack_irq,
+	.irq_mask		= loongarch_avec_mask_irq,
+	.irq_unmask		= loongarch_avec_unmask_irq,
+	.irq_set_affinity	= loongarch_avec_set_affinity,
+	.irq_compose_msi_msg	= loongarch_avec_compose_msg,
+};
+
+static void loongarch_avec_dispatch(struct irq_desc *desc)
+{
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	unsigned long vector;
+	struct irq_desc *d;
+
+	chained_irq_enter(chip, desc);
+	vector = csr_read64(LOONGARCH_CSR_IRR);
+	if (vector & IRR_INVALID_MASK)
+		return;
+
+	vector &= IRR_VECTOR_MASK;
+
+	d = this_cpu_read(irq_map[vector]);
+	if (d) {
+		generic_handle_irq_desc(d);
+	} else {
+		pr_warn("IRQ ERROR:Unexpected irq  occur on cpu %d[vector %ld]\n",
+			smp_processor_id(), vector);
+	}
+
+	chained_irq_exit(chip, desc);
+}
+
+static int loongarch_avec_alloc(struct irq_domain *domain, unsigned int virq,
+				unsigned int nr_irqs, void *arg)
+{
+	struct loongarch_avec_data *adata;
+	struct irq_data *irqd;
+	unsigned int cpu, vector, i, ret;
+	unsigned long flags;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	for (i = 0; i < nr_irqs; i++) {
+		irqd = irq_domain_get_irq_data(domain, virq + i);
+		adata = kzalloc(sizeof(*adata), GFP_KERNEL);
+		if (!adata) {
+			raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+			return -ENOMEM;
+		}
+		ret = irq_matrix_alloc(loongarch_avec.vector_matrix, cpu_online_mask, false, &cpu);
+		if (ret < 0) {
+			raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+			return ret;
+		}
+		vector = ret;
+		adata->prev_cpu = adata->cpu = cpu;
+		adata->prev_vec = adata->vec = vector;
+		adata->managed = irqd_affinity_is_managed(irqd);
+		irq_domain_set_info(domain, virq + i, virq + i, &loongarch_avec_controller,
+				adata, handle_edge_irq, NULL, NULL);
+		adata->moving = 0;
+		irqd_set_single_target(irqd);
+		irqd_set_affinity_on_activate(irqd);
+
+		per_cpu_ptr(irq_map, adata->cpu)[adata->vec] = irq_data_to_desc(irqd);
+	}
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+
+	return 0;
+}
+
+static void clear_free_vector(struct irq_data *irqd)
+{
+	struct loongarch_avec_data *adata = irq_data_get_irq_chip_data(irqd);
+	bool managed = irqd_affinity_is_managed(irqd);
+
+	per_cpu(irq_map, adata->cpu)[adata->vec] = NULL;
+	irq_matrix_free(loongarch_avec.vector_matrix, adata->cpu, adata->vec, managed);
+	adata->cpu = 0;
+	adata->vec = 0;
+#ifdef CONFIG_SMP
+	if (!adata->moving)
+		return;
+
+	per_cpu(irq_map, adata->prev_cpu)[adata->prev_vec] = 0;
+	irq_matrix_free(loongarch_avec.vector_matrix, adata->prev_cpu,
+			adata->prev_vec, adata->managed);
+	adata->prev_vec = 0;
+	adata->prev_cpu = 0;
+	adata->moving = 0;
+	list_del_init(&adata->entry);
+#endif
+}
+
+static void loongarch_avec_free(struct irq_domain *domain, unsigned int virq,
+		unsigned int nr_irqs)
+{
+	struct irq_data *d;
+	unsigned long flags;
+	unsigned int i;
+
+	raw_spin_lock_irqsave(&loongarch_avec.lock, flags);
+	for (i = 0; i < nr_irqs; i++) {
+		d = irq_domain_get_irq_data(domain, virq + i);
+		if (d) {
+			clear_free_vector(d);
+			irq_domain_reset_irq_data(d);
+
+		}
+	}
+
+	raw_spin_unlock_irqrestore(&loongarch_avec.lock, flags);
+}
+
+static const struct irq_domain_ops loongarch_avec_domain_ops = {
+	.alloc		= loongarch_avec_alloc,
+	.free		= loongarch_avec_free,
+};
+
+static int __init irq_matrix_init(void)
+{
+	int i;
+
+	loongarch_avec.vector_matrix = irq_alloc_matrix(NR_VECTORS, 0, NR_VECTORS - 1);
+	if (!loongarch_avec.vector_matrix)
+		return -ENOMEM;
+	for (i = 0; i < NR_LEGACY_VECTORS; i++)
+		irq_matrix_assign_system(loongarch_avec.vector_matrix, i, false);
+
+	irq_matrix_online(loongarch_avec.vector_matrix);
+
+	return 0;
+}
+
+static int __init loongarch_avec_init(struct irq_domain *parent)
+{
+	int ret = 0, parent_irq;
+	unsigned long tmp;
+
+	raw_spin_lock_init(&loongarch_avec.lock);
+
+	loongarch_avec.fwnode = irq_domain_alloc_named_fwnode("CORE_AVEC");
+	if (!loongarch_avec.fwnode) {
+		pr_err("Unable to allocate domain handle\n");
+		ret = -ENOMEM;
+		goto out;
+	}
+
+	loongarch_avec.domain = irq_domain_create_tree(loongarch_avec.fwnode,
+			&loongarch_avec_domain_ops, NULL);
+	if (!loongarch_avec.domain) {
+		pr_err("core-vec: cannot create IRQ domain\n");
+		ret = -ENOMEM;
+		goto out_free_handle;
+	}
+
+	parent_irq = irq_create_mapping(parent, INT_AVEC);
+	if (!parent_irq) {
+		pr_err("Failed to mapping hwirq\n");
+		ret = -EINVAL;
+		goto out_remove_domain;
+	}
+	irq_set_chained_handler_and_data(parent_irq, loongarch_avec_dispatch, NULL);
+
+	ret = irq_matrix_init();
+	if (ret) {
+		pr_err("Failed to init irq matrix\n");
+		goto out_free_matrix;
+	}
+#ifdef CONFIG_SMP
+	pending_list_init(0);
+#endif
+	tmp = iocsr_read64(LOONGARCH_IOCSR_MISC_FUNC);
+	tmp |= IOCSR_MISC_FUNC_AVEC_EN;
+	iocsr_write64(tmp, LOONGARCH_IOCSR_MISC_FUNC);
+
+	return ret;
+
+out_free_matrix:
+	kfree(loongarch_avec.vector_matrix);
+out_remove_domain:
+	irq_domain_remove(loongarch_avec.domain);
+out_free_handle:
+	irq_domain_free_fwnode(loongarch_avec.fwnode);
+out:
+	return ret;
+}
+
+static int __init pch_msi_parse_madt(union acpi_subtable_headers *header,
+				     const unsigned long end)
+{
+	struct acpi_madt_msi_pic *pchmsi_entry = (struct acpi_madt_msi_pic *)header;
+
+	msi_base_v2 = pchmsi_entry->msg_address - AVEC_MSG_OFFSET;
+	return pch_msi_acpi_init_v2(loongarch_avec.domain, pchmsi_entry);
+}
+
+static inline int __init acpi_cascade_irqdomain_init(void)
+{
+	return acpi_table_parse_madt(ACPI_MADT_TYPE_MSI_PIC, pch_msi_parse_madt, 1);
+}
+
+int __init loongarch_avec_acpi_init(struct irq_domain *parent)
+{
+	int ret = 0;
+
+	ret = loongarch_avec_init(parent);
+	if (ret) {
+		pr_err("Failed to init irq domain\n");
+		return ret;
+	}
+
+	ret = acpi_cascade_irqdomain_init();
+	if (ret) {
+		pr_err("Failed to cascade IRQ domain\n");
+		return ret;
+	}
+
+	return ret;
+}
diff --git a/drivers/irqchip/irq-loongarch-cpu.c b/drivers/irqchip/irq-loongarch-cpu.c
index 9d8f2c406043..1ecac59925c6 100644
--- a/drivers/irqchip/irq-loongarch-cpu.c
+++ b/drivers/irqchip/irq-loongarch-cpu.c
@@ -138,7 +138,9 @@ static int __init acpi_cascade_irqdomain_init(void)
 	if (r < 0)
 		return r;
 
-	return 0;
+	if (cpu_has_avecint)
+		r = loongarch_avec_acpi_init(irq_domain);
+	return r;
 }
 
 static int __init cpuintc_acpi_init(union acpi_subtable_headers *header,
diff --git a/drivers/irqchip/irq-loongson-eiointc.c b/drivers/irqchip/irq-loongson-eiointc.c
index c7ddebf312ad..1f9a30488137 100644
--- a/drivers/irqchip/irq-loongson-eiointc.c
+++ b/drivers/irqchip/irq-loongson-eiointc.c
@@ -359,6 +359,9 @@ static int __init acpi_cascade_irqdomain_init(void)
 	if (r < 0)
 		return r;
 
+	if (cpu_has_avecint)
+		return 0;
+
 	r = acpi_table_parse_madt(ACPI_MADT_TYPE_MSI_PIC, pch_msi_parse_madt, 1);
 	if (r < 0)
 		return r;
diff --git a/drivers/irqchip/irq-loongson-pch-msi.c b/drivers/irqchip/irq-loongson-pch-msi.c
index dd4d699170f4..8b7aae22e782 100644
--- a/drivers/irqchip/irq-loongson-pch-msi.c
+++ b/drivers/irqchip/irq-loongson-pch-msi.c
@@ -16,7 +16,6 @@
 #include <linux/slab.h>
 
 static int nr_pics;
-
 struct pch_msi_data {
 	struct mutex	msi_map_lock;
 	phys_addr_t	doorbell;
@@ -100,6 +99,17 @@ static struct irq_chip middle_irq_chip = {
 	.irq_compose_msi_msg	= pch_msi_compose_msi_msg,
 };
 
+static struct irq_chip pch_msi_irq_chip_v2 = {
+	.name			= "MSI",
+	.irq_ack		= irq_chip_ack_parent,
+};
+
+static struct msi_domain_info pch_msi_domain_info_v2 = {
+	.flags		= MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
+			MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX,
+	.chip	= &pch_msi_irq_chip_v2,
+};
+
 static int pch_msi_parent_domain_alloc(struct irq_domain *domain,
 					unsigned int virq, int hwirq)
 {
@@ -268,6 +278,9 @@ struct fwnode_handle *get_pch_msi_handle(int pci_segment)
 {
 	int i;
 
+	if (cpu_has_avecint)
+		return pch_msi_handle[0];
+
 	for (i = 0; i < MAX_IO_PICS; i++) {
 		if (msi_group[i].pci_segment == pci_segment)
 			return pch_msi_handle[i];
@@ -289,4 +302,31 @@ int __init pch_msi_acpi_init(struct irq_domain *parent,
 
 	return ret;
 }
+
+int __init pch_msi_acpi_init_v2(struct irq_domain *parent, struct acpi_madt_msi_pic *msi_entry)
+{
+	struct irq_domain *msi_domain;
+
+	if (pch_msi_handle[0])
+		return 0;
+
+	pch_msi_handle[0] = irq_domain_alloc_named_fwnode("msipic-v2");
+	if (!pch_msi_handle[0]) {
+		pr_err("Unable to allocate domain handle\n");
+		kfree(pch_msi_handle[0]);
+		return -ENOMEM;
+	}
+
+	msi_domain = pci_msi_create_irq_domain(pch_msi_handle[0],
+			&pch_msi_domain_info_v2,
+			parent);
+	if (!msi_domain) {
+		pr_err("Failed to create PCI MSI domain\n");
+		kfree(pch_msi_handle[0]);
+		return -ENOMEM;
+	}
+
+	pr_info("IRQ domain MSIPIC-V2 init done.\n");
+	return 0;
+}
 #endif
-- 
2.20.1

.

From: Zqiang <qiang.zhang1211@gmail.com>
To: paulmck@kernel.org,
	frederic@kernel.org,
	neeraj.upadhyay@kernel.org,
	joel@joelfernandes.org,
	urezki@gmail.com,
	boqun.feng@gmail.com
Cc: qiang.zhang1211@gmail.com,
	rcu@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v3] rcu-tasks: Fix access non-existent percpu rtpcp variable in rcu_tasks_need_gpcb()
Date: Wed, 10 Jul 2024 12:45:42 +0800
Message-Id: <20240710044542.444-1-qiang.zhang1211@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273086
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.rcu
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

For kernels built with CONFIG_FORCE_NR_CPUS=y, the nr_cpu_ids is
defined as NR_CPUS instead of the number of possible cpus, this
will cause the following system panic:

smpboot: Allowing 4 CPUs, 0 hotplug CPUs
...
setup_percpu: NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:512 nr_node_ids:1
...
BUG: unable to handle page fault for address: ffffffff9911c8c8
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
Oops: 0000 [#1] PREEMPT SMP PTI
CPU: 0 PID: 15 Comm: rcu_tasks_trace Tainted: G W
6.6.21 #1 5dc7acf91a5e8e9ac9dcfc35bee0245691283ea6
RIP: 0010:rcu_tasks_need_gpcb+0x25d/0x2c0
RSP: 0018:ffffa371c00a3e60 EFLAGS: 00010082
CR2: ffffffff9911c8c8 CR3: 000000040fa20005 CR4: 00000000001706f0
Call Trace:
<TASK>
? __die+0x23/0x80
? page_fault_oops+0xa4/0x180
? exc_page_fault+0x152/0x180
? asm_exc_page_fault+0x26/0x40
? rcu_tasks_need_gpcb+0x25d/0x2c0
? __pfx_rcu_tasks_kthread+0x40/0x40
rcu_tasks_one_gp+0x69/0x180
rcu_tasks_kthread+0x94/0xc0
kthread+0xe8/0x140
? __pfx_kthread+0x40/0x40
ret_from_fork+0x34/0x80
? __pfx_kthread+0x40/0x40
ret_from_fork_asm+0x1b/0x80
</TASK>

Considering that there may be holes in the CPU numbers, use the
maximum possible cpu number, instead of nr_cpu_ids, for configuring
enqueue and dequeue limits.

Closes: https://lore.kernel.org/linux-input/CALMA0xaTSMN+p4xUXkzrtR5r6k7hgoswcaXx7baR_z9r5jjskw@mail.gmail.com/T/#u
Reported-by: Zhixu Liu <zhixu.liu@gmail.com>
Signed-off-by: Zqiang <qiang.zhang1211@gmail.com>
---
 kernel/rcu/tasks.h | 80 +++++++++++++++++++++++++++++-----------------
 1 file changed, 51 insertions(+), 29 deletions(-)

diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h
index 2b1d6abf3ba3..12d63ce84cc9 100644
--- a/kernel/rcu/tasks.h
+++ b/kernel/rcu/tasks.h
@@ -49,6 +49,7 @@ struct rcu_tasks_percpu {
 	struct list_head rtp_blkd_tasks;
 	struct list_head rtp_exit_list;
 	int cpu;
+	int index;
 	struct rcu_tasks *rtpp;
 };
 
@@ -110,6 +111,7 @@ struct rcu_tasks {
 	call_rcu_func_t call_func;
 	unsigned int wait_state;
 	struct rcu_tasks_percpu __percpu *rtpcpu;
+	struct rcu_tasks_percpu **rtpcp_array;
 	int percpu_enqueue_shift;
 	int percpu_enqueue_lim;
 	int percpu_dequeue_lim;
@@ -182,6 +184,8 @@ module_param(rcu_task_collapse_lim, int, 0444);
 static int rcu_task_lazy_lim __read_mostly = 32;
 module_param(rcu_task_lazy_lim, int, 0444);
 
+static int rcu_task_cpu_ids;
+
 /* RCU tasks grace-period state for debugging. */
 #define RTGS_INIT		 0
 #define RTGS_WAIT_WAIT_CBS	 1
@@ -245,6 +249,8 @@ static void cblist_init_generic(struct rcu_tasks *rtp)
 	int cpu;
 	int lim;
 	int shift;
+	int maxcpu;
+	int index = 0;
 
 	if (rcu_task_enqueue_lim < 0) {
 		rcu_task_enqueue_lim = 1;
@@ -254,14 +260,9 @@ static void cblist_init_generic(struct rcu_tasks *rtp)
 	}
 	lim = rcu_task_enqueue_lim;
 
-	if (lim > nr_cpu_ids)
-		lim = nr_cpu_ids;
-	shift = ilog2(nr_cpu_ids / lim);
-	if (((nr_cpu_ids - 1) >> shift) >= lim)
-		shift++;
-	WRITE_ONCE(rtp->percpu_enqueue_shift, shift);
-	WRITE_ONCE(rtp->percpu_dequeue_lim, lim);
-	smp_store_release(&rtp->percpu_enqueue_lim, lim);
+	rtp->rtpcp_array = kcalloc(num_possible_cpus(), sizeof(struct rcu_tasks_percpu *), GFP_KERNEL);
+	BUG_ON(!rtp->rtpcp_array);
+
 	for_each_possible_cpu(cpu) {
 		struct rcu_tasks_percpu *rtpcp = per_cpu_ptr(rtp->rtpcpu, cpu);
 
@@ -273,14 +274,29 @@ static void cblist_init_generic(struct rcu_tasks *rtp)
 		INIT_WORK(&rtpcp->rtp_work, rcu_tasks_invoke_cbs_wq);
 		rtpcp->cpu = cpu;
 		rtpcp->rtpp = rtp;
+		rtpcp->index = index;
+		rtp->rtpcp_array[index] = rtpcp;
+		index++;
 		if (!rtpcp->rtp_blkd_tasks.next)
 			INIT_LIST_HEAD(&rtpcp->rtp_blkd_tasks);
 		if (!rtpcp->rtp_exit_list.next)
 			INIT_LIST_HEAD(&rtpcp->rtp_exit_list);
+		maxcpu = cpu;
 	}
 
-	pr_info("%s: Setting shift to %d and lim to %d rcu_task_cb_adjust=%d.\n", rtp->name,
-			data_race(rtp->percpu_enqueue_shift), data_race(rtp->percpu_enqueue_lim), rcu_task_cb_adjust);
+	rcu_task_cpu_ids = maxcpu + 1;
+	if (lim > rcu_task_cpu_ids)
+		lim = rcu_task_cpu_ids;
+	shift = ilog2(rcu_task_cpu_ids / lim);
+	if (((rcu_task_cpu_ids - 1) >> shift) >= lim)
+		shift++;
+	WRITE_ONCE(rtp->percpu_enqueue_shift, shift);
+	WRITE_ONCE(rtp->percpu_dequeue_lim, lim);
+	smp_store_release(&rtp->percpu_enqueue_lim, lim);
+
+	pr_info("%s: Setting shift to %d and lim to %d rcu_task_cb_adjust=%d rcu_task_cpu_ids=%d.\n",
+			rtp->name, data_race(rtp->percpu_enqueue_shift), data_race(rtp->percpu_enqueue_lim),
+			rcu_task_cb_adjust, rcu_task_cpu_ids);
 }
 
 // Compute wakeup time for lazy callback timer.
@@ -348,7 +364,7 @@ static void call_rcu_tasks_generic(struct rcu_head *rhp, rcu_callback_t func,
 			rtpcp->rtp_n_lock_retries = 0;
 		}
 		if (rcu_task_cb_adjust && ++rtpcp->rtp_n_lock_retries > rcu_task_contend_lim &&
-		    READ_ONCE(rtp->percpu_enqueue_lim) != nr_cpu_ids)
+		    READ_ONCE(rtp->percpu_enqueue_lim) != rcu_task_cpu_ids)
 			needadjust = true;  // Defer adjustment to avoid deadlock.
 	}
 	// Queuing callbacks before initialization not yet supported.
@@ -368,10 +384,10 @@ static void call_rcu_tasks_generic(struct rcu_head *rhp, rcu_callback_t func,
 	raw_spin_unlock_irqrestore_rcu_node(rtpcp, flags);
 	if (unlikely(needadjust)) {
 		raw_spin_lock_irqsave(&rtp->cbs_gbl_lock, flags);
-		if (rtp->percpu_enqueue_lim != nr_cpu_ids) {
+		if (rtp->percpu_enqueue_lim != rcu_task_cpu_ids) {
 			WRITE_ONCE(rtp->percpu_enqueue_shift, 0);
-			WRITE_ONCE(rtp->percpu_dequeue_lim, nr_cpu_ids);
-			smp_store_release(&rtp->percpu_enqueue_lim, nr_cpu_ids);
+			WRITE_ONCE(rtp->percpu_dequeue_lim, rcu_task_cpu_ids);
+			smp_store_release(&rtp->percpu_enqueue_lim, rcu_task_cpu_ids);
 			pr_info("Switching %s to per-CPU callback queuing.\n", rtp->name);
 		}
 		raw_spin_unlock_irqrestore(&rtp->cbs_gbl_lock, flags);
@@ -444,6 +460,8 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp)
 
 	dequeue_limit = smp_load_acquire(&rtp->percpu_dequeue_lim);
 	for (cpu = 0; cpu < dequeue_limit; cpu++) {
+		if (!cpu_possible(cpu))
+			continue;
 		struct rcu_tasks_percpu *rtpcp = per_cpu_ptr(rtp->rtpcpu, cpu);
 
 		/* Advance and accelerate any new callbacks. */
@@ -481,7 +499,7 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp)
 	if (rcu_task_cb_adjust && ncbs <= rcu_task_collapse_lim) {
 		raw_spin_lock_irqsave(&rtp->cbs_gbl_lock, flags);
 		if (rtp->percpu_enqueue_lim > 1) {
-			WRITE_ONCE(rtp->percpu_enqueue_shift, order_base_2(nr_cpu_ids));
+			WRITE_ONCE(rtp->percpu_enqueue_shift, order_base_2(rcu_task_cpu_ids));
 			smp_store_release(&rtp->percpu_enqueue_lim, 1);
 			rtp->percpu_dequeue_gpseq = get_state_synchronize_rcu();
 			gpdone = false;
@@ -496,7 +514,9 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp)
 			pr_info("Completing switch %s to CPU-0 callback queuing.\n", rtp->name);
 		}
 		if (rtp->percpu_dequeue_lim == 1) {
-			for (cpu = rtp->percpu_dequeue_lim; cpu < nr_cpu_ids; cpu++) {
+			for (cpu = rtp->percpu_dequeue_lim; cpu < rcu_task_cpu_ids; cpu++) {
+				if (!cpu_possible(cpu))
+					continue;
 				struct rcu_tasks_percpu *rtpcp = per_cpu_ptr(rtp->rtpcpu, cpu);
 
 				WARN_ON_ONCE(rcu_segcblist_n_cbs(&rtpcp->cblist));
@@ -511,30 +531,32 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp)
 // Advance callbacks and invoke any that are ready.
 static void rcu_tasks_invoke_cbs(struct rcu_tasks *rtp, struct rcu_tasks_percpu *rtpcp)
 {
-	int cpu;
-	int cpunext;
 	int cpuwq;
 	unsigned long flags;
 	int len;
+	int index;
 	struct rcu_head *rhp;
 	struct rcu_cblist rcl = RCU_CBLIST_INITIALIZER(rcl);
 	struct rcu_tasks_percpu *rtpcp_next;
 
-	cpu = rtpcp->cpu;
-	cpunext = cpu * 2 + 1;
-	if (cpunext < smp_load_acquire(&rtp->percpu_dequeue_lim)) {
-		rtpcp_next = per_cpu_ptr(rtp->rtpcpu, cpunext);
-		cpuwq = rcu_cpu_beenfullyonline(cpunext) ? cpunext : WORK_CPU_UNBOUND;
-		queue_work_on(cpuwq, system_wq, &rtpcp_next->rtp_work);
-		cpunext++;
-		if (cpunext < smp_load_acquire(&rtp->percpu_dequeue_lim)) {
-			rtpcp_next = per_cpu_ptr(rtp->rtpcpu, cpunext);
-			cpuwq = rcu_cpu_beenfullyonline(cpunext) ? cpunext : WORK_CPU_UNBOUND;
+	index = rtpcp->index * 2 + 1;
+	if (index < num_possible_cpus()) {
+		rtpcp_next = rtp->rtpcp_array[index];
+		if (rtpcp_next->cpu < smp_load_acquire(&rtp->percpu_dequeue_lim)) {
+			cpuwq = rcu_cpu_beenfullyonline(rtpcp_next->cpu) ? rtpcp_next->cpu : WORK_CPU_UNBOUND;
 			queue_work_on(cpuwq, system_wq, &rtpcp_next->rtp_work);
+			index++;
+			if (index < num_possible_cpus()) {
+				rtpcp_next = rtp->rtpcp_array[index];
+				if (rtpcp_next->cpu < smp_load_acquire(&rtp->percpu_dequeue_lim)) {
+					cpuwq = rcu_cpu_beenfullyonline(rtpcp_next->cpu) ? rtpcp_next->cpu : WORK_CPU_UNBOUND;
+					queue_work_on(cpuwq, system_wq, &rtpcp_next->rtp_work);
+				}
+			}
 		}
 	}
 
-	if (rcu_segcblist_empty(&rtpcp->cblist) || !cpu_possible(cpu))
+	if (rcu_segcblist_empty(&rtpcp->cblist))
 		return;
 	raw_spin_lock_irqsave_rcu_node(rtpcp, flags);
 	rcu_segcblist_advance(&rtpcp->cblist, rcu_seq_current(&rtp->tasks_gp_seq));
-- 
2.17.1

.

From: Umang Jain <umang.jain@ideasonboard.com>
To: linux-media@vger.kernel.org
Cc: Alexander Shiyan <eagle.alexander923@gmail.com>,
	Kieran Bingham <kieran.bingham@ideasonboard.com>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	open list <linux-kernel@vger.kernel.org>,
	Umang Jain <umang.jain@ideasonboard.com>
Subject: [PATCH 0/2] media: imx335: Support vertical flip
Date: Wed, 10 Jul 2024 10:16:30 +0530
Message-ID: <20240710044633.81372-1-umang.jain@ideasonboard.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273087
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-media
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi all,

This work intends to supprt vertical flipping for IMX335 driver.
1/2 contains a small drive by fix, to rename the mode struct name
2/2 introduces the support for vertical flip for the mode.

Umang Jain (2):
  media: imx335: Rectify name of mode struct
  media: imx335: Support vertical flip

 drivers/media/i2c/imx335.c | 77 +++++++++++++++++++++++++++++++++++---
 1 file changed, 72 insertions(+), 5 deletions(-)

-- 
2.45.0

.

Date: Wed, 10 Jul 2024 12:51:44 +0800
From: kernel test robot <oliver.sang@intel.com>
To: Tejun Heo <tj@kernel.org>
CC: <oe-lkp@lists.linux.dev>, <lkp@intel.com>, <linux-kernel@vger.kernel.org>,
	<x86@kernel.org>, Peter Zijlstra <peterz@infradead.org>,
	<ying.huang@intel.com>, <feng.tang@intel.com>, <fengwei.yin@intel.com>,
	<aubrey.li@linux.intel.com>, <yu.c.chen@intel.com>, <oliver.sang@intel.com>
Subject: [tip:sched/core] [sched/fair]  d329605287:
 stress-ng.resched.ops_per_sec -24.0% regression
Message-ID: <202407101139.6e513af5-oliver.sang@intel.com>
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273092
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail



Hello,

kernel test robot noticed a -24.0% regression of stress-ng.resched.ops_per_sec on:


commit: d329605287020c3d1c3b0dadc63d8208e7251382 ("sched/fair: set_load_weight() must also call reweight_task() for SCHED_IDLE tasks")
https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git sched/core

testcase: stress-ng
test machine: 64 threads 2 sockets Intel(R) Xeon(R) Gold 6346 CPU @ 3.10GHz (Ice Lake) with 256G memory
parameters:

	nr_threads: 100%
	testtime: 60s
	test: resched
	cpufreq_governor: performance




If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202407101139.6e513af5-oliver.sang@intel.com


Details are as below:
-------------------------------------------------------------------------------------------------->


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20240710/202407101139.6e513af5-oliver.sang@intel.com

=========================================================================================
compiler/cpufreq_governor/kconfig/nr_threads/rootfs/tbox_group/test/testcase/testtime:
  gcc-13/performance/x86_64-rhel-8.3/100%/debian-12-x86_64-20240206.cgz/lkp-icl-2sp7/resched/stress-ng/60s

commit: 
  0ec208ce98 ("sched/psi: Optimise psi_group_change a bit")
  d329605287 ("sched/fair: set_load_weight() must also call reweight_task() for SCHED_IDLE tasks")

0ec208ce98349297 d329605287020c3d1c3b0dadc63 
---------------- --------------------------- 
         %stddev     %change         %stddev
             \          |                \  
   8336590           -52.6%    3951818 ±  2%  vmstat.system.cs
    178295            +3.0%     183593        vmstat.system.in
      0.52 ±  5%      +0.1        0.59 ±  3%  mpstat.cpu.all.irq%
      5.99            -2.5        3.50 ±  2%  mpstat.cpu.all.nice%
      0.33            +0.1        0.40        mpstat.cpu.all.soft%
  16848066 ±  8%     +28.0%   21567991 ±  2%  numa-numastat.node0.local_node
  16876736 ±  8%     +27.9%   21592452 ±  2%  numa-numastat.node0.numa_hit
  18630612 ±  4%     +23.3%   22975647 ±  3%  numa-numastat.node1.local_node
  18671925 ±  4%     +23.3%   23019799 ±  3%  numa-numastat.node1.numa_hit
     62615 ±  3%     -24.0%      47612 ± 16%  numa-meminfo.node1.Active
     62599 ±  3%     -24.0%      47591 ± 16%  numa-meminfo.node1.Active(anon)
   3987568 ±  7%     -21.1%    3145371 ±  4%  numa-meminfo.node1.Inactive
   3987470 ±  7%     -21.1%    3145235 ±  4%  numa-meminfo.node1.Inactive(anon)
    657043 ±  6%     -25.1%     491831 ±  9%  numa-meminfo.node1.Mapped
   3579732 ±  6%     -20.4%    2849082 ±  3%  numa-meminfo.node1.Shmem
     80007 ±  6%     -19.9%      64050 ±  8%  meminfo.Active
     79975 ±  6%     -20.0%      64018 ±  8%  meminfo.Active(anon)
   6744130 ±  3%     -10.9%    6008490        meminfo.Cached
   4289247 ±  5%     -17.0%    3558200 ±  2%  meminfo.Inactive
   4289034 ±  5%     -17.0%    3557986 ±  2%  meminfo.Inactive(anon)
    841761 ±  7%     -20.4%     669712 ±  3%  meminfo.Mapped
   3660730 ±  6%     -20.1%    2925086 ±  2%  meminfo.Shmem
 7.298e+08           -24.0%  5.547e+08        stress-ng.resched.ops
  12138227           -24.0%    9226692        stress-ng.resched.ops_per_sec
 5.232e+08           -52.6%   2.48e+08        stress-ng.time.involuntary_context_switches
  40641697           +32.7%   53950252 ±  2%  stress-ng.time.minor_page_faults
      3208            +3.7%       3327        stress-ng.time.system_time
    460.75           -24.9%     346.22        stress-ng.time.user_time
   1734221           +43.1%    2480859        stress-ng.time.voluntary_context_switches
  16850778 ±  8%     +28.0%   21573049 ±  2%  numa-vmstat.node0.numa_hit
  16822108 ±  8%     +28.1%   21548588 ±  2%  numa-vmstat.node0.numa_local
     15641 ±  3%     -24.4%      11829 ± 15%  numa-vmstat.node1.nr_active_anon
    995369 ±  7%     -21.1%     785041 ±  4%  numa-vmstat.node1.nr_inactive_anon
    163326 ±  6%     -25.0%     122520 ±  9%  numa-vmstat.node1.nr_mapped
    893612 ±  6%     -20.4%     710994 ±  3%  numa-vmstat.node1.nr_shmem
     15641 ±  3%     -24.4%      11829 ± 15%  numa-vmstat.node1.nr_zone_active_anon
    995369 ±  7%     -21.1%     785041 ±  4%  numa-vmstat.node1.nr_zone_inactive_anon
  18643395 ±  4%     +23.4%   22998770 ±  3%  numa-vmstat.node1.numa_hit
  18602082 ±  4%     +23.4%   22954618 ±  3%  numa-vmstat.node1.numa_local
     20312 ±  6%     -21.2%      15996 ±  7%  proc-vmstat.nr_active_anon
   1689468 ±  3%     -11.1%    1501770        proc-vmstat.nr_file_pages
   1075835 ±  5%     -17.3%     889317 ±  2%  proc-vmstat.nr_inactive_anon
     36682            -1.5%      36122        proc-vmstat.nr_kernel_stack
    213413 ±  7%     -21.5%     167443 ±  2%  proc-vmstat.nr_mapped
    918616 ±  6%     -20.4%     730918 ±  2%  proc-vmstat.nr_shmem
     25826            -1.6%      25404        proc-vmstat.nr_slab_reclaimable
     20312 ±  6%     -21.2%      15996 ±  7%  proc-vmstat.nr_zone_active_anon
   1075835 ±  5%     -17.3%     889317 ±  2%  proc-vmstat.nr_zone_inactive_anon
  35550427 ±  3%     +25.4%   44585721 ±  3%  proc-vmstat.numa_hit
  35480445 ±  3%     +25.5%   44517108 ±  3%  proc-vmstat.numa_local
     20419           -16.9%      16969 ± 39%  proc-vmstat.pgactivate
  36894329 ±  3%     +25.8%   46413037 ±  3%  proc-vmstat.pgalloc_normal
  41331111           +32.0%   54574611 ±  2%  proc-vmstat.pgfault
  35265617 ±  3%     +27.7%   45030638 ±  3%  proc-vmstat.pgfree
      0.93           +29.0%       1.20        perf-stat.i.MPKI
 2.547e+10           -13.0%  2.214e+10        perf-stat.i.branch-instructions
 1.909e+08 ±  2%     -15.0%  1.622e+08        perf-stat.i.branch-misses
     25.52            -1.4       24.11        perf-stat.i.cache-miss-rate%
 1.074e+08           +15.4%  1.239e+08        perf-stat.i.cache-misses
 4.293e+08           +22.7%  5.266e+08        perf-stat.i.cache-references
   8481137           -51.9%    4077796        perf-stat.i.context-switches
      1.64           +12.2%       1.84        perf-stat.i.cpi
      9401          +114.7%      20184        perf-stat.i.cpu-migrations
      1826           -14.2%       1568        perf-stat.i.cycles-between-cache-misses
 1.192e+11           -11.3%  1.057e+11        perf-stat.i.instructions
      0.62           -10.9%       0.55        perf-stat.i.ipc
      0.89 ± 17%     +43.7%       1.27 ± 10%  perf-stat.i.major-faults
    153.13           -40.4%      91.31        perf-stat.i.metric.K/sec
    675258 ±  2%     +31.8%     889940 ±  2%  perf-stat.i.minor-faults
    675259 ±  2%     +31.8%     889941 ±  2%  perf-stat.i.page-faults
      0.90 ±  2%     +30.2%       1.17        perf-stat.overall.MPKI
     24.68            -1.4       23.26        perf-stat.overall.cache-miss-rate%
      1.64           +12.5%       1.85        perf-stat.overall.cpi
      1834 ±  2%     -13.6%       1585        perf-stat.overall.cycles-between-cache-misses
      0.61           -11.1%       0.54        perf-stat.overall.ipc
 4.063e+08 ±  6%     +19.5%  4.855e+08 ±  7%  perf-stat.ps.cache-references
   8096825 ±  6%     -53.5%    3763797 ±  8%  perf-stat.ps.context-switches
      8836 ±  6%    +109.9%      18544 ±  7%  perf-stat.ps.cpu-migrations
      0.83 ± 21%     +37.0%       1.14 ±  6%  perf-stat.ps.major-faults
    639377 ±  5%     +28.4%     821215 ±  7%  perf-stat.ps.minor-faults
    639378 ±  5%     +28.4%     821216 ±  7%  perf-stat.ps.page-faults
  14062376           -81.9%    2541530        sched_debug.cfs_rq:/.avg_vruntime.avg
  16401321 ±  2%     -83.0%    2782766 ±  2%  sched_debug.cfs_rq:/.avg_vruntime.max
   9994597 ±  3%     -81.9%    1808326 ±  5%  sched_debug.cfs_rq:/.avg_vruntime.min
    771192 ±  7%     -82.7%     133680 ±  9%  sched_debug.cfs_rq:/.avg_vruntime.stddev
     62.92 ± 27%     -29.0%      44.67 ±  5%  sched_debug.cfs_rq:/.h_nr_running.max
     13.64 ±  8%     -24.3%      10.33 ±  6%  sched_debug.cfs_rq:/.h_nr_running.stddev
     59.25 ± 29%     -30.0%      41.50 ±  4%  sched_debug.cfs_rq:/.idle_h_nr_running.max
     12.88 ±  9%     -23.7%       9.83 ±  6%  sched_debug.cfs_rq:/.idle_h_nr_running.stddev
    228669 ± 69%     -78.9%      48255 ± 39%  sched_debug.cfs_rq:/.left_deadline.avg
  10760636 ± 14%     -79.5%    2208314 ± 16%  sched_debug.cfs_rq:/.left_deadline.max
   1485958 ± 36%     -79.4%     306412 ± 25%  sched_debug.cfs_rq:/.left_deadline.stddev
    228668 ± 69%     -78.9%      48255 ± 39%  sched_debug.cfs_rq:/.left_vruntime.avg
  10760550 ± 14%     -79.5%    2208306 ± 16%  sched_debug.cfs_rq:/.left_vruntime.max
   1485951 ± 36%     -79.4%     306409 ± 25%  sched_debug.cfs_rq:/.left_vruntime.stddev
      0.67 ± 35%    +287.5%       2.58 ± 37%  sched_debug.cfs_rq:/.load_avg.min
  14062379           -81.9%    2541530        sched_debug.cfs_rq:/.min_vruntime.avg
  16401320 ±  2%     -83.0%    2782766 ±  2%  sched_debug.cfs_rq:/.min_vruntime.max
   9994859 ±  3%     -81.9%    1808327 ±  5%  sched_debug.cfs_rq:/.min_vruntime.min
    771174 ±  7%     -82.7%     133680 ±  9%  sched_debug.cfs_rq:/.min_vruntime.stddev
    228671 ± 69%     -78.9%      48255 ± 39%  sched_debug.cfs_rq:/.right_vruntime.avg
  10760559 ± 14%     -79.5%    2208307 ± 16%  sched_debug.cfs_rq:/.right_vruntime.max
   1485968 ± 36%     -79.4%     306410 ± 25%  sched_debug.cfs_rq:/.right_vruntime.stddev
     54904 ± 22%     -28.5%      39277 ± 12%  sched_debug.cfs_rq:/.runnable_avg.max
     12434 ±  7%     -20.6%       9870 ±  9%  sched_debug.cfs_rq:/.runnable_avg.stddev
    107.59 ± 15%     +78.3%     191.80 ± 10%  sched_debug.cfs_rq:/.util_est.avg
    209.16 ± 12%     +22.1%     255.37 ±  5%  sched_debug.cfs_rq:/.util_est.stddev
    850096           -22.1%     662380        sched_debug.cpu.avg_idle.avg
      7.40 ± 13%     +44.2%      10.67 ± 14%  sched_debug.cpu.clock.stddev
    476028           +30.7%     622160        sched_debug.cpu.curr->pid.max
    206133 ±  7%     +41.3%     291290 ±  4%  sched_debug.cpu.curr->pid.stddev
     63.00 ± 27%     -29.2%      44.58 ±  5%  sched_debug.cpu.nr_running.max
     13.63 ±  8%     -24.3%      10.31 ±  6%  sched_debug.cpu.nr_running.stddev
   4021509           -52.3%    1919719        sched_debug.cpu.nr_switches.avg
   4839722 ±  2%     -54.4%    2206359 ±  2%  sched_debug.cpu.nr_switches.max
   2378111 ±  9%     -47.1%    1258173 ±  7%  sched_debug.cpu.nr_switches.min
    437605 ± 12%     -65.0%     153196 ±  4%  sched_debug.cpu.nr_switches.stddev
     17.27 ±  5%     -24.1%      13.11 ± 10%  sched_debug.cpu.nr_uninterruptible.stddev
     22.56 ±  2%     -10.2       12.31 ±  5%  perf-profile.calltrace.cycles-pp.__sched_yield
     17.87 ±  2%      -8.1        9.79 ±  5%  perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.__sched_yield
     17.74 ±  2%      -8.0        9.70 ±  5%  perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_yield
     23.76            -7.0       16.72 ±  5%  perf-profile.calltrace.cycles-pp.__sched_setscheduler
     21.68            -6.3       15.36 ±  5%  perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.__sched_setscheduler
     21.58            -6.3       15.28 ±  5%  perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_setscheduler
     20.98            -6.1       14.89 ±  5%  perf-profile.calltrace.cycles-pp.__x64_sys_sched_setscheduler.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_setscheduler
     20.94            -6.1       14.85 ±  5%  perf-profile.calltrace.cycles-pp.do_sched_setscheduler.__x64_sys_sched_setscheduler.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_setscheduler
     13.06 ±  2%      -5.6        7.48 ±  5%  perf-profile.calltrace.cycles-pp.__x64_sys_sched_yield.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_yield
     10.65 ±  2%      -4.8        5.85 ±  5%  perf-profile.calltrace.cycles-pp.schedule.__x64_sys_sched_yield.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_yield
     10.73 ±  2%      -3.7        7.03 ±  5%  perf-profile.calltrace.cycles-pp.__schedule.schedule.__x64_sys_sched_yield.do_syscall_64.entry_SYSCALL_64_after_hwframe
     18.81            -3.4       15.41 ±  5%  perf-profile.calltrace.cycles-pp._sched_setscheduler.do_sched_setscheduler.__x64_sys_sched_setscheduler.do_syscall_64.entry_SYSCALL_64_after_hwframe
     18.19            -3.2       14.96 ±  5%  perf-profile.calltrace.cycles-pp.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler.__x64_sys_sched_setscheduler.do_syscall_64
      4.18 ±  2%      -2.2        1.94 ±  6%  perf-profile.calltrace.cycles-pp.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_yield
      3.73            -2.0        1.78 ±  5%  perf-profile.calltrace.cycles-pp.stress_resched_child
      3.89 ±  2%      -1.2        2.66 ±  4%  perf-profile.calltrace.cycles-pp.__sched_getscheduler
      4.40 ±  2%      -1.2        3.17 ±  5%  perf-profile.calltrace.cycles-pp.pick_next_task_fair.__schedule.schedule.__x64_sys_sched_yield.do_syscall_64
      2.19            -1.2        0.98 ±  5%  perf-profile.calltrace.cycles-pp.switch_mm_irqs_off.__schedule.schedule.__x64_sys_sched_yield.do_syscall_64
      3.03 ±  2%      -1.2        1.88 ± 10%  perf-profile.calltrace.cycles-pp.capable.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler.__x64_sys_sched_setscheduler
      3.00 ±  2%      -1.1        1.86 ± 10%  perf-profile.calltrace.cycles-pp.security_capable.capable.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler
      2.92 ±  2%      -1.1        1.80 ± 10%  perf-profile.calltrace.cycles-pp.apparmor_capable.security_capable.capable.__sched_setscheduler._sched_setscheduler
      3.05 ±  2%      -1.0        2.02 ±  5%  perf-profile.calltrace.cycles-pp.dequeue_entity.dequeue_task_fair.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler
      1.78 ±  2%      -1.0        0.82 ±  6%  perf-profile.calltrace.cycles-pp.__rseq_handle_notify_resume.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_yield
      2.27            -0.8        1.49 ±  5%  perf-profile.calltrace.cycles-pp.enqueue_entity.enqueue_task_fair.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler
      1.38 ±  2%      -0.7        0.66 ±  7%  perf-profile.calltrace.cycles-pp.put_prev_entity.pick_next_task_fair.__schedule.schedule.__x64_sys_sched_yield
      2.19            -0.7        1.54 ±  5%  perf-profile.calltrace.cycles-pp.do_sched_yield.__x64_sys_sched_yield.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_yield
      1.19 ±  3%      -0.6        0.55 ±  6%  perf-profile.calltrace.cycles-pp.switch_fpu_return.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_yield
      4.83 ±  2%      -0.6        4.24 ±  4%  perf-profile.calltrace.cycles-pp.dequeue_task_fair.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler.__x64_sys_sched_setscheduler
      1.15 ±  2%      -0.6        0.58 ±  6%  perf-profile.calltrace.cycles-pp.set_next_entity.pick_next_task_fair.__schedule.schedule.__x64_sys_sched_yield
      1.09 ±  2%      -0.5        0.54 ±  5%  perf-profile.calltrace.cycles-pp.rseq_ip_fixup.__rseq_handle_notify_resume.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe
      1.74 ±  2%      -0.5        1.19 ±  5%  perf-profile.calltrace.cycles-pp.yield_task_fair.do_sched_yield.__x64_sys_sched_yield.do_syscall_64.entry_SYSCALL_64_after_hwframe
      1.56 ±  2%      -0.5        1.05 ±  5%  perf-profile.calltrace.cycles-pp.update_curr.dequeue_entity.dequeue_task_fair.__sched_setscheduler._sched_setscheduler
      0.76 ±  2%      -0.5        0.26 ±100%  perf-profile.calltrace.cycles-pp.update_load_avg.set_next_entity.set_next_task_fair.__sched_setscheduler._sched_setscheduler
      1.79 ±  2%      -0.5        1.30 ±  4%  perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.__sched_getscheduler
      1.69 ±  2%      -0.5        1.20 ±  4%  perf-profile.calltrace.cycles-pp.set_next_task_fair.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler.__x64_sys_sched_setscheduler
      1.66 ±  2%      -0.5        1.21 ±  4%  perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_getscheduler
      1.19 ±  2%      -0.5        0.73 ±  4%  perf-profile.calltrace.cycles-pp.put_prev_task_fair.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler.__x64_sys_sched_setscheduler
      1.56 ±  2%      -0.5        1.11 ±  3%  perf-profile.calltrace.cycles-pp.find_task_by_vpid.do_sched_setscheduler.__x64_sys_sched_setscheduler.do_syscall_64.entry_SYSCALL_64_after_hwframe
      1.50 ±  2%      -0.4        1.06 ±  4%  perf-profile.calltrace.cycles-pp.set_next_entity.set_next_task_fair.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler
      1.09 ±  2%      -0.4        0.66 ±  4%  perf-profile.calltrace.cycles-pp.put_prev_entity.put_prev_task_fair.__sched_setscheduler._sched_setscheduler.do_sched_setscheduler
      0.99 ±  2%      -0.4        0.64 ±  5%  perf-profile.calltrace.cycles-pp.clear_bhb_loop.__sched_setscheduler
      0.75 ±  4%      -0.3        0.43 ± 44%  perf-profile.calltrace.cycles-pp.__radix_tree_lookup.find_task_by_vpid.do_sched_setscheduler.__x64_sys_sched_setscheduler.do_syscall_64
      0.93 ±  3%      -0.3        0.61 ±  5%  perf-profile.calltrace.cycles-pp.clear_bhb_loop.__sched_yield
      0.95 ±  2%      -0.3        0.64 ±  4%  perf-profile.calltrace.cycles-pp.clear_bhb_loop.__sched_getscheduler
      1.24 ±  2%      -0.3        0.93 ±  4%  perf-profile.calltrace.cycles-pp.__x64_sys_sched_getscheduler.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_getscheduler
      1.00 ±  2%      -0.3        0.69 ±  4%  perf-profile.calltrace.cycles-pp.update_curr.yield_task_fair.do_sched_yield.__x64_sys_sched_yield.do_syscall_64
      1.12 ±  2%      -0.3        0.84 ±  4%  perf-profile.calltrace.cycles-pp.find_task_by_vpid.__x64_sys_sched_getscheduler.do_syscall_64.entry_SYSCALL_64_after_hwframe.__sched_getscheduler
      0.72 ±  2%      -0.2        0.55 ±  4%  perf-profile.calltrace.cycles-pp.pick_eevdf.pick_next_task_fair.__schedule.schedule.__x64_sys_sched_yield
      0.54 ±  2%      +0.1        0.68 ±  6%  perf-profile.calltrace.cycles-pp.kmem_cache_alloc_noprof.anon_vma_fork.dup_mmap.dup_mm.copy_process
      0.67 ±  2%      +0.2        0.87 ±  4%  perf-profile.calltrace.cycles-pp.kmem_cache_alloc_noprof.anon_vma_clone.anon_vma_fork.dup_mmap.dup_mm
      0.57 ±  2%      +0.2        0.76 ±  3%  perf-profile.calltrace.cycles-pp.kmem_cache_free.__vm_area_free.exit_mmap.__mmput.exit_mm
      0.62            +0.2        0.82 ±  3%  perf-profile.calltrace.cycles-pp.kmem_cache_free.exit_mmap.__mmput.exit_mm.do_exit
      1.05            +0.2        1.25 ±  3%  perf-profile.calltrace.cycles-pp.vma_interval_tree_insert_after.dup_mmap.dup_mm.copy_process.kernel_clone
      0.82 ±  2%      +0.2        1.04 ±  3%  perf-profile.calltrace.cycles-pp.__memcg_slab_post_alloc_hook.kmem_cache_alloc_noprof.vm_area_dup.dup_mmap.dup_mm
      0.65 ±  2%      +0.2        0.88 ±  3%  perf-profile.calltrace.cycles-pp.__vm_area_free.exit_mmap.__mmput.exit_mm.do_exit
      0.57 ±  2%      +0.3        0.83 ±  6%  perf-profile.calltrace.cycles-pp.up_write.dup_mmap.dup_mm.copy_process.kernel_clone
      0.74            +0.3        1.01 ±  3%  perf-profile.calltrace.cycles-pp.unlink_file_vma.free_pgtables.exit_mmap.__mmput.exit_mm
      0.82 ±  2%      +0.3        1.10 ±  3%  perf-profile.calltrace.cycles-pp.folio_remove_rmap_ptes.zap_present_ptes.zap_pte_range.zap_pmd_range.unmap_page_range
      0.94            +0.3        1.28 ±  4%  perf-profile.calltrace.cycles-pp.down_write.dup_mmap.dup_mm.copy_process.kernel_clone
      0.96            +0.4        1.33 ±  2%  perf-profile.calltrace.cycles-pp.__memcg_slab_free_hook.kmem_cache_free.unlink_anon_vmas.free_pgtables.exit_mmap
      0.96            +0.4        1.33 ±  2%  perf-profile.calltrace.cycles-pp.__anon_vma_interval_tree_remove.unlink_anon_vmas.free_pgtables.exit_mmap.__mmput
      0.35 ± 70%      +0.4        0.76 ±  3%  perf-profile.calltrace.cycles-pp.folios_put_refs.free_pages_and_swap_cache.__tlb_batch_free_encoded_pages.tlb_finish_mmu.exit_mmap
      1.53            +0.4        1.95 ±  4%  perf-profile.calltrace.cycles-pp.kmem_cache_alloc_noprof.vm_area_dup.dup_mmap.dup_mm.copy_process
      0.42 ± 44%      +0.4        0.85 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_spin_on_owner.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.unlink_anon_vmas
      0.78            +0.4        1.21 ±  3%  perf-profile.calltrace.cycles-pp.rwsem_spin_on_owner.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.anon_vma_clone
      1.16 ±  2%      +0.5        1.62 ±  2%  perf-profile.calltrace.cycles-pp.free_pages_and_swap_cache.__tlb_batch_free_encoded_pages.tlb_finish_mmu.exit_mmap.__mmput
      1.18 ±  2%      +0.5        1.65 ±  2%  perf-profile.calltrace.cycles-pp.__tlb_batch_free_encoded_pages.tlb_finish_mmu.exit_mmap.__mmput.exit_mm
      1.19 ±  2%      +0.5        1.67 ±  2%  perf-profile.calltrace.cycles-pp.tlb_finish_mmu.exit_mmap.__mmput.exit_mm.do_exit
      1.35            +0.5        1.83 ±  2%  perf-profile.calltrace.cycles-pp.kmem_cache_free.unlink_anon_vmas.free_pgtables.exit_mmap.__mmput
      0.90            +0.5        1.40 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_spin_on_owner.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.anon_vma_fork
      1.47 ±  2%      +0.5        1.98 ±  3%  perf-profile.calltrace.cycles-pp.next_uptodate_folio.filemap_map_pages.do_read_fault.do_fault.__handle_mm_fault
      1.38            +0.5        1.88 ±  2%  perf-profile.calltrace.cycles-pp._compound_head.copy_present_ptes.copy_pte_range.copy_p4d_range.copy_page_range
      0.08 ±223%      +0.5        0.61 ±  6%  perf-profile.calltrace.cycles-pp.__pte_alloc.copy_pte_range.copy_p4d_range.copy_page_range.dup_mmap
      0.00            +0.5        0.54 ±  2%  perf-profile.calltrace.cycles-pp.wake_up_new_task.kernel_clone.__do_sys_clone.do_syscall_64.entry_SYSCALL_64_after_hwframe
      0.00            +0.5        0.54 ±  7%  perf-profile.calltrace.cycles-pp.__alloc_pages_noprof.alloc_pages_mpol_noprof.pte_alloc_one.__pte_alloc.copy_pte_range
      0.00            +0.6        0.56 ±  6%  perf-profile.calltrace.cycles-pp.alloc_pages_mpol_noprof.pte_alloc_one.__pte_alloc.copy_pte_range.copy_p4d_range
      0.00            +0.6        0.56 ±  4%  perf-profile.calltrace.cycles-pp.syscall_exit_to_user_mode.do_syscall_64.entry_SYSCALL_64_after_hwframe
      0.00            +0.6        0.57 ±  3%  perf-profile.calltrace.cycles-pp.remove_vma.exit_mmap.__mmput.exit_mm.do_exit
      0.00            +0.6        0.58 ±  3%  perf-profile.calltrace.cycles-pp.do_wait.kernel_wait4.__do_sys_wait4.do_syscall_64.entry_SYSCALL_64_after_hwframe
      0.00            +0.6        0.59 ±  3%  perf-profile.calltrace.cycles-pp.kernel_wait4.__do_sys_wait4.do_syscall_64.entry_SYSCALL_64_after_hwframe.wait4
      0.00            +0.6        0.59 ±  3%  perf-profile.calltrace.cycles-pp.__do_sys_wait4.do_syscall_64.entry_SYSCALL_64_after_hwframe.wait4
      0.00            +0.6        0.59 ±  4%  perf-profile.calltrace.cycles-pp.up_write.free_pgtables.exit_mmap.__mmput.exit_mm
      0.00            +0.6        0.60 ±  6%  perf-profile.calltrace.cycles-pp.pte_alloc_one.__pte_alloc.copy_pte_range.copy_p4d_range.copy_page_range
      2.06            +0.6        2.66 ±  4%  perf-profile.calltrace.cycles-pp.vm_area_dup.dup_mmap.dup_mm.copy_process.kernel_clone
      0.83 ±  3%      +0.6        1.45 ±  5%  perf-profile.calltrace.cycles-pp.osq_lock.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.anon_vma_fork
      0.00            +0.7        0.65 ±  3%  perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe.wait4
      0.00            +0.7        0.65 ±  3%  perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe.wait4
      0.00            +0.7        0.67 ±  3%  perf-profile.calltrace.cycles-pp.wait4
      0.00            +0.7        0.67 ±  5%  perf-profile.calltrace.cycles-pp.down_write.unlink_file_vma.free_pgtables.exit_mmap.__mmput
      2.01 ±  3%      +0.7        2.69 ±  3%  perf-profile.calltrace.cycles-pp.filemap_map_pages.do_read_fault.do_fault.__handle_mm_fault.handle_mm_fault
      2.09 ±  3%      +0.7        2.78 ±  3%  perf-profile.calltrace.cycles-pp.do_read_fault.do_fault.__handle_mm_fault.handle_mm_fault.do_user_addr_fault
      2.09 ±  3%      +0.7        2.79 ±  3%  perf-profile.calltrace.cycles-pp.do_fault.__handle_mm_fault.handle_mm_fault.do_user_addr_fault.exc_page_fault
      0.00            +0.7        0.74 ±  3%  perf-profile.calltrace.cycles-pp.__put_anon_vma.unlink_anon_vmas.free_pgtables.exit_mmap.__mmput
      2.00            +0.7        2.75 ±  2%  perf-profile.calltrace.cycles-pp.copy_present_ptes.copy_pte_range.copy_p4d_range.copy_page_range.dup_mmap
      2.22 ±  3%      +0.8        2.98 ±  3%  perf-profile.calltrace.cycles-pp.__handle_mm_fault.handle_mm_fault.do_user_addr_fault.exc_page_fault.asm_exc_page_fault
      2.29 ±  3%      +0.8        3.07 ±  3%  perf-profile.calltrace.cycles-pp.handle_mm_fault.do_user_addr_fault.exc_page_fault.asm_exc_page_fault
      0.00            +0.8        0.80 ±  5%  perf-profile.calltrace.cycles-pp.osq_lock.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.anon_vma_clone
      1.02 ±  3%      +0.8        1.82 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.unlink_anon_vmas.free_pgtables
      1.06 ±  3%      +0.8        1.88 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_down_write_slowpath.down_write.unlink_anon_vmas.free_pgtables.exit_mmap
      1.30 ±  2%      +0.8        2.14 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.anon_vma_clone.anon_vma_fork
      0.00            +0.8        0.85 ±  5%  perf-profile.calltrace.cycles-pp.osq_lock.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.unlink_anon_vmas
      1.33 ±  2%      +0.9        2.19 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_down_write_slowpath.down_write.anon_vma_clone.anon_vma_fork.dup_mmap
      2.64            +0.9        3.53 ±  3%  perf-profile.calltrace.cycles-pp._compound_head.zap_present_ptes.zap_pte_range.zap_pmd_range.unmap_page_range
      1.30 ±  3%      +0.9        2.21 ±  4%  perf-profile.calltrace.cycles-pp.down_write.unlink_anon_vmas.free_pgtables.exit_mmap.__mmput
      2.52 ±  3%      +0.9        3.43 ±  3%  perf-profile.calltrace.cycles-pp.do_user_addr_fault.exc_page_fault.asm_exc_page_fault
      2.52 ±  3%      +0.9        3.44 ±  2%  perf-profile.calltrace.cycles-pp.exc_page_fault.asm_exc_page_fault
      1.53 ±  2%      +0.9        2.47 ±  5%  perf-profile.calltrace.cycles-pp.down_write.anon_vma_clone.anon_vma_fork.dup_mmap.dup_mm
      2.63 ±  3%      +0.9        3.57 ±  3%  perf-profile.calltrace.cycles-pp.asm_exc_page_fault
      0.38 ±103%      +1.0        1.36 ±  5%  perf-profile.calltrace.cycles-pp.schedule.__x64_sys_sched_yield.do_syscall_64.entry_SYSCALL_64_after_hwframe
      2.76 ±  2%      +1.0        3.78 ±  3%  perf-profile.calltrace.cycles-pp.copy_pte_range.copy_p4d_range.copy_page_range.dup_mmap.dup_mm
      3.08 ±  3%      +1.1        4.20 ±  3%  perf-profile.calltrace.cycles-pp.copy_p4d_range.copy_page_range.dup_mmap.dup_mm.copy_process
      3.14 ±  2%      +1.1        4.28 ±  3%  perf-profile.calltrace.cycles-pp.copy_page_range.dup_mmap.dup_mm.copy_process.kernel_clone
      1.84 ±  2%      +1.2        3.03 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_optimistic_spin.rwsem_down_write_slowpath.down_write.anon_vma_fork.dup_mmap
      1.88 ±  2%      +1.2        3.09 ±  4%  perf-profile.calltrace.cycles-pp.rwsem_down_write_slowpath.down_write.anon_vma_fork.dup_mmap.dup_mm
      0.44 ±103%      +1.2        1.68 ±  4%  perf-profile.calltrace.cycles-pp.__x64_sys_sched_yield.do_syscall_64.entry_SYSCALL_64_after_hwframe
      1.97 ±  2%      +1.2        3.22 ±  4%  perf-profile.calltrace.cycles-pp.down_write.anon_vma_fork.dup_mmap.dup_mm.copy_process
      3.92            +1.3        5.19 ±  2%  perf-profile.calltrace.cycles-pp.anon_vma_interval_tree_insert.anon_vma_clone.anon_vma_fork.dup_mmap.dup_mm
      4.05            +1.4        5.46 ±  3%  perf-profile.calltrace.cycles-pp.zap_present_ptes.zap_pte_range.zap_pmd_range.unmap_page_range.unmap_vmas
      5.03            +1.8        6.80 ±  3%  perf-profile.calltrace.cycles-pp.zap_pte_range.zap_pmd_range.unmap_page_range.unmap_vmas.exit_mmap
      5.12            +1.8        6.93 ±  3%  perf-profile.calltrace.cycles-pp.zap_pmd_range.unmap_page_range.unmap_vmas.exit_mmap.__mmput
      5.24            +1.8        7.08 ±  3%  perf-profile.calltrace.cycles-pp.unmap_page_range.unmap_vmas.exit_mmap.__mmput.exit_mm
      0.93 ± 37%      +2.0        2.92 ±  4%  perf-profile.calltrace.cycles-pp.do_sched_setscheduler.__x64_sys_sched_setscheduler.do_syscall_64.entry_SYSCALL_64_after_hwframe
      0.94 ± 38%      +2.0        2.92 ±  4%  perf-profile.calltrace.cycles-pp.__x64_sys_sched_setscheduler.do_syscall_64.entry_SYSCALL_64_after_hwframe
      5.68            +2.0        7.73 ±  3%  perf-profile.calltrace.cycles-pp.unmap_vmas.exit_mmap.__mmput.exit_mm.do_exit
      4.84            +2.4        7.28 ±  3%  perf-profile.calltrace.cycles-pp.unlink_anon_vmas.free_pgtables.exit_mmap.__mmput.exit_mm
      7.10            +2.8        9.91 ±  3%  perf-profile.calltrace.cycles-pp.anon_vma_clone.anon_vma_fork.dup_mmap.dup_mm.copy_process
      6.51            +3.1        9.58 ±  3%  perf-profile.calltrace.cycles-pp.free_pgtables.exit_mmap.__mmput.exit_mm.do_exit
     10.05            +4.4       14.47 ±  4%  perf-profile.calltrace.cycles-pp.anon_vma_fork.dup_mmap.dup_mm.copy_process.kernel_clone
     15.29            +6.2       21.54 ±  3%  perf-profile.calltrace.cycles-pp.exit_mmap.__mmput.exit_mm.do_exit.do_group_exit
     15.32            +6.3       21.58 ±  3%  perf-profile.calltrace.cycles-pp.__mmput.exit_mm.do_exit.do_group_exit.__x64_sys_exit_group
     15.36            +6.3       21.62 ±  3%  perf-profile.calltrace.cycles-pp.exit_mm.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64
     15.79            +6.5       22.27 ±  3%  perf-profile.calltrace.cycles-pp.__x64_sys_exit_group.do_syscall_64.entry_SYSCALL_64_after_hwframe
     15.79            +6.5       22.27 ±  3%  perf-profile.calltrace.cycles-pp.do_group_exit.__x64_sys_exit_group.do_syscall_64.entry_SYSCALL_64_after_hwframe
     15.79            +6.8       22.61 ±  3%  perf-profile.calltrace.cycles-pp.do_exit.do_group_exit.__x64_sys_exit_group.do_syscall_64.entry_SYSCALL_64_after_hwframe
     19.16            +7.5       26.64 ±  3%  perf-profile.calltrace.cycles-pp.dup_mmap.dup_mm.copy_process.kernel_clone.__do_sys_clone
     19.54            +7.6       27.16 ±  3%  perf-profile.calltrace.cycles-pp.dup_mm.copy_process.kernel_clone.__do_sys_clone.do_syscall_64
     20.33            +7.9       28.24 ±  3%  perf-profile.calltrace.cycles-pp.copy_process.kernel_clone.__do_sys_clone.do_syscall_64.entry_SYSCALL_64_after_hwframe
     20.78            +8.1       28.84 ±  3%  perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe._Fork
     20.78            +8.1       28.84 ±  3%  perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe._Fork
     20.75            +8.1       28.82 ±  3%  perf-profile.calltrace.cycles-pp.kernel_clone.__do_sys_clone.do_syscall_64.entry_SYSCALL_64_after_hwframe._Fork
     20.75            +8.1       28.82 ±  3%  perf-profile.calltrace.cycles-pp.__do_sys_clone.do_syscall_64.entry_SYSCALL_64_after_hwframe._Fork
     21.20            +8.2       29.38 ±  3%  perf-profile.calltrace.cycles-pp._Fork
     17.75 ±  4%     +10.0       27.76        perf-profile.calltrace.cycles-pp.do_syscall_64.entry_SYSCALL_64_after_hwframe
     17.76 ±  4%     +10.0       27.80        perf-profile.calltrace.cycles-pp.entry_SYSCALL_64_after_hwframe
     42.64           -10.6       32.08 ±  5%  perf-profile.children.cycles-pp.__sched_setscheduler
     23.20 ±  2%     -10.5       12.72 ±  5%  perf-profile.children.cycles-pp.__sched_yield
     13.79            -4.6        9.20 ±  5%  perf-profile.children.cycles-pp.__x64_sys_sched_yield
     21.95            -4.1       17.83 ±  5%  perf-profile.children.cycles-pp.__x64_sys_sched_setscheduler
     21.92            -4.1       17.80 ±  5%  perf-profile.children.cycles-pp.do_sched_setscheduler
     11.34            -3.9        7.41 ±  5%  perf-profile.children.cycles-pp.schedule
     11.22            -3.8        7.40 ±  4%  perf-profile.children.cycles-pp.__schedule
     18.91            -3.5       15.43 ±  5%  perf-profile.children.cycles-pp._sched_setscheduler
      4.96            -2.0        2.94 ±  5%  perf-profile.children.cycles-pp.syscall_exit_to_user_mode
      3.85            -2.0        1.87 ±  5%  perf-profile.children.cycles-pp.stress_resched_child
      4.77            -1.5        3.30 ±  5%  perf-profile.children.cycles-pp.pick_next_task_fair
      4.23 ±  2%      -1.3        2.88 ±  4%  perf-profile.children.cycles-pp.__sched_getscheduler
      4.59            -1.2        3.39 ±  4%  perf-profile.children.cycles-pp.update_load_avg
      2.35            -1.1        1.26 ±  5%  perf-profile.children.cycles-pp.switch_mm_irqs_off
      2.74            -1.0        1.72 ±  5%  perf-profile.children.cycles-pp.put_prev_entity
      3.17 ±  2%      -0.9        2.26 ± 11%  perf-profile.children.cycles-pp.capable
      3.15 ±  3%      -0.9        2.24 ± 11%  perf-profile.children.cycles-pp.security_capable
      3.06 ±  3%      -0.9        2.16 ± 11%  perf-profile.children.cycles-pp.apparmor_capable
      1.97            -0.8        1.13 ±  5%  perf-profile.children.cycles-pp.__rseq_handle_notify_resume
      2.94            -0.8        2.10 ±  4%  perf-profile.children.cycles-pp.set_next_entity
      4.13            -0.8        3.29 ±  4%  perf-profile.children.cycles-pp.update_curr
      3.31            -0.8        2.54 ±  4%  perf-profile.children.cycles-pp.dequeue_entity
      3.04            -0.8        2.28 ±  4%  perf-profile.children.cycles-pp.clear_bhb_loop
      5.14            -0.7        4.40 ±  4%  perf-profile.children.cycles-pp.dequeue_task_fair
      2.53            -0.6        1.93 ±  4%  perf-profile.children.cycles-pp.enqueue_entity
      1.29            -0.5        0.74 ±  5%  perf-profile.children.cycles-pp.switch_fpu_return
      1.08            -0.5        0.58 ±  6%  perf-profile.children.cycles-pp.prepare_task_switch
      1.24            -0.5        0.77 ±  3%  perf-profile.children.cycles-pp.rseq_ip_fixup
      2.84            -0.5        2.38 ±  3%  perf-profile.children.cycles-pp.find_task_by_vpid
      2.32            -0.4        1.87 ±  4%  perf-profile.children.cycles-pp.do_sched_yield
      0.94 ± 12%      -0.4        0.50 ± 19%  perf-profile.children.cycles-pp.__ordered_events__flush
      0.94 ± 12%      -0.4        0.50 ± 19%  perf-profile.children.cycles-pp.perf_session__process_user_event
      1.45            -0.4        1.01 ±  4%  perf-profile.children.cycles-pp.entry_SYSCALL_64
      1.01            -0.4        0.58 ±  4%  perf-profile.children.cycles-pp.restore_fpregs_from_fpstate
      0.91 ± 11%      -0.4        0.49 ± 19%  perf-profile.children.cycles-pp.perf_session__deliver_event
      1.46            -0.4        1.05 ±  5%  perf-profile.children.cycles-pp.__update_load_avg_se
      1.86            -0.4        1.46 ±  4%  perf-profile.children.cycles-pp.yield_task_fair
      1.54            -0.4        1.15 ±  4%  perf-profile.children.cycles-pp.__update_load_avg_cfs_rq
      1.28            -0.4        0.91 ±  4%  perf-profile.children.cycles-pp.put_prev_task_fair
      0.79            -0.4        0.42 ±  5%  perf-profile.children.cycles-pp.__switch_to
      1.81            -0.3        1.46 ±  3%  perf-profile.children.cycles-pp.set_next_task_fair
      1.52 ±  3%      -0.3        1.18 ±  4%  perf-profile.children.cycles-pp.__enqueue_entity
      0.72            -0.3        0.41 ±  4%  perf-profile.children.cycles-pp.__switch_to_asm
      0.79 ±  2%      -0.3        0.50 ±  2%  perf-profile.children.cycles-pp.rseq_get_rseq_cs
      0.73            -0.3        0.45 ±  5%  perf-profile.children.cycles-pp.syscall_return_via_sysret
      1.37 ±  2%      -0.3        1.11 ±  3%  perf-profile.children.cycles-pp.__radix_tree_lookup
      0.52 ±  2%      -0.3        0.26 ±  7%  perf-profile.children.cycles-pp.os_xsave
      1.06            -0.2        0.81 ±  4%  perf-profile.children.cycles-pp.entry_SYSRETQ_unsafe_stack
      0.72 ±  2%      -0.2        0.47        perf-profile.children.cycles-pp.__get_user_8
      1.17 ±  5%      -0.2        0.92 ±  4%  perf-profile.children.cycles-pp.update_cfs_group
      1.31 ±  2%      -0.2        1.08 ±  5%  perf-profile.children.cycles-pp.__dequeue_entity
      0.61 ±  2%      -0.2        0.40 ±  4%  perf-profile.children.cycles-pp.___perf_sw_event
      0.42            -0.2        0.21 ±  7%  perf-profile.children.cycles-pp.rseq_update_cpu_node_id
      1.34            -0.2        1.13 ±  3%  perf-profile.children.cycles-pp.__x64_sys_sched_getscheduler
      0.74 ±  7%      -0.2        0.54 ±  4%  perf-profile.children.cycles-pp._copy_from_user
      0.40 ±  2%      -0.2        0.22 ±  5%  perf-profile.children.cycles-pp.mem_cgroup_handle_over_high
      0.85            -0.2        0.68 ±  3%  perf-profile.children.cycles-pp.update_rq_clock
      0.32 ±  2%      -0.2        0.15 ±  8%  perf-profile.children.cycles-pp.blkcg_maybe_throttle_current
      0.81            -0.2        0.65 ±  5%  perf-profile.children.cycles-pp.task_rq_lock
      0.58            -0.1        0.43 ±  4%  perf-profile.children.cycles-pp.place_entity
      0.82            -0.1        0.68 ±  3%  perf-profile.children.cycles-pp.__calc_delta
      0.62            -0.1        0.49 ±  3%  perf-profile.children.cycles-pp.sched_clock_cpu
      0.25 ±  2%      -0.1        0.12 ±  9%  perf-profile.children.cycles-pp.__wrgsbase_inactive
      0.27 ± 12%      -0.1        0.15 ±  6%  perf-profile.children.cycles-pp.sched_getscheduler@plt
      0.30            -0.1        0.18 ±  6%  perf-profile.children.cycles-pp.__put_user_8
      0.27 ±  8%      -0.1        0.14 ± 10%  perf-profile.children.cycles-pp.sched_yield@plt
      0.54            -0.1        0.42 ±  4%  perf-profile.children.cycles-pp.sched_clock
      0.51 ±  6%      -0.1        0.40 ±  6%  perf-profile.children.cycles-pp.__cgroup_account_cputime
      0.56 ±  3%      -0.1        0.45 ±  6%  perf-profile.children.cycles-pp.update_min_vruntime
      0.82 ±  2%      -0.1        0.71 ±  3%  perf-profile.children.cycles-pp.pick_eevdf
      0.36 ±  8%      -0.1        0.26 ±  5%  perf-profile.children.cycles-pp.cpuacct_charge
      0.48            -0.1        0.38 ±  3%  perf-profile.children.cycles-pp.native_sched_clock
      0.41 ±  3%      -0.1        0.32 ±  4%  perf-profile.children.cycles-pp.update_rq_clock_task
      0.32 ±  2%      -0.1        0.23 ±  7%  perf-profile.children.cycles-pp.perf_trace_sched_stat_runtime
      0.14 ±  3%      -0.1        0.07 ±  7%  perf-profile.children.cycles-pp.__rdgsbase_inactive
      0.18 ± 16%      -0.1        0.11 ± 19%  perf-profile.children.cycles-pp.machine__process_exit_event
      0.36 ±  2%      -0.1        0.28 ±  4%  perf-profile.children.cycles-pp.rt_mutex_adjust_pi
      0.37            -0.1        0.30 ±  4%  perf-profile.children.cycles-pp.update_curr_se
      0.17 ± 17%      -0.1        0.10 ± 21%  perf-profile.children.cycles-pp.thread__delete
      0.31 ±  2%      -0.1        0.24 ±  4%  perf-profile.children.cycles-pp.x64_sys_call
      0.95 ±  3%      -0.1        0.88 ±  3%  perf-profile.children.cycles-pp.idr_find
      0.12            -0.1        0.05 ±  7%  perf-profile.children.cycles-pp.sched_update_worker
      0.13 ±  5%      -0.1        0.07 ± 11%  perf-profile.children.cycles-pp.shim_sched_yield
      0.15 ± 13%      -0.1        0.09 ± 20%  perf-profile.children.cycles-pp.maps__put
      0.10 ±  3%      -0.1        0.04 ± 45%  perf-profile.children.cycles-pp.perf_trace_sched_switch
      0.58 ±  2%      -0.0        0.54        perf-profile.children.cycles-pp.finish_task_switch
      0.12 ± 15%      -0.0        0.07 ± 23%  perf-profile.children.cycles-pp.map__put
      0.18 ±  2%      -0.0        0.13 ±  5%  perf-profile.children.cycles-pp.syscall_exit_to_user_mode_prepare
      0.22 ±  8%      -0.0        0.17 ± 11%  perf-profile.children.cycles-pp.rb_next
      0.16 ±  2%      -0.0        0.12 ±  3%  perf-profile.children.cycles-pp._raw_spin_unlock_irqrestore
      0.62            -0.0        0.59        perf-profile.children.cycles-pp.__rb_insert_augmented
      0.13 ±  3%      -0.0        0.10 ±  3%  perf-profile.children.cycles-pp.rcu_note_context_switch
      0.10 ±  4%      -0.0        0.07 ±  6%  perf-profile.children.cycles-pp.mm_cid_get
      0.11            -0.0        0.08 ±  4%  perf-profile.children.cycles-pp.amd_clear_divider
      0.11            -0.0        0.08 ±  4%  perf-profile.children.cycles-pp.check_cfs_rq_runtime
      0.08 ±  5%      -0.0        0.06 ±  9%  perf-profile.children.cycles-pp.sched_setscheduler@plt
      0.11 ±  4%      -0.0        0.08 ±  5%  perf-profile.children.cycles-pp.security_task_setscheduler
      0.10 ±  7%      -0.0        0.08 ±  9%  perf-profile.children.cycles-pp.entry_SYSCALL_64_safe_stack
      0.08 ±  5%      -0.0        0.06 ±  9%  perf-profile.children.cycles-pp.min_vruntime_cb_rotate
      0.08 ±  4%      -0.0        0.06 ±  6%  perf-profile.children.cycles-pp.enqueue_task
      0.28            -0.0        0.25 ±  2%  perf-profile.children.cycles-pp.vruntime_eligible
      0.08 ±  5%      -0.0        0.06 ±  7%  perf-profile.children.cycles-pp.raw_spin_rq_unlock
      0.09 ±  4%      -0.0        0.07 ±  5%  perf-profile.children.cycles-pp.dequeue_task
      0.07 ±  7%      -0.0        0.05        perf-profile.children.cycles-pp.check_class_changed
      0.05            +0.0        0.06 ±  6%  perf-profile.children.cycles-pp.perf_event_task_output
      0.05            +0.0        0.06 ±  7%  perf-profile.children.cycles-pp.obj_cgroup_uncharge_pages
      0.06 ±  6%      +0.0        0.08 ±  6%  perf-profile.children.cycles-pp.__put_task_struct
      0.06            +0.0        0.08 ±  6%  perf-profile.children.cycles-pp.__tlb_remove_folio_pages_size
      0.06 ±  9%      +0.0        0.08 ±  6%  perf-profile.children.cycles-pp.free_pud_range
      0.06 ±  7%      +0.0        0.08 ±  4%  perf-profile.children.cycles-pp.__lruvec_stat_mod_folio
      0.09 ±  5%      +0.0        0.10 ±  7%  perf-profile.children.cycles-pp.sched_balance_domains
      0.04 ± 44%      +0.0        0.06        perf-profile.children.cycles-pp.__mem_cgroup_uncharge_folios
      0.05            +0.0        0.07 ±  5%  perf-profile.children.cycles-pp._find_next_bit
      0.04 ± 44%      +0.0        0.06        perf-profile.children.cycles-pp.free_percpu
      0.04 ± 44%      +0.0        0.06        perf-profile.children.cycles-pp.lru_add_drain_cpu
      0.06            +0.0        0.08 ±  4%  perf-profile.children.cycles-pp.do_task_dead
      0.06 ±  6%      +0.0        0.08 ±  4%  perf-profile.children.cycles-pp.free_p4d_range
      0.06 ±  6%      +0.0        0.08 ±  4%  perf-profile.children.cycles-pp.mas_wr_walk
      0.06            +0.0        0.08        perf-profile.children.cycles-pp.__pte_offset_map
      0.04 ± 44%      +0.0        0.06 ±  6%  perf-profile.children.cycles-pp.lru_add_drain
      0.04 ± 44%      +0.0        0.06 ±  6%  perf-profile.children.cycles-pp.mas_ascend
      0.06            +0.0        0.08        perf-profile.children.cycles-pp.perf_iterate_sb
      0.06            +0.0        0.08 ±  7%  perf-profile.children.cycles-pp.xas_find
      0.09 ±  4%      +0.0        0.11        perf-profile.children.cycles-pp.__exit_signal
      0.06 ±  7%      +0.0        0.08 ±  5%  perf-profile.children.cycles-pp.free_pgd_range
      0.06 ±  9%      +0.0        0.08 ±  6%  perf-profile.children.cycles-pp.xas_load
      0.19 ±  2%      +0.0        0.22 ±  2%  perf-profile.children.cycles-pp.schedule_tail
      0.06 ±  6%      +0.0        0.08 ±  4%  perf-profile.children.cycles-pp._raw_spin_lock_irq
      0.05            +0.0        0.07 ±  6%  perf-profile.children.cycles-pp.vfree
      0.08 ±  5%      +0.0        0.11 ±  3%  perf-profile.children.cycles-pp.arch_dup_task_struct
      0.06 ±  6%      +0.0        0.09 ±  4%  perf-profile.children.cycles-pp.alloc_pid
      0.03 ± 70%      +0.0        0.06        perf-profile.children.cycles-pp.free_unref_folios
      0.03 ± 70%      +0.0        0.06        perf-profile.children.cycles-pp.mas_copy_node
      0.08 ±  4%      +0.0        0.11 ±  3%  perf-profile.children.cycles-pp.vm_normal_page
      0.05            +0.0        0.08 ±  4%  perf-profile.children.cycles-pp.delayed_vfree_work
      0.06            +0.0        0.09 ±  4%  perf-profile.children.cycles-pp.__kmem_cache_alloc_bulk
      0.10 ±  3%      +0.0        0.13 ±  4%  perf-profile.children.cycles-pp.__memcpy
      0.06 ±  7%      +0.0        0.09 ±  7%  perf-profile.children.cycles-pp.kmem_cache_alloc_bulk_noprof
      0.06 ±  7%      +0.0        0.09 ±  7%  perf-profile.children.cycles-pp.mas_dup_alloc
      0.10 ±  3%      +0.0        0.13 ±  4%  perf-profile.children.cycles-pp.percpu_counter_add_batch
      0.09 ±  5%      +0.0        0.12 ±  3%  perf-profile.children.cycles-pp.wait_consider_task
      0.11 ±  3%      +0.0        0.14 ±  3%  perf-profile.children.cycles-pp.__percpu_counter_sum
      0.09            +0.0        0.12 ±  3%  perf-profile.children.cycles-pp.get_free_pages_noprof
      0.09 ±  4%      +0.0        0.13 ±  2%  perf-profile.children.cycles-pp.__percpu_counter_init_many
      0.09 ±  4%      +0.0        0.13 ±  2%  perf-profile.children.cycles-pp.mas_next_node
      0.14 ±  3%      +0.0        0.17 ±  2%  perf-profile.children.cycles-pp.rcu_all_qs
      0.08            +0.0        0.12 ±  6%  perf-profile.children.cycles-pp.sched_move_task
      0.08 ±  8%      +0.0        0.12 ±  3%  perf-profile.children.cycles-pp.alloc_pages_bulk_noprof
      0.09            +0.0        0.13 ±  3%  perf-profile.children.cycles-pp.pgd_alloc
      0.03 ± 70%      +0.0        0.07 ±  8%  perf-profile.children.cycles-pp.__page_cache_release
      0.11 ±  6%      +0.0        0.15 ±  3%  perf-profile.children.cycles-pp.mas_wr_store_entry
      0.10 ±  6%      +0.0        0.14 ±  5%  perf-profile.children.cycles-pp.process_one_work
      0.02 ±141%      +0.0        0.06 ±  8%  perf-profile.children.cycles-pp.flush_tlb_mm_range
      0.02 ±141%      +0.0        0.06 ±  8%  perf-profile.children.cycles-pp.folio_batch_move_lru
      0.12 ±  4%      +0.0        0.16 ±  6%  perf-profile.children.cycles-pp.__perf_sw_event
      0.13 ±  5%      +0.0        0.17 ±  3%  perf-profile.children.cycles-pp.native_irq_return_iret
      0.16 ±  9%      +0.0        0.20 ±  6%  perf-profile.children.cycles-pp.kthread
      0.10 ±  6%      +0.0        0.14 ±  3%  perf-profile.children.cycles-pp.__vmalloc_area_node
      0.14 ±  3%      +0.0        0.18 ±  3%  perf-profile.children.cycles-pp.sync_regs
      0.13 ±  7%      +0.0        0.17 ±  5%  perf-profile.children.cycles-pp.try_charge_memcg
      0.11 ±  9%      +0.0        0.15 ±  4%  perf-profile.children.cycles-pp.worker_thread
      0.13 ±  2%      +0.0        0.18 ±  2%  perf-profile.children.cycles-pp.folio_add_file_rmap_ptes
      0.15 ±  5%      +0.0        0.20 ±  6%  perf-profile.children.cycles-pp.task_tick_fair
      0.14 ±  4%      +0.0        0.19        perf-profile.children.cycles-pp.memset_orig
      0.01 ±223%      +0.0        0.06 ±  8%  perf-profile.children.cycles-pp.__getpid
      0.06 ±  7%      +0.0        0.11 ±  3%  perf-profile.children.cycles-pp.down_read_trylock
      0.23            +0.0        0.28        perf-profile.children.cycles-pp.vma_interval_tree_remove
      0.00            +0.1        0.05        perf-profile.children.cycles-pp.copy_signal
      0.00            +0.1        0.05        perf-profile.children.cycles-pp.get_zeroed_page_noprof
      0.00            +0.1        0.05        perf-profile.children.cycles-pp.mt_destroy_walk
      0.00            +0.1        0.05        perf-profile.children.cycles-pp.prepare_creds
      0.00            +0.1        0.05        perf-profile.children.cycles-pp.put_files_struct
      0.00            +0.1        0.05        perf-profile.children.cycles-pp.remove_vm_area
      0.00            +0.1        0.05        perf-profile.children.cycles-pp.stress_get_setting
      0.00            +0.1        0.05        perf-profile.children.cycles-pp.uncharge_batch
      0.20 ±  3%      +0.1        0.25 ±  4%  perf-profile.children.cycles-pp.rcu_do_batch
      0.23 ±  5%      +0.1        0.28 ±  3%  perf-profile.children.cycles-pp.__mmdrop
      0.10 ±  3%      +0.1        0.15 ±  3%  perf-profile.children.cycles-pp.__wake_up_common
      0.00            +0.1        0.05 ±  7%  perf-profile.children.cycles-pp.__p4d_alloc
      0.00            +0.1        0.05 ±  7%  perf-profile.children.cycles-pp.copy_creds
      0.00            +0.1        0.05 ±  7%  perf-profile.children.cycles-pp.free_swap_cache
      0.21 ±  2%      +0.1        0.26 ±  4%  perf-profile.children.cycles-pp.sched_tick
      0.14 ±  4%      +0.1        0.19 ±  3%  perf-profile.children.cycles-pp.__mt_dup
      0.24 ±  2%      +0.1        0.30 ±  3%  perf-profile.children.cycles-pp.rcu_core
      0.11            +0.1        0.16 ±  2%  perf-profile.children.cycles-pp.__put_user_4
      0.00            +0.1        0.05 ±  8%  perf-profile.children.cycles-pp.__mt_destroy
      0.00            +0.1        0.05 ±  8%  perf-profile.children.cycles-pp.do_wp_page
      0.00            +0.1        0.05 ±  8%  perf-profile.children.cycles-pp.folio_lruvec_lock_irqsave
      0.00            +0.1        0.05 ±  8%  perf-profile.children.cycles-pp.put_cred_rcu
      0.00            +0.1        0.05 ±  8%  perf-profile.children.cycles-pp.wake_q_add
      0.10 ±  3%      +0.1        0.15 ±  3%  perf-profile.children.cycles-pp.__wake_up_sync_key
      0.16 ±  7%      +0.1        0.21 ± 10%  perf-profile.children.cycles-pp.__wp_page_copy_user
      0.16 ±  7%      +0.1        0.21 ± 10%  perf-profile.children.cycles-pp.copy_mc_enhanced_fast_string
      0.14 ±  3%      +0.1        0.19 ±  3%  perf-profile.children.cycles-pp.mas_dup_build
      0.18 ±  4%      +0.1        0.24 ±  2%  perf-profile.children.cycles-pp.mas_store
      0.16 ±  3%      +0.1        0.22 ±  3%  perf-profile.children.cycles-pp.stress_parent_died_alarm
      0.00            +0.1        0.06 ±  6%  perf-profile.children.cycles-pp.dup_fd
      0.14 ±  3%      +0.1        0.20 ±  3%  perf-profile.children.cycles-pp.release_task
      0.00            +0.1        0.06        perf-profile.children.cycles-pp.__get_vm_area_node
      0.11 ±  3%      +0.1        0.17 ±  2%  perf-profile.children.cycles-pp.mas_walk
      0.11 ±  3%      +0.1        0.17 ±  3%  perf-profile.children.cycles-pp.do_notify_parent
      0.19 ±  5%      +0.1        0.26 ±  4%  perf-profile.children.cycles-pp.__mod_memcg_state
      0.19 ±  2%      +0.1        0.25 ±  3%  perf-profile.children.cycles-pp.refill_obj_stock
      0.20 ±  3%      +0.1        0.26 ±  2%  perf-profile.children.cycles-pp.set_pte_range
      0.00            +0.1        0.06 ±  7%  perf-profile.children.cycles-pp.rwsem_mark_wake
      0.16 ±  3%      +0.1        0.23 ±  2%  perf-profile.children.cycles-pp.wait_task_zombie
      0.00            +0.1        0.07 ±  7%  perf-profile.children.cycles-pp.ttwu_do_activate
      0.46            +0.1        0.52        perf-profile.children.cycles-pp.__rb_erase_color
      0.14 ±  4%      +0.1        0.21 ±  2%  perf-profile.children.cycles-pp.__vmalloc_node_range_noprof
      0.40            +0.1        0.47 ±  4%  perf-profile.children.cycles-pp.avg_vruntime
      0.23 ±  3%      +0.1        0.30 ±  2%  perf-profile.children.cycles-pp.__pte_offset_map_lock
      0.19 ±  3%      +0.1        0.26        perf-profile.children.cycles-pp.prctl
      0.36 ±  2%      +0.1        0.43 ±  3%  perf-profile.children.cycles-pp.ret_from_fork
      0.19 ±  3%      +0.1        0.26 ±  4%  perf-profile.children.cycles-pp.getpid@plt
      0.00            +0.1        0.07 ±  5%  perf-profile.children.cycles-pp.queued_read_lock_slowpath
      0.37 ±  2%      +0.1        0.44 ±  2%  perf-profile.children.cycles-pp.handle_softirqs
      0.34 ±  2%      +0.1        0.41        perf-profile.children.cycles-pp.irq_exit_rcu
      0.17            +0.1        0.24 ±  3%  perf-profile.children.cycles-pp.__anon_vma_interval_tree_augment_rotate
      0.00            +0.1        0.07 ±  6%  perf-profile.children.cycles-pp.sched_balance_rq
      0.13 ± 44%      +0.1        0.21 ±  4%  perf-profile.children.cycles-pp.sched_settings_apply
      0.50 ±  5%      +0.1        0.58 ±  3%  perf-profile.children.cycles-pp.hrtimer_interrupt
      0.07 ±  5%      +0.1        0.15 ±  4%  perf-profile.children.cycles-pp.queued_write_lock_slowpath
      0.19 ±  3%      +0.1        0.26 ±  2%  perf-profile.children.cycles-pp.pcpu_alloc_noprof
      0.30            +0.1        0.37        perf-profile.children.cycles-pp.update_sg_wakeup_stats
      0.51 ±  4%      +0.1        0.58 ±  3%  perf-profile.children.cycles-pp.__sysvec_apic_timer_interrupt
      0.31            +0.1        0.39 ±  2%  perf-profile.children.cycles-pp.sched_balance_find_dst_group
      0.20            +0.1        0.28 ±  3%  perf-profile.children.cycles-pp.unmap_single_vma
      0.34 ±  3%      +0.1        0.42 ±  2%  perf-profile.children.cycles-pp.update_process_times
      0.24 ±  3%      +0.1        0.33 ±  4%  perf-profile.children.cycles-pp.memcg_account_kmem
      0.32 ±  2%      +0.1        0.40        perf-profile.children.cycles-pp.sched_balance_find_dst_cpu
      0.37 ±  3%      +0.1        0.46 ±  2%  perf-profile.children.cycles-pp.ret_from_fork_asm
      0.11 ±  4%      +0.1        0.20 ±  3%  perf-profile.children.cycles-pp.try_to_wake_up
      0.38 ±  5%      +0.1        0.47 ±  2%  perf-profile.children.cycles-pp.tick_nohz_handler
      0.40 ±  5%      +0.1        0.49 ±  3%  perf-profile.children.cycles-pp.__hrtimer_run_queues
      0.22 ±  3%      +0.1        0.31 ±  3%  perf-profile.children.cycles-pp.alloc_thread_stack_node
      0.32            +0.1        0.41 ±  2%  perf-profile.children.cycles-pp.mas_next_slot
      0.35            +0.1        0.45 ±  2%  perf-profile.children.cycles-pp.select_task_rq_fair
      0.15 ±  2%      +0.1        0.25 ±  2%  perf-profile.children.cycles-pp.exit_notify
      0.38 ±  2%      +0.1        0.48 ±  3%  perf-profile.children.cycles-pp.__cond_resched
      0.33 ± 12%      +0.1        0.44 ± 14%  perf-profile.children.cycles-pp.stress_resched
      0.39            +0.1        0.50        perf-profile.children.cycles-pp.mas_find
      0.33 ±  6%      +0.1        0.45 ±  8%  perf-profile.children.cycles-pp.wp_page_copy
      0.33 ±  2%      +0.1        0.46 ±  3%  perf-profile.children.cycles-pp.dup_task_struct
      0.33 ±  2%      +0.1        0.46 ±  2%  perf-profile.children.cycles-pp.mm_init
      0.42 ±  7%      +0.1        0.55 ±  4%  perf-profile.children.cycles-pp.get_page_from_freelist
      0.19 ±  5%      +0.1        0.32 ±  5%  perf-profile.children.cycles-pp.osq_unlock
      0.41 ±  6%      +0.1        0.55 ±  4%  perf-profile.children.cycles-pp.__memcg_kmem_charge_page
      0.34            +0.1        0.48 ±  3%  perf-profile.children.cycles-pp.fput
      0.37 ±  5%      +0.1        0.51 ±  4%  perf-profile.children.cycles-pp.clear_page_erms
      0.30 ±  2%      +0.1        0.44 ±  3%  perf-profile.children.cycles-pp.__do_wait
      0.48            +0.1        0.62 ±  2%  perf-profile.children.cycles-pp.obj_cgroup_charge
      0.40            +0.1        0.54 ±  2%  perf-profile.children.cycles-pp.wake_up_new_task
      0.86 ±  3%      +0.1        1.00        perf-profile.children.cycles-pp.sysvec_apic_timer_interrupt
      0.00            +0.2        0.15 ±  7%  perf-profile.children.cycles-pp.rwsem_wake
      0.91 ±  2%      +0.2        1.07        perf-profile.children.cycles-pp.asm_sysvec_apic_timer_interrupt
      0.24 ±  2%      +0.2        0.39 ±  3%  perf-profile.children.cycles-pp.lock_vma_under_rcu
      0.30            +0.2        0.45 ±  2%  perf-profile.children.cycles-pp.acct_collect
      0.45 ±  7%      +0.2        0.61 ±  6%  perf-profile.children.cycles-pp.__pte_alloc
      0.41            +0.2        0.58 ±  3%  perf-profile.children.cycles-pp.remove_vma
      0.53 ±  5%      +0.2        0.70 ±  5%  perf-profile.children.cycles-pp.pte_alloc_one
      0.34            +0.2        0.52 ±  2%  perf-profile.children.cycles-pp._exit
      0.40 ±  2%      +0.2        0.60 ± 13%  perf-profile.children.cycles-pp.__libc_fork
      1.05            +0.2        1.25 ±  3%  perf-profile.children.cycles-pp.vma_interval_tree_insert_after
      0.38 ±  2%      +0.2        0.58 ±  3%  perf-profile.children.cycles-pp.do_wait
      0.39 ±  2%      +0.2        0.59 ±  3%  perf-profile.children.cycles-pp.kernel_wait4
      0.16 ±  4%      +0.2        0.36 ±  4%  perf-profile.children.cycles-pp.native_queued_spin_lock_slowpath
      0.39 ±  2%      +0.2        0.59 ±  3%  perf-profile.children.cycles-pp.__do_sys_wait4
      0.45 ±  2%      +0.2        0.67 ±  3%  perf-profile.children.cycles-pp.wait4
      0.77            +0.2        1.00 ±  2%  perf-profile.children.cycles-pp.__slab_free
      0.65 ±  2%      +0.2        0.89 ±  3%  perf-profile.children.cycles-pp.__vm_area_free
      0.55 ±  2%      +0.2        0.79 ±  3%  perf-profile.children.cycles-pp.folios_put_refs
      0.19 ± 54%      +0.3        0.45 ± 17%  perf-profile.children.cycles-pp.ordered_events__queue
      0.19 ± 53%      +0.3        0.44 ± 17%  perf-profile.children.cycles-pp.queue_event
      0.75            +0.3        1.02 ±  3%  perf-profile.children.cycles-pp.unlink_file_vma
      0.20 ± 54%      +0.3        0.48 ± 17%  perf-profile.children.cycles-pp.process_simple
      1.02            +0.3        1.29 ±  3%  perf-profile.children.cycles-pp.mod_objcg_state
      0.84 ±  6%      +0.3        1.12 ±  4%  perf-profile.children.cycles-pp.__alloc_pages_noprof
      0.86 ±  6%      +0.3        1.14 ±  4%  perf-profile.children.cycles-pp.alloc_pages_mpol_noprof
      0.83 ±  2%      +0.3        1.12 ±  3%  perf-profile.children.cycles-pp.folio_remove_rmap_ptes
      0.44            +0.3        0.74 ±  4%  perf-profile.children.cycles-pp.__put_anon_vma
      0.10 ± 27%      +0.3        0.45 ±  5%  perf-profile.children.cycles-pp.set_load_weight
      0.96            +0.4        1.34 ±  2%  perf-profile.children.cycles-pp.__anon_vma_interval_tree_remove
      1.23 ±  2%      +0.5        1.70 ±  2%  perf-profile.children.cycles-pp.free_pages_and_swap_cache
      1.23 ±  2%      +0.5        1.70 ±  2%  perf-profile.children.cycles-pp.__tlb_batch_free_encoded_pages
      1.19 ±  2%      +0.5        1.67 ±  2%  perf-profile.children.cycles-pp.tlb_finish_mmu
      1.68            +0.5        2.16 ±  3%  perf-profile.children.cycles-pp.__memcg_slab_post_alloc_hook
      2.07            +0.6        2.68 ±  4%  perf-profile.children.cycles-pp.vm_area_dup
      1.72            +0.6        2.34 ±  2%  perf-profile.children.cycles-pp.__memcg_slab_free_hook
      2.11            +0.7        2.86 ±  3%  perf-profile.children.cycles-pp.next_uptodate_folio
      2.02            +0.8        2.78 ±  2%  perf-profile.children.cycles-pp.copy_present_ptes
      1.46            +0.8        2.23 ±  4%  perf-profile.children.cycles-pp.up_write
      2.85            +0.8        3.63 ±  4%  perf-profile.children.cycles-pp.kmem_cache_alloc_noprof
      0.30            +0.9        1.22 ±  4%  perf-profile.children.cycles-pp.reweight_entity
      2.92            +1.0        3.90 ±  2%  perf-profile.children.cycles-pp.kmem_cache_free
      2.84 ±  2%      +1.0        3.84 ±  3%  perf-profile.children.cycles-pp.filemap_map_pages
      2.77 ±  2%      +1.0        3.79 ±  3%  perf-profile.children.cycles-pp.copy_pte_range
      2.97 ±  2%      +1.0        4.00 ±  3%  perf-profile.children.cycles-pp.do_fault
      2.96 ±  2%      +1.0        3.99 ±  3%  perf-profile.children.cycles-pp.do_read_fault
      3.08 ±  2%      +1.1        4.20 ±  3%  perf-profile.children.cycles-pp.copy_p4d_range
      3.15 ±  2%      +1.1        4.29 ±  3%  perf-profile.children.cycles-pp.copy_page_range
      3.47            +1.2        4.69 ±  3%  perf-profile.children.cycles-pp.__handle_mm_fault
      3.59            +1.3        4.86 ±  3%  perf-profile.children.cycles-pp.handle_mm_fault
      3.94            +1.3        5.22 ±  2%  perf-profile.children.cycles-pp.anon_vma_interval_tree_insert
      2.38            +1.4        3.76 ±  4%  perf-profile.children.cycles-pp.rwsem_spin_on_owner
      4.04            +1.4        5.45 ±  2%  perf-profile.children.cycles-pp._compound_head
      4.10            +1.4        5.53 ±  2%  perf-profile.children.cycles-pp.zap_present_ptes
      3.94            +1.5        5.40 ±  3%  perf-profile.children.cycles-pp.do_user_addr_fault
      3.95            +1.5        5.42 ±  3%  perf-profile.children.cycles-pp.exc_page_fault
      1.88 ±  3%      +1.5        3.43 ±  5%  perf-profile.children.cycles-pp.osq_lock
      4.23            +1.6        5.80 ±  3%  perf-profile.children.cycles-pp.asm_exc_page_fault
      5.05            +1.8        6.83 ±  3%  perf-profile.children.cycles-pp.zap_pte_range
      5.13            +1.8        6.94 ±  3%  perf-profile.children.cycles-pp.zap_pmd_range
      5.25            +1.8        7.09 ±  3%  perf-profile.children.cycles-pp.unmap_page_range
      5.69            +2.0        7.73 ±  3%  perf-profile.children.cycles-pp.unmap_vmas
      4.85            +2.4        7.28 ±  3%  perf-profile.children.cycles-pp.unlink_anon_vmas
      7.11            +2.8        9.92 ±  3%  perf-profile.children.cycles-pp.anon_vma_clone
      6.52            +3.1        9.59 ±  3%  perf-profile.children.cycles-pp.free_pgtables
      4.58 ±  2%      +3.1        7.72 ±  4%  perf-profile.children.cycles-pp.rwsem_optimistic_spin
      4.73 ±  2%      +3.2        7.95 ±  4%  perf-profile.children.cycles-pp.rwsem_down_write_slowpath
     81.32            +3.4       84.68        perf-profile.children.cycles-pp.entry_SYSCALL_64_after_hwframe
     80.69            +3.6       84.27        perf-profile.children.cycles-pp.do_syscall_64
      6.61 ±  2%      +3.9       10.52 ±  4%  perf-profile.children.cycles-pp.down_write
     10.06            +4.4       14.48 ±  4%  perf-profile.children.cycles-pp.anon_vma_fork
     15.30            +6.2       21.55 ±  3%  perf-profile.children.cycles-pp.exit_mmap
     15.32            +6.3       21.58 ±  3%  perf-profile.children.cycles-pp.__mmput
     15.37            +6.3       21.64 ±  3%  perf-profile.children.cycles-pp.exit_mm
     16.13            +6.6       22.77 ±  3%  perf-profile.children.cycles-pp.do_exit
     16.13            +6.6       22.78 ±  3%  perf-profile.children.cycles-pp.__x64_sys_exit_group
     16.13            +6.6       22.78 ±  3%  perf-profile.children.cycles-pp.do_group_exit
     19.19            +7.5       26.68 ±  3%  perf-profile.children.cycles-pp.dup_mmap
     19.54            +7.6       27.16 ±  3%  perf-profile.children.cycles-pp.dup_mm
     20.33            +7.9       28.25 ±  3%  perf-profile.children.cycles-pp.copy_process
     20.75            +8.1       28.82 ±  3%  perf-profile.children.cycles-pp.__do_sys_clone
     20.75            +8.1       28.82 ±  3%  perf-profile.children.cycles-pp.kernel_clone
     21.22            +8.2       29.42 ±  3%  perf-profile.children.cycles-pp._Fork
      3.45            -1.8        1.62 ±  5%  perf-profile.self.cycles-pp.stress_resched_child
      2.32            -1.1        1.24 ±  5%  perf-profile.self.cycles-pp.switch_mm_irqs_off
      3.02 ±  3%      -0.9        2.13 ± 11%  perf-profile.self.cycles-pp.apparmor_capable
      3.02            -0.8        2.26 ±  4%  perf-profile.self.cycles-pp.clear_bhb_loop
      1.50            -0.5        1.04 ±  4%  perf-profile.self.cycles-pp.__schedule
      1.00            -0.4        0.57 ±  5%  perf-profile.self.cycles-pp.restore_fpregs_from_fpstate
      1.68            -0.4        1.26 ±  4%  perf-profile.self.cycles-pp.update_load_avg
      1.30            -0.4        0.93 ±  5%  perf-profile.self.cycles-pp.__update_load_avg_se
      1.34 ±  2%      -0.4        0.97 ±  4%  perf-profile.self.cycles-pp.__sched_setscheduler
      1.45            -0.4        1.09 ±  4%  perf-profile.self.cycles-pp.__update_load_avg_cfs_rq
      0.76            -0.3        0.41 ±  5%  perf-profile.self.cycles-pp.__switch_to
      1.49 ±  3%      -0.3        1.15 ±  4%  perf-profile.self.cycles-pp.__enqueue_entity
      0.85 ±  5%      -0.3        0.52 ±  7%  perf-profile.self.cycles-pp.__sched_yield
      0.71            -0.3        0.41 ±  4%  perf-profile.self.cycles-pp.__switch_to_asm
      1.63            -0.3        1.35 ±  4%  perf-profile.self.cycles-pp.update_curr
      1.34 ±  2%      -0.3        1.08 ±  4%  perf-profile.self.cycles-pp.__radix_tree_lookup
      0.51 ±  2%      -0.3        0.26 ±  6%  perf-profile.self.cycles-pp.os_xsave
      0.76            -0.2        0.52 ±  4%  perf-profile.self.cycles-pp.do_syscall_64
      0.65            -0.2        0.40 ±  4%  perf-profile.self.cycles-pp.syscall_exit_to_user_mode
      0.70 ±  2%      -0.2        0.46        perf-profile.self.cycles-pp.__get_user_8
      0.56            -0.2        0.32 ±  5%  perf-profile.self.cycles-pp.prepare_task_switch
      1.03            -0.2        0.79 ±  4%  perf-profile.self.cycles-pp.entry_SYSRETQ_unsafe_stack
      0.66            -0.2        0.43 ±  6%  perf-profile.self.cycles-pp.entry_SYSCALL_64_after_hwframe
      1.12 ±  5%      -0.2        0.89 ±  4%  perf-profile.self.cycles-pp.update_cfs_group
      0.40 ±  2%      -0.2        0.20 ±  9%  perf-profile.self.cycles-pp.rseq_update_cpu_node_id
      0.72 ±  7%      -0.2        0.53 ±  5%  perf-profile.self.cycles-pp._copy_from_user
      0.39 ±  2%      -0.2        0.21 ±  6%  perf-profile.self.cycles-pp.mem_cgroup_handle_over_high
      0.52 ±  2%      -0.2        0.34 ±  3%  perf-profile.self.cycles-pp.___perf_sw_event
      0.32            -0.2        0.16 ±  8%  perf-profile.self.cycles-pp.__rseq_handle_notify_resume
      0.31 ±  2%      -0.2        0.15 ±  9%  perf-profile.self.cycles-pp.blkcg_maybe_throttle_current
      0.48            -0.2        0.33 ±  4%  perf-profile.self.cycles-pp.syscall_return_via_sysret
      1.00 ±  2%      -0.2        0.85 ±  4%  perf-profile.self.cycles-pp.__dequeue_entity
      0.45 ±  2%      -0.1        0.30 ±  5%  perf-profile.self.cycles-pp.enqueue_entity
      0.62            -0.1        0.47 ±  4%  perf-profile.self.cycles-pp.do_sched_setscheduler
      0.54 ±  2%      -0.1        0.40 ±  5%  perf-profile.self.cycles-pp.dequeue_entity
      0.24 ±  3%      -0.1        0.12 ±  9%  perf-profile.self.cycles-pp.__wrgsbase_inactive
      0.52 ±  2%      -0.1        0.40 ±  2%  perf-profile.self.cycles-pp.find_task_by_vpid
      0.25            -0.1        0.13 ±  8%  perf-profile.self.cycles-pp.__put_user_8
      0.36 ±  2%      -0.1        0.24 ±  5%  perf-profile.self.cycles-pp.__sched_getscheduler
      0.75            -0.1        0.63 ±  3%  perf-profile.self.cycles-pp.__calc_delta
      0.38            -0.1        0.26 ±  5%  perf-profile.self.cycles-pp.set_next_entity
      0.52 ±  3%      -0.1        0.41 ±  6%  perf-profile.self.cycles-pp.update_min_vruntime
      0.28 ±  2%      -0.1        0.17 ±  6%  perf-profile.self.cycles-pp.switch_fpu_return
      0.20 ± 17%      -0.1        0.10 ±  5%  perf-profile.self.cycles-pp.sched_getscheduler@plt
      0.45            -0.1        0.35 ±  4%  perf-profile.self.cycles-pp.entry_SYSCALL_64
      0.54            -0.1        0.44 ±  4%  perf-profile.self.cycles-pp.pick_next_task_fair
      0.46            -0.1        0.37 ±  3%  perf-profile.self.cycles-pp.native_sched_clock
      0.34 ±  8%      -0.1        0.25 ±  6%  perf-profile.self.cycles-pp.cpuacct_charge
      0.39 ±  2%      -0.1        0.30 ±  4%  perf-profile.self.cycles-pp._sched_setscheduler
      0.26 ± 13%      -0.1        0.18 ± 12%  perf-profile.self.cycles-pp.__cgroup_account_cputime
      1.10            -0.1        1.02 ±  3%  perf-profile.self.cycles-pp._raw_spin_lock
      0.38 ±  3%      -0.1        0.29 ±  5%  perf-profile.self.cycles-pp.update_rq_clock_task
      0.56            -0.1        0.48 ±  3%  perf-profile.self.cycles-pp.dequeue_task_fair
      0.56 ±  2%      -0.1        0.48 ±  4%  perf-profile.self.cycles-pp.pick_eevdf
      0.19 ±  3%      -0.1        0.11 ±  5%  perf-profile.self.cycles-pp.schedule
      0.30 ±  3%      -0.1        0.22 ±  7%  perf-profile.self.cycles-pp.perf_trace_sched_stat_runtime
      0.16 ±  3%      -0.1        0.08 ±  9%  perf-profile.self.cycles-pp.__x64_sys_sched_yield
      0.18 ± 13%      -0.1        0.10 ± 10%  perf-profile.self.cycles-pp.sched_yield@plt
      0.13 ±  3%      -0.1        0.06 ±  6%  perf-profile.self.cycles-pp.__rdgsbase_inactive
      0.29            -0.1        0.22 ±  5%  perf-profile.self.cycles-pp.place_entity
      0.26 ±  2%      -0.1        0.19 ±  3%  perf-profile.self.cycles-pp.finish_task_switch
      0.16 ±  4%      -0.1        0.09 ±  7%  perf-profile.self.cycles-pp.rseq_ip_fixup
      0.23 ±  3%      -0.1        0.17 ±  6%  perf-profile.self.cycles-pp.put_prev_entity
      0.31            -0.1        0.25 ±  4%  perf-profile.self.cycles-pp.update_curr_se
      0.27            -0.1        0.21 ±  4%  perf-profile.self.cycles-pp.x64_sys_call
      0.32 ±  2%      -0.1        0.26 ±  5%  perf-profile.self.cycles-pp.enqueue_task_fair
      0.78            -0.1        0.73        perf-profile.self.cycles-pp._raw_spin_lock_irqsave
      0.07 ±  5%      -0.0        0.03 ±100%  perf-profile.self.cycles-pp.sched_setscheduler@plt
      0.09 ± 17%      -0.0        0.05 ± 49%  perf-profile.self.cycles-pp.map__put
      0.15 ±  3%      -0.0        0.11 ±  6%  perf-profile.self.cycles-pp.syscall_exit_to_user_mode_prepare
      0.21 ±  2%      -0.0        0.18 ±  4%  perf-profile.self.cycles-pp.update_rq_clock
      0.06            -0.0        0.02 ± 99%  perf-profile.self.cycles-pp.security_task_setscheduler
      0.58            -0.0        0.55        perf-profile.self.cycles-pp.__rb_insert_augmented
      0.12 ±  3%      -0.0        0.09 ±  4%  perf-profile.self.cycles-pp.rcu_note_context_switch
      0.13 ±  5%      -0.0        0.10 ±  7%  perf-profile.self.cycles-pp.do_sched_yield
      0.13 ±  2%      -0.0        0.10 ±  6%  perf-profile.self.cycles-pp.task_rq_lock
      0.13            -0.0        0.10        perf-profile.self.cycles-pp.yield_task_fair
      0.10 ±  3%      -0.0        0.07        perf-profile.self.cycles-pp.mm_cid_get
      0.12 ±  3%      -0.0        0.09 ±  4%  perf-profile.self.cycles-pp.__x64_sys_sched_getscheduler
      0.25            -0.0        0.22 ±  4%  perf-profile.self.cycles-pp.vruntime_eligible
      0.12            -0.0        0.10 ±  5%  perf-profile.self.cycles-pp._raw_spin_unlock_irqrestore
      0.08 ±  6%      -0.0        0.05 ±  7%  perf-profile.self.cycles-pp.min_vruntime_cb_rotate
      0.10 ±  4%      -0.0        0.08 ±  6%  perf-profile.self.cycles-pp.entry_SYSCALL_64_safe_stack
      0.07            -0.0        0.05        perf-profile.self.cycles-pp.enqueue_task
      0.08 ±  5%      -0.0        0.06 ±  7%  perf-profile.self.cycles-pp.sched_clock_cpu
      0.08 ±  4%      -0.0        0.06        perf-profile.self.cycles-pp.dequeue_task
      0.07 ±  5%      -0.0        0.06 ±  8%  perf-profile.self.cycles-pp.put_prev_task_fair
      0.14 ±  3%      -0.0        0.13 ±  4%  perf-profile.self.cycles-pp.set_next_task_fair
      0.06 ±  7%      -0.0        0.05 ±  7%  perf-profile.self.cycles-pp.raw_spin_rq_unlock
      0.06            -0.0        0.05        perf-profile.self.cycles-pp.rt_mutex_adjust_pi
      0.06 ±  8%      +0.0        0.07        perf-profile.self.cycles-pp.__pte_offset_map
      0.07 ±  7%      +0.0        0.08 ±  4%  perf-profile.self.cycles-pp.mas_store
      0.05 ±  8%      +0.0        0.07        perf-profile.self.cycles-pp.copy_page_range
      0.06 ±  8%      +0.0        0.07 ±  6%  perf-profile.self.cycles-pp.zap_pmd_range
      0.05            +0.0        0.07 ±  5%  perf-profile.self.cycles-pp.memcg_account_kmem
      0.06 ±  6%      +0.0        0.08 ±  4%  perf-profile.self.cycles-pp.copy_p4d_range
      0.07            +0.0        0.09        perf-profile.self.cycles-pp.mas_find
      0.06            +0.0        0.08        perf-profile.self.cycles-pp.mas_next_node
      0.06            +0.0        0.08 ±  7%  perf-profile.self.cycles-pp.remove_vma
      0.06            +0.0        0.08        perf-profile.self.cycles-pp.set_pte_range
      0.06 ±  6%      +0.0        0.08 ±  4%  perf-profile.self.cycles-pp.__pte_offset_map_lock
      0.06 ±  6%      +0.0        0.08 ±  4%  perf-profile.self.cycles-pp.mas_wr_walk
      0.07 ±  5%      +0.0        0.09 ±  5%  perf-profile.self.cycles-pp.__mod_memcg_state
      0.11 ±  4%      +0.0        0.13 ±  4%  perf-profile.self.cycles-pp.rcu_all_qs
      0.07            +0.0        0.09 ±  5%  perf-profile.self.cycles-pp.vm_normal_page
      0.09 ±  7%      +0.0        0.11 ±  6%  perf-profile.self.cycles-pp.__memcg_kmem_charge_page
      0.09 ±  6%      +0.0        0.12 ±  4%  perf-profile.self.cycles-pp.__percpu_counter_sum
      0.06 ±  6%      +0.0        0.09 ±  8%  perf-profile.self.cycles-pp.__libc_fork
      0.10 ±  3%      +0.0        0.12 ±  4%  perf-profile.self.cycles-pp.__memcpy
      0.03 ± 70%      +0.0        0.06        perf-profile.self.cycles-pp.mas_copy_node
      0.38 ±  2%      +0.0        0.40        perf-profile.self.cycles-pp.cgroup_rstat_updated
      0.08 ±  4%      +0.0        0.11 ±  5%  perf-profile.self.cycles-pp.wait_consider_task
      0.10            +0.0        0.13        perf-profile.self.cycles-pp.unmap_page_range
      0.09 ±  4%      +0.0        0.12 ±  3%  perf-profile.self.cycles-pp.percpu_counter_add_batch
      0.07            +0.0        0.10 ±  4%  perf-profile.self.cycles-pp.free_pgtables
      0.06            +0.0        0.09 ±  5%  perf-profile.self.cycles-pp.__vm_area_free
      0.08            +0.0        0.12 ±  6%  perf-profile.self.cycles-pp.__handle_mm_fault
      0.11 ±  9%      +0.0        0.15 ±  6%  perf-profile.self.cycles-pp.try_charge_memcg
      0.14 ±  3%      +0.0        0.18 ±  4%  perf-profile.self.cycles-pp.sync_regs
      0.13 ±  5%      +0.0        0.17 ±  3%  perf-profile.self.cycles-pp.native_irq_return_iret
      0.13 ±  3%      +0.0        0.17 ±  3%  perf-profile.self.cycles-pp.folio_add_file_rmap_ptes
      0.06 ±  7%      +0.0        0.11 ±  3%  perf-profile.self.cycles-pp.down_read_trylock
      0.14 ±  4%      +0.0        0.18 ±  4%  perf-profile.self.cycles-pp.memset_orig
      0.07 ±  5%      +0.0        0.12 ±  4%  perf-profile.self.cycles-pp.lock_vma_under_rcu
      0.01 ±223%      +0.0        0.06 ±  6%  perf-profile.self.cycles-pp._raw_spin_lock_irq
      0.00            +0.1        0.05        perf-profile.self.cycles-pp.pcpu_alloc_noprof
      0.00            +0.1        0.05        perf-profile.self.cycles-pp.stress_get_setting
      0.16 ±  2%      +0.1        0.21 ±  3%  perf-profile.self.cycles-pp.refill_obj_stock
      0.22 ±  2%      +0.1        0.28        perf-profile.self.cycles-pp.vma_interval_tree_remove
      0.00            +0.1        0.05 ±  7%  perf-profile.self.cycles-pp._Fork
      0.16 ±  7%      +0.1        0.21 ± 10%  perf-profile.self.cycles-pp.copy_mc_enhanced_fast_string
      0.00            +0.1        0.05 ±  7%  perf-profile.self.cycles-pp.mas_wr_store_entry
      0.05 ±  7%      +0.1        0.10 ±  4%  perf-profile.self.cycles-pp.queued_write_lock_slowpath
      0.00            +0.1        0.05 ±  8%  perf-profile.self.cycles-pp.__tlb_remove_folio_pages_size
      0.00            +0.1        0.05 ±  8%  perf-profile.self.cycles-pp.wake_q_add
      0.10 ±  4%      +0.1        0.16 ±  2%  perf-profile.self.cycles-pp.__put_anon_vma
      0.20            +0.1        0.26        perf-profile.self.cycles-pp.mas_next_slot
      0.40            +0.1        0.46 ±  2%  perf-profile.self.cycles-pp.__rb_erase_color
      0.00            +0.1        0.06 ±  6%  perf-profile.self.cycles-pp.__kmem_cache_alloc_bulk
      0.11            +0.1        0.17 ±  3%  perf-profile.self.cycles-pp.mas_walk
      0.21 ±  4%      +0.1        0.28 ±  3%  perf-profile.self.cycles-pp.__cond_resched
      0.37 ±  2%      +0.1        0.44 ±  3%  perf-profile.self.cycles-pp.avg_vruntime
      0.17 ±  2%      +0.1        0.24 ±  3%  perf-profile.self.cycles-pp.__anon_vma_interval_tree_augment_rotate
      0.28            +0.1        0.35 ±  2%  perf-profile.self.cycles-pp.update_sg_wakeup_stats
      0.06 ± 17%      +0.1        0.13 ±  5%  perf-profile.self.cycles-pp.set_load_weight
      0.19 ±  2%      +0.1        0.26 ±  2%  perf-profile.self.cycles-pp.unmap_single_vma
      0.15 ±  5%      +0.1        0.22 ±  9%  perf-profile.self.cycles-pp.rwsem_down_write_slowpath
      0.16 ± 20%      +0.1        0.24 ± 14%  perf-profile.self.cycles-pp.copy_pte_range
      0.14 ±  6%      +0.1        0.22 ± 12%  perf-profile.self.cycles-pp.rwsem_optimistic_spin
      0.30            +0.1        0.40 ±  3%  perf-profile.self.cycles-pp.kmem_cache_free
      0.37 ±  3%      +0.1        0.46 ±  8%  perf-profile.self.cycles-pp.___slab_alloc
      0.28 ±  2%      +0.1        0.38 ±  5%  perf-profile.self.cycles-pp.anon_vma_fork
      0.16 ±  3%      +0.1        0.27 ±  3%  perf-profile.self.cycles-pp.unmap_vmas
      0.47 ±  2%      +0.1        0.59 ±  4%  perf-profile.self.cycles-pp.kmem_cache_alloc_noprof
      0.21 ±  2%      +0.1        0.34 ±  2%  perf-profile.self.cycles-pp.acct_collect
      0.43            +0.1        0.56 ±  2%  perf-profile.self.cycles-pp.obj_cgroup_charge
      0.19 ±  5%      +0.1        0.32 ±  5%  perf-profile.self.cycles-pp.osq_unlock
      0.34            +0.1        0.47 ±  3%  perf-profile.self.cycles-pp.fput
      0.34            +0.1        0.47 ±  3%  perf-profile.self.cycles-pp.unlink_anon_vmas
      0.37 ±  4%      +0.1        0.51 ±  3%  perf-profile.self.cycles-pp.clear_page_erms
      0.50 ±  3%      +0.2        0.67 ±  3%  perf-profile.self.cycles-pp.filemap_map_pages
      0.51 ±  2%      +0.2        0.69 ±  5%  perf-profile.self.cycles-pp.vm_area_dup
      0.56 ±  3%      +0.2        0.74 ±  2%  perf-profile.self.cycles-pp.anon_vma_clone
      0.40 ±  4%      +0.2        0.60 ±  3%  perf-profile.self.cycles-pp.folios_put_refs
      1.04            +0.2        1.23 ±  3%  perf-profile.self.cycles-pp.vma_interval_tree_insert_after
      0.16 ±  4%      +0.2        0.36 ±  5%  perf-profile.self.cycles-pp.native_queued_spin_lock_slowpath
      0.50 ±  2%      +0.2        0.70 ±  2%  perf-profile.self.cycles-pp.zap_present_ptes
      0.66            +0.2        0.87 ±  2%  perf-profile.self.cycles-pp.free_pages_and_swap_cache
      0.76            +0.2        0.97 ±  2%  perf-profile.self.cycles-pp.__slab_free
      0.71            +0.2        0.93 ±  2%  perf-profile.self.cycles-pp.mod_objcg_state
      0.61            +0.2        0.85 ±  2%  perf-profile.self.cycles-pp.copy_present_ptes
      0.18 ± 54%      +0.3        0.44 ± 18%  perf-profile.self.cycles-pp.queue_event
      0.86            +0.3        1.12 ±  3%  perf-profile.self.cycles-pp.__memcg_slab_post_alloc_hook
      0.81 ±  2%      +0.3        1.08 ±  3%  perf-profile.self.cycles-pp.folio_remove_rmap_ptes
      0.72 ±  5%      +0.3        1.04 ±  7%  perf-profile.self.cycles-pp.zap_pte_range
      0.81            +0.3        1.15 ±  3%  perf-profile.self.cycles-pp.dup_mmap
      0.94            +0.4        1.32 ±  2%  perf-profile.self.cycles-pp.__anon_vma_interval_tree_remove
      1.02            +0.4        1.44 ±  2%  perf-profile.self.cycles-pp.__memcg_slab_free_hook
      0.27            +0.4        0.71 ±  4%  perf-profile.self.cycles-pp.reweight_entity
      1.41            +0.6        2.04 ±  4%  perf-profile.self.cycles-pp.up_write
      1.70            +0.6        2.34 ±  2%  perf-profile.self.cycles-pp.down_write
      2.02 ±  2%      +0.7        2.74 ±  3%  perf-profile.self.cycles-pp.next_uptodate_folio
      3.90            +1.3        5.17 ±  2%  perf-profile.self.cycles-pp.anon_vma_interval_tree_insert
      2.35            +1.4        3.71 ±  4%  perf-profile.self.cycles-pp.rwsem_spin_on_owner
      3.98            +1.4        5.37 ±  2%  perf-profile.self.cycles-pp._compound_head
      1.86 ±  3%      +1.5        3.40 ±  5%  perf-profile.self.cycles-pp.osq_lock




Disclaimer:
Results have been estimated based on internal Intel analysis and are provided
for informational purposes only. Any difference in system hardware or software
design or configuration may affect actual performance.


-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

Date: Wed, 10 Jul 2024 12:59:22 +0800
From: kernel test robot <oliver.sang@intel.com>
To: Ian Rogers <irogers@google.com>
CC: <oe-lkp@lists.linux.dev>, <lkp@intel.com>, Linux Memory Management List
	<linux-mm@kvack.org>, Namhyung Kim <namhyung@kernel.org>, Weilin Wang
	<weilin.wang@intel.com>, Caleb Biggers <caleb.biggers@intel.com>, Kan Liang
	<kan.liang@linux.intel.com>, Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	<linux-perf-users@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<oliver.sang@intel.com>
Subject: [linux-next:master] [perf vendor events]  e2641db83f:
 perf-sanity-tests.perf_all_PMU_test.fail
Message-ID: <202407101021.2c8baddb-oliver.sang@intel.com>
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273094 org.kvack.linux-mm:203219
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp,org.kernel.vger.linux-perf-users,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail



Hello,

kernel test robot noticed "perf-sanity-tests.perf_all_PMU_test.fail" on:

commit: e2641db83f18782f57a0e107c50d2d1731960fb8 ("perf vendor events: Add/update skylake events/metrics")
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master

[test failed on linux-next/master 82d01fe6ee52086035b201cfa1410a3b04384257]

in testcase: perf-sanity-tests
version: 
with following parameters:

	perf_compiler: gcc



compiler: gcc-13
test machine: 16 threads 1 sockets Intel(R) Xeon(R) E-2278G CPU @ 3.40GHz (Coffee Lake) with 32G memory

(please refer to attached dmesg/kmsg for entire log/backtrace)


we also observed two cases which also failed on parent can pass on this commit.
FYI.


caccae3ce7b988b6 e2641db83f18782f57a0e107c50
---------------- ---------------------------
       fail:runs  %reproduction    fail:runs
           |             |             |
           :6          100%           6:6     perf-sanity-tests.perf_all_PMU_test.fail
           :6          100%           6:6     perf-sanity-tests.perf_all_metricgroups_test.pass
           :6          100%           6:6     perf-sanity-tests.perf_all_metrics_test.pass





If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202407101021.2c8baddb-oliver.sang@intel.com



2024-07-09 07:09:53 sudo /usr/src/linux-perf-x86_64-rhel-8.3-bpf-e2641db83f18782f57a0e107c50d2d1731960fb8/tools/perf/perf test 105
105: perf all metricgroups test                                      : Ok
2024-07-09 07:10:11 sudo /usr/src/linux-perf-x86_64-rhel-8.3-bpf-e2641db83f18782f57a0e107c50d2d1731960fb8/tools/perf/perf test 106
106: perf all metrics test                                           : Ok
2024-07-09 07:10:23 sudo /usr/src/linux-perf-x86_64-rhel-8.3-bpf-e2641db83f18782f57a0e107c50d2d1731960fb8/tools/perf/perf test 107
107: perf all libpfm4 events test                                    : Ok
2024-07-09 07:10:47 sudo /usr/src/linux-perf-x86_64-rhel-8.3-bpf-e2641db83f18782f57a0e107c50d2d1731960fb8/tools/perf/perf test 108
108: perf all PMU test                                               : FAILED!



The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20240710/202407101021.2c8baddb-oliver.sang@intel.com



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

From: Donet Tom <donettom@linux.ibm.com>
To: Andrew Morton <akpm@linux-foundation.org>,
        Muchun Song <muchun.song@linux.dev>,
        "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
        Ritesh Harjani <ritesh.list@gmail.com>,
        Mike Rapoport <rppt@kernel.org>, David Hildenbrand <david@redhat.com>,
        Matthew Wilcox <willy@infradead.org>,
        Tony Battersby <tonyb@cybernetics.com>,
        "Aneesh Kumar K . V" <aneesh.kumar@kernel.org>,
        Nicholas Piggin <npiggin@gmail.com>,
        Alexei Starovoitov <ast@kernel.org>, Andy Lutomirski <luto@kernel.org>,
        Donet Tom <donettom@linux.ibm.com>
Subject: [PATCH v3] hugetlbfs: Ensure generic_hugetlb_get_unmapped_area() returns higher address than mmap_min_addr
Date: Wed, 10 Jul 2024 00:19:12 -0500
Message-ID: <20240710051912.4681-1-donettom@linux.ibm.com>
Content-Transfer-Encoding: 8bit
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273100
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

generic_hugetlb_get_unmapped_area() was returning an address less
than mmap_min_addr if the mmap argument addr, after alignment, was
less than mmap_min_addr, causing mmap to fail.

This is because current generic_hugetlb_get_unmapped_area() code does
not take into account mmap_min_addr.

This patch ensures that generic_hugetlb_get_unmapped_area() always returns
an address that is greater than mmap_min_addr. Additionally, similar to
generic_get_unmapped_area(), vm_end_gap() checks are included to maintain
stack gap.

How to reproduce
================

 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/mman.h>
 #include <unistd.h>

 #define HUGEPAGE_SIZE (16 * 1024 * 1024)

 int main() {

    void *addr = mmap((void *)-1, HUGEPAGE_SIZE,
                 PROT_READ | PROT_WRITE,
                 MAP_SHARED | MAP_ANONYMOUS | MAP_HUGETLB, -1, 0);
    if (addr == MAP_FAILED) {
        perror("mmap");
        exit(EXIT_FAILURE);
    }

    snprintf((char *)addr, HUGEPAGE_SIZE, "Hello, Huge Pages!");

    printf("%s\n", (char *)addr);

    if (munmap(addr, HUGEPAGE_SIZE) == -1) {
        perror("munmap");
        exit(EXIT_FAILURE);
    }

    return 0;
 }

Result without fix
==================
 # cat /proc/meminfo |grep -i HugePages_Free
 HugePages_Free:       20
 # ./test
 mmap: Permission denied
 #

Result with fix
===============
 # cat /proc/meminfo |grep -i HugePages_Free
 HugePages_Free:       20
 # ./test
 Hello, Huge Pages!
 #

V3:
Changed subject prefix and commit message.

V2:
Added vm_end_gap() check.
https://lore.kernel.org/all/20240709092122.41232-1-donettom@linux.ibm.com/

V1:
https://lore.kernel.org/all/20240705071150.84972-1-donettom@linux.ibm.com/

Reported-by Pavithra Prakash <pavrampu@linux.vnet.ibm.com>
Signed-off-by: Donet Tom <donettom@linux.ibm.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
---
 fs/hugetlbfs/inode.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 412f295acebe..cdd8e53ddd19 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -222,13 +222,13 @@ generic_hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
 				  unsigned long flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct vm_area_struct *vma, *prev;
 	struct hstate *h = hstate_file(file);
 	const unsigned long mmap_end = arch_get_mmap_end(addr, len, flags);
 
 	if (len & ~huge_page_mask(h))
 		return -EINVAL;
-	if (len > TASK_SIZE)
+	if (len > mmap_end - mmap_min_addr)
 		return -ENOMEM;
 
 	if (flags & MAP_FIXED) {
@@ -239,9 +239,10 @@ generic_hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
 
 	if (addr) {
 		addr = ALIGN(addr, huge_page_size(h));
-		vma = find_vma(mm, addr);
-		if (mmap_end - len >= addr &&
-		    (!vma || addr + len <= vm_start_gap(vma)))
+		vma = find_vma_prev(mm, addr, &prev);
+		if (mmap_end - len >= addr && addr >= mmap_min_addr &&
+		    (!vma || addr + len <= vm_start_gap(vma)) &&
+		    (!prev || addr >= vm_end_gap(prev)))
 			return addr;
 	}
 
-- 
2.43.5

.

Date: Wed, 10 Jul 2024 13:28:15 +0800
From: kernel test robot <lkp@intel.com>
To: "x86-ml" <x86@kernel.org>
Cc: linux-kernel@vger.kernel.org
Subject: [tip:perf/core] BUILD SUCCESS
 fa0c1c9d283b37fdb7fc1dcccbb88fc8f48a4aa4
Message-ID: <202407101313.lARjfAml-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273101
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core
branch HEAD: fa0c1c9d283b37fdb7fc1dcccbb88fc8f48a4aa4  perf/x86/intel: Add a distinct name for Granite Rapids

elapsed time: 1016m

configs tested: 172
configs skipped: 5

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                            allyesconfig   gcc-13.2.0
alpha                               defconfig   gcc-13.2.0
arc                              allmodconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                              allyesconfig   gcc-13.2.0
arc                                 defconfig   gcc-13.2.0
arc                   randconfig-001-20240710   gcc-13.2.0
arc                   randconfig-002-20240710   gcc-13.2.0
arm                              allmodconfig   gcc-13.2.0
arm                               allnoconfig   gcc-13.2.0
arm                              allyesconfig   gcc-13.2.0
arm                                 defconfig   gcc-13.2.0
arm                            hisi_defconfig   gcc-13.2.0
arm                          ixp4xx_defconfig   gcc-13.2.0
arm                          pxa910_defconfig   gcc-13.2.0
arm                   randconfig-001-20240710   gcc-13.2.0
arm                   randconfig-002-20240710   gcc-13.2.0
arm                   randconfig-003-20240710   gcc-13.2.0
arm                   randconfig-004-20240710   gcc-13.2.0
arm                        realview_defconfig   gcc-13.2.0
arm64                            allmodconfig   gcc-13.2.0
arm64                             allnoconfig   gcc-13.2.0
arm64                               defconfig   gcc-13.2.0
arm64                 randconfig-001-20240710   gcc-13.2.0
arm64                 randconfig-002-20240710   gcc-13.2.0
arm64                 randconfig-003-20240710   gcc-13.2.0
arm64                 randconfig-004-20240710   gcc-13.2.0
csky                              allnoconfig   gcc-13.2.0
csky                                defconfig   gcc-13.2.0
csky                  randconfig-001-20240710   gcc-13.2.0
csky                  randconfig-002-20240710   gcc-13.2.0
hexagon                          allmodconfig   clang-19
hexagon                          allyesconfig   clang-19
i386                             allmodconfig   clang-18
i386                              allnoconfig   clang-18
i386                              allnoconfig   gcc-13
i386                             allyesconfig   clang-18
i386                             allyesconfig   gcc-13
i386         buildonly-randconfig-001-20240710   clang-18
i386         buildonly-randconfig-002-20240710   clang-18
i386         buildonly-randconfig-003-20240710   clang-18
i386         buildonly-randconfig-004-20240710   clang-18
i386         buildonly-randconfig-005-20240710   clang-18
i386         buildonly-randconfig-006-20240710   clang-18
i386                                defconfig   clang-18
i386                  randconfig-001-20240710   clang-18
i386                  randconfig-002-20240710   clang-18
i386                  randconfig-003-20240710   clang-18
i386                  randconfig-004-20240710   clang-18
i386                  randconfig-005-20240710   clang-18
i386                  randconfig-006-20240710   clang-18
i386                  randconfig-011-20240710   clang-18
i386                  randconfig-012-20240710   clang-18
i386                  randconfig-013-20240710   clang-18
i386                  randconfig-014-20240710   clang-18
i386                  randconfig-015-20240710   clang-18
i386                  randconfig-016-20240710   clang-18
loongarch                        allmodconfig   gcc-13.2.0
loongarch                         allnoconfig   gcc-13.2.0
loongarch                           defconfig   gcc-13.2.0
loongarch             randconfig-001-20240710   gcc-13.2.0
loongarch             randconfig-002-20240710   gcc-13.2.0
m68k                             allmodconfig   gcc-13.2.0
m68k                              allnoconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.2.0
m68k                                defconfig   gcc-13.2.0
m68k                       m5249evb_defconfig   gcc-13.2.0
microblaze                       allmodconfig   gcc-13.2.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.2.0
microblaze                          defconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
nios2                             allnoconfig   gcc-13.2.0
nios2                               defconfig   gcc-13.2.0
nios2                 randconfig-001-20240710   gcc-13.2.0
nios2                 randconfig-002-20240710   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                         allyesconfig   gcc-13.2.0
openrisc                            defconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.2.0
parisc                            allnoconfig   gcc-13.2.0
parisc                           allyesconfig   gcc-13.2.0
parisc                              defconfig   gcc-13.2.0
parisc                randconfig-001-20240710   gcc-13.2.0
parisc                randconfig-002-20240710   gcc-13.2.0
parisc64                         alldefconfig   gcc-13.2.0
parisc64                            defconfig   gcc-13.2.0
powerpc                          allmodconfig   gcc-13.2.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                          allyesconfig   gcc-13.2.0
powerpc                      katmai_defconfig   gcc-13.2.0
powerpc               randconfig-001-20240710   gcc-13.2.0
powerpc               randconfig-002-20240710   gcc-13.2.0
powerpc               randconfig-003-20240710   gcc-13.2.0
powerpc                     tqm8548_defconfig   gcc-13.2.0
powerpc64             randconfig-001-20240710   gcc-13.2.0
powerpc64             randconfig-002-20240710   gcc-13.2.0
powerpc64             randconfig-003-20240710   gcc-13.2.0
riscv                            allmodconfig   gcc-13.2.0
riscv                             allnoconfig   gcc-13.2.0
riscv                            allyesconfig   gcc-13.2.0
riscv                               defconfig   gcc-13.2.0
riscv                    nommu_virt_defconfig   gcc-13.2.0
riscv                 randconfig-001-20240710   gcc-13.2.0
riscv                 randconfig-002-20240710   gcc-13.2.0
s390                             allmodconfig   clang-19
s390                              allnoconfig   clang-19
s390                              allnoconfig   gcc-13.2.0
s390                             allyesconfig   clang-19
s390                             allyesconfig   gcc-13.2.0
s390                                defconfig   gcc-13.2.0
s390                  randconfig-001-20240710   gcc-13.2.0
s390                  randconfig-002-20240710   gcc-13.2.0
sh                               allmodconfig   gcc-13.2.0
sh                                allnoconfig   gcc-13.2.0
sh                               allyesconfig   gcc-13.2.0
sh                                  defconfig   gcc-13.2.0
sh                        dreamcast_defconfig   gcc-13.2.0
sh                        edosk7705_defconfig   gcc-13.2.0
sh                    randconfig-001-20240710   gcc-13.2.0
sh                    randconfig-002-20240710   gcc-13.2.0
sh                          rsk7264_defconfig   gcc-13.2.0
sh                           se7780_defconfig   gcc-13.2.0
sh                            titan_defconfig   gcc-13.2.0
sparc                            allmodconfig   gcc-13.2.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240710   gcc-13.2.0
sparc64               randconfig-002-20240710   gcc-13.2.0
um                               allmodconfig   clang-19
um                               allmodconfig   gcc-13.2.0
um                                allnoconfig   clang-17
um                                allnoconfig   gcc-13.2.0
um                               allyesconfig   gcc-13
um                               allyesconfig   gcc-13.2.0
um                                  defconfig   gcc-13.2.0
um                             i386_defconfig   gcc-13.2.0
um                    randconfig-001-20240710   gcc-13.2.0
um                    randconfig-002-20240710   gcc-13.2.0
um                           x86_64_defconfig   gcc-13.2.0
x86_64                            allnoconfig   clang-18
x86_64                           allyesconfig   clang-18
x86_64       buildonly-randconfig-001-20240710   clang-18
x86_64       buildonly-randconfig-002-20240710   clang-18
x86_64       buildonly-randconfig-003-20240710   clang-18
x86_64       buildonly-randconfig-004-20240710   clang-18
x86_64       buildonly-randconfig-005-20240710   clang-18
x86_64       buildonly-randconfig-006-20240710   clang-18
x86_64                              defconfig   clang-18
x86_64                              defconfig   gcc-13
x86_64                randconfig-001-20240710   clang-18
x86_64                randconfig-002-20240710   clang-18
x86_64                randconfig-003-20240710   clang-18
x86_64                randconfig-004-20240710   clang-18
x86_64                randconfig-005-20240710   clang-18
x86_64                randconfig-006-20240710   clang-18
x86_64                randconfig-011-20240710   clang-18
x86_64                randconfig-012-20240710   clang-18
x86_64                randconfig-013-20240710   clang-18
x86_64                randconfig-014-20240710   clang-18
x86_64                randconfig-015-20240710   clang-18
x86_64                randconfig-016-20240710   clang-18
x86_64                randconfig-071-20240710   clang-18
x86_64                randconfig-072-20240710   clang-18
x86_64                randconfig-073-20240710   clang-18
x86_64                randconfig-074-20240710   clang-18
x86_64                randconfig-075-20240710   clang-18
x86_64                randconfig-076-20240710   clang-18
x86_64                          rhel-8.3-rust   clang-18
xtensa                            allnoconfig   gcc-13.2.0
xtensa                randconfig-001-20240710   gcc-13.2.0
xtensa                randconfig-002-20240710   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

From: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
To: clm@fb.com
Cc: josef@toxicpanda.com,
	dsterba@suse.com,
	linux-btrfs@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Jiapeng Chong <jiapeng.chong@linux.alibaba.com>,
	Abaci Robot <abaci@linux.alibaba.com>
Subject: [PATCH -next] btrfs: Remove duplicate btrfs_inode.h header
Date: Wed, 10 Jul 2024 13:34:20 +0800
Message-Id: <20240710053420.23713-1-jiapeng.chong@linux.alibaba.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273104
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-btrfs
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

./fs/btrfs/zlib.c: btrfs_inode.h is included more than once.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=9492
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
---
 fs/btrfs/zlib.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/fs/btrfs/zlib.c b/fs/btrfs/zlib.c
index decbadc6657d..8aa82ee1991e 100644
--- a/fs/btrfs/zlib.c
+++ b/fs/btrfs/zlib.c
@@ -20,7 +20,6 @@
 #include <linux/refcount.h>
 #include "btrfs_inode.h"
 #include "compression.h"
-#include "btrfs_inode.h"
 #include "fs.h"
 #include "subpage.h"
 
-- 
2.20.1.7.g153144c

.

From: alexs@kernel.org
To: Andrew Morton <akpm@linux-foundation.org>,
	Christoph Lameter <cl@linux.com>,
	Pekka Enberg <penberg@kernel.org>,
	David Rientjes <rientjes@google.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Hyeonggon Yoo <42.hyeyoo@gmail.com>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Cc: "Alex Shi (Tencent)" <alexs@kernel.org>,
	Randy Dunlap <rdunlap@infradead.org>,
	Yoann Congal <yoann.congal@smile.fr>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Petr Mladek <pmladek@suse.com>,
	Suren Baghdasaryan <surenb@google.com>
Subject: [PATCH v3 1/2] mm/memcg: alignment memcg_data define condition
Date: Wed, 10 Jul 2024 13:43:35 +0800
Message-ID: <20240710054336.190410-1-alexs@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273107 org.kvack.linux-mm:203220
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: "Alex Shi (Tencent)" <alexs@kernel.org>

commit 21c690a349ba ("mm: introduce slabobj_ext to support slab object
extensions") changed the folio/page->memcg_data define condition from
MEMCG to SLAB_OBJ_EXT. And selected SLAB_OBJ_EXT for MEMCG, just for
SLAB_MATCH(memcg_data, obj_exts), even no other relationship between them.

Above action make memcg_data exposed and include SLAB_OBJ_EXT for
!MEMCG. That's incorrect in logcial and pay on code size.

As Vlastimil Babka suggested, let's add _unused_slab_obj_ext for
SLAB_MATCH for slab.obj_exts while !MEMCG. That could resolve the match
issue, clean up the feature logical. And decouple the SLAB_OBJ_EXT from
MEMCG in next patch.

Signed-off-by: Alex Shi (Tencent) <alexs@kernel.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yoann Congal <yoann.congal@smile.fr>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
---
v1->v3: take Vlastimil's suggestion and move SLAB_OBJ_EXT/MEMCG decouple
to 2nd patch.
---
 include/linux/mm_types.h | 8 ++++++--
 mm/slab.h                | 4 ++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index ef09c4eef6d3..4ac3abc673d3 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -180,8 +180,10 @@ struct page {
 	/* Usage count. *DO NOT USE DIRECTLY*. See page_ref.h */
 	atomic_t _refcount;
 
-#ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 	unsigned long memcg_data;
+#elif defined(CONFIG_SLAB_OBJ_EXT)
+	unsigned long _unused_slab_obj_ext;
 #endif
 
 	/*
@@ -343,8 +345,10 @@ struct folio {
 			};
 			atomic_t _mapcount;
 			atomic_t _refcount;
-#ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 			unsigned long memcg_data;
+#elif defined(CONFIG_SLAB_OBJ_EXT)
+			unsigned long _unused_slab_obj_ext;
 #endif
 #if defined(WANT_PAGE_VIRTUAL)
 			void *virtual;
diff --git a/mm/slab.h b/mm/slab.h
index 3586e6183224..8ffdd4f315f8 100644
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -98,7 +98,11 @@ SLAB_MATCH(flags, __page_flags);
 SLAB_MATCH(compound_head, slab_cache);	/* Ensure bit 0 is clear */
 SLAB_MATCH(_refcount, __page_refcount);
 #ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 SLAB_MATCH(memcg_data, obj_exts);
+#else
+SLAB_MATCH(_unused_slab_obj_ext, obj_exts);
+#endif
 #endif
 #undef SLAB_MATCH
 static_assert(sizeof(struct slab) <= sizeof(struct page));
-- 
2.43.0

.

From: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
To: lucas.demarchi@intel.com
Cc: thomas.hellstrom@linux.intel.com,
	rodrigo.vivi@intel.com,
	maarten.lankhorst@linux.intel.com,
	mripard@kernel.org,
	tzimmermann@suse.de,
	airlied@gmail.com,
	daniel@ffwll.ch,
	intel-xe@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org,
	Jiapeng Chong <jiapeng.chong@linux.alibaba.com>,
	Abaci Robot <abaci@linux.alibaba.com>
Subject: [PATCH -next] drm/xe: Remove duplicate generated/xe_wa_oob.h header
Date: Wed, 10 Jul 2024 13:49:41 +0800
Message-Id: <20240710054941.44013-1-jiapeng.chong@linux.alibaba.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273114
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.freedesktop.lists.intel-xe
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

./drivers/gpu/drm/xe/xe_gt.c: generated/xe_wa_oob.h is included more than once.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=9493
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
---
 drivers/gpu/drm/xe/xe_gt.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index ce8994b808fe..5547191773fb 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -11,8 +11,6 @@
 #include <drm/xe_drm.h>
 #include <generated/xe_wa_oob.h>
 
-#include <generated/xe_wa_oob.h>
-
 #include "instructions/xe_gfxpipe_commands.h"
 #include "instructions/xe_mi_commands.h"
 #include "regs/xe_gt_regs.h"
-- 
2.20.1.7.g153144c

.

X-CID-CACHE: Type:Local,Time:202407101339+08,HitQuantity:1
X-ns-mid: postfix-668E2019-6054441873
From: Haoran Jang <jianghaoran@kylinos.cn>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
	lstoakes@gmail.com,
	vbabka@suse.cz,
	Liam.Howlett@oracle.com,
	akpm@linux-foundation.org,
	Haoran Jiang <jianghaoran@kylinos.cn>
Subject: [PATCH] mm/mmap: Align the length parameter of munmap with hugepage size
Date: Wed, 10 Jul 2024 13:45:58 +0800
Message-ID: <20240710054558.1959243-1-jianghaoran@kylinos.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273115 org.kvack.linux-mm:203222
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Haoran Jiang <jianghaoran@kylinos.cn>

munmap hugepge mappings, if the length of the range to munmap
is not aligned with hugepage size,munmap will fail.
In the hugetlb_vm_op_split function, an error will be returned
if startaddr+len is not hugepage size aligned.

before this patch:
in "tools/testing/selftests/mm/hugepage-mremap.c"
modify DEFAULT_LENGTH_MB to 3M,compile and run,
the following error message is displayed

-------------------------
running ./hugepage-mremap
-------------------------
TAP version 13
1..1
Map haddr: Returned address is 0x7eaa40000000
Map daddr: Returned address is 0x7daa40000000
Map vaddr: Returned address is 0x7faa40000000
Address returned by mmap() =3D 0x7cb34b000000
Mremap: Returned address is 0x7faa40000000
First hex is 0
First hex is 3020100
Bail out! mremap: Expected failure, but call succeeded

Signed-off-by: Haoran Jiang <jianghaoran@kylinos.cn>
---
 mm/mmap.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/mm/mmap.c b/mm/mmap.c
index 83b4682ec85c..0b3a60bf9b6f 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2733,7 +2733,15 @@ int do_vmi_munmap(struct vma_iterator *vmi, struct=
 mm_struct *mm,
 	if ((offset_in_page(start)) || start > TASK_SIZE || len > TASK_SIZE-sta=
rt)
 		return -EINVAL;
=20
-	end =3D start + PAGE_ALIGN(len);
+	vma =3D find_vma(mm, start);
+	if (!vma) {
+		if (unlock)
+			mmap_write_unlock(mm);
+		return 0;
+	}
+
+	end =3D start + ALIGN(len, vma_kernel_pagesize(vma));
+
 	if (end =3D=3D start)
 		return -EINVAL;
=20
--=20
2.43.0

.

From: boy.wu <boy.wu@mediatek.com>
To: Tejun Heo <tj@kernel.org>, Josef Bacik <josef@toxicpanda.com>, Jens Axboe
	<axboe@kernel.dk>
CC: Matthias Brugger <matthias.bgg@gmail.com>, AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>, Boris Burkov <boris@bur.io>,
	<cgroups@vger.kernel.org>, <linux-block@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>, <iverlin.wang@mediatek.com>, Boy Wu
	<boy.wu@mediatek.com>
Subject: [PATCH v2] blk-cgroup: Replace u64_sync with blkg_stat_lock for stats update
Date: Wed, 10 Jul 2024 14:13:34 +0800
Message-ID: <20240710061334.1888-1-boy.wu@mediatek.com>
X-Mailing-List: linux-block@vger.kernel.org
List-Id: <linux-block.vger.kernel.org>
List-Subscribe: <mailto:linux-block+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-block+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-block:93989 org.kernel.vger.linux-kernel:1273121
Newsgroups: org.kernel.vger.linux-block,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.cgroups,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Boy Wu <boy.wu@mediatek.com>

In 32bit SMP systems, if multiple CPUs call blkcg_print_stat,
which may cause blkcg_fill_root_iostats to have a concurrent problem
on the seqlock in u64_stats_update, which will cause a deadlock
on u64_stats_fetch_begin in blkcg_print_one_stat.

Thus use blkg_stat_lock to replace u64_sync.

Fixes: ef45fe470e1e ("blk-cgroup: show global disk stats in root cgroup io.stat")
Signed-off-by: Boy Wu <boy.wu@mediatek.com>
---
Change in v2:
 - update commit message
 - Remove u64_sync
 - Replace spin_lock_irq with guard statement
 - Replace blkg->q->queue_lock with blkg_stat_lock
---
 block/blk-cgroup.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index 85b3b9051455..18b47ee1a640 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -952,7 +952,6 @@ static void blkcg_fill_root_iostats(void)
 		struct blkcg_gq *blkg = bdev->bd_disk->queue->root_blkg;
 		struct blkg_iostat tmp;
 		int cpu;
-		unsigned long flags;
 
 		memset(&tmp, 0, sizeof(tmp));
 		for_each_possible_cpu(cpu) {
@@ -974,9 +973,10 @@ static void blkcg_fill_root_iostats(void)
 				cpu_dkstats->sectors[STAT_DISCARD] << 9;
 		}
 
-		flags = u64_stats_update_begin_irqsave(&blkg->iostat.sync);
+#if BITS_PER_LONG == 32
+		guard(raw_spinlock_irqsave)(&blkg_stat_lock);
+#endif
 		blkg_iostat_set(&blkg->iostat.cur, &tmp);
-		u64_stats_update_end_irqrestore(&blkg->iostat.sync, flags);
 	}
 }
 
-- 
2.18.0

.

From: Yang Yang <yang.yang@vivo.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	Jens Axboe <axboe@kernel.dk>,
	Ming Lei <ming.lei@redhat.com>,
	Yang Yang <yang.yang@vivo.com>,
	Omar Sandoval <osandov@fb.com>,
	linux-kernel@vger.kernel.org,
	linux-block@vger.kernel.org
Subject: [PATCH v6] sbitmap: fix io hung due to race on sbitmap_word::cleared
Date: Wed, 10 Jul 2024 14:56:14 +0800
Message-Id: <20240710065616.1060803-1-yang.yang@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-block@vger.kernel.org
List-Id: <linux-block.vger.kernel.org>
List-Subscribe: <mailto:linux-block+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-block+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-block:93995 org.kernel.vger.linux-kernel:1273127
Newsgroups: org.kernel.vger.linux-block,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Configuration for sbq:
  depth=64, wake_batch=6, shift=6, map_nr=1

1. There are 64 requests in progress:
  map->word = 0xFFFFFFFFFFFFFFFF
2. After all the 64 requests complete, and no more requests come:
  map->word = 0xFFFFFFFFFFFFFFFF, map->cleared = 0xFFFFFFFFFFFFFFFF
3. Now two tasks try to allocate requests:
  T1:                                       T2:
  __blk_mq_get_tag                          .
  __sbitmap_queue_get                       .
  sbitmap_get                               .
  sbitmap_find_bit                          .
  sbitmap_find_bit_in_word                  .
  __sbitmap_get_word  -> nr=-1              __blk_mq_get_tag
  sbitmap_deferred_clear                    __sbitmap_queue_get
  /* map->cleared=0xFFFFFFFFFFFFFFFF */     sbitmap_find_bit
    if (!READ_ONCE(map->cleared))           sbitmap_find_bit_in_word
      return false;                         __sbitmap_get_word -> nr=-1
    mask = xchg(&map->cleared, 0)           sbitmap_deferred_clear
    atomic_long_andnot()                    /* map->cleared=0 */
                                              if (!(map->cleared))
                                                return false;
                                     /*
                                      * map->cleared is cleared by T1
                                      * T2 fail to acquire the tag
                                      */

4. T2 is the sole tag waiter. When T1 puts the tag, T2 cannot be woken
up due to the wake_batch being set at 6. If no more requests come, T1
will wait here indefinitely.

This patch achieves two purposes:
1. Check on ->cleared and update on both ->cleared and ->word need to
be done atomically, and using spinlock could be the simplest solution.
2. Add extra check in sbitmap_deferred_clear(), to identify whether
->word has free bits.

Fixes: ea86ea2cdced ("sbitmap: ammortize cost of clearing bits")
Signed-off-by: Yang Yang <yang.yang@vivo.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>

---
Changes from v5:
  - Modify commit message
  - Change the fixes tag
Changes from v4:
  - Add some comments according to suggestion
Changes from v3:
  - Add more arguments to sbitmap_deferred_clear(), for those who
    don't care about the return value, just pass 0
  - Consider the situation when using sbitmap_get_shallow()
  - Consider the situation when ->round_robin is true
  - Modify commit message
Changes from v2:
  - Modify commit message by suggestion
  - Add extra check in sbitmap_deferred_clear() by suggestion
Changes from v1:
  - simply revert commit 661d4f55a794 ("sbitmap: remove swap_lock")
---
 include/linux/sbitmap.h |  5 +++++
 lib/sbitmap.c           | 46 ++++++++++++++++++++++++++++++++++-------
 2 files changed, 43 insertions(+), 8 deletions(-)

diff --git a/include/linux/sbitmap.h b/include/linux/sbitmap.h
index d662cf136021..ec0b0e73c906 100644
--- a/include/linux/sbitmap.h
+++ b/include/linux/sbitmap.h
@@ -36,6 +36,11 @@ struct sbitmap_word {
 	 * @cleared: word holding cleared bits
 	 */
 	unsigned long cleared ____cacheline_aligned_in_smp;
+
+	/**
+	 * @swap_lock: Held while swapping word <-> cleared
+	 */
+	spinlock_t swap_lock;
 } ____cacheline_aligned_in_smp;
 
 /**
diff --git a/lib/sbitmap.c b/lib/sbitmap.c
index 1e453f825c05..22d6e86ba87f 100644
--- a/lib/sbitmap.c
+++ b/lib/sbitmap.c
@@ -60,12 +60,35 @@ static inline void update_alloc_hint_after_get(struct sbitmap *sb,
 /*
  * See if we have deferred clears that we can batch move
  */
-static inline bool sbitmap_deferred_clear(struct sbitmap_word *map)
+static inline bool sbitmap_deferred_clear(struct sbitmap_word *map,
+		unsigned int depth, unsigned int alloc_hint, bool wrap)
 {
-	unsigned long mask;
+	unsigned long mask, flags, word_mask;
+	bool ret = false;
 
-	if (!READ_ONCE(map->cleared))
-		return false;
+	spin_lock_irqsave(&map->swap_lock, flags);
+
+	if (!map->cleared) {
+		if (depth > 0) {
+			word_mask = (~0UL) >> (BITS_PER_LONG - depth);
+			/*
+			 * The current behavior is to always retry after moving
+			 * ->cleared to word, and we change it to retry in case
+			 * of any free bits. To avoid dead loop, we need to take
+			 * wrap & alloc_hint into account. Without this, a soft
+			 * lockup was detected in our test environment.
+			 */
+			if (!wrap && alloc_hint)
+				word_mask &= ~((1UL << alloc_hint) - 1);
+
+			if ((READ_ONCE(map->word) & word_mask) == word_mask)
+				ret = false;
+			else
+				ret = true;
+		}
+
+		goto out_unlock;
+	}
 
 	/*
 	 * First get a stable cleared mask, setting the old mask to 0.
@@ -77,7 +100,10 @@ static inline bool sbitmap_deferred_clear(struct sbitmap_word *map)
 	 */
 	atomic_long_andnot(mask, (atomic_long_t *)&map->word);
 	BUILD_BUG_ON(sizeof(atomic_long_t) != sizeof(map->word));
-	return true;
+	ret = true;
+out_unlock:
+	spin_unlock_irqrestore(&map->swap_lock, flags);
+	return ret;
 }
 
 int sbitmap_init_node(struct sbitmap *sb, unsigned int depth, int shift,
@@ -85,6 +111,7 @@ int sbitmap_init_node(struct sbitmap *sb, unsigned int depth, int shift,
 		      bool alloc_hint)
 {
 	unsigned int bits_per_word;
+	int i;
 
 	if (shift < 0)
 		shift = sbitmap_calculate_shift(depth);
@@ -116,6 +143,9 @@ int sbitmap_init_node(struct sbitmap *sb, unsigned int depth, int shift,
 		return -ENOMEM;
 	}
 
+	for (i = 0; i < sb->map_nr; i++)
+		spin_lock_init(&sb->map[i].swap_lock);
+
 	return 0;
 }
 EXPORT_SYMBOL_GPL(sbitmap_init_node);
@@ -126,7 +156,7 @@ void sbitmap_resize(struct sbitmap *sb, unsigned int depth)
 	unsigned int i;
 
 	for (i = 0; i < sb->map_nr; i++)
-		sbitmap_deferred_clear(&sb->map[i]);
+		sbitmap_deferred_clear(&sb->map[i], 0, 0, 0);
 
 	sb->depth = depth;
 	sb->map_nr = DIV_ROUND_UP(sb->depth, bits_per_word);
@@ -179,7 +209,7 @@ static int sbitmap_find_bit_in_word(struct sbitmap_word *map,
 					alloc_hint, wrap);
 		if (nr != -1)
 			break;
-		if (!sbitmap_deferred_clear(map))
+		if (!sbitmap_deferred_clear(map, depth, alloc_hint, wrap))
 			break;
 	} while (1);
 
@@ -496,7 +526,7 @@ unsigned long __sbitmap_queue_get_batch(struct sbitmap_queue *sbq, int nr_tags,
 		unsigned int map_depth = __map_depth(sb, index);
 		unsigned long val;
 
-		sbitmap_deferred_clear(map);
+		sbitmap_deferred_clear(map, 0, 0, 0);
 		val = READ_ONCE(map->word);
 		if (val == (1UL << (map_depth - 1)) - 1)
 			goto next;
-- 
2.34.1

.

Date: Wed, 10 Jul 2024 00:09:33 -0600
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Mime-Version: 1.0
Message-ID: <20240710060933.3979380-1-yuzhao@google.com>
Subject: [PATCH mm-unstable v2] mm/truncate: batch-clear shadow entries
From: Yu Zhao <yuzhao@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Bharata B Rao <bharata@amd.com>, "Matthew Wilcox (Oracle)" <willy@infradead.org>, linux-mm@kvack.org, 
	linux-kernel@vger.kernel.org, Yu Zhao <yuzhao@google.com>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273130 org.kvack.linux-mm:203224
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Make clear_shadow_entry() clear shadow entries in `struct folio_batch`
so that it can reduce contention on i_lock and i_pages locks, e.g.,

  watchdog: BUG: soft lockup - CPU#29 stuck for 11s! [fio:2701649]
    clear_shadow_entry+0x3d/0x100
    mapping_try_invalidate+0x117/0x1d0
    invalidate_mapping_pages+0x10/0x20
    invalidate_bdev+0x3c/0x50
    blkdev_common_ioctl+0x5f7/0xa90
    blkdev_ioctl+0x109/0x270

Also, rename clear_shadow_entry() to clear_shadow_entries() accordingly.

Reported-by: Bharata B Rao <bharata@amd.com>
Closes: https://lore.kernel.org/d2841226-e27b-4d3d-a578-63587a3aa4f3@amd.com/
Tested-by: Bharata B Rao <bharata@amd.com>
Signed-off-by: Yu Zhao <yuzhao@google.com>
---
 mm/truncate.c | 68 +++++++++++++++++++++++----------------------------
 1 file changed, 31 insertions(+), 37 deletions(-)

diff --git a/mm/truncate.c b/mm/truncate.c
index 5ce62a939e55..dfb3d1f4d456 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -39,12 +39,25 @@ static inline void __clear_shadow_entry(struct address_space *mapping,
 	xas_store(&xas, NULL);
 }
 
-static void clear_shadow_entry(struct address_space *mapping, pgoff_t index,
-			       void *entry)
+static void clear_shadow_entries(struct address_space *mapping,
+				 struct folio_batch *fbatch, pgoff_t *indices)
 {
+	int i;
+
+	/* Handled by shmem itself, or for DAX we do nothing. */
+	if (shmem_mapping(mapping) || dax_mapping(mapping))
+		return;
+
 	spin_lock(&mapping->host->i_lock);
 	xa_lock_irq(&mapping->i_pages);
-	__clear_shadow_entry(mapping, index, entry);
+
+	for (i = 0; i < folio_batch_count(fbatch); i++) {
+		struct folio *folio = fbatch->folios[i];
+
+		if (xa_is_value(folio))
+			__clear_shadow_entry(mapping, indices[i], folio);
+	}
+
 	xa_unlock_irq(&mapping->i_pages);
 	if (mapping_shrinkable(mapping))
 		inode_add_lru(mapping->host);
@@ -105,36 +118,6 @@ static void truncate_folio_batch_exceptionals(struct address_space *mapping,
 	fbatch->nr = j;
 }
 
-/*
- * Invalidate exceptional entry if easily possible. This handles exceptional
- * entries for invalidate_inode_pages().
- */
-static int invalidate_exceptional_entry(struct address_space *mapping,
-					pgoff_t index, void *entry)
-{
-	/* Handled by shmem itself, or for DAX we do nothing. */
-	if (shmem_mapping(mapping) || dax_mapping(mapping))
-		return 1;
-	clear_shadow_entry(mapping, index, entry);
-	return 1;
-}
-
-/*
- * Invalidate exceptional entry if clean. This handles exceptional entries for
- * invalidate_inode_pages2() so for DAX it evicts only clean entries.
- */
-static int invalidate_exceptional_entry2(struct address_space *mapping,
-					 pgoff_t index, void *entry)
-{
-	/* Handled by shmem itself */
-	if (shmem_mapping(mapping))
-		return 1;
-	if (dax_mapping(mapping))
-		return dax_invalidate_mapping_entry_sync(mapping, index);
-	clear_shadow_entry(mapping, index, entry);
-	return 1;
-}
-
 /**
  * folio_invalidate - Invalidate part or all of a folio.
  * @folio: The folio which is affected.
@@ -494,6 +477,7 @@ unsigned long mapping_try_invalidate(struct address_space *mapping,
 	unsigned long ret;
 	unsigned long count = 0;
 	int i;
+	bool xa_has_values = false;
 
 	folio_batch_init(&fbatch);
 	while (find_lock_entries(mapping, &index, end, &fbatch, indices)) {
@@ -503,8 +487,8 @@ unsigned long mapping_try_invalidate(struct address_space *mapping,
 			/* We rely upon deletion not changing folio->index */
 
 			if (xa_is_value(folio)) {
-				count += invalidate_exceptional_entry(mapping,
-							     indices[i], folio);
+				xa_has_values = true;
+				count++;
 				continue;
 			}
 
@@ -522,6 +506,10 @@ unsigned long mapping_try_invalidate(struct address_space *mapping,
 			}
 			count += ret;
 		}
+
+		if (xa_has_values)
+			clear_shadow_entries(mapping, &fbatch, indices);
+
 		folio_batch_remove_exceptionals(&fbatch);
 		folio_batch_release(&fbatch);
 		cond_resched();
@@ -616,6 +604,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 	int ret = 0;
 	int ret2 = 0;
 	int did_range_unmap = 0;
+	bool xa_has_values = false;
 
 	if (mapping_empty(mapping))
 		return 0;
@@ -629,8 +618,9 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 			/* We rely upon deletion not changing folio->index */
 
 			if (xa_is_value(folio)) {
-				if (!invalidate_exceptional_entry2(mapping,
-						indices[i], folio))
+				xa_has_values = true;
+				if (dax_mapping(mapping) &&
+				    !dax_invalidate_mapping_entry_sync(mapping, indices[i]))
 					ret = -EBUSY;
 				continue;
 			}
@@ -666,6 +656,10 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 				ret = ret2;
 			folio_unlock(folio);
 		}
+
+		if (xa_has_values)
+			clear_shadow_entries(mapping, &fbatch, indices);
+
 		folio_batch_remove_exceptionals(&fbatch);
 		folio_batch_release(&fbatch);
 		cond_resched();
-- 
2.45.2.803.g4e1b14247a-goog

.

From: Varadarajan Narayanan <quic_varada@quicinc.com>
To: <robh@kernel.org>, <krzk+dt@kernel.org>, <conor+dt@kernel.org>,
        <andersson@kernel.org>, <konrad.dybcio@linaro.org>,
        <mturquette@baylibre.com>, <sboyd@kernel.org>, <ilia.lin@kernel.org>,
        <rafael@kernel.org>, <viresh.kumar@linaro.org>,
        <ulf.hansson@linaro.org>, <quic_sibis@quicinc.com>,
        <quic_rjendra@quicinc.com>, <danila@jiaxyga.com>,
        <quic_varada@quicinc.com>, <neil.armstrong@linaro.org>,
        <otto.pflueger@abscue.de>, <abel.vesa@linaro.org>, <luca@z3ntu.xyz>,
        <geert+renesas@glider.be>, <stephan.gerhold@kernkonzept.com>,
        <linux-arm-msm@vger.kernel.org>, <devicetree@vger.kernel.org>,
        <linux-kernel@vger.kernel.org>, <linux-pm@vger.kernel.org>,
        <linux-clk@vger.kernel.org>
Subject: [PATCH v6 0/9] Enable CPR for IPQ9574
Date: Wed, 10 Jul 2024 11:40:53 +0530
Message-ID: <20240710061102.1323550-1-quic_varada@quicinc.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273131
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series tries to enable CPR on IPQ9574 based on the drivers
posted in [1] - Add support for Core Power Reduction v3, v4 and Hardened.

dt_binding_check and dtbs_check passed.

Depends:
	[1] https://lore.kernel.org/lkml/20240708-topic-cpr3h-v15-0-5bc8b8936489@linaro.org/T/
	[2] https://lore.kernel.org/linux-arm-msm/20240703091651.2820236-10-quic_varada@quicinc.com/

v6: Update depends to Konrad's V15
    Rebase on top of V15
    Change 'acc_desc' check to accomodate v15 changes

v5:
This series tries to enable CPR on IPQ9574, that implements
CPRv4. Since [1] is older, faced few minor issues. Those are
addressed in [2].

Depends:
	[1] https://lore.kernel.org/lkml/20230217-topic-cpr3h-v14-0-9fd23241493d@linaro.org/T/
	[2] https://github.com/quic-varada/cpr/tree/4de50be55a89eb29ab0d40d3fcfe9aa7a9ccf910
	[3] https://lore.kernel.org/linux-arm-msm/20240703091651.2820236-10-quic_varada@quicinc.com/

    Drop 'dt-bindings: opp: v2-qcom-level: Update minItems for oloop-vadj & cloop-vadj',
    the [3] dependency listed above. It should be squashed into [1]
    Add acc_desc is not NULL check in one more place in cpr_probe
    Update one commit message and add acked-by, reviewd-by

v4: s/cprh/cpr4/
    Create new match data for ipq9574 that includes genpd_names
    Update cloop-vadj & oloop-vadj with minItems

v3: Fix patch authorship for 2 patches
    Include CPR3 file changes done to Konrad's patches in https://github.com/quic-varada/cpr/commits/konrad/
    Change url for [2] to skip the cpr3 file changes

v2: Fix Signed-off-by order in 2 patches
    Update constraints in qcom,cpr3.yaml
    Add rbcpr_clk_src registration
    Add Reviewed-by to one of the patches
    Not adding Acked-by as the file has changed

Praveenkumar I (2):
  pmdomain: qcom: rpmpd: Add IPQ9574 power domains
  soc: qcom: cpr3: Add IPQ9574 definitions

Varadarajan Narayanan (7):
  soc: qcom: cpr3: Fix 'acc_desc' usage
  cpufreq: qcom-nvmem: Add support for IPQ9574
  dt-bindings: power: rpmpd: Add IPQ9574 power domains
  dt-bindings: soc: qcom: cpr3: Add bindings for IPQ9574
  dt-bindings: clock: Add CPR clock defines for IPQ9574
  clk: qcom: gcc-ipq9574: Add CPR clock definition
  arm64: dts: qcom: ipq9574: Enable CPR

 .../devicetree/bindings/power/qcom,rpmpd.yaml |   1 +
 .../bindings/soc/qcom/qcom,cpr3.yaml          |  35 +++
 arch/arm64/boot/dts/qcom/ipq9574.dtsi         | 269 ++++++++++++++++--
 drivers/clk/qcom/gcc-ipq9574.c                |  39 +++
 drivers/cpufreq/qcom-cpufreq-nvmem.c          |   7 +-
 drivers/pmdomain/qcom/cpr3.c                  | 149 +++++++++-
 drivers/pmdomain/qcom/rpmpd.c                 |  19 ++
 include/dt-bindings/clock/qcom,ipq9574-gcc.h  |   2 +
 include/dt-bindings/power/qcom-rpmpd.h        |   3 +
 9 files changed, 502 insertions(+), 22 deletions(-)

-- 
2.34.1

.

From: Pieterjan Camerlynck via B4 Relay <devnull+pieterjanca.gmail.com@kernel.org>
Subject: [PATCH 0/2] leds: leds-pca995x: Add support for NXP PCA9956B
Date: Wed, 10 Jul 2024 08:15:43 +0200
Message-Id: <20240710-pca995x-v1-0-545015603000@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Pavel Machek <pavel@ucw.cz>, Lee Jones <lee@kernel.org>, 
 Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, 
 Isai Gaspar <isaiezequiel.gaspar@nxp.com>, Marek Vasut <marex@denx.de>
Cc: linux-leds@vger.kernel.org, devicetree@vger.kernel.org, 
 linux-kernel@vger.kernel.org, Pieterjan Camerlynck <pieterjanca@gmail.com>
X-Original-From: Pieterjan Camerlynck <pieterjanca@gmail.com>
Reply-To: pieterjanca@gmail.com
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273146
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.feeds.b4-sent,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-leds
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series adds support for NXP PCA9956B to the pca995x driver. This
chip is similar to the others but has 24 instead of 16 outputs and a
slightly different register layout. Datasheet available at [1].

[1]: https://www.nxp.com/docs/en/data-sheet/PCA9956B.pdf

Signed-off-by: Pieterjan Camerlynck <pieterjanca@gmail.com>
---
Pieterjan Camerlynck (2):
      dt-bindings: leds: pca995x: Add new nxp,pca9956b compatible
      leds: leds-pca995x: Add support for NXP PCA9956B

 .../devicetree/bindings/leds/nxp,pca995x.yaml      |  6 +-
 drivers/leds/leds-pca995x.c                        | 88 +++++++++++++---------
 2 files changed, 56 insertions(+), 38 deletions(-)
---
base-commit: 82d01fe6ee52086035b201cfa1410a3b04384257
change-id: 20240709-pca995x-d7c5f97f6ebc

Best regards,
-- 
Pieterjan Camerlynck <pieterjanca@gmail.com>


.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: Naresh Kamboju <naresh.kamboju@linaro.org>
Date: Wed, 10 Jul 2024 11:53:26 +0530
Message-ID: <CA+G9fYsptR8VoPA0TBV0qeCy7TX2EHyD4v-EMsVbomeS5yVSLg@mail.gmail.com>
Subject: mips-gic-timer.c:180:11: error: call to undeclared function 'read_gic_redir_counter'
To: open list <linux-kernel@vger.kernel.org>, linux-mips@vger.kernel.org, 
	lkft-triage@lists.linaro.org
Cc: Thomas Gleixner <tglx@linutronix.de>, Serge Semin <Sergey.Semin@baikalelectronics.ru>, 
	Serge Semin <fancer.lancer@gmail.com>, Daniel Lezcano <daniel.lezcano@linaro.org>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273152
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-mips
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The arch mips builds failed on Linux next-20240709 tag due to below
build warnings / errors [1] with clang-18 and gcc-12 / gcc-8.

This is started from Linux next-20240709.
  GOOD: next-20240703
  BAD: next-20240709

Build details,
-------
kernel: 6.10.0-rc7
git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
git_ref: master
git_sha: 82d01fe6ee52086035b201cfa1410a3b04384257
git_describe: next-20240709
Test details: https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20240709

Regressions (compared to build next-20240703)
------------------------------------------------------------------------

mips:
  build:
    * clang-18-allnoconfig
    * clang-nightly-defconfig
    * gcc-8-allnoconfig
    * gcc-12-malta_defconfig
    * clang-18-tinyconfig
    * gcc-12-defconfig
    * clang-nightly-allnoconfig
    * gcc-12-tinyconfig
    * gcc-8-malta_defconfig
    * gcc-12-allnoconfig
    * clang-18-defconfig
    * gcc-8-tinyconfig
    * clang-nightly-tinyconfig
    * gcc-8-defconfig

Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>

Build warnings / errors [2]:
---------
drivers/clocksource/mips-gic-timer.c:180:11: error: call to undeclared
function 'read_gic_redir_counter'; ISO C99 and later do not support
implicit function declarations [-Wimplicit-function-declaration]
  180 |                 count = read_gic_redir_counter();
      |                         ^
drivers/clocksource/mips-gic-timer.c:184:7: error: call to undeclared
function 'read_gic_redir_counter_32h'; ISO C99 and later do not
support implicit function declarations
[-Wimplicit-function-declaration]
  184 |         hi = read_gic_redir_counter_32h();
      |              ^

Links:
----
[1] https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20240709/testrun/24543079/suite/build/test/clang-18-defconfig/log
[2] https://storage.tuxsuite.com/public/linaro/lkft/builds/2j0Ox1y8pT9eOUt60DNHQZjFjD1/

--
Linaro LKFT
https://lkft.linaro.org
.

From: zhangchun <zhang.chuna@h3c.com>
To: <akpm@linux-foundation.org>
CC: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>, <jiaoxupo@h3c.com>,
        <zhang.zhengming@h3c.com>, <zhang.zhansheng@h3c.com>,
        <shaohaojize@126.com>, zhangchun <zhang.chuna@h3c.com>
Subject: [PATCH] =?UTF-8?q?mm:=20Give=20kmap=5Flock=20before=20call=20flus?= =?UTF-8?q?h=5Ftlb=5Fkernel=5Frang=EF=BC=8Cavoid=20kmap=5Fhigh=20deadlock?= =?UTF-8?q?=20V2.?=
Date: Wed, 10 Jul 2024 14:26:12 +0800
Message-ID: <1720592772-19904-1-git-send-email-zhang.chuna@h3c.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-DNSRBL: 
X-SPAM-SOURCE-CHECK: pass
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273154 org.kvack.linux-mm:203227
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use kmap_high and kmap_XXX or kumap_xxx among differt cores at the same
time may cause deadlock. The issue is like thisï¼š

 CPU 0:                                                 CPU 1:
 kmap_high(){                                           kmap_xxx() {
               ...                                        irq_disable();
        spin_lock(&kmap_lock)
               ...
        map_new_virtual                                     ...
           flush_all_zero_pkmaps
              flush_tlb_kernel_range         /* CPU0 holds the kmap_lock */
                      smp_call_function_many         spin_lock(&kmap_lock)
                      ...                                   ....
        spin_unlock(&kmap_lock)
               ...

CPU 0 holds the kmap_lock, waiting for CPU 1 respond to IPI. But CPU 1
has disabled irqs, waiting for kmap_lock, cannot answer the IPI. Fix
this by releasing  kmap_lock before call flush_tlb_kernel_range,
avoid kmap_lock deadlock.

Fixes: 3297e760776a ("highmem: atomic highmem kmap page pinning")
Signed-off-by: zhangchun <zhang.chuna@h3c.com>
Co-developed-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Signed-off-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Suggested-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: zhangzhengming <zhang.zhengming@h3c.com>
---
 mm/highmem.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mm/highmem.c b/mm/highmem.c
index bd48ba4..841b370 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void)
 		set_page_address(page, NULL);
 		need_flush = 1;
 	}
-	if (need_flush)
+	if (need_flush) {
+		unlock_kmap();
 		flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
+		lock_kmap();
+	}
 }
 
 void __kmap_flush_unused(void)
-- 
1.8.3.1

.

From: =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Date: Wed, 10 Jul 2024 07:28:32 +0100
Subject: [PATCH] usb: typec: tcpm/tcpci_maxim: fix non-contaminant CC
 handling
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Message-Id: <20240710-max33359-toggling-v1-1-f6dc123f3a0a@linaro.org>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Peter Griffin <peter.griffin@linaro.org>, 
 Tudor Ambarus <tudor.ambarus@linaro.org>, 
 Will McVicker <willmcvicker@google.com>, kernel-team@android.com, 
 RD Babiera <rdbabiera@google.com>, 
 Badhri Jagan Sridharan <badhri@google.com>, linux-usb@vger.kernel.org, 
 linux-kernel@vger.kernel.org, 
 =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273155
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tcpci_maxim currently never triggers the TCPM state machine when CC
status has not changed due to a contaminant but due to a real
connection event, i.e. a genuine plug event, meaning the system will
stay idle and not notify any subscribers.

The reason is that the initial state of the port is 'toggling', which
causes _max_tcpci_irq() to only drive the contamination part of the
TCPM state machine (via tcpm_port_clean()).

What should happen instead is that if no contamination was detected,
the TCPM should be notified of the CC change in this case.

To fix this, we update ...is_contaminant() to also allow its caller to
determine if more CC processing is required and then call into the TCPM
as required.

While at it, add a kernel-doc for max_contaminant_is_contaminant().

Note: the code has an issue where I2C errors during contaminant
detection also cause the TCPM state machine to not be updated. This
commit doesn't change this behaviour and should be addressed by
follow-up commit(s).

Signed-off-by: AndrÃ© Draszik <andre.draszik@linaro.org>
---
 drivers/usb/typec/tcpm/maxim_contaminant.c |  7 +++++--
 drivers/usb/typec/tcpm/tcpci_maxim.h       | 15 ++++++++++++++-
 drivers/usb/typec/tcpm/tcpci_maxim_core.c  | 12 ++++++++----
 3 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/drivers/usb/typec/tcpm/maxim_contaminant.c b/drivers/usb/typec/tcpm/maxim_contaminant.c
index f8504a90da26..e7fa3e36f8ae 100644
--- a/drivers/usb/typec/tcpm/maxim_contaminant.c
+++ b/drivers/usb/typec/tcpm/maxim_contaminant.c
@@ -322,11 +322,14 @@ static int max_contaminant_enable_dry_detection(struct max_tcpci_chip *chip)
 	return 0;
 }
 
-bool max_contaminant_is_contaminant(struct max_tcpci_chip *chip, bool disconnect_while_debounce)
+bool max_contaminant_is_contaminant(struct max_tcpci_chip *chip, bool disconnect_while_debounce,
+				    bool *cc_handled)
 {
 	u8 cc_status, pwr_cntl;
 	int ret;
 
+	*cc_handled = true;
+
 	ret = max_tcpci_read8(chip, TCPC_CC_STATUS, &cc_status);
 	if (ret < 0)
 		return false;
@@ -368,7 +371,6 @@ bool max_contaminant_is_contaminant(struct max_tcpci_chip *chip, bool disconnect
 				return true;
 			}
 		}
-		return false;
 	} else if (chip->contaminant_state == DETECTED) {
 		if (STATUS_CHECK(cc_status, TCPC_CC_STATUS_TOGGLING, 0)) {
 			chip->contaminant_state = max_contaminant_detect_contaminant(chip);
@@ -379,6 +381,7 @@ bool max_contaminant_is_contaminant(struct max_tcpci_chip *chip, bool disconnect
 		}
 	}
 
+	*cc_handled = false;
 	return false;
 }
 
diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.h b/drivers/usb/typec/tcpm/tcpci_maxim.h
index 78ff3b73ee7e..9c7f714d2c21 100644
--- a/drivers/usb/typec/tcpm/tcpci_maxim.h
+++ b/drivers/usb/typec/tcpm/tcpci_maxim.h
@@ -85,6 +85,19 @@ static inline int max_tcpci_write8(struct max_tcpci_chip *chip, unsigned int reg
 	return regmap_raw_write(chip->data.regmap, reg, &val, sizeof(u8));
 }
 
-bool max_contaminant_is_contaminant(struct max_tcpci_chip *chip, bool disconnect_while_debounce);
+/**
+ * max_contaminant_is_contaminant - Test if CC was toggled due to contaminant
+ *
+ * @chip: Handle to a struct max_tcpci_chip
+ * @disconnect_while_debounce: Whether or not to sleep as debouncing measure
+ * @cc_handled: Returns whether or not CC toggling was handled here
+ *
+ * Determine if a contaminant was detected.
+ *
+ * Returns: true if a contaminant was detected, false otherwise. cc_handled
+ * is updated to reflect whether or not further CC handling is required.
+ */
+bool max_contaminant_is_contaminant(struct max_tcpci_chip *chip, bool disconnect_while_debounce,
+				    bool *cc_handled);
 
 #endif  // TCPCI_MAXIM_H_
diff --git a/drivers/usb/typec/tcpm/tcpci_maxim_core.c b/drivers/usb/typec/tcpm/tcpci_maxim_core.c
index eec3bcec119c..55d931672ecd 100644
--- a/drivers/usb/typec/tcpm/tcpci_maxim_core.c
+++ b/drivers/usb/typec/tcpm/tcpci_maxim_core.c
@@ -357,12 +357,15 @@ static irqreturn_t _max_tcpci_irq(struct max_tcpci_chip *chip, u16 status)
 		tcpm_vbus_change(chip->port);
 
 	if (status & TCPC_ALERT_CC_STATUS) {
+		bool cc_handled = false; /* CC toggle handled by contaminant detection */
+
 		if (chip->contaminant_state == DETECTED || tcpm_port_is_toggling(chip->port)) {
-			if (!max_contaminant_is_contaminant(chip, false))
+			if (!max_contaminant_is_contaminant(chip, false,
+							    &cc_handled))
 				tcpm_port_clean(chip->port);
-		} else {
-			tcpm_cc_change(chip->port);
 		}
+		if (!cc_handled)
+			tcpm_cc_change(chip->port);
 	}
 
 	if (status & TCPC_ALERT_POWER_STATUS)
@@ -455,8 +458,9 @@ static int tcpci_init(struct tcpci *tcpci, struct tcpci_data *data)
 static void max_tcpci_check_contaminant(struct tcpci *tcpci, struct tcpci_data *tdata)
 {
 	struct max_tcpci_chip *chip = tdata_to_max_tcpci(tdata);
+	bool cc_handled;
 
-	if (!max_contaminant_is_contaminant(chip, true))
+	if (!max_contaminant_is_contaminant(chip, true, &cc_handled))
 		tcpm_port_clean(chip->port);
 }
 

---
base-commit: 82d01fe6ee52086035b201cfa1410a3b04384257
change-id: 20240710-max33359-toggling-cf7f7e5e1443

Best regards,
-- 
AndrÃ© Draszik <andre.draszik@linaro.org>

.

Date: Wed, 10 Jul 2024 16:34:07 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Lee Jones <lee@kernel.org>
Cc: Christian Marangi <ansuelsmth@gmail.com>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>
Subject: linux-next: build failure after merge of the leds-lj tree
Message-ID: <20240710163407.6393021f@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/hNw_6dGlq3+C7iW9qNvyHNl";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273158 org.kernel.vger.linux-next:62172
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/hNw_6dGlq3+C7iW9qNvyHNl
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

After merging the leds-lj tree, today's linux-next build (x86_64
allmodconfig) failed like this:

drivers/leds/leds-lp5521.c: In function 'lp5521_selftest':
drivers/leds/leds-lp5521.c:189:33: error: macro "guard" passed 2 arguments,=
 but takes just 1
  189 |         guard(mutex, &chip->lock);
      |                                 ^
In file included from drivers/leds/leds-lp5521.c:12:
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp5521.c:189:9: error: 'guard' undeclared (first use in t=
his function)
  189 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp5521.c:189:9: note: each undeclared identifier is repor=
ted only once for each function it appears in
drivers/leds/leds-lp5523.c: In function 'lp5523_selftest':
drivers/leds/leds-lp5523.c:192:33: error: macro "guard" passed 2 arguments,=
 but takes just 1
  192 |         guard(mutex, &chip->lock);
      |                                 ^
In file included from drivers/leds/leds-lp5523.c:12:
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp5523.c:192:9: error: 'guard' undeclared (first use in t=
his function)
  192 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp5523.c:192:9: note: each undeclared identifier is repor=
ted only once for each function it appears in
drivers/leds/leds-lp5562.c: In function 'lp5562_led_brightness':
drivers/leds/leds-lp5562.c:175:33: error: macro "guard" passed 2 arguments,=
 but takes just 1
  175 |         guard(mutex, &chip->lock);
      |                                 ^
In file included from drivers/leds/leds-lp5562.c:10:
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp5562.c:175:9: error: 'guard' undeclared (first use in t=
his function)
  175 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp5562.c:175:9: note: each undeclared identifier is repor=
ted only once for each function it appears in
drivers/leds/leds-lp5562.c: In function 'lp5562_store_pattern':
drivers/leds/leds-lp5562.c:272:33: error: macro "guard" passed 2 arguments,=
 but takes just 1
  272 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp5562.c:272:9: error: 'guard' undeclared (first use in t=
his function)
  272 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp5562.c: In function 'lp5562_store_engine_mux':
drivers/leds/leds-lp5562.c:324:33: error: macro "guard" passed 2 arguments,=
 but takes just 1
  324 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp5562.c:324:9: error: 'guard' undeclared (first use in t=
his function)
  324 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_led_brightness':
drivers/leds/leds-lp55xx-common.c:276:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  276 |         guard(mutex, &chip->lock);
      |                                 ^
In file included from drivers/leds/leds-lp55xx-common.c:13:
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:276:9: error: 'guard' undeclared (first u=
se in this function)
  276 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c:276:9: note: each undeclared identifier i=
s reported only once for each function it appears in
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_multicolor_brightnes=
s':
drivers/leds/leds-lp55xx-common.c:291:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  291 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:291:9: error: 'guard' undeclared (first u=
se in this function)
  291 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'led_current_store':
drivers/leds/leds-lp55xx-common.c:409:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  409 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:409:9: error: 'guard' undeclared (first u=
se in this function)
  409 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'run_engine_store':
drivers/leds/leds-lp55xx-common.c:637:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  637 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:637:9: error: 'guard' undeclared (first u=
se in this function)
  637 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_store_engine_mode':
drivers/leds/leds-lp55xx-common.c:676:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  676 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:676:9: error: 'guard' undeclared (first u=
se in this function)
  676 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_store_engine_load':
drivers/leds/leds-lp55xx-common.c:704:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  704 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:704:9: error: 'guard' undeclared (first u=
se in this function)
  704 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_store_engine_leds':
drivers/leds/leds-lp55xx-common.c:803:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  803 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:803:9: error: 'guard' undeclared (first u=
se in this function)
  803 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c:798:17: error: unused variable 'ret' [-We=
rror=3Dunused-variable]
  798 |         ssize_t ret;
      |                 ^~~
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_show_master_fader':
drivers/leds/leds-lp55xx-common.c:827:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  827 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:827:9: error: 'guard' undeclared (first u=
se in this function)
  827 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_store_master_fader':
drivers/leds/leds-lp55xx-common.c:851:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  851 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:851:9: error: 'guard' undeclared (first u=
se in this function)
  851 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_show_master_fader_le=
ds':
drivers/leds/leds-lp55xx-common.c:870:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  870 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:870:9: error: 'guard' undeclared (first u=
se in this function)
  870 |         guard(mutex, &chip->lock);
      |         ^~~~~
drivers/leds/leds-lp55xx-common.c: In function 'lp55xx_store_master_fader_l=
eds':
drivers/leds/leds-lp55xx-common.c:901:33: error: macro "guard" passed 2 arg=
uments, but takes just 1
  901 |         guard(mutex, &chip->lock);
      |                                 ^
include/linux/cleanup.h:166: note: macro "guard" defined here
  166 | #define guard(_name) \
      |=20
drivers/leds/leds-lp55xx-common.c:901:9: error: 'guard' undeclared (first u=
se in this function)
  901 |         guard(mutex, &chip->lock);
      |         ^~~~~
cc1: all warnings being treated as errors

Caused by commit

  efd0d1cbb8c5 ("leds: leds-lp55xx: Convert mutex lock/unlock to guard API")

I have used the led-lj tree from next-20240709 for today.

--=20
Cheers,
Stephen Rothwell

--Sig_/hNw_6dGlq3+C7iW9qNvyHNl
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaOK18ACgkQAVBC80lX
0GxfiQf9GYNBzqxqSZlT5RHhXdBuiHs0YOzgwYieeXZenOQT4p9iG/bkyjkMw0uM
C2lWDCUVnteFx9+rBnKyXPrtMWI9rXE0/LBTbLadjLdu8T9shR5GvyZHWj6sm8V1
ZcBoRX1on6RrQbOZNBEQlYVkT2mAQSOBECsEHSo4AfJFJAYGmMdQRPStmsfTO6yS
fNITcu4cJ5p3V97nMlBve1dvkchfIbUxS6nmHF6AWs8xwIP0udfQLxdeurZ1ByEN
cXGFtLUw4w8YDEJns6hWPufMUGvsqB/hCoTUT/HJnZCgf3VNYEpGFQ/v23jiIwlt
vzKmsfNUK/tNFGbGIesMBhXiFCqXrw==
=FcjJ
-----END PGP SIGNATURE-----

--Sig_/hNw_6dGlq3+C7iW9qNvyHNl--
.

From: Shenghao Ding <shenghao-ding@ti.com>
To: <broonie@kernel.org>
CC: <andriy.shevchenko@linux.intel.com>, <lgirdwood@gmail.com>,
        <perex@perex.cz>, <pierre-louis.bossart@linux.intel.com>,
        <13916275206@139.com>, <zhourui@huaqin.com>,
        <alsa-devel@alsa-project.org>, <i-salazar@ti.com>,
        <linux-kernel@vger.kernel.org>, <j-chadha@ti.com>,
        <liam.r.girdwood@intel.com>, <jaden-yue@ti.com>,
        <yung-chuan.liao@linux.intel.com>, <dipa@ti.com>, <yuhsuan@google.com>,
        <henry.lo@ti.com>, <tiwai@suse.de>, <baojun.xu@ti.com>, <soyer@irl.hu>,
        <Baojun.Xu@fpt.com>, <judyhsiao@google.com>, <navada@ti.com>,
        <cujomalainey@google.com>, <aanya@ti.com>, <nayeem.mahmud@ti.com>,
        <savyasanchi.shukla@netradyne.com>, <flaviopr@microsoft.com>,
        <jesse-ji@ti.com>, <darren.ye@mediatek.com>,
        Shenghao Ding
	<shenghao-ding@ti.com>
Subject: [PATCH v2] ASoc: tas2781: Add new Kontrol to set tas2563 digital Volume
Date: Wed, 10 Jul 2024 14:42:37 +0800
Message-ID: <20240710064238.1480-1-shenghao-ding@ti.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273163
Newsgroups: org.kernel.vger.linux-kernel,org.alsa-project.alsa-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Requriment from customer to add new kcontrol to set tas2563 digital
Volume

Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>

---
v2:
 - Volume controls should end in Volume
 - Write this as a switch statement for extension
 - Correct return value of tas2563_digital_gain_put
 - Submit tas2563 digital Volume as an independant patch
---
 include/sound/tas2781-tlv.h    | 262 ++++++++++++++++++++++++++++++++-
 include/sound/tas2781.h        |   1 +
 sound/soc/codecs/tas2781-i2c.c | 129 ++++++++++++++--
 3 files changed, 382 insertions(+), 10 deletions(-)

diff --git a/include/sound/tas2781-tlv.h b/include/sound/tas2781-tlv.h
index 1dc59005d241..99c41bfc7827 100644
--- a/include/sound/tas2781-tlv.h
+++ b/include/sound/tas2781-tlv.h
@@ -2,7 +2,7 @@
 //
 // ALSA SoC Texas Instruments TAS2781 Audio Smart Amplifier
 //
-// Copyright (C) 2022 - 2023 Texas Instruments Incorporated
+// Copyright (C) 2022 - 2024 Texas Instruments Incorporated
 // https://www.ti.com
 //
 // The TAS2781 driver implements a flexible and configurable
@@ -17,5 +17,265 @@
 
 static const __maybe_unused DECLARE_TLV_DB_SCALE(dvc_tlv, -10000, 100, 0);
 static const DECLARE_TLV_DB_SCALE(amp_vol_tlv, 1100, 50, 0);
+static const DECLARE_TLV_DB_SCALE(tas2563_dvc_tlv, -12150, 50, 1);
 
+/* pow(10, db/20) * pow(2,30) */
+static const unsigned char tas2563_dvc_table[][4] = {
+	{ 0X00, 0X00, 0X00, 0X00 }, /* -121.5db */
+	{ 0X00, 0X00, 0X03, 0XBC }, /* -121.0db */
+	{ 0X00, 0X00, 0X03, 0XF5 }, /* -120.5db */
+	{ 0X00, 0X00, 0X04, 0X31 }, /* -120.0db */
+	{ 0X00, 0X00, 0X04, 0X71 }, /* -119.5db */
+	{ 0X00, 0X00, 0X04, 0XB4 }, /* -119.0db */
+	{ 0X00, 0X00, 0X04, 0XFC }, /* -118.5db */
+	{ 0X00, 0X00, 0X05, 0X47 }, /* -118.0db */
+	{ 0X00, 0X00, 0X05, 0X97 }, /* -117.5db */
+	{ 0X00, 0X00, 0X05, 0XEC }, /* -117.0db */
+	{ 0X00, 0X00, 0X06, 0X46 }, /* -116.5db */
+	{ 0X00, 0X00, 0X06, 0XA5 }, /* -116.0db */
+	{ 0X00, 0X00, 0X07, 0X0A }, /* -115.5db */
+	{ 0X00, 0X00, 0X07, 0X75 }, /* -115.0db */
+	{ 0X00, 0X00, 0X07, 0XE6 }, /* -114.5db */
+	{ 0X00, 0X00, 0X08, 0X5E }, /* -114.0db */
+	{ 0X00, 0X00, 0X08, 0XDD }, /* -113.5db */
+	{ 0X00, 0X00, 0X09, 0X63 }, /* -113.0db */
+	{ 0X00, 0X00, 0X09, 0XF2 }, /* -112.5db */
+	{ 0X00, 0X00, 0X0A, 0X89 }, /* -112.0db */
+	{ 0X00, 0X00, 0X0B, 0X28 }, /* -111.5db */
+	{ 0X00, 0X00, 0X0B, 0XD2 }, /* -111.0db */
+	{ 0X00, 0X00, 0X0C, 0X85 }, /* -110.5db */
+	{ 0X00, 0X00, 0X0D, 0X43 }, /* -110.0db */
+	{ 0X00, 0X00, 0X0E, 0X0C }, /* -109.5db */
+	{ 0X00, 0X00, 0X0E, 0XE1 }, /* -109.0db */
+	{ 0X00, 0X00, 0X0F, 0XC3 }, /* -108.5db */
+	{ 0X00, 0X00, 0X10, 0XB2 }, /* -108.0db */
+	{ 0X00, 0X00, 0X11, 0XAF }, /* -107.5db */
+	{ 0X00, 0X00, 0X12, 0XBC }, /* -107.0db */
+	{ 0X00, 0X00, 0X13, 0XD8 }, /* -106.5db */
+	{ 0X00, 0X00, 0X15, 0X05 }, /* -106.0db */
+	{ 0X00, 0X00, 0X16, 0X44 }, /* -105.5db */
+	{ 0X00, 0X00, 0X17, 0X96 }, /* -105.0db */
+	{ 0X00, 0X00, 0X18, 0XFB }, /* -104.5db */
+	{ 0X00, 0X00, 0X1A, 0X76 }, /* -104.0db */
+	{ 0X00, 0X00, 0X1C, 0X08 }, /* -103.5db */
+	{ 0X00, 0X00, 0X1D, 0XB1 }, /* -103.0db */
+	{ 0X00, 0X00, 0X1F, 0X73 }, /* -102.5db */
+	{ 0X00, 0X00, 0X21, 0X51 }, /* -102.0db */
+	{ 0X00, 0X00, 0X23, 0X4A }, /* -101.5db */
+	{ 0X00, 0X00, 0X25, 0X61 }, /* -101.0db */
+	{ 0X00, 0X00, 0X27, 0X98 }, /* -100.5db */
+	{ 0X00, 0X00, 0X29, 0XF1 }, /* -100.0db */
+	{ 0X00, 0X00, 0X2C, 0X6D }, /* -99.5db */
+	{ 0X00, 0X00, 0X2F, 0X0F }, /* -99.0db */
+	{ 0X00, 0X00, 0X31, 0XD9 }, /* -98.5db */
+	{ 0X00, 0X00, 0X34, 0XCD }, /* -98.0db */
+	{ 0X00, 0X00, 0X37, 0XEE }, /* -97.5db */
+	{ 0X00, 0X00, 0X3B, 0X3F }, /* -97.0db */
+	{ 0X00, 0X00, 0X3E, 0XC1 }, /* -96.5db */
+	{ 0X00, 0X00, 0X42, 0X79 }, /* -96.0db */
+	{ 0X00, 0X00, 0X46, 0X6A }, /* -95.5db */
+	{ 0X00, 0X00, 0X4A, 0X96 }, /* -95.0db */
+	{ 0X00, 0X00, 0X4F, 0X01 }, /* -94.5db */
+	{ 0X00, 0X00, 0X53, 0XAF }, /* -94.0db */
+	{ 0X00, 0X00, 0X58, 0XA5 }, /* -93.5db */
+	{ 0X00, 0X00, 0X5D, 0XE6 }, /* -93.0db */
+	{ 0X00, 0X00, 0X63, 0X76 }, /* -92.5db */
+	{ 0X00, 0X00, 0X69, 0X5B }, /* -92.0db */
+	{ 0X00, 0X00, 0X6F, 0X99 }, /* -91.5db */
+	{ 0X00, 0X00, 0X76, 0X36 }, /* -91.0db */
+	{ 0X00, 0X00, 0X7D, 0X37 }, /* -90.5db */
+	{ 0X00, 0X00, 0X84, 0XA2 }, /* -90.0db */
+	{ 0X00, 0X00, 0X8C, 0X7E }, /* -89.5db */
+	{ 0X00, 0X00, 0X94, 0XD1 }, /* -89.0db */
+	{ 0X00, 0X00, 0X9D, 0XA3 }, /* -88.5db */
+	{ 0X00, 0X00, 0XA6, 0XFA }, /* -88.0db */
+	{ 0X00, 0X00, 0XB0, 0XDF }, /* -87.5db */
+	{ 0X00, 0X00, 0XBB, 0X5A }, /* -87.0db */
+	{ 0X00, 0X00, 0XC6, 0X74 }, /* -86.5db */
+	{ 0X00, 0X00, 0XD2, 0X36 }, /* -86.0db */
+	{ 0X00, 0X00, 0XDE, 0XAB }, /* -85.5db */
+	{ 0X00, 0X00, 0XEB, 0XDC }, /* -85.0db */
+	{ 0X00, 0X00, 0XF9, 0XD6 }, /* -84.5db */
+	{ 0X00, 0X01, 0X08, 0XA4 }, /* -84.0db */
+	{ 0X00, 0X01, 0X18, 0X52 }, /* -83.5db */
+	{ 0X00, 0X01, 0X28, 0XEF }, /* -83.0db */
+	{ 0X00, 0X01, 0X3A, 0X87 }, /* -82.5db */
+	{ 0X00, 0X01, 0X4D, 0X2A }, /* -82.0db */
+	{ 0X00, 0X01, 0X60, 0XE8 }, /* -81.5db */
+	{ 0X00, 0X01, 0X75, 0XD1 }, /* -81.0db */
+	{ 0X00, 0X01, 0X8B, 0XF7 }, /* -80.5db */
+	{ 0X00, 0X01, 0XA3, 0X6E }, /* -80.0db */
+	{ 0X00, 0X01, 0XBC, 0X48 }, /* -79.5db */
+	{ 0X00, 0X01, 0XD6, 0X9B }, /* -79.0db */
+	{ 0X00, 0X01, 0XF2, 0X7E }, /* -78.5db */
+	{ 0X00, 0X02, 0X10, 0X08 }, /* -78.0db */
+	{ 0X00, 0X02, 0X2F, 0X51 }, /* -77.5db */
+	{ 0X00, 0X02, 0X50, 0X76 }, /* -77.0db */
+	{ 0X00, 0X02, 0X73, 0X91 }, /* -76.5db */
+	{ 0X00, 0X02, 0X98, 0XC0 }, /* -76.0db */
+	{ 0X00, 0X02, 0XC0, 0X24 }, /* -75.5db */
+	{ 0X00, 0X02, 0XE9, 0XDD }, /* -75.0db */
+	{ 0X00, 0X03, 0X16, 0X0F }, /* -74.5db */
+	{ 0X00, 0X03, 0X44, 0XDF }, /* -74.0db */
+	{ 0X00, 0X03, 0X76, 0X76 }, /* -73.5db */
+	{ 0X00, 0X03, 0XAA, 0XFC }, /* -73.0db */
+	{ 0X00, 0X03, 0XE2, 0XA0 }, /* -72.5db */
+	{ 0X00, 0X04, 0X1D, 0X8F }, /* -72.0db */
+	{ 0X00, 0X04, 0X5B, 0XFD }, /* -71.5db */
+	{ 0X00, 0X04, 0X9E, 0X1D }, /* -71.0db */
+	{ 0X00, 0X04, 0XE4, 0X29 }, /* -70.5db */
+	{ 0X00, 0X05, 0X2E, 0X5A }, /* -70.0db */
+	{ 0X00, 0X05, 0X7C, 0XF2 }, /* -69.5db */
+	{ 0X00, 0X05, 0XD0, 0X31 }, /* -69.0db */
+	{ 0X00, 0X06, 0X28, 0X60 }, /* -68.5db */
+	{ 0X00, 0X06, 0X85, 0XC8 }, /* -68.0db */
+	{ 0X00, 0X06, 0XE8, 0XB9 }, /* -67.5db */
+	{ 0X00, 0X07, 0X51, 0X86 }, /* -67.0db */
+	{ 0X00, 0X07, 0XC0, 0X8A }, /* -66.5db */
+	{ 0X00, 0X08, 0X36, 0X21 }, /* -66.0db */
+	{ 0X00, 0X08, 0XB2, 0XB0 }, /* -65.5db */
+	{ 0X00, 0X09, 0X36, 0XA1 }, /* -65.0db */
+	{ 0X00, 0X09, 0XC2, 0X63 }, /* -64.5db */
+	{ 0X00, 0X0A, 0X56, 0X6D }, /* -64.0db */
+	{ 0X00, 0X0A, 0XF3, 0X3C }, /* -63.5db */
+	{ 0X00, 0X0B, 0X99, 0X56 }, /* -63.0db */
+	{ 0X00, 0X0C, 0X49, 0X48 }, /* -62.5db */
+	{ 0X00, 0X0D, 0X03, 0XA7 }, /* -62.0db */
+	{ 0X00, 0X0D, 0XC9, 0X11 }, /* -61.5db */
+	{ 0X00, 0X0E, 0X9A, 0X2D }, /* -61.0db */
+	{ 0X00, 0X0F, 0X77, 0XAD }, /* -60.5db */
+	{ 0X00, 0X10, 0X62, 0X4D }, /* -60.0db */
+	{ 0X00, 0X11, 0X5A, 0XD5 }, /* -59.5db */
+	{ 0X00, 0X12, 0X62, 0X16 }, /* -59.0db */
+	{ 0X00, 0X13, 0X78, 0XF0 }, /* -58.5db */
+	{ 0X00, 0X14, 0XA0, 0X50 }, /* -58.0db */
+	{ 0X00, 0X15, 0XD9, 0X31 }, /* -57.5db */
+	{ 0X00, 0X17, 0X24, 0X9C }, /* -57.0db */
+	{ 0X00, 0X18, 0X83, 0XAA }, /* -56.5db */
+	{ 0X00, 0X19, 0XF7, 0X86 }, /* -56.0db */
+	{ 0X00, 0X1B, 0X81, 0X6A }, /* -55.5db */
+	{ 0X00, 0X1D, 0X22, 0XA4 }, /* -55.0db */
+	{ 0X00, 0X1E, 0XDC, 0X98 }, /* -54.5db */
+	{ 0X00, 0X20, 0XB0, 0XBC }, /* -54.0db */
+	{ 0X00, 0X22, 0XA0, 0X9D }, /* -53.5db */
+	{ 0X00, 0X24, 0XAD, 0XE0 }, /* -53.0db */
+	{ 0X00, 0X26, 0XDA, 0X43 }, /* -52.5db */
+	{ 0X00, 0X29, 0X27, 0X9D }, /* -52.0db */
+	{ 0X00, 0X2B, 0X97, 0XE3 }, /* -51.5db */
+	{ 0X00, 0X2E, 0X2D, 0X27 }, /* -51.0db */
+	{ 0X00, 0X30, 0XE9, 0X9A }, /* -50.5db */
+	{ 0X00, 0X33, 0XCF, 0X8D }, /* -50.0db */
+	{ 0X00, 0X36, 0XE1, 0X78 }, /* -49.5db */
+	{ 0X00, 0X3A, 0X21, 0XF3 }, /* -49.0db */
+	{ 0X00, 0X3D, 0X93, 0XC3 }, /* -48.5db */
+	{ 0X00, 0X41, 0X39, 0XD3 }, /* -48.0db */
+	{ 0X00, 0X45, 0X17, 0X3B }, /* -47.5db */
+	{ 0X00, 0X49, 0X2F, 0X44 }, /* -47.0db */
+	{ 0X00, 0X4D, 0X85, 0X66 }, /* -46.5db */
+	{ 0X00, 0X52, 0X1D, 0X50 }, /* -46.0db */
+	{ 0X00, 0X56, 0XFA, 0XE8 }, /* -45.5db */
+	{ 0X00, 0X5C, 0X22, 0X4E }, /* -45.0db */
+	{ 0X00, 0X61, 0X97, 0XE1 }, /* -44.5db */
+	{ 0X00, 0X67, 0X60, 0X44 }, /* -44.0db */
+	{ 0X00, 0X6D, 0X80, 0X60 }, /* -43.5db */
+	{ 0X00, 0X73, 0XFD, 0X65 }, /* -43.0db */
+	{ 0X00, 0X7A, 0XDC, 0XD7 }, /* -42.5db */
+	{ 0X00, 0X82, 0X24, 0X8A }, /* -42.0db */
+	{ 0X00, 0X89, 0XDA, 0XAB }, /* -41.5db */
+	{ 0X00, 0X92, 0X05, 0XC6 }, /* -41.0db */
+	{ 0X00, 0X9A, 0XAC, 0XC8 }, /* -40.5db */
+	{ 0X00, 0XA3, 0XD7, 0X0A }, /* -40.0db */
+	{ 0X00, 0XAD, 0X8C, 0X52 }, /* -39.5db */
+	{ 0X00, 0XB7, 0XD4, 0XDD }, /* -39.0db */
+	{ 0X00, 0XC2, 0XB9, 0X65 }, /* -38.5db */
+	{ 0X00, 0XCE, 0X43, 0X28 }, /* -38.0db */
+	{ 0X00, 0XDA, 0X7B, 0XF1 }, /* -37.5db */
+	{ 0X00, 0XE7, 0X6E, 0X1E }, /* -37.0db */
+	{ 0X00, 0XF5, 0X24, 0XAC }, /* -36.5db */
+	{ 0X01, 0X03, 0XAB, 0X3D }, /* -36.0db */
+	{ 0X01, 0X13, 0X0E, 0X24 }, /* -35.5db */
+	{ 0X01, 0X23, 0X5A, 0X71 }, /* -35.0db */
+	{ 0X01, 0X34, 0X9D, 0XF8 }, /* -34.5db */
+	{ 0X01, 0X46, 0XE7, 0X5D }, /* -34.0db */
+	{ 0X01, 0X5A, 0X46, 0X27 }, /* -33.5db */
+	{ 0X01, 0X6E, 0XCA, 0XC5 }, /* -33.0db */
+	{ 0X01, 0X84, 0X86, 0X9F }, /* -32.5db */
+	{ 0X01, 0X9B, 0X8C, 0X27 }, /* -32.0db */
+	{ 0X01, 0XB3, 0XEE, 0XE5 }, /* -31.5db */
+	{ 0X01, 0XCD, 0XC3, 0X8C }, /* -31.0db */
+	{ 0X01, 0XE9, 0X20, 0X05 }, /* -30.5db */
+	{ 0X02, 0X06, 0X1B, 0X89 }, /* -30.0db */
+	{ 0X02, 0X24, 0XCE, 0XB0 }, /* -29.5db */
+	{ 0X02, 0X45, 0X53, 0X85 }, /* -29.0db */
+	{ 0X02, 0X67, 0XC5, 0XA2 }, /* -28.5db */
+	{ 0X02, 0X8C, 0X42, 0X3F }, /* -28.0db */
+	{ 0X02, 0XB2, 0XE8, 0X55 }, /* -27.5db */
+	{ 0X02, 0XDB, 0XD8, 0XAD }, /* -27.0db */
+	{ 0X03, 0X07, 0X36, 0X05 }, /* -26.5db */
+	{ 0X03, 0X35, 0X25, 0X29 }, /* -26.0db */
+	{ 0X03, 0X65, 0XCD, 0X13 }, /* -25.5db */
+	{ 0X03, 0X99, 0X57, 0X0C }, /* -25.0db */
+	{ 0X03, 0XCF, 0XEE, 0XCF }, /* -24.5db */
+	{ 0X04, 0X09, 0XC2, 0XB0 }, /* -24.0db */
+	{ 0X04, 0X47, 0X03, 0XC1 }, /* -23.5db */
+	{ 0X04, 0X87, 0XE5, 0XFB }, /* -23.0db */
+	{ 0X04, 0XCC, 0XA0, 0X6D }, /* -22.5db */
+	{ 0X05, 0X15, 0X6D, 0X68 }, /* -22.0db */
+	{ 0X05, 0X62, 0X8A, 0XB3 }, /* -21.5db */
+	{ 0X05, 0XB4, 0X39, 0XBC }, /* -21.0db */
+	{ 0X06, 0X0A, 0XBF, 0XD4 }, /* -20.5db */
+	{ 0X06, 0X66, 0X66, 0X66 }, /* -20.0db */
+	{ 0X06, 0XC7, 0X7B, 0X36 }, /* -19.5db */
+	{ 0X07, 0X2E, 0X50, 0XA6 }, /* -19.0db */
+	{ 0X07, 0X9B, 0X3D, 0XF6 }, /* -18.5db */
+	{ 0X08, 0X0E, 0X9F, 0X96 }, /* -18.0db */
+	{ 0X08, 0X88, 0XD7, 0X6D }, /* -17.5db */
+	{ 0X09, 0X0A, 0X4D, 0X2F }, /* -17.0db */
+	{ 0X09, 0X93, 0X6E, 0XB8 }, /* -16.5db */
+	{ 0X0A, 0X24, 0XB0, 0X62 }, /* -16.0db */
+	{ 0X0A, 0XBE, 0X8D, 0X70 }, /* -15.5db */
+	{ 0X0B, 0X61, 0X88, 0X71 }, /* -15.0db */
+	{ 0X0C, 0X0E, 0X2B, 0XB0 }, /* -14.5db */
+	{ 0X0C, 0XC5, 0X09, 0XAB }, /* -14.0db */
+	{ 0X0D, 0X86, 0XBD, 0X8D }, /* -13.5db */
+	{ 0X0E, 0X53, 0XEB, 0XB3 }, /* -13.0db */
+	{ 0X0F, 0X2D, 0X42, 0X38 }, /* -12.5db */
+	{ 0X10, 0X13, 0X79, 0X87 }, /* -12.0db */
+	{ 0X11, 0X07, 0X54, 0XF9 }, /* -11.5db */
+	{ 0X12, 0X09, 0XA3, 0X7A }, /* -11.0db */
+	{ 0X13, 0X1B, 0X40, 0X39 }, /* -10.5db */
+	{ 0X14, 0X3D, 0X13, 0X62 }, /* -10.0db */
+	{ 0X15, 0X70, 0X12, 0XE1 }, /* -9.5db */
+	{ 0X16, 0XB5, 0X43, 0X37 }, /* -9.0db */
+	{ 0X18, 0X0D, 0XB8, 0X54 }, /* -8.5db */
+	{ 0X19, 0X7A, 0X96, 0X7F }, /* -8.0db */
+	{ 0X1A, 0XFD, 0X13, 0X54 }, /* -7.5db */
+	{ 0X1C, 0X96, 0X76, 0XC6 }, /* -7.0db */
+	{ 0X1E, 0X48, 0X1C, 0X37 }, /* -6.5db */
+	{ 0X20, 0X13, 0X73, 0X9E }, /* -6.0db */
+	{ 0X21, 0XFA, 0X02, 0XBF }, /* -5.5db */
+	{ 0X23, 0XFD, 0X66, 0X78 }, /* -5.0db */
+	{ 0X26, 0X1F, 0X54, 0X1C }, /* -4.5db */
+	{ 0X28, 0X61, 0X9A, 0XE9 }, /* -4.0db */
+	{ 0X2A, 0XC6, 0X25, 0X91 }, /* -3.5db */
+	{ 0X2D, 0X4E, 0XFB, 0XD5 }, /* -3.0db */
+	{ 0X2F, 0XFE, 0X44, 0X48 }, /* -2.5db */
+	{ 0X32, 0XD6, 0X46, 0X17 }, /* -2.0db */
+	{ 0X35, 0XD9, 0X6B, 0X02 }, /* -1.5db */
+	{ 0X39, 0X0A, 0X41, 0X5F }, /* -1.0db */
+	{ 0X3C, 0X6B, 0X7E, 0X4F }, /* -0.5db */
+	{ 0X40, 0X00, 0X00, 0X00 }, /* 0.0db */
+	{ 0X43, 0XCA, 0XD0, 0X22 }, /* 0.5db */
+	{ 0X47, 0XCF, 0X26, 0X7D }, /* 1.0db */
+	{ 0X4C, 0X10, 0X6B, 0XA5 }, /* 1.5db */
+	{ 0X50, 0X92, 0X3B, 0XE3 }, /* 2.0db */
+	{ 0X55, 0X58, 0X6A, 0X46 }, /* 2.5db */
+	{ 0X5A, 0X67, 0X03, 0XDF }, /* 3.0db */
+	{ 0X5F, 0XC2, 0X53, 0X32 }, /* 3.5db */
+	{ 0X65, 0X6E, 0XE3, 0XDB }, /* 4.0db */
+	{ 0X6B, 0X71, 0X86, 0X68 }, /* 4.5db */
+	{ 0X71, 0XCF, 0X54, 0X71 }, /* 5.0db */
+	{ 0X78, 0X8D, 0XB4, 0XE9 }, /* 5.5db */
+	{ 0XFF, 0XFF, 0XFF, 0XFF }, /* 6.0db */
+};
 #endif
diff --git a/include/sound/tas2781.h b/include/sound/tas2781.h
index a43ad6dcb7c7..18161d02a96f 100644
--- a/include/sound/tas2781.h
+++ b/include/sound/tas2781.h
@@ -50,6 +50,7 @@
 #define TASDEVICE_I2CChecksum		TASDEVICE_REG(0x0, 0x0, 0x7E)
 
 /* Volume control */
+#define TAS2563_DVC_LVL			TASDEVICE_REG(0x00, 0x02, 0x0C)
 #define TAS2781_DVC_LVL			TASDEVICE_REG(0x0, 0x0, 0x1A)
 #define TAS2781_AMP_LEVEL		TASDEVICE_REG(0x0, 0x0, 0x03)
 #define TAS2781_AMP_LEVEL_MASK		GENMASK(5, 1)
diff --git a/sound/soc/codecs/tas2781-i2c.c b/sound/soc/codecs/tas2781-i2c.c
index d5d95ae57c73..e79d613745b4 100644
--- a/sound/soc/codecs/tas2781-i2c.c
+++ b/sound/soc/codecs/tas2781-i2c.c
@@ -31,6 +31,7 @@
 #include <sound/tas2781.h>
 #include <sound/tlv.h>
 #include <sound/tas2781-tlv.h>
+#include <asm/unaligned.h>
 
 static const struct i2c_device_id tasdevice_id[] = {
 	{ "tas2563", TAS2563 },
@@ -140,6 +141,101 @@ static int tasdev_force_fwload_put(struct snd_kcontrol *kcontrol,
 	return change;
 }
 
+static int tas2563_digital_gain_get(
+	struct snd_kcontrol *kcontrol,
+	struct snd_ctl_elem_value *ucontrol)
+{
+	struct soc_mixer_control *mc =
+		(struct soc_mixer_control *)kcontrol->private_value;
+	struct snd_soc_component *codec = snd_soc_kcontrol_component(kcontrol);
+	struct tasdevice_priv *tas_dev = snd_soc_component_get_drvdata(codec);
+	unsigned int l = 0, r = mc->max;
+	unsigned int target, ar_mid, mid, ar_l, ar_r;
+	unsigned int reg = mc->reg;
+	unsigned char data[4];
+	int ret;
+
+	mutex_lock(&tas_dev->codec_lock);
+	/* Read the primary device */
+	ret =  tasdevice_dev_bulk_read(tas_dev, 0, reg, data, 4);
+	if (ret) {
+		dev_err(tas_dev->dev, "%s, get AMP vol error\n", __func__);
+		goto out;
+	}
+
+	target = get_unaligned_be32(&data[0]);
+
+	while (r > 1 + l) {
+		mid = (l + r) / 2;
+		ar_mid = get_unaligned_be32(tas2563_dvc_table[mid]);
+		if (target < ar_mid)
+			r = mid;
+		else
+			l = mid;
+	}
+
+	ar_l = get_unaligned_be32(tas2563_dvc_table[l]);
+	ar_r = get_unaligned_be32(tas2563_dvc_table[r]);
+
+	/* find out the member same as or closer to the current volume */
+	ucontrol->value.integer.value[0] =
+		abs(target - ar_l) <= abs(target - ar_r) ? l : r;
+out:
+	mutex_unlock(&tas_dev->codec_lock);
+	return 0;
+}
+
+static int tas2563_digital_gain_put(
+	struct snd_kcontrol *kcontrol,
+	struct snd_ctl_elem_value *ucontrol)
+{
+	struct soc_mixer_control *mc =
+		(struct soc_mixer_control *)kcontrol->private_value;
+	struct snd_soc_component *codec = snd_soc_kcontrol_component(kcontrol);
+	struct tasdevice_priv *tas_dev = snd_soc_component_get_drvdata(codec);
+	int vol = ucontrol->value.integer.value[0];
+	int status = 0, max = mc->max, rc = 1;
+	int i, ret;
+	unsigned int reg = mc->reg;
+	unsigned int volrd, volwr;
+	unsigned char data[4];
+
+	vol = clamp(vol, 0, max);
+	mutex_lock(&tas_dev->codec_lock);
+	/* Read the primary device */
+	ret =  tasdevice_dev_bulk_read(tas_dev, 0, reg, data, 4);
+	if (ret) {
+		dev_err(tas_dev->dev, "%s, get AMP vol error\n", __func__);
+		rc = -1;
+		goto out;
+	}
+
+	volrd = get_unaligned_be32(&data[0]);
+	volwr = get_unaligned_be32(tas2563_dvc_table[vol]);
+
+	if (volrd == volwr) {
+		rc = 0;
+		goto out;
+	}
+
+	for (i = 0; i < tas_dev->ndev; i++) {
+		ret = tasdevice_dev_bulk_write(tas_dev, i, reg,
+			(unsigned char *)tas2563_dvc_table[vol], 4);
+		if (ret) {
+			dev_err(tas_dev->dev,
+				"%s, set digital vol error in dev %d\n",
+				__func__, i);
+			status |= BIT(i);
+		}
+	}
+
+	if (status)
+		rc = -1;
+out:
+	mutex_unlock(&tas_dev->codec_lock);
+	return rc;
+}
+
 static const struct snd_kcontrol_new tasdevice_snd_controls[] = {
 	SOC_SINGLE_BOOL_EXT("Speaker Force Firmware Load", 0,
 		tasdev_force_fwload_get, tasdev_force_fwload_put),
@@ -154,6 +250,13 @@ static const struct snd_kcontrol_new tas2781_snd_controls[] = {
 		tas2781_digital_putvol, dvc_tlv),
 };
 
+static const struct snd_kcontrol_new tas2563_snd_controls[] = {
+	SOC_SINGLE_RANGE_EXT_TLV("Speaker Digital Volume", TAS2563_DVC_LVL, 0,
+		0, ARRAY_SIZE(tas2563_dvc_table) - 1, 0,
+		tas2563_digital_gain_get, tas2563_digital_gain_put,
+		tas2563_dvc_tlv),
+};
+
 static int tasdevice_set_profile_id(struct snd_kcontrol *kcontrol,
 		struct snd_ctl_elem_value *ucontrol)
 {
@@ -593,17 +696,25 @@ static struct snd_soc_dai_driver tasdevice_dai_driver[] = {
 static int tasdevice_codec_probe(struct snd_soc_component *codec)
 {
 	struct tasdevice_priv *tas_priv = snd_soc_component_get_drvdata(codec);
+	struct snd_kcontrol_new *p;
+	unsigned int size;
 	int rc;
 
-	if (tas_priv->chip_id == TAS2781) {
-		rc = snd_soc_add_component_controls(codec,
-			tas2781_snd_controls,
-			ARRAY_SIZE(tas2781_snd_controls));
-		if (rc < 0) {
-			dev_err(tas_priv->dev, "%s: Add control err rc = %d",
-				__func__, rc);
-			return rc;
-		}
+	switch (tas_priv->chip_id) {
+	case TAS2781:
+		p = (struct snd_kcontrol_new *)tas2781_snd_controls;
+		size = ARRAY_SIZE(tas2781_snd_controls);
+		break;
+	default:
+		p = (struct snd_kcontrol_new *)tas2563_snd_controls;
+		size = ARRAY_SIZE(tas2563_snd_controls);
+	}
+
+	rc = snd_soc_add_component_controls(codec, p, size);
+	if (rc < 0) {
+		dev_err(tas_priv->dev, "%s: Add control err rc = %d",
+			__func__, rc);
+		return rc;
 	}
 
 	tas_priv->name_prefix = codec->name_prefix;
-- 
2.34.1

.

From: =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Date: Wed, 10 Jul 2024 07:45:07 +0100
Subject: [PATCH] phy: exynos5-usbdrd: convert some FIELD_PREP_CONST() to
 FIELD_PREP()
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Message-Id: <20240710-phy-field-prep-v1-1-2fa3f7dc4fc7@linaro.org>
To: Vinod Koul <vkoul@kernel.org>, 
 Kishon Vijay Abraham I <kishon@kernel.org>, 
 Krzysztof Kozlowski <krzk@kernel.org>, 
 Alim Akhtar <alim.akhtar@samsung.com>
Cc: Peter Griffin <peter.griffin@linaro.org>, 
 Tudor Ambarus <tudor.ambarus@linaro.org>, 
 Will McVicker <willmcvicker@google.com>, kernel-team@android.com, 
 linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, 
 linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, 
 =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273164
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-samsung-soc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use of FIELD_PREP_CONST() was a thinko - it's meant to be used for
(constant) initialisers, not constant values.

Use FIELD_PREP() where possible. It has better error checking and is
therefore the preferred macro to use in those cases.

Signed-off-by: AndrÃ© Draszik <andre.draszik@linaro.org>
---
 drivers/phy/samsung/phy-exynos5-usbdrd.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/phy/samsung/phy-exynos5-usbdrd.c b/drivers/phy/samsung/phy-exynos5-usbdrd.c
index df52b78a120b..0cc5c4249447 100644
--- a/drivers/phy/samsung/phy-exynos5-usbdrd.c
+++ b/drivers/phy/samsung/phy-exynos5-usbdrd.c
@@ -607,7 +607,7 @@ exynos5_usbdrd_usbdp_g2_v4_ctrl_pma_ready(struct exynos5_usbdrd_phy *phy_drd)
 
 	reg = readl(regs_base + EXYNOS850_DRD_SECPMACTL);
 	reg &= ~SECPMACTL_PMA_REF_FREQ_SEL;
-	reg |= FIELD_PREP_CONST(SECPMACTL_PMA_REF_FREQ_SEL, 1);
+	reg |= FIELD_PREP(SECPMACTL_PMA_REF_FREQ_SEL, 1);
 	/* SFR reset */
 	reg |= (SECPMACTL_PMA_LOW_PWR | SECPMACTL_PMA_APB_SW_RST);
 	reg &= ~(SECPMACTL_PMA_ROPLL_REF_CLK_SEL |
@@ -1123,19 +1123,19 @@ static void exynos850_usbdrd_utmi_init(struct exynos5_usbdrd_phy *phy_drd)
 	reg &= ~SSPPLLCTL_FSEL;
 	switch (phy_drd->extrefclk) {
 	case EXYNOS5_FSEL_50MHZ:
-		reg |= FIELD_PREP_CONST(SSPPLLCTL_FSEL, 7);
+		reg |= FIELD_PREP(SSPPLLCTL_FSEL, 7);
 		break;
 	case EXYNOS5_FSEL_26MHZ:
-		reg |= FIELD_PREP_CONST(SSPPLLCTL_FSEL, 6);
+		reg |= FIELD_PREP(SSPPLLCTL_FSEL, 6);
 		break;
 	case EXYNOS5_FSEL_24MHZ:
-		reg |= FIELD_PREP_CONST(SSPPLLCTL_FSEL, 2);
+		reg |= FIELD_PREP(SSPPLLCTL_FSEL, 2);
 		break;
 	case EXYNOS5_FSEL_20MHZ:
-		reg |= FIELD_PREP_CONST(SSPPLLCTL_FSEL, 1);
+		reg |= FIELD_PREP(SSPPLLCTL_FSEL, 1);
 		break;
 	case EXYNOS5_FSEL_19MHZ2:
-		reg |= FIELD_PREP_CONST(SSPPLLCTL_FSEL, 0);
+		reg |= FIELD_PREP(SSPPLLCTL_FSEL, 0);
 		break;
 	default:
 		dev_warn(phy_drd->dev, "unsupported ref clk: %#.2x\n",

---
base-commit: 82d01fe6ee52086035b201cfa1410a3b04384257
change-id: 20240710-phy-field-prep-be6982d38215

Best regards,
-- 
AndrÃ© Draszik <andre.draszik@linaro.org>

.

From: Ole Schuerks <ole0811sch@gmail.com>
To: linux-kbuild@vger.kernel.org
Cc: ole0811sch@gmail.com,
	jude.gyimah@rub.de,
	thorsten.berger@rub.de,
	deltaone@debian.org,
	jan.sollmann@rub.de,
	mcgrof@kernel.org,
	masahiroy@kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v4 00/12] kconfig: Add support for conflict resolution
Date: Wed, 10 Jul 2024 08:52:43 +0200
Message-Id: <20240710065255.10338-1-ole0811sch@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273169
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-kbuild
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,

Configuring a kernel requires a forward enabling approach where one
enables each option one needs at a time. If one enables an option
that selects other options, these options are no longer de-selectable
by design. Likewise, if one has enabled an option which creates a
conflict with a secondary option one wishes to enable, one cannot
easily enable that secondary option, unless one is willing to spend
time analyzing the dependencies that led to this conflict. Sometimes,
these conflicts are not easy to understand [0,1].

This patch series (for linux-next) provides support to enable users to
express their desired target configuration and display possible
resolutions to their conflicts. This support is provided within xconfig.

Conflict resolution is provided by translating kconfig's configuration
option tree to a propositional formula, and then allowing our resolution
algorithm, which uses a SAT solver (picosat, implemented in C) calculate
the possible fixes for an expressed target kernel configuration.

New UI extensions are made to xconfig with panes and buttons to allow
users to express new desired target options, calculate fixes, and apply
any of found solutions.

We created a separate test infrastructure that we used to validate the
correctness of the suggestions made. It shows that our resolution
algorithm resolves around 95% of the conflicts. We plan to incorporate
this with a later patch series.

We envision that our translation of the kconfig option tree into a 
propositional formula could potentially also later be repurposed to 
address other problems. An example is checking the consistency between the
use of ifdefs and logic expressed in kconfig files. We suspect that this 
could, for example, help avoid invalid kconfig configurations and help 
with ifdef maintenance.

You can see a YouTube video demonstrating this work [2]. This effort is 
part of the kernelnewbies Kconfig-SAT project [3], the 
approach and effort is also explained in detail in our paper [4]. The 
results from the evaluation have significantly improved since then: Around
80 % of the conflicts could be resolved, and 99.9 % of the generated 
fixes resolved the conflict. It is also our attempt at contributing back 
to the kernel community, whose configurator researchers studied a lot.

Patches applicable to next-20240703.

[0] https://gsd.uwaterloo.ca/sites/default/files/vamos12-survey.pdf
[1] https://www.linux-magazine.com/Issues/2021/244/Kconfig-Deep-Dive
[2] https://www.youtube.com/watch?v=vn2JgK_PTbc
[3] https://kernelnewbies.org/KernelProjects/kconfig-sat
[4] http://www.cse.chalmers.se/~bergert/paper/2021-icseseip-configfix.pdf

Thanks from the team! (and thanks to Luis Chamberlain for guiding us here)

Co-developed-by: Patrick Franz <deltaone@debian.org>
Signed-off-by: Patrick Franz <deltaone@debian.org>
Co-developed-by: Ibrahim Fayaz <phayax@gmail.com>
Signed-off-by: Ibrahim Fayaz <phayax@gmail.com>
Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
Tested-by: Evgeny Groshev <eugene.groshev@gmail.com>
Suggested-by: Sarah Nadi <nadi@ualberta.ca>
Suggested-by: Thorsten Berger <thorsten.berger@rub.de>
Signed-off-by: Thorsten Berger <thorsten.berger@rub.de>
Signed-off-by: Ole Schuerks <ole0811sch@gmail.com>

Ole Schuerks (12):
  kconfig: Add picosat.h
  kconfig: Add picosat.c (1/3)
  kconfig: Add picosat.c (2/3)
  kconfig: Add picosat.c (3/3)
  kconfig: Add definitions
  kconfig: Add files for building constraints
  kconfig: Add files for handling expressions
  kconfig: Add files for RangeFix
  kconfig: Add files with utility functions
  kconfig: Add tools
  kconfig: Add xconfig-modifications
  kconfig: Add loader.gif

 scripts/kconfig/.gitignore       |    1 +
 scripts/kconfig/Makefile         |   13 +-
 scripts/kconfig/cf_constraints.c | 1720 ++++++
 scripts/kconfig/cf_constraints.h |   26 +
 scripts/kconfig/cf_defs.h        |  287 +
 scripts/kconfig/cf_expr.c        | 2594 +++++++++
 scripts/kconfig/cf_expr.h        |  296 ++
 scripts/kconfig/cf_rangefix.c    | 1066 ++++
 scripts/kconfig/cf_rangefix.h    |   21 +
 scripts/kconfig/cf_utils.c       | 1031 ++++
 scripts/kconfig/cf_utils.h       |  115 +
 scripts/kconfig/cfoutconfig.c    |  142 +
 scripts/kconfig/configfix.c      |  337 ++
 scripts/kconfig/configfix.h      |   40 +
 scripts/kconfig/expr.h           |   17 +
 scripts/kconfig/loader.gif       |  Bin 0 -> 4177 bytes
 scripts/kconfig/picosat.c        | 8502 ++++++++++++++++++++++++++++++
 scripts/kconfig/picosat.h        |  658 +++
 scripts/kconfig/qconf.cc         |  515 +-
 scripts/kconfig/qconf.h          |  103 +
 20 files changed, 17480 insertions(+), 4 deletions(-)
 create mode 100644 scripts/kconfig/cf_constraints.c
 create mode 100644 scripts/kconfig/cf_constraints.h
 create mode 100644 scripts/kconfig/cf_defs.h
 create mode 100644 scripts/kconfig/cf_expr.c
 create mode 100644 scripts/kconfig/cf_expr.h
 create mode 100644 scripts/kconfig/cf_rangefix.c
 create mode 100644 scripts/kconfig/cf_rangefix.h
 create mode 100644 scripts/kconfig/cf_utils.c
 create mode 100644 scripts/kconfig/cf_utils.h
 create mode 100644 scripts/kconfig/cfoutconfig.c
 create mode 100644 scripts/kconfig/configfix.c
 create mode 100644 scripts/kconfig/configfix.h
 create mode 100644 scripts/kconfig/loader.gif
 create mode 100644 scripts/kconfig/picosat.c
 create mode 100644 scripts/kconfig/picosat.h

-- 
2.39.2

.

From: Wolfram Sang <wsa+renesas@sang-engineering.com>
To: linux-renesas-soc@vger.kernel.org
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>,
	linux-i2c@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] i2c: testunit: correct Kconfig description
Date: Wed, 10 Jul 2024 08:55:11 +0200
Message-ID: <20240710065511.10330-2-wsa+renesas@sang-engineering.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273182
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c,org.kernel.vger.linux-renesas-soc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The testunit has nothing to do with 'eeprom', remove that term. It was a
copy&paste leftover.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
 drivers/i2c/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index 9388823bb0bb..44710267d669 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -135,7 +135,7 @@ config I2C_SLAVE_EEPROM
 	  Documentation/i2c/slave-eeprom-backend.rst for further details.
 
 config I2C_SLAVE_TESTUNIT
-	tristate "I2C eeprom testunit driver"
+	tristate "I2C testunit driver"
 	help
 	  This backend can be used to trigger test cases for I2C bus masters
 	  which require a remote device with certain capabilities, e.g.
-- 
2.43.0

.

Return-Path: <linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org>
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>,
	linux-kernel@vger.kernel.org,
	linux-mm@kvack.org,
	x86@kernel.org,
	linux-riscv@lists.infradead.org,
	Oscar Salvador <osalvador@suse.de>,
	Peter Xu <peterx@redhat.com>
Subject: [PATCH v2 1/3] arch/x86: Drop own definition of pgd,p4d_leaf
Date: Wed, 10 Jul 2024 09:51:20 +0200
Message-ID: <bcd6ab8246348f18fdc77694e321ee6458f05781.1720597744.git.christophe.leroy@csgroup.eu>
MIME-Version: 1.0
X-BeenThere: linux-riscv@lists.infradead.org
X-Mailman-Version: 2.1.34
List-Id: <linux-riscv.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
List-Post: <mailto:linux-riscv@lists.infradead.org>
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79559 org.kernel.vger.linux-kernel:1273184 org.kvack.linux-mm:203229
Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Oscar Salvador <osalvador@suse.de>

We provide generic definitions of pXd_leaf in pgtable.h when the arch
do not define their own, where the generic pXd_leaf always return false.

Although x86 defines {pgd,p4d}_leaf, they end up being a no-op, so drop them
and make them fallback to the generic one.

Signed-off-by: Oscar Salvador <osalvador@suse.de>
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
---
 arch/x86/include/asm/pgtable.h | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 65b8e5bb902c..772f778bac06 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -252,13 +252,6 @@ static inline unsigned long pgd_pfn(pgd_t pgd)
 	return (pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT;
 }
 
-#define p4d_leaf p4d_leaf
-static inline bool p4d_leaf(p4d_t p4d)
-{
-	/* No 512 GiB pages yet */
-	return 0;
-}
-
 #define pte_page(pte)	pfn_to_page(pte_pfn(pte))
 
 #define pmd_leaf pmd_leaf
@@ -1396,9 +1389,6 @@ static inline bool pgdp_maps_userspace(void *__ptr)
 	return (((ptr & ~PAGE_MASK) / sizeof(pgd_t)) < PGD_KERNEL_START);
 }
 
-#define pgd_leaf	pgd_leaf
-static inline bool pgd_leaf(pgd_t pgd) { return false; }
-
 #ifdef CONFIG_MITIGATION_PAGE_TABLE_ISOLATION
 /*
  * All top-level MITIGATION_PAGE_TABLE_ISOLATION page tables are order-1 pages
-- 
2.44.0


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
.

X-Mailing-List: linux-block@vger.kernel.org
List-Id: <linux-block.vger.kernel.org>
List-Subscribe: <mailto:linux-block+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-block+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: Naresh Kamboju <naresh.kamboju@linaro.org>
Date: Wed, 10 Jul 2024 12:36:42 +0530
Message-ID: <CA+G9fYuSAE=WjPBDQ=rTLdVit2A6aay_cQHKreJ02FFGFU+vSQ@mail.gmail.com>
Subject: next-20240709: kernel BUG at drivers/scsi/scsi_lib.c:1160! - WARNING:
 block/blk-merge.c:607 __blk_rq_map_sg
To: linux-block <linux-block@vger.kernel.org>, linux-scsi@vger.kernel.org, 
	open list <linux-kernel@vger.kernel.org>, lkft-triage@lists.linaro.org
Cc: Jens Axboe <axboe@kernel.dk>, Christoph Hellwig <hch@lst.de>, 
	"James E.J. Bottomley" <James.Bottomley@hansenpartnership.com>, 
	Chaitanya Kulkarni <chaitanyak@nvidia.com>, "Martin K. Petersen" <martin.petersen@oracle.com>, 
	Anders Roxell <anders.roxell@linaro.org>, Dan Carpenter <dan.carpenter@linaro.org>, 
	Arnd Bergmann <arnd@arndb.de>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-block:93997 org.kernel.vger.linux-kernel:1273187
Newsgroups: org.kernel.vger.linux-block,org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The arm64 Juno-r2 boot failed due to boot BUG and Warnings [1] while booting
Linux next-20240709 tag kernel.

The arm64 juno-r2 device is configured to boot via NFS and also has an attached
SATA drive for running mount tests.

Always reproducible: Yes.

Following are the list of kernel warnings and BUG,
  WARNING: CPU: 2 PID: 236 at block/blk-merge.c:607 __blk_rq_map_sg
(block/blk-merge.c:607 (discriminator 1))
  kernel BUG at drivers/scsi/scsi_lib.c:1160!
  WARNING: CPU: 0 PID: 236 at kernel/exit.c:829 do_exit
(kernel/exit.c:829 (discriminator 1))
  WARNING: CPU: 2 PID: 0 at kernel/context_tracking.c:128
ct_kernel_exit.constprop.0 (kernel/context_tracking.c:128
(discriminator 1))

This is started from Linux next-20240709.
  GOOD: next-20240703
  BAD: next-20240709

Build details,
-------
kernel: 6.10.0-rc7
git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
git_ref: master
git_sha: 82d01fe6ee52086035b201cfa1410a3b04384257
git_describe: next-20240709
Test details: https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20240709

Regressions (compared to build next-20240703)
------------------------------------------------------------------------

juno-r2:
  boot:
    * gcc-13-lkftconfig
    * gcc-13-lkftconfig-debug
    * gcc-13-lkftconfig-rcutorture
    * gcc-13-lkftconfig-debug-kmemleak
    * clang-nightly-lkftconfig
    * clang-18-lkftconfig

Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>

Crash log [1]:
------
[   34.473953] sky2 0000:08:00.0 enp8s0: renamed from eth0
[   34.748839] ------------[ cut here ]------------
[   34.748856] usbcore: registered new device driver onboard-usb-dev
[   34.753472] WARNING: CPU: 2 PID: 236 at block/blk-merge.c:607
__blk_rq_map_sg (block/blk-merge.c:607 (discriminator 1))
[   34.753497] Modules linked in: onboard_usb_dev(+) hdlcd cec
crct10dif_ce gpu_sched drm_dma_helper drm_kms_helper fuse drm
backlight dm_mod ip_tables x_tables
[   34.753528] CPU: 2 UID: 0 PID: 236 Comm: (udev-worker) Not tainted
6.10.0-rc7-next-20240709 #1
[   34.753537] Hardware name: ARM Juno development board (r2) (DT)
[   34.753540] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   34.753548] pc : __blk_rq_map_sg (block/blk-merge.c:607 (discriminator 1))
[   34.753557] lr : __blk_rq_map_sg (block/blk-merge.c:482
block/blk-merge.c:509 block/blk-merge.c:573 block/blk-merge.c:598)
[   34.753565] sp : ffff8000846c3420
[   34.753568] x29: ffff8000846c3490 x28: 0000000000000000 x27: ffff8000846c3500
[   34.753578] x26: 0000000000000000 x25: ffff0008225495a0 x24: 0000000000000000
[   34.753587] x23: ffff000822549540 x22: ffff000800c9b000 x21: 0000000000000008
[   34.753595] x20: ffff000822549380 x19: 0000000000002000 x18: 0000000000000000
[   34.753604] x17: 000000000000ffff x16: 0000000000002000 x15: ffff00082180d000
[   34.753612] x14: ffff80008224c118 x13: 0000000000000000 x12: 0000000000000004
[   34.753620] x11: ffff00082204da80 x10: 0000000000000000 x9 : ffff800080b912c8
[   34.753629] x8 : 0000000000014000 x7 : 0000000000000000 x6 : 0000000000000000
[   34.753637] x5 : 0000000000000001 x4 : 0000000000014000 x3 : ffff8000846c3500
[   34.753645] x2 : 0000000000000000 x1 : 000000000000000a x0 : 0000000000000008
[   34.753653] Call trace:
[   34.753655] __blk_rq_map_sg (block/blk-merge.c:607 (discriminator 1))
[   34.753665] scsi_alloc_sgtables (drivers/scsi/scsi_lib.c:1140)
[   34.753674] sd_init_command (drivers/scsi/sd.c:1337 drivers/scsi/sd.c:1458)
[   34.753681] scsi_queue_rq (drivers/scsi/scsi_lib.c:1832)
[   34.753688] blk_mq_dispatch_rq_list (block/blk-mq.c:2032)
[   34.753695] __blk_mq_sched_dispatch_requests
(block/blk-mq-sched.c:170 block/blk-mq-sched.c:184
block/blk-mq-sched.c:309)
[   34.753703] blk_mq_sched_dispatch_requests
(block/blk-mq-sched.c:331 (discriminator 1))
[   34.753711] blk_mq_run_hw_queue (include/linux/rcupdate.h:871
block/blk-mq.c:2245)
[   34.753717] blk_mq_flush_plug_list.part.0 (block/blk-mq.c:2750
block/blk-mq.c:2794)
[   34.753723] blk_mq_flush_plug_list (block/blk-mq.c:2796)
[   34.753730] __blk_flush_plug (block/blk-core.c:1202 (discriminator 1))
[   34.753736] blk_finish_plug (block/blk-core.c:1223 (discriminator
1) block/blk-core.c:1219 (discriminator 1))
[   34.753743] read_pages (mm/readahead.c:188 (discriminator 2))
[   34.753751] page_cache_ra_unbounded (mm/readahead.c:258)
[   34.753759] force_page_cache_ra (mm/readahead.c:327)
[   34.753767] page_cache_sync_ra (mm/readahead.c:577)
[   34.753775] filemap_get_pages (mm/filemap.c:2531)
[   34.753784] filemap_read (mm/filemap.c:2625)
[   34.753793] blkdev_read_iter (block/fops.c:764)
[   34.753801] vfs_read (fs/read_write.c:395 fs/read_write.c:476)
[   34.753808] ksys_read (fs/read_write.c:619)
[   34.753814] __arm64_sys_read (fs/read_write.c:627)
[   34.753821] invoke_syscall (arch/arm64/include/asm/current.h:19
arch/arm64/kernel/syscall.c:54)
[   34.753831] el0_svc_common.constprop.0 (arch/arm64/kernel/syscall.c:139)
[   34.753840] do_el0_svc (arch/arm64/kernel/syscall.c:152)
[   34.753848] el0_svc (arch/arm64/include/asm/irqflags.h:82
(discriminator 1) arch/arm64/include/asm/irqflags.h:123 (discriminator
1) arch/arm64/include/asm/irqflags.h:136 (discriminator 1)
arch/arm64/kernel/entry-common.c:165 (discriminator 1)
arch/arm64/kernel/entry-common.c:178 (discriminator 1)
arch/arm64/kernel/entry-common.c:713 (discriminator 1))
[   34.753857] el0t_64_sync_handler (arch/arm64/kernel/entry-common.c:731)
[   34.753864] el0t_64_sync (arch/arm64/kernel/entry.S:598)
[   34.753870] ---[ end trace 0000000000000000 ]---
[   34.767944] ------------[ cut here ]------------
[   35.011822] kernel BUG at drivers/scsi/scsi_lib.c:1160!
[   35.017056] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
[   35.017063] Modules linked in: drm_shmem_helper onboard_usb_dev
hdlcd cec crct10dif_ce gpu_sched drm_dma_helper drm_kms_helper fuse
drm backlight dm_mod ip_tables x_tables
[   35.017097] CPU: 2 UID: 0 PID: 236 Comm: (udev-worker) Tainted: G
     W          6.10.0-rc7-next-20240709 #1
[   35.017107] Tainted: [W]=WARN
[   35.017109] Hardware name: ARM Juno development board (r2) (DT)
[   35.017113] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   35.017120] pc : scsi_alloc_sgtables (drivers/scsi/scsi_lib.c:1160
(discriminator 1))
[   35.017132] lr : scsi_alloc_sgtables (drivers/scsi/scsi_lib.c:1140)
[   35.017139] sp : ffff8000846c34f0
[   35.017141] x29: ffff8000846c3510 x28: 0000000000000003 x27: 00000000000000d0
[   35.017151] x26: ffff000800c9b000 x25: 0000000000000000 x24: 0000000000000000
[   35.017159] x23: ffff000822549540 x22: ffff000800c9b000 x21: 000000000000000a
[   35.017167] x20: ffff000822549380 x19: ffff000822549478 x18: 0000000000000000
[   35.017175] x17: 000000000000ffff x16: 0000000000002000 x15: ffff00082180d000
[   35.017184] x14: ffff80008224c118 x13: 0000000000000000 x12: 0000000000000004
[   35.017192] x11: ffff00082204da80 x10: 0000000000000000 x9 : ffff800080b912c8
[   35.017200] x8 : 0000000000014000 x7 : 0000000000000000 x6 : 0000000000000000
[   35.017208] x5 : 0000000000000001 x4 : 0000000000014000 x3 : ffff8000846c3500
[   35.017216] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000008
[   35.017225] Call trace:
[   35.017227] scsi_alloc_sgtables (drivers/scsi/scsi_lib.c:1160
(discriminator 1))
[   35.017234] sd_init_command (drivers/scsi/sd.c:1337 drivers/scsi/sd.c:1458)
[   35.017242] scsi_queue_rq (drivers/scsi/scsi_lib.c:1832)
[   35.017248] blk_mq_dispatch_rq_list (block/blk-mq.c:2032)
[   35.017257] __blk_mq_sched_dispatch_requests
(block/blk-mq-sched.c:170 block/blk-mq-sched.c:184
block/blk-mq-sched.c:309)
[   35.017265] blk_mq_sched_dispatch_requests
(block/blk-mq-sched.c:331 (discriminator 1))
[   35.017273] blk_mq_run_hw_queue (include/linux/rcupdate.h:871
block/blk-mq.c:2245)
[   35.017279] blk_mq_flush_plug_list.part.0 (block/blk-mq.c:2750
block/blk-mq.c:2794)
[   35.017285] blk_mq_flush_plug_list (block/blk-mq.c:2796)
[   35.017292] __blk_flush_plug (block/blk-core.c:1202 (discriminator 1))
[   35.017299] blk_finish_plug (block/blk-core.c:1223 (discriminator
1) block/blk-core.c:1219 (discriminator 1))
[   35.017306] read_pages (mm/readahead.c:188 (discriminator 2))
[   35.017315] page_cache_ra_unbounded (mm/readahead.c:258)
[   35.017323] force_page_cache_ra (mm/readahead.c:327)
[   35.017330] page_cache_sync_ra (mm/readahead.c:577)
[   35.017338] filemap_get_pages (mm/filemap.c:2531)
[   35.017347] filemap_read (mm/filemap.c:2625)
[   35.017355] blkdev_read_iter (block/fops.c:764)
[   35.017364] vfs_read (fs/read_write.c:395 fs/read_write.c:476)
[   35.017371] ksys_read (fs/read_write.c:619)
[   35.017377] __arm64_sys_read (fs/read_write.c:627)
[   35.017384] invoke_syscall (arch/arm64/include/asm/current.h:19
arch/arm64/kernel/syscall.c:54)
[   35.017395] el0_svc_common.constprop.0 (arch/arm64/kernel/syscall.c:139)
[   35.017404] do_el0_svc (arch/arm64/kernel/syscall.c:152)
[   35.017412] el0_svc (arch/arm64/include/asm/irqflags.h:82
(discriminator 1) arch/arm64/include/asm/irqflags.h:123 (discriminator
1) arch/arm64/include/asm/irqflags.h:136 (discriminator 1)
arch/arm64/kernel/entry-common.c:165 (discriminator 1)
arch/arm64/kernel/entry-common.c:178 (discriminator 1)
arch/arm64/kernel/entry-common.c:713 (discriminator 1))
[   35.017420] el0t_64_sync_handler (arch/arm64/kernel/entry-common.c:731)
[   35.017428] el0t_64_sync (arch/arm64/kernel/entry.S:598)
[ 35.017437] Code: 52800155 17ffff7a 52800135 17ffff78 (d4210000)
All code
========
   0: 52800155 mov w21, #0xa                    // #10
   4: 17ffff7a b 0xfffffffffffffdec
   8: 52800135 mov w21, #0x9                    // #9
   c: 17ffff78 b 0xfffffffffffffdec
  10:* d4210000 brk #0x800 <-- trapping instruction

Code starting with the faulting instruction
===========================================
   0: d4210000 brk #0x800
[   35.017441] ---[ end trace 0000000000000000 ]---
[   35.272094] note: (udev-worker)[236] exited with irqs disabled
[   35.272149] note: (udev-worker)[236] exited with preempt_count 1
[[0;32m  OK  [0m] Finished [0;[   35.285437] ------------[ cut here
]------------
[   35.286047] ------------[ cut here ]------------
1;39msystemd-tmpfiles-setup.se35.291955] WARNING: CPU: 0 PID: 236 at
kernel/exit.c:829 do_exit (kernel/exit.c:829 (discriminator 1))
0mate Volatile Files and Dire[   35.291982] Modules linked in:
panfrost tda998x(+) drm_shmem_helper onboard_usb_dev hdlcd cec
crct10dif_ce gpu_sched drm_dma_helper drm_kms_helper fuse drm
backlight dm_mod ip_tables x_tables
ctories.
[   35.292046] CPU: 0 UID: 0 PID: 236 Comm: (udev-worker) Tainted: G
   D W          6.10.0-rc7-next-20240709 #1
[   35.292061] Tainted: [D]=DIE, [W]=WARN
[   35.292065] Hardware name: ARM Juno development board (r2) (DT)
[   35.292071] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   35.292081] pc : do_exit (kernel/exit.c:829 (discriminator 1))
[   35.292094] lr : do_exit (kernel/exit.c:829 (discriminator 1))
[   35.292105] sp : ffff8000846c3150
[   35.292109] x29: ffff8000846c3180 x28: ffff000821fab900 x27: 00000000000000d0
[   35.292125] x26: ffff800081fe0f38 x25: 00000000000003c0 x24: 0000000000000000
[   35.292139] x23: ffff800081fe0fa0 x22: 000000000000000b x21: ffff000800f7e300
[   35.292154] x20: ffff000800f66300 x19: ffff000821fab900 x18: 0000000000000042
[   35.292168] x17: 0000000000000000 x16: 0030342e36312e36 x15: 362e30310b000000
[   35.292183] x14: 0000000020000000 x13: 70c83fcb00000000 x12: 0000000000000001
[   35.292197] x11: 0000000000000040 x10: 0000000000000c70 x9 : ffff80008154fdd0
[   35.292211] x8 : ffff8000846c3048 x7 : 0000000000000000 x6 : 0000000000000001
[   35.292225] x5 : ffff8000831af000 x4 : ffff8000831af5a8 x3 : 0000000000000000
[   35.292239] x2 : ffff000821fab900 x1 : ffff8000800b4f38 x0 : ffff8000846c3908
[   35.292254] Call trace:
[   35.292258] do_exit (kernel/exit.c:829 (discriminator 1))
[   35.292271] make_task_dead
(arch/arm64/include/asm/atomic_ll_sc.h:95 (discriminator 2)
arch/arm64/include/asm/atomic.h:52 (discriminator 2)
include/linux/atomic/atomic-arch-fallback.h:564 (discriminator 2)
include/linux/atomic/atomic-arch-fallback.h:1020 (discriminator 2)
include/linux/atomic/atomic-instrumented.h:454 (discriminator 2)
kernel/exit.c:978 (discriminator 2))
[   35.292283] die (arch/arm64/kernel/traps.c:239)
[   35.292293] bug_handler (arch/arm64/kernel/traps.c:992)
[   35.292303] call_break_hook (arch/arm64/kernel/debug-monitors.c:320)
[   35.292314] brk_handler (arch/arm64/kernel/debug-monitors.c:326
(discriminator 1))
[   35.292324] do_debug_exception (arch/arm64/mm/fault.c:909 (discriminator 1))
[   35.292339] el1_dbg (arch/arm64/kernel/entry-common.c:473)
[   35.292352] el1h_64_sync_handler (arch/arm64/kernel/entry-common.c:520)
[   35.292365] el1h_64_sync (arch/arm64/kernel/entry.S:593)
[   35.292374] scsi_alloc_sgtables (drivers/scsi/scsi_lib.c:1160
(discriminator 1))
[   35.292387] sd_init_command (drivers/scsi/sd.c:1337 drivers/scsi/sd.c:1458)
[   35.292399] scsi_queue_rq (drivers/scsi/scsi_lib.c:1832)
[   35.292410] blk_mq_dispatch_rq_list (block/blk-mq.c:2032)
[   35.292423] __blk_mq_sched_dispatch_requests
(block/blk-mq-sched.c:170 block/blk-mq-sched.c:184
block/blk-mq-sched.c:309)
[   35.292437] blk_mq_sched_dispatch_requests
(block/blk-mq-sched.c:331 (discriminator 1))
[   35.292450] blk_mq_run_hw_queue (include/linux/rcupdate.h:871
block/blk-mq.c:2245)
[   35.292461] blk_mq_flush_plug_list.part.0 (block/blk-mq.c:2750
block/blk-mq.c:2794)
[   35.292473] blk_mq_flush_plug_list (block/blk-mq.c:2796)
[   35.292484] __blk_flush_plug (block/blk-core.c:1202 (discriminator 1))
[   35.292496] blk_finish_plug (block/blk-core.c:1223 (discriminator
1) block/blk-core.c:1219 (discriminator 1))
[   35.292507] read_pages (mm/readahead.c:188 (discriminator 2))
[   35.292521] page_cache_ra_unbounded (mm/readahead.c:258)
[   35.292534] force_page_cache_ra (mm/readahead.c:327)
[   35.292547] page_cache_sync_ra (mm/readahead.c:577)
[   35.292560] filemap_get_pages (mm/filemap.c:2531)
[   35.292575] filemap_read (mm/filemap.c:2625)
[   35.292588] blkdev_read_iter (block/fops.c:764)
[   35.292602] vfs_read (fs/read_write.c:395 fs/read_write.c:476)
[   35.292614] ksys_read (fs/read_write.c:619)
[   35.292624] __arm64_sys_read (fs/read_write.c:627)
[   35.292635] invoke_syscall (arch/arm64/include/asm/current.h:19
arch/arm64/kernel/syscall.c:54)
[   35.292650] el0_svc_common.constprop.0 (arch/arm64/kernel/syscall.c:139)
[   35.292665] do_el0_svc (arch/arm64/kernel/syscall.c:152)
[   35.292679] el0_svc (arch/arm64/include/asm/irqflags.h:82
(discriminator 1) arch/arm64/include/asm/irqflags.h:123 (discriminator
1) arch/arm64/include/asm/irqflags.h:136 (discriminator 1)
arch/arm64/kernel/entry-common.c:165 (discriminator 1)
arch/arm64/kernel/entry-common.c:178 (discriminator 1)
arch/arm64/kernel/entry-common.c:713 (discriminator 1))
[   35.292691] el0t_64_sync_handler (arch/arm64/kernel/entry-common.c:731)
[   35.292703] el0t_64_sync (arch/arm64/kernel/entry.S:598)
[   35.292713] ---[ end trace 0000000000000000 ]---
[   35.296623] ------------[ cut here ]------------
[   35.306500] WARNING: CPU: 2 PID: 0 at kernel/context_tracking.c:128
ct_kernel_exit.constprop.0 (kernel/context_tracking.c:128
(discriminator 1))
[   35.306521] Modules linked in: panfrost tda998x(+) drm_shmem_helper
onboard_usb_dev hdlcd cec crct10dif_ce gpu_sched drm_dma_helper
drm_kms_helper fuse drm backlight dm_mod ip_tables x_tables
[   35.306559] CPU: 2 UID: 0 PID: 0 Comm: swapper/2 Tainted: G      D
W          6.10.0-rc7-next-20240709 #1
[   35.306569] Tainted: [D]=DIE, [W]=WARN
[   35.306571] Hardware name: ARM Juno development board (r2) (DT)
[   35.306575] pstate: 200000c5 (nzCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   35.306581] pc : ct_kernel_exit.constprop.0
(kernel/context_tracking.c:128 (discriminator 1))
[   35.306590] lr : ct_idle_enter (kernel/context_tracking.c:321)
[   35.306598] sp : ffff800083acbd60
[   35.306601] x29: ffff800083acbd60 x28: 0000000000000000 x27: 0000000000000000
[   35.306610] x26: 0000000000000000 x25: 0000000000000000 x24: 00000008373621a0
[   35.306618] x23: ffff000822011080 x22: ffff000822011080 x21: ffff00097ec61d38
[   35.306627] x20: ffff000822011098 x19: ffff00097ec5f038 x18: ffff80008470bc28
[   35.306635] x17: 0000000000000000 x16: ffff800081bb82f8 x15: 0000ffffaa241000
[   35.306643] x14: 0000000000000001 x13: ffff0008226d6708 x12: 0000000000000001
[   35.306651] x11: 071c71c71c71c71c x10: ffff00097ec620a4 x9 : ffff8000815409f8
[   35.306660] x8 : ffff800083acbc98 x7 : 0000000000000001 x6 : ffff8000831af000
[   35.306668] x5 : 4000000000000002 x4 : ffff8008fc677000 x3 : ffff800083acbd60
[   35.306676] x2 : ffff8000825e8038 x1 : ffff8000825e8038 x0 : 4000000000000000
[   35.306684] Call trace:
[   35.306687] ct_kernel_exit.constprop.0
(kernel/context_tracking.c:128 (discriminator 1))
[   35.306696] ct_idle_enter (kernel/context_tracking.c:321)
[   35.306704] cpuidle_enter_state (include/linux/cpuidle.h:136
drivers/cpuidle/cpuidle.c:250)
[   35.306712] cpuidle_enter (drivers/cpuidle/cpuidle.c:390 (discriminator 2))
[   35.306718] do_idle (kernel/sched/idle.c:155
kernel/sched/idle.c:230 kernel/sched/idle.c:326)
[   35.306728] cpu_startup_entry (kernel/sched/idle.c:423)
[   35.306736] secondary_start_kernel
(arch/arm64/include/asm/atomic_ll_sc.h:95 (discriminator 2)
arch/arm64/include/asm/atomic.h:28 (discriminator 2)
include/linux/atomic/atomic-arch-fallback.h:546 (discriminator 2)
include/linux/atomic/atomic-arch-fallback.h:994 (discriminator 2)
include/linux/atomic/atomic-instrumented.h:436 (discriminator 2)
include/linux/sched/mm.h:37 (discriminator 2)
arch/arm64/kernel/smp.c:212 (discriminator 2))
[   35.306745] __secondary_switched (arch/arm64/kernel/head.S:418)
[   35.306754] ---[ end trace 0000000000000000 ]---
[   35.429740] tda998x 0-0070: found TDA19988
[   35.435881] Voluntary context switch within RCU read-side critical section!
[   35.435910] WARNING: CPU: 5 PID: 236 at
kernel/rcu/tree_plugin.h:330 rcu_note_context_switch
(kernel/rcu/tree_plugin.h:330 (discriminator 1))
[   35.435941] Modules linked in: panfrost tda998x(+) drm_shmem_helper
onboard_usb_dev hdlcd cec crct10dif_ce gpu_sched drm_dma_helper
drm_kms_helper fuse drm backlight dm_mod ip_tables x_tables
[   35.436009] CPU: 5 UID: 0 PID: 236 Comm: (udev-worker) Tainted: G
   D W          6.10.0-rc7-next-20240709 #1
[   35.436025] Tainted: [D]=DIE, [W]=WARN
[   35.436029] Hardware name: ARM Juno development board (r2) (DT)
[   35.436034] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   35.436045] pc : rcu_note_context_switch
(kernel/rcu/tree_plugin.h:330 (discriminator 1))
[   35.436058] lr : rcu_note_context_switch
(kernel/rcu/tree_plugin.h:330 (discriminator 1))
[   35.436070] sp : ffff8000846c2bb0
[   35.436074] x29: ffff8000846c2bb0 x28: 0000000000000000 x27: ffff8000846c2d08
[   35.436089] x26: 0000000000000000 x25: ffff000821fab900 x24: ffff800081547ae8
[   35.436104] x23: 0000000000000000 x22: ffff000821fab900 x21: ffff800083808220
[   35.436118] x20: 0000000000000000 x19: ffff00097ecca8c0 x18: 0000000000000006
[   35.436133] x17: 3039336336343830 x16: 3030386666666620 x15: 3a20307820383366
[   35.436147] x14: 3462303038303030 x13: 216e6f6974636573 x12: 206c616369746972
[   35.436162] x11: 6320656469732d64 x10: 6165722055435220 x9 : ffff800080142ae8
[   35.436176] x8 : 6863746977732074 x7 : 7865746e6f632079 x6 : 7261746e756c6f56
[   35.436190] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000027
[   35.436204] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff000821fab900
[   35.436219] Call trace:
[   35.436222] rcu_note_context_switch (kernel/rcu/tree_plugin.h:330
(discriminator 1))
[   35.436236] __schedule (kernel/sched/core.c:566
kernel/sched/sched.h:1476 kernel/sched/sched.h:1775
kernel/sched/core.c:6510)
[   35.436247] schedule (kernel/sched/core.c:6681 kernel/sched/core.c:6695)
[   35.436257] io_schedule (arch/arm64/include/asm/current.h:19
kernel/sched/core.c:7455 kernel/sched/core.c:7481)
[   35.436267] folio_wait_bit_common (mm/filemap.c:1299 (discriminator 1))
[   35.436282] __folio_lock (mm/filemap.c:1647)
[   35.436295] truncate_inode_pages_range
(include/linux/pagemap.h:1050 mm/truncate.c:413)
[   35.436311] truncate_inode_pages (mm/truncate.c:441)
[   35.436326] blkdev_flush_mapping (block/bdev.c:48 block/bdev.c:65
block/bdev.c:665)
[   35.436339] blkdev_put_whole (block/bdev.c:671)
[   35.436350] bdev_release (block/bdev.c:1097)
[   35.436362] blkdev_release (block/fops.c:640)
[   35.436373] __fput (fs/file_table.c:423 (discriminator 1))
[   35.436387] ____fput (fs/file_table.c:451)
[   35.436398] task_work_run (kernel/task_work.c:207 (discriminator 1))
[   35.436409] do_exit (kernel/exit.c:891)
[   35.436422] make_task_dead
(arch/arm64/include/asm/atomic_ll_sc.h:95 (discriminator 2)
arch/arm64/include/asm/atomic.h:52 (discriminator 2)
include/linux/atomic/atomic-arch-fallback.h:564 (discriminator 2)
include/linux/atomic/atomic-arch-fallback.h:1020 (discriminator 2)
include/linux/atomic/atomic-instrumented.h:454 (discriminator 2)
kernel/exit.c:978 (discriminator 2))
[   35.436435] die (arch/arm64/kernel/traps.c:239)
[   35.436445] bug_handler (arch/arm64/kernel/traps.c:992)
[   35.436455] call_break_hook (arch/arm64/kernel/debug-monitors.c:320)
[   35.436466] brk_handler (arch/arm64/kernel/debug-monitors.c:326
(discriminator 1))
[   35.436475] do_debug_exception (arch/arm64/mm/fault.c:909 (discriminator 1))
[   35.436490] el1_dbg (arch/arm64/kernel/entry-common.c:473)
[   35.436503] el1h_64_sync_handler (arch/arm64/kernel/entry-common.c:520)
[   35.436516] el1h_64_sync (arch/arm64/kernel/entry.S:593)
[   35.436525] scsi_alloc_sgtables (drivers/scsi/scsi_lib.c:1160
(discriminator 1))
[   35.436538] sd_init_command (drivers/scsi/sd.c:1337 drivers/scsi/sd.c:1458)
[   35.436550] scsi_queue_rq (drivers/scsi/scsi_lib.c:1832)
[   35.436561] blk_mq_dispatch_rq_list (block/blk-mq.c:2032)
[   35.436573] __blk_mq_sched_dispatch_requests
(block/blk-mq-sched.c:170 block/blk-mq-sched.c:184
block/blk-mq-sched.c:309)
[   35.436588] blk_mq_sched_dispatch_requests
(block/blk-mq-sched.c:331 (discriminator 1))
[   35.436601] blk_mq_run_hw_queue (include/linux/rcupdate.h:871
block/blk-mq.c:2245)
[   35.436612] blk_mq_flush_plug_list.part.0 (block/blk-mq.c:2750
block/blk-mq.c:2794)
[   35.436624] blk_mq_flush_plug_list (block/blk-mq.c:2796)
[   35.436635] __blk_flush_plug (block/blk-core.c:1202 (discriminator 1))
[   35.436647] blk_finish_plug (block/blk-core.c:1223 (discriminator
1) block/blk-core.c:1219 (discriminator 1))
[   35.436659] read_pages (mm/readahead.c:188 (discriminator 2))
[   35.436672] page_cache_ra_unbounded (mm/readahead.c:258)
[   35.436686] force_page_cache_ra (mm/readahead.c:327)
[   35.436699] page_cache_sync_ra (mm/readahead.c:577)
[   35.436712] filemap_get_pages (mm/filemap.c:2531)
[   35.436726] filemap_read (mm/filemap.c:2625)
[   35.436739] blkdev_read_iter (block/fops.c:764)
[   35.436751] vfs_read (fs/read_write.c:395 fs/read_write.c:476)
[   35.436763] ksys_read (fs/read_write.c:619)
[   35.436774] __arm64_sys_read (fs/read_write.c:627)
[   35.436785] invoke_syscall (arch/arm64/include/asm/current.h:19
arch/arm64/kernel/syscall.c:54)
[   35.436801] el0_svc_common.constprop.0 (arch/arm64/kernel/syscall.c:139)
[   35.436815] do_el0_svc (arch/arm64/kernel/syscall.c:152)
[   35.436829] el0_svc (arch/arm64/include/asm/irqflags.h:82
(discriminator 1) arch/arm64/include/asm/irqflags.h:123 (discriminator
1) arch/arm64/include/asm/irqflags.h:136 (discriminator 1)
arch/arm64/kernel/entry-common.c:165 (discriminator 1)
arch/arm64/kernel/entry-common.c:178 (discriminator 1)
arch/arm64/kernel/entry-common.c:713 (discriminator 1))
[   35.436841] el0t_64_sync_handler (arch/arm64/kernel/entry-common.c:731)
[   35.436854] el0t_64_sync (arch/arm64/kernel/entry.S:598)
[   35.436863] ---[ end trace 0000000000000000 ]---

Build link [2] and config [3] provided.
Please let me know if you need more information.

Links:
----
[1] https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20240709/testrun/24547087/suite/boot/test/gcc-13-lkftconfig/log
[2] https://storage.tuxsuite.com/public/linaro/lkft/builds/2j0OwvzyH9AnnxOg1WtJSM69SIV/
[3] https://storage.tuxsuite.com/public/linaro/lkft/builds/2j0OwvzyH9AnnxOg1WtJSM69SIV/config

--
Linaro LKFT
https://lkft.linaro.org
.

From: Ma Ke <make24@iscas.ac.cn>
To: adrian.hunter@intel.com,
	ulf.hansson@linaro.org
Cc: linux-mmc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Ma Ke <make24@iscas.ac.cn>
Subject: [PATCH] mmc: sdhci-pxav3: Fix potential NULL dereference in sdhci_pxav3_probe
Date: Wed, 10 Jul 2024 15:00:39 +0800
Message-Id: <20240710070039.318658-1-make24@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273192
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-mmc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In sdhci_pxav3_probe(), mv_mbus_dram_info() returns NULL if
CONFIG_PLAT_ORION macro is not defined. Fix this bug by adding NULL check.

Fixes: aa8165f91442 ("mmc: sdhci-pxav3: do the mbus window configuration after enabling clocks")
Signed-off-by: Ma Ke <make24@iscas.ac.cn>
---
 drivers/mmc/host/sdhci-pxav3.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-pxav3.c b/drivers/mmc/host/sdhci-pxav3.c
index 3af43ac05825..ac89cb2eb9f6 100644
--- a/drivers/mmc/host/sdhci-pxav3.c
+++ b/drivers/mmc/host/sdhci-pxav3.c
@@ -375,6 +375,7 @@ static int sdhci_pxav3_probe(struct platform_device *pdev)
 	struct sdhci_host *host = NULL;
 	struct sdhci_pxa *pxa = NULL;
 	const struct of_device_id *match;
+	const struct mbus_dram_target_info *dram;
 	int ret;
 
 	host = sdhci_pltfm_init(pdev, &sdhci_pxav3_pdata, sizeof(*pxa));
@@ -406,7 +407,12 @@ static int sdhci_pxav3_probe(struct platform_device *pdev)
 		ret = armada_38x_quirks(pdev, host);
 		if (ret < 0)
 			goto err_mbus_win;
-		ret = mv_conf_mbus_windows(pdev, mv_mbus_dram_info());
+		dram = mv_mbus_dram_info();
+		if (!dram) {
+			ret = 0;
+			goto err_mbus_win;
+		}
+		ret = mv_conf_mbus_windows(pdev, dram);
 		if (ret < 0)
 			goto err_mbus_win;
 	}
-- 
2.25.1

.

From: zhangchun <zhang.chuna@h3c.com>
To: <akpm@linux-foundation.org>
CC: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>, <jiaoxupo@h3c.com>,
        <zhang.zhengming@h3c.com>, <zhang.zhansheng@h3c.com>,
        <shaohaojize@126.com>, zhangchun <zhang.chuna@h3c.com>
Subject: [PATCH v2] =?UTF-8?q?mm:=20Give=20kmap=5Flock=20before=20call=20flus?= =?UTF-8?q?h=5Ftlb=5Fkernel=5Frang=EF=BC=8Cavoid=20kmap=5Fhigh=20deadlock.?=
Date: Wed, 10 Jul 2024 15:20:13 +0800
Message-ID: <1720596013-56862-1-git-send-email-zhang.chuna@h3c.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-DNSRBL: 
X-SPAM-SOURCE-CHECK: pass
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273210 org.kvack.linux-mm:203233
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use kmap_high and kmap_XXX or kumap_xxx among differt cores at the same
time may cause deadlock. The issue is like thisï¼š

 CPU 0:                                                 CPU 1:
 kmap_high(){                                           kmap_xxx() {
               ...                                        irq_disable();
        spin_lock(&kmap_lock)
               ...
        map_new_virtual                                     ...
           flush_all_zero_pkmaps
              flush_tlb_kernel_range         /* CPU0 holds the kmap_lock */
                      smp_call_function_many         spin_lock(&kmap_lock)
                      ...                                   ....
        spin_unlock(&kmap_lock)
               ...

CPU 0 holds the kmap_lock, waiting for CPU 1 respond to IPI. But CPU 1
has disabled irqs, waiting for kmap_lock, cannot answer the IPI. Fix
this by releasing  kmap_lock before call flush_tlb_kernel_range,
avoid kmap_lock deadlock.

Fixes: 3297e760776a ("highmem: atomic highmem kmap page pinning")
Signed-off-by: zhangchun <zhang.chuna@h3c.com>
Co-developed-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Suggested-by: Matthew Wilcox <willy@infradead.org>
Signed-off-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Reviewed-by: zhangzhengming <zhang.zhengming@h3c.com>
---
 mm/highmem.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mm/highmem.c b/mm/highmem.c
index bd48ba4..841b370 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void)
 		set_page_address(page, NULL);
 		need_flush = 1;
 	}
-	if (need_flush)
+	if (need_flush) {
+		unlock_kmap();
 		flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
+		lock_kmap();
+	}
 }
 
 void __kmap_flush_unused(void)
-- 
1.8.3.1

.

From: Animesh Agarwal <animeshagarwal28@gmail.com>
To: 
Cc: Animesh Agarwal <animeshagarwal28@gmail.com>,
	Daniel Baluta <daniel.baluta@nxp.com>,
	David Rhodes <david.rhodes@cirrus.com>,
	Richard Fitzgerald <rf@opensource.cirrus.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	patches@opensource.cirrus.com,
	alsa-devel@alsa-project.org,
	linux-sound@vger.kernel.org,
	devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] ASoC: dt-bindings: cirrus,cs42xx8: Convert to dtschema
Date: Wed, 10 Jul 2024 12:57:52 +0530
Message-ID: <20240710072756.99765-1-animeshagarwal28@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273213
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Convert the Cirrus Logic CS42448/CS42888 audio CODEC bindings to DT
schema format. Set power supply properties to required only for CS42888.

Cc: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Animesh Agarwal <animeshagarwal28@gmail.com>
---
 .../bindings/sound/cirrus,cs42xx8.yaml        | 81 +++++++++++++++++++
 .../devicetree/bindings/sound/cs42xx8.txt     | 34 --------
 2 files changed, 81 insertions(+), 34 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/cirrus,cs42xx8.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/cs42xx8.txt

diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs42xx8.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs42xx8.yaml
new file mode 100644
index 000000000000..725b47e82062
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/cirrus,cs42xx8.yaml
@@ -0,0 +1,81 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/cirrus,cs42xx8.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cirrus Logic CS42448/CS42888 audio CODEC
+
+maintainers:
+  - patches@opensource.cirrus.com
+
+properties:
+  compatible:
+    enum:
+      - cirrus,cs42448
+      - cirrus,cs42888
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    const: mclk
+
+  VA-supply:
+    description: Analog power supply.
+
+  VD-supply:
+    description: Digital power supply.
+
+  VLC-supply:
+    description: Control port power supply
+
+  VLS-supply:
+    description: Serial port interface power supply.
+
+  reset-gpios:
+    description: This pin is connected to the chip's RESET pin.
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+
+if:
+  properties:
+    compatible:
+      contains:
+        const: cirrus,cs42888
+then:
+  required:
+    - VA-supply
+    - VD-supply
+    - VLC-supply
+    - VLS-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      codec@48 {
+          compatible = "cirrus,cs42888";
+          reg = <0x48>;
+          clocks = <&codec_mclk 0>;
+          clock-names = "mclk";
+          VA-supply = <&reg_audio>;
+          VD-supply = <&reg_audio>;
+          VLS-supply = <&reg_audio>;
+          VLC-supply = <&reg_audio>;
+          reset-gpios = <&gpio 1>;
+      };
+    };
diff --git a/Documentation/devicetree/bindings/sound/cs42xx8.txt b/Documentation/devicetree/bindings/sound/cs42xx8.txt
deleted file mode 100644
index bbfe39347c20..000000000000
--- a/Documentation/devicetree/bindings/sound/cs42xx8.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-CS42448/CS42888 audio CODEC
-
-Required properties:
-
-  - compatible : must contain one of "cirrus,cs42448" and "cirrus,cs42888"
-
-  - reg : the I2C address of the device for I2C
-
-  - clocks : a list of phandles + clock-specifiers, one for each entry in
-    clock-names
-
-  - clock-names : must contain "mclk"
-
-  - VA-supply, VD-supply, VLS-supply, VLC-supply: power supplies for the device,
-    as covered in Documentation/devicetree/bindings/regulator/regulator.txt
-
-Optional properties:
-
-  - reset-gpios : a GPIO spec to define which pin is connected to the chip's
-    !RESET pin
-
-Example:
-
-cs42888: codec@48 {
-	compatible = "cirrus,cs42888";
-	reg = <0x48>;
-	clocks = <&codec_mclk 0>;
-	clock-names = "mclk";
-	VA-supply = <&reg_audio>;
-	VD-supply = <&reg_audio>;
-	VLS-supply = <&reg_audio>;
-	VLC-supply = <&reg_audio>;
-	reset-gpios = <&pca9557_b 1 GPIO_ACTIVE_LOW>;
-};
-- 
2.45.2

.

From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: geert@linux-m68k.org
Cc: linux-m68k@lists.linux-m68k.org,
	linux-kernel@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	kernel test robot <lkp@intel.com>
Subject: [PATCH] zorro: make match function take a const pointer
Date: Wed, 10 Jul 2024 09:34:14 +0200
Message-ID: <20240710073413.495541-2-gregkh@linuxfoundation.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273216
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In commit d69d80484598 ("driver core: have match() callback in struct bus_type
take a const *"), the match callback for busses was changed to take a const
pointer to struct device_driver.  Unfortunatly I missed fixing up the zorro
code, and was only noticed after-the-fact by the kernel test robot.  Resolve
this issue by properly changing the zorro_bus_match() function.

Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Fixes: d69d80484598 ("driver core: have match() callback in struct bus_type take a const *")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/zorro/zorro-driver.c | 4 ++--
 include/linux/zorro.h        | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/zorro/zorro-driver.c b/drivers/zorro/zorro-driver.c
index f49d19977e82..e7d3af1a223f 100644
--- a/drivers/zorro/zorro-driver.c
+++ b/drivers/zorro/zorro-driver.c
@@ -118,10 +118,10 @@ EXPORT_SYMBOL(zorro_unregister_driver);
      *  supported, and 0 if there is no match.
      */
 
-static int zorro_bus_match(struct device *dev, struct device_driver *drv)
+static int zorro_bus_match(struct device *dev, const struct device_driver *drv)
 {
 	struct zorro_dev *z = to_zorro_dev(dev);
-	struct zorro_driver *zorro_drv = to_zorro_driver(drv);
+	const struct zorro_driver *zorro_drv = to_zorro_driver(drv);
 	const struct zorro_device_id *ids = zorro_drv->id_table;
 
 	if (!ids)
diff --git a/include/linux/zorro.h b/include/linux/zorro.h
index db7416ed6057..f36c8d39553d 100644
--- a/include/linux/zorro.h
+++ b/include/linux/zorro.h
@@ -52,7 +52,7 @@ struct zorro_driver {
     struct device_driver driver;
 };
 
-#define	to_zorro_driver(drv)	container_of(drv, struct zorro_driver, driver)
+#define	to_zorro_driver(drv)	container_of_const(drv, struct zorro_driver, driver)
 
 
 #define zorro_for_each_dev(dev)	\
-- 
2.45.2

.

From: Chris Lu <chris.lu@mediatek.com>
To: Marcel Holtmann <marcel@holtmann.org>, Johan Hedberg
	<johan.hedberg@gmail.com>, Luiz Von Dentz <luiz.dentz@gmail.com>
CC: Sean Wang <sean.wang@mediatek.com>, Aaron Hou <aaron.hou@mediatek.com>,
	Steve Lee <steve.lee@mediatek.com>, linux-bluetooth
	<linux-bluetooth@vger.kernel.org>, linux-kernel
	<linux-kernel@vger.kernel.org>, linux-mediatek
	<linux-mediatek@lists.infradead.org>, Chris Lu <chris.lu@mediatek.com>
Subject: [PATCH] Bluetooth: btmtk: Fix btmtk.c undefined reference build error
Date: Wed, 10 Jul 2024 15:38:32 +0800
Message-ID: <20240710073832.4381-1-chris.lu@mediatek.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273224
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-bluetooth
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

MediaTek move some usb interface related function to btmtk.c which
may cause build failed if BT USB Kconfig wasn't enabled.
Fix undefined reference by adding config check.

Fixes: 39a9e1c69e74 Bluetooth: btmtk: move btusb_mtk_hci_wmt_sync to btmtk.c
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407091928.AH0aGZnx-lkp@intel.com/
Signed-off-by: Chris Lu <chris.lu@mediatek.com>
---
 drivers/bluetooth/btmtk.c | 2 ++
 drivers/bluetooth/btmtk.h | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/drivers/bluetooth/btmtk.c b/drivers/bluetooth/btmtk.c
index b7c348687a77..9789296ad4f6 100644
--- a/drivers/bluetooth/btmtk.c
+++ b/drivers/bluetooth/btmtk.c
@@ -437,6 +437,7 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
 }
 EXPORT_SYMBOL_GPL(btmtk_process_coredump);
 
+#if IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK)
 static void btmtk_usb_wmt_recv(struct urb *urb)
 {
 	struct hci_dev *hdev = urb->context;
@@ -1487,6 +1488,7 @@ int btmtk_usb_shutdown(struct hci_dev *hdev)
 	return 0;
 }
 EXPORT_SYMBOL_GPL(btmtk_usb_shutdown);
+#endif
 
 MODULE_AUTHOR("Sean Wang <sean.wang@mediatek.com>");
 MODULE_AUTHOR("Mark Chen <mark-yw.chen@mediatek.com>");
diff --git a/drivers/bluetooth/btmtk.h b/drivers/bluetooth/btmtk.h
index 453ed5131a37..890dbe9beff8 100644
--- a/drivers/bluetooth/btmtk.h
+++ b/drivers/bluetooth/btmtk.h
@@ -165,6 +165,7 @@ struct btmtk_data {
 	btmtk_reset_sync_func_t reset_sync;
 	struct btmtk_coredump_info cd_info;
 
+#if IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK)
 	struct usb_device *udev;
 	struct usb_interface *intf;
 	struct usb_anchor *ctrl_anchor;
@@ -177,6 +178,7 @@ struct btmtk_data {
 
 	/* spinlock for ISO data transmission */
 	spinlock_t isorxlock;
+#endif
 };
 
 typedef int (*wmt_cmd_sync_func_t)(struct hci_dev *,
@@ -202,6 +204,7 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb);
 void btmtk_fw_get_filename(char *buf, size_t size, u32 dev_id, u32 fw_ver,
 			   u32 fw_flavor);
 
+#if IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK)
 int btmtk_usb_subsys_reset(struct hci_dev *hdev, u32 dev_id);
 
 int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb);
@@ -216,6 +219,7 @@ int btmtk_usb_suspend(struct hci_dev *hdev);
 int btmtk_usb_setup(struct hci_dev *hdev);
 
 int btmtk_usb_shutdown(struct hci_dev *hdev);
+#endif
 #else
 
 static inline int btmtk_set_bdaddr(struct hci_dev *hdev,
-- 
2.18.0

.

Date: Wed, 10 Jul 2024 16:44:10 +0900
Message-Id: <20240710074410.770409-1-suleiman@google.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Mime-Version: 1.0
Subject: [PATCH] KVM: x86: Include host suspended time in steal time.
From: Suleiman Souhlal <suleiman@google.com>
To: Sean Christopherson <seanjc@google.com>, Paolo Bonzini <pbonzini@redhat.com>
Cc: ssouhlal@FreeBSD.org, Thomas Gleixner <tglx@linutronix.de>, 
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, 
	Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org, 
	"H. Peter Anvin" <hpa@zytor.com>, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, 
	Suleiman Souhlal <suleiman@google.com>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273229
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kvm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

When the host resumes from a suspend, the guest thinks any task
that was running during the suspend ran for a long time, even though
the effective run time was much shorter, which can end up having
negative effects with scheduling. This can be particularly noticeable
if the guest task was RT, as it can end up getting throttled for a
long time.

To mitigate this issue, we include the time that the host was
suspended in steal time, which lets the guest can subtract the
duration from the tasks' runtime.

Signed-off-by: Suleiman Souhlal <suleiman@google.com>
---
 arch/x86/kvm/x86.c       | 23 ++++++++++++++++++++++-
 include/linux/kvm_host.h |  4 ++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 0763a0f72a067f..94bbdeef843863 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3669,7 +3669,7 @@ static void record_steal_time(struct kvm_vcpu *vcpu)
 	struct kvm_steal_time __user *st;
 	struct kvm_memslots *slots;
 	gpa_t gpa = vcpu->arch.st.msr_val & KVM_STEAL_VALID_BITS;
-	u64 steal;
+	u64 steal, suspend_duration;
 	u32 version;
 
 	if (kvm_xen_msr_enabled(vcpu->kvm)) {
@@ -3696,6 +3696,12 @@ static void record_steal_time(struct kvm_vcpu *vcpu)
 			return;
 	}
 
+	suspend_duration = 0;
+	if (READ_ONCE(vcpu->suspended)) {
+		suspend_duration = vcpu->kvm->last_suspend_duration;
+		vcpu->suspended = 0;
+	}
+
 	st = (struct kvm_steal_time __user *)ghc->hva;
 	/*
 	 * Doing a TLB flush here, on the guest's behalf, can avoid
@@ -3749,6 +3755,7 @@ static void record_steal_time(struct kvm_vcpu *vcpu)
 	unsafe_get_user(steal, &st->steal, out);
 	steal += current->sched_info.run_delay -
 		vcpu->arch.st.last_steal;
+	steal += suspend_duration;
 	vcpu->arch.st.last_steal = current->sched_info.run_delay;
 	unsafe_put_user(steal, &st->steal, out);
 
@@ -6920,6 +6927,7 @@ static int kvm_arch_suspend_notifier(struct kvm *kvm)
 
 	mutex_lock(&kvm->lock);
 	kvm_for_each_vcpu(i, vcpu, kvm) {
+		WRITE_ONCE(vcpu->suspended, 1);
 		if (!vcpu->arch.pv_time.active)
 			continue;
 
@@ -6932,15 +6940,28 @@ static int kvm_arch_suspend_notifier(struct kvm *kvm)
 	}
 	mutex_unlock(&kvm->lock);
 
+	kvm->suspended_time = ktime_get_boottime_ns();
+
 	return ret ? NOTIFY_BAD : NOTIFY_DONE;
 }
 
+static int
+kvm_arch_resume_notifier(struct kvm *kvm)
+{
+	kvm->last_suspend_duration = ktime_get_boottime_ns() -
+	    kvm->suspended_time;
+	return NOTIFY_DONE;
+}
+
 int kvm_arch_pm_notifier(struct kvm *kvm, unsigned long state)
 {
 	switch (state) {
 	case PM_HIBERNATION_PREPARE:
 	case PM_SUSPEND_PREPARE:
 		return kvm_arch_suspend_notifier(kvm);
+	case PM_POST_HIBERNATION:
+	case PM_POST_SUSPEND:
+		return kvm_arch_resume_notifier(kvm);
 	}
 
 	return NOTIFY_DONE;
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 692c01e41a18ef..2d37af9a348648 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -366,6 +366,8 @@ struct kvm_vcpu {
 	} async_pf;
 #endif
 
+	bool suspended;
+
 #ifdef CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT
 	/*
 	 * Cpu relax intercept or pause loop exit optimization
@@ -840,6 +842,8 @@ struct kvm {
 	struct xarray mem_attr_array;
 #endif
 	char stats_id[KVM_STATS_NAME_SIZE];
+	u64 last_suspend_duration;
+	u64 suspended_time;
 };
 
 #define kvm_err(fmt, ...) \
-- 
2.45.2.993.g49e7a77208-goog

.

From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-m68k@lists.linux-m68k.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] dio: Have dio_bus_match() callback take a const *
Date: Wed, 10 Jul 2024 09:44:52 +0200
Message-Id: <20240710074452.2841173-1-geert@linux-m68k.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273230
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

drivers/dio/dio-driver.c:128:11: error: initialization of â€˜int (*)(struct device *, const struct device_driver *)â€™ from incompatible pointer type â€˜int (*)(struct device *, struct device_driver *)â€™ [-Werror=incompatible-pointer-types]
  128 |  .match = dio_bus_match,
      |           ^~~~~~~~~~~~~
drivers/dio/dio-driver.c:128:11: note: (near initialization for â€˜dio_bus_type.matchâ€™)

Reported-by: noreply@ellerman.id.au
Fixes: d69d804845985c29 ("driver core: have match() callback in struct bus_type take a const *")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
 drivers/dio/dio-driver.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/dio/dio-driver.c b/drivers/dio/dio-driver.c
index 2d9fa6011945d88b..12fa2d209dab9d3c 100644
--- a/drivers/dio/dio-driver.c
+++ b/drivers/dio/dio-driver.c
@@ -110,10 +110,10 @@ void dio_unregister_driver(struct dio_driver *drv)
  *  and 0 if there is no match.
  */
 
-static int dio_bus_match(struct device *dev, struct device_driver *drv)
+static int dio_bus_match(struct device *dev, const struct device_driver *drv)
 {
 	struct dio_dev *d = to_dio_dev(dev);
-	struct dio_driver *dio_drv = to_dio_driver(drv);
+	const struct dio_driver *dio_drv = to_dio_driver(drv);
 	const struct dio_device_id *ids = dio_drv->id_table;
 
 	if (!ids)
-- 
2.34.1

.

From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-m68k@lists.linux-m68k.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] zorro: Have zorro_bus_match() callback take a const *
Date: Wed, 10 Jul 2024 09:45:00 +0200
Message-Id: <20240710074500.2841193-1-geert@linux-m68k.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273231
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

drivers/zorro/zorro-driver.c:157:12: error: initialization of â€˜int (*)(struct device *, const struct device_driver *)â€™ from incompatible pointer type â€˜int (*)(struct device *, struct device_driver *)â€™ [-Werror=incompatible-pointer-types]
  157 |  .match  = zorro_bus_match,
      |            ^~~~~~~~~~~~~~~
drivers/zorro/zorro-driver.c:157:12: note: (near initialization for â€˜zorro_bus_type.matchâ€™)

Reported-by: noreply@ellerman.id.au
Fixes: d69d804845985c29 ("driver core: have match() callback in struct bus_type take a const *")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
 drivers/zorro/zorro-driver.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/zorro/zorro-driver.c b/drivers/zorro/zorro-driver.c
index f49d19977e82a718..e7d3af1a223f9abf 100644
--- a/drivers/zorro/zorro-driver.c
+++ b/drivers/zorro/zorro-driver.c
@@ -118,10 +118,10 @@ EXPORT_SYMBOL(zorro_unregister_driver);
      *  supported, and 0 if there is no match.
      */
 
-static int zorro_bus_match(struct device *dev, struct device_driver *drv)
+static int zorro_bus_match(struct device *dev, const struct device_driver *drv)
 {
 	struct zorro_dev *z = to_zorro_dev(dev);
-	struct zorro_driver *zorro_drv = to_zorro_driver(drv);
+	const struct zorro_driver *zorro_drv = to_zorro_driver(drv);
 	const struct zorro_device_id *ids = zorro_drv->id_table;
 
 	if (!ids)
-- 
2.34.1

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: jani.nikula@linux.intel.com,
	joonas.lahtinen@linux.intel.com,
	rodrigo.vivi@intel.com,
	tursulin@ursulin.net,
	airlied@gmail.com,
	daniel@ffwll.ch
Cc: intel-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] drm/i915: Explicitly cast divisor to fix Coccinelle warning
Date: Wed, 10 Jul 2024 09:46:51 +0200
Message-ID: <20240710074650.419902-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273235
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

As the comment explains, the if check ensures that the divisor oa_period
is a u32. Explicitly cast oa_period to u32 to remove the following
Coccinelle/coccicheck warning reported by do_div.cocci:

  WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/gpu/drm/i915/i915_perf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 0b1cd4c7a525..24722e758aaf 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -4103,7 +4103,7 @@ static int read_properties_unlocked(struct i915_perf *perf,
 			 */
 			if (oa_period <= NSEC_PER_SEC) {
 				u64 tmp = NSEC_PER_SEC;
-				do_div(tmp, oa_period);
+				do_div(tmp, (u32)oa_period);
 				oa_freq_hz = tmp;
 			} else
 				oa_freq_hz = 0;
-- 
2.45.2

.

From: Muhammad Usama Anjum <usama.anjum@collabora.com>
To: Shuah Khan <shuah@kernel.org>,
	Muhammad Usama Anjum <usama.anjum@collabora.com>
Cc: kernel@collabora.com,
	Jarkko Sakkinen <jarkko@kernel.org>,
	linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] selftests: tpm2: redirect python unittest logs to stdout
Date: Wed, 10 Jul 2024 13:15:34 +0500
Message-Id: <20240710081539.1741132-1-usama.anjum@collabora.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273261
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The python unittest module writes all its output to stderr, even when
the run is clean. Redirect its output logs to stdout.

Cc: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
 tools/testing/selftests/tpm2/test_async.sh | 2 +-
 tools/testing/selftests/tpm2/test_smoke.sh | 2 +-
 tools/testing/selftests/tpm2/test_space.sh | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/tpm2/test_async.sh b/tools/testing/selftests/tpm2/test_async.sh
index 43bf5bd772fd4..cf5a9c826097b 100755
--- a/tools/testing/selftests/tpm2/test_async.sh
+++ b/tools/testing/selftests/tpm2/test_async.sh
@@ -7,4 +7,4 @@ ksft_skip=4
 [ -e /dev/tpm0 ] || exit $ksft_skip
 [ -e /dev/tpmrm0 ] || exit $ksft_skip
 
-python3 -m unittest -v tpm2_tests.AsyncTest
+python3 -m unittest -v tpm2_tests.AsyncTest 2>&1
diff --git a/tools/testing/selftests/tpm2/test_smoke.sh b/tools/testing/selftests/tpm2/test_smoke.sh
index 58af963e5b55a..20fa70f970a9a 100755
--- a/tools/testing/selftests/tpm2/test_smoke.sh
+++ b/tools/testing/selftests/tpm2/test_smoke.sh
@@ -6,4 +6,4 @@ ksft_skip=4
 
 [ -e /dev/tpm0 ] || exit $ksft_skip
 
-python3 -m unittest -v tpm2_tests.SmokeTest
+python3 -m unittest -v tpm2_tests.SmokeTest 2>&1
diff --git a/tools/testing/selftests/tpm2/test_space.sh b/tools/testing/selftests/tpm2/test_space.sh
index 04c47b13fe8ac..93894cbc89a80 100755
--- a/tools/testing/selftests/tpm2/test_space.sh
+++ b/tools/testing/selftests/tpm2/test_space.sh
@@ -6,4 +6,4 @@ ksft_skip=4
 
 [ -e /dev/tpmrm0 ] || exit $ksft_skip
 
-python3 -m unittest -v tpm2_tests.SpaceTest
+python3 -m unittest -v tpm2_tests.SpaceTest 2>&1
-- 
2.39.2

.

From: Chen Ni <nichen@iscas.ac.cn>
To: brgl@bgdev.pl,
	linux@armlinux.org.uk,
	khilman@deeprootsystems.com,
	nsekhar@ti.com
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH v2] ARM: davinci: Convert comma to semicolon
Date: Wed, 10 Jul 2024 16:16:48 +0800
Message-Id: <20240710081648.2286573-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273264
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Fixes: efc1bb8a6fd5 ("davinci: add power management support")
Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
Changelog:

v1 -> v2:

1. Add Fixes tag.
---
 arch/arm/mach-davinci/pm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-davinci/pm.c b/arch/arm/mach-davinci/pm.c
index 8aa39db095d7..2c5155bd376b 100644
--- a/arch/arm/mach-davinci/pm.c
+++ b/arch/arm/mach-davinci/pm.c
@@ -61,7 +61,7 @@ static void davinci_pm_suspend(void)
 
 	/* Configure sleep count in deep sleep register */
 	val = __raw_readl(pm_config.deepsleep_reg);
-	val &= ~DEEPSLEEP_SLEEPCOUNT_MASK,
+	val &= ~DEEPSLEEP_SLEEPCOUNT_MASK;
 	val |= pm_config.sleepcount;
 	__raw_writel(val, pm_config.deepsleep_reg);
 
-- 
2.25.1

.

From: Stephan Gerhold <stephan.gerhold@linaro.org>
Date: Wed, 10 Jul 2024 10:18:20 +0200
Subject: [PATCH] arm64: dts: qcom: x1e80100-crd: Add LID switch
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20240710-x1e80100-crd-lid-v1-1-0156e8a62af6@linaro.org>
To: Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konrad.dybcio@linaro.org>
Cc: Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, linux-arm-msm@vger.kernel.org, 
 devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, 
 Abel Vesa <abel.vesa@linaro.org>, Johan Hovold <johan@kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273266
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add gpio-keys for exposing the LID switch state, similar to
sc8280xp-lenovo-thinkpad-x13s.dts. Only the GPIO number is different.

Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
---
 arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
index 6152bcd0bc1f..889253ff5408 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
@@ -6,6 +6,8 @@
 /dts-v1/;
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 
 #include "x1e80100.dtsi"
@@ -49,6 +51,21 @@ chosen {
 		stdout-path = "serial0:115200n8";
 	};
 
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		pinctrl-0 = <&hall_int_n_default>;
+		pinctrl-names = "default";
+
+		switch-lid {
+			gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
+			linux,input-type = <EV_SW>;
+			linux,code = <SW_LID>;
+			wakeup-source;
+			wakeup-event-action = <EV_ACT_DEASSERTED>;
+		};
+	};
+
 	pmic-glink {
 		compatible = "qcom,x1e80100-pmic-glink",
 			     "qcom,sm8550-pmic-glink",
@@ -918,6 +935,12 @@ edp_reg_en: edp-reg-en-state {
 		bias-disable;
 	};
 
+	hall_int_n_default: hall-int-n-state {
+		pins = "gpio92";
+		function = "gpio";
+		bias-disable;
+	};
+
 	kybd_default: kybd-default-state {
 		pins = "gpio67";
 		function = "gpio";

---
base-commit: 6fd4da15c334831a865d4700ceb3ff5a917163e3
change-id: 20240710-x1e80100-crd-lid-4393fdebaf92

Best regards,
-- 
Stephan Gerhold <stephan.gerhold@linaro.org>

.

From: Miaohe Lin <linmiaohe@huawei.com>
To: <akpm@linux-foundation.org>, <muchun.song@linux.dev>
CC: <linmiaohe@huawei.com>, <linux-mm@kvack.org>,
	<linux-kernel@vger.kernel.org>
Subject: [PATCH] mm/hugetlb: fix potential race with try_memory_failure_hugetlb()
Date: Wed, 10 Jul 2024 16:14:45 +0800
Message-ID: <20240710081445.3307355-1-linmiaohe@huawei.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273267 org.kvack.linux-mm:203236
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

There is a potential race between __update_and_free_hugetlb_folio() and
try_memory_failure_hugetlb():

 CPU1					CPU2
 __update_and_free_hugetlb_folio	try_memory_failure_hugetlb
  					 spin_lock_irq(&hugetlb_lock);
					 __get_huge_page_for_hwpoison
					  folio_test_hugetlb
					  -- It's still hugetlb folio.
  folio_test_hugetlb_raw_hwp_unreliable
  -- raw_hwp_unreliable flag is not set yet.
					  folio_set_hugetlb_hwpoison
					  -- raw_hwp_unreliable flag might
					     be set.
					 spin_unlock_irq(&hugetlb_lock);
  spin_lock_irq(&hugetlb_lock);
  __folio_clear_hugetlb(folio);
   -- Hugetlb flag is cleared but too late!
  spin_unlock_irq(&hugetlb_lock);

When above race occurs, raw error pages will hit pcplists/buddy. Fix
this issue by deferring folio_test_hugetlb_raw_hwp_unreliable() until
__folio_clear_hugetlb() is done. The raw_hwp_unreliable flag cannot be
set after hugetlb folio flag is cleared.

Fixes: 32c877191e02 ("hugetlb: do not clear hugetlb dtor until allocating vmemmap")
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Cc: <stable@vger.kernel.org>
---
 mm/hugetlb.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 9155144a654c..3d65b68cf78f 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1705,13 +1705,6 @@ static void __update_and_free_hugetlb_folio(struct hstate *h,
 	if (hstate_is_gigantic(h) && !gigantic_page_runtime_supported())
 		return;
 
-	/*
-	 * If we don't know which subpages are hwpoisoned, we can't free
-	 * the hugepage, so it's leaked intentionally.
-	 */
-	if (folio_test_hugetlb_raw_hwp_unreliable(folio))
-		return;
-
 	/*
 	 * If folio is not vmemmap optimized (!clear_flag), then the folio
 	 * is no longer identified as a hugetlb page.  hugetlb_vmemmap_restore_folio
@@ -1739,6 +1732,13 @@ static void __update_and_free_hugetlb_folio(struct hstate *h,
 		spin_unlock_irq(&hugetlb_lock);
 	}
 
+	/*
+	 * If we don't know which subpages are hwpoisoned, we can't free
+	 * the hugepage, so it's leaked intentionally.
+	 */
+	if (folio_test_hugetlb_raw_hwp_unreliable(folio))
+		return;
+
 	/*
 	 * Move PageHWPoison flag from head page to the raw error pages,
 	 * which makes any healthy subpages reusable.
-- 
2.33.0

.

Date: Wed, 10 Jul 2024 18:22:52 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Theodore Ts'o <tytso@mit.edu>
Cc: Jan Kara <jack@suse.cz>, Linux Kernel Mailing List
 <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>
Subject: linux-next: build warning after merge of the ext4 tree
Message-ID: <20240710182252.4c281445@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/.Uoj9Y1oARnVP=oisOvXYic";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273273 org.kernel.vger.linux-next:62177
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/.Uoj9Y1oARnVP=oisOvXYic
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

After merging the ext4 tree, today's linux-next build (htmldocs) produced
this warning:

/home/sfr/next/next/include/linux/jbd2.h:1303: warning: Function parameter =
or struct member 'j_transaction_overhead_buffers' not described in 'journal=
_s'
/home/sfr/next/next/include/linux/jbd2.h:1303: warning: Excess struct membe=
r 'j_transaction_overhead' description in 'journal_s'

Introduced by commit

  e3a00a23781c ("jbd2: precompute number of transaction descriptor blocks")

--=20
Cheers,
Stephen Rothwell

--Sig_/.Uoj9Y1oARnVP=oisOvXYic
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaORNwACgkQAVBC80lX
0GwZnAgAhOQzfQx2EqKIWj9j2FBhHBjfJxKSLWSgOM3qJ7NVeTU/LTcT5RQPqmcq
30pOXC/3Faq7Iu9ZbQVjJwTiD4oYtCCx9JeO65XC1zOBrGIwtowpYcUY2Dd+HCbM
0mH0/4PLgknYrKxLQYkxam2U3AbpdUH4d+P6T6CgX1DO8323JAK/AFhj76cuPntO
j5BFR+qvSTQf3qwToliFZc96QTIZQrEnknAQWyp07J+rih18LJIvT1IjZ9YkCqRG
XnOJckDHmLxu6oY6JdVB4+8wbd8PQE9THo8APdoj/Iw7ZILEh5rVcUuSE4TcMSqj
wkYunKXnIQOLbmlfbUkp6lq4y6sn9g==
=X85O
-----END PGP SIGNATURE-----

--Sig_/.Uoj9Y1oARnVP=oisOvXYic--
.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: richard clark <richard.xnu.clark@gmail.com>
Date: Wed, 10 Jul 2024 16:26:11 +0800
Message-ID: <CAJNi4rOGZpG6qK4ctO7yFY-s_uOax49TYNzdMx_GDXATepY4hQ@mail.gmail.com>
Subject: 'rcu_preempt detected stalls on CPUs/tasks...' issue of cyclictest on rt-linux
To: paulmck@kernel.org, josh@joshtriplett.org
Cc: Lai Jiangshan <jiangshanlai@gmail.com>, mathieu.desnoyers@efficios.com, 
	Steven Rostedt <rostedt@goodmis.org>, Mark Rutland <mark.rutland@arm.com>, 
	Linus Torvalds <torvalds@linux-foundation.org>, rcu@vger.kernel.org, 
	linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
	linux-rt-users@vger.kernel.org, richard clark <richard.xnu.clark@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273280
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-rt-users,org.kernel.vger.rcu
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,
I am running a Ubuntu 20.04.5 LTS on Nvidia Jetson AGX Orin platform
with 12-cores as a guestOS, the kernel version is - 6.1.83-rt28.
Kernel cmdline is:
'root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 mminit_loglevel=4
console=ttyTCU0,115200 console=tty0 firmware_class.path=/etc/firmware
fbcon=map:0 net.ifnames=0'

The cyclictest command 'cyclictest -Smp99 -H 3000
--histfile=orin_idle_hyp_4h.hist -D 4h' will hang randomly during the
test, then the minicom console will show below messages:
...

[97619.450889] [CPU11-E] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[97619.450894] [CPU11-E] rcu:   1-...!: (0 ticks this GP)
idle=dc88/0/0x0 softirq=0/0 fqs=2 (false positive?)
[97619.450914] [ CPU1-E] NMI backtrace for cpu 1
[97619.451912] [CPU11-E] rcu: rcu_preempt kthread timer wakeup didn't
happen for 5251 jiffies! g6029253 f0x0 RCU_GP_WAIT_FQS(5)
->state=0x402
[97619.451916] [CPU11-E] rcu:   Possible timer handling issue on cpu=1
timer-softirq=342864
[97619.451918] [CPU11-E] rcu: rcu_preempt kthread starved for 5252
jiffies! g6029253 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 ->cpu=1
[97619.451921] [CPU11-E] rcu:   Unless rcu_preempt kthread gets
sufficient CPU time, OOM is now expected behavior.
[97619.451923] [CPU11-E] rcu: RCU grace-period kthread stack dump:
[97619.451966] [CPU11-E] rcu: Stack dump where RCU GP kthread last ran:
...
This issue doesn't show if run the Ubuntu 20.04.5 LTS with the same
kernel natively on the Orin board.

Any comments about this or what can I do to triage this issue?
.

Date: Wed, 10 Jul 2024 16:25:46 +0800
From: kernel test robot <lkp@intel.com>
To: "x86-ml" <x86@kernel.org>
Cc: linux-kernel@vger.kernel.org
Subject: [tip:locking/core] BUILD SUCCESS
 e81859fe64ad42dccefe134d1696e0635f78d763
Message-ID: <202407101644.wDqOzOq1-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273281
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
branch HEAD: e81859fe64ad42dccefe134d1696e0635f78d763  locking/rwsem: Add __always_inline annotation to __down_write_common() and inlined callers

elapsed time: 1194m

configs tested: 181
configs skipped: 3

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                            allyesconfig   gcc-13.2.0
alpha                               defconfig   gcc-13.2.0
arc                              allmodconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                              allyesconfig   gcc-13.2.0
arc                                 defconfig   gcc-13.2.0
arc                   randconfig-001-20240710   gcc-13.2.0
arc                   randconfig-002-20240710   gcc-13.2.0
arm                              allmodconfig   gcc-13.2.0
arm                               allnoconfig   gcc-13.2.0
arm                              allyesconfig   gcc-13.2.0
arm                                 defconfig   gcc-13.2.0
arm                            hisi_defconfig   gcc-13.2.0
arm                          ixp4xx_defconfig   gcc-13.2.0
arm                          pxa910_defconfig   gcc-13.2.0
arm                   randconfig-001-20240710   gcc-13.2.0
arm                   randconfig-002-20240710   gcc-13.2.0
arm                   randconfig-003-20240710   gcc-13.2.0
arm                   randconfig-004-20240710   gcc-13.2.0
arm                        realview_defconfig   gcc-13.2.0
arm64                            allmodconfig   gcc-13.2.0
arm64                             allnoconfig   gcc-13.2.0
arm64                               defconfig   gcc-13.2.0
arm64                 randconfig-001-20240710   gcc-13.2.0
arm64                 randconfig-002-20240710   gcc-13.2.0
arm64                 randconfig-003-20240710   gcc-13.2.0
arm64                 randconfig-004-20240710   gcc-13.2.0
csky                              allnoconfig   gcc-13.2.0
csky                                defconfig   gcc-13.2.0
csky                  randconfig-001-20240710   gcc-13.2.0
csky                  randconfig-002-20240710   gcc-13.2.0
hexagon                          allmodconfig   clang-19
hexagon                          allyesconfig   clang-19
i386                             allmodconfig   clang-18
i386                             allmodconfig   gcc-13
i386                              allnoconfig   clang-18
i386                              allnoconfig   gcc-13
i386                             allyesconfig   clang-18
i386                             allyesconfig   gcc-13
i386         buildonly-randconfig-001-20240710   clang-18
i386         buildonly-randconfig-002-20240710   clang-18
i386         buildonly-randconfig-003-20240710   clang-18
i386         buildonly-randconfig-004-20240710   clang-18
i386         buildonly-randconfig-005-20240710   clang-18
i386         buildonly-randconfig-006-20240710   clang-18
i386                                defconfig   clang-18
i386                  randconfig-001-20240710   clang-18
i386                  randconfig-002-20240710   clang-18
i386                  randconfig-003-20240710   clang-18
i386                  randconfig-004-20240710   clang-18
i386                  randconfig-005-20240710   clang-18
i386                  randconfig-006-20240710   clang-18
i386                  randconfig-011-20240710   clang-18
i386                  randconfig-012-20240710   clang-18
i386                  randconfig-013-20240710   clang-18
i386                  randconfig-014-20240710   clang-18
i386                  randconfig-015-20240710   clang-18
i386                  randconfig-016-20240710   clang-18
loongarch                        allmodconfig   gcc-13.2.0
loongarch                         allnoconfig   gcc-13.2.0
loongarch                           defconfig   gcc-13.2.0
loongarch             randconfig-001-20240710   gcc-13.2.0
loongarch             randconfig-002-20240710   gcc-13.2.0
m68k                             allmodconfig   gcc-13.2.0
m68k                              allnoconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.2.0
m68k                                defconfig   gcc-13.2.0
m68k                       m5249evb_defconfig   gcc-13.2.0
microblaze                       allmodconfig   gcc-13.2.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.2.0
microblaze                          defconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
nios2                             allnoconfig   gcc-13.2.0
nios2                               defconfig   gcc-13.2.0
nios2                 randconfig-001-20240710   gcc-13.2.0
nios2                 randconfig-002-20240710   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                         allyesconfig   gcc-13.2.0
openrisc                         allyesconfig   gcc-13.3.0
openrisc                            defconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.3.0
parisc                            allnoconfig   gcc-13.2.0
parisc                           allyesconfig   gcc-13.2.0
parisc                           allyesconfig   gcc-13.3.0
parisc                              defconfig   gcc-13.2.0
parisc                randconfig-001-20240710   gcc-13.2.0
parisc                randconfig-002-20240710   gcc-13.2.0
parisc64                         alldefconfig   gcc-13.2.0
parisc64                            defconfig   gcc-13.2.0
powerpc                          allmodconfig   gcc-13.2.0
powerpc                          allmodconfig   gcc-13.3.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                          allyesconfig   clang-19
powerpc                          allyesconfig   gcc-13.2.0
powerpc                          allyesconfig   gcc-13.3.0
powerpc                      katmai_defconfig   gcc-13.2.0
powerpc               randconfig-001-20240710   gcc-13.2.0
powerpc               randconfig-002-20240710   gcc-13.2.0
powerpc               randconfig-003-20240710   gcc-13.2.0
powerpc                     tqm8548_defconfig   gcc-13.2.0
powerpc64             randconfig-001-20240710   gcc-13.2.0
powerpc64             randconfig-002-20240710   gcc-13.2.0
powerpc64             randconfig-003-20240710   gcc-13.2.0
riscv                            allmodconfig   clang-19
riscv                            allmodconfig   gcc-13.2.0
riscv                            allmodconfig   gcc-13.3.0
riscv                             allnoconfig   gcc-13.2.0
riscv                            allyesconfig   clang-19
riscv                            allyesconfig   gcc-13.2.0
riscv                            allyesconfig   gcc-13.3.0
riscv                               defconfig   gcc-13.2.0
riscv                    nommu_virt_defconfig   gcc-13.2.0
riscv                 randconfig-001-20240710   gcc-13.2.0
riscv                 randconfig-002-20240710   gcc-13.2.0
s390                             allmodconfig   clang-19
s390                              allnoconfig   clang-19
s390                              allnoconfig   gcc-13.2.0
s390                             allyesconfig   clang-19
s390                             allyesconfig   gcc-13.2.0
s390                                defconfig   gcc-13.2.0
s390                  randconfig-001-20240710   gcc-13.2.0
s390                  randconfig-002-20240710   gcc-13.2.0
sh                               allmodconfig   gcc-13.2.0
sh                                allnoconfig   gcc-13.2.0
sh                               allyesconfig   gcc-13.2.0
sh                                  defconfig   gcc-13.2.0
sh                        dreamcast_defconfig   gcc-13.2.0
sh                        edosk7705_defconfig   gcc-13.2.0
sh                    randconfig-001-20240710   gcc-13.2.0
sh                    randconfig-002-20240710   gcc-13.2.0
sh                          rsk7264_defconfig   gcc-13.2.0
sh                           se7780_defconfig   gcc-13.2.0
sh                            titan_defconfig   gcc-13.2.0
sparc                            allmodconfig   gcc-13.2.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240710   gcc-13.2.0
sparc64               randconfig-002-20240710   gcc-13.2.0
um                               allmodconfig   gcc-13.2.0
um                                allnoconfig   clang-17
um                                allnoconfig   gcc-13.2.0
um                               allyesconfig   gcc-13.2.0
um                                  defconfig   gcc-13.2.0
um                             i386_defconfig   gcc-13.2.0
um                    randconfig-001-20240710   gcc-13.2.0
um                    randconfig-002-20240710   gcc-13.2.0
um                           x86_64_defconfig   gcc-13.2.0
x86_64                            allnoconfig   clang-18
x86_64                           allyesconfig   clang-18
x86_64       buildonly-randconfig-001-20240710   clang-18
x86_64       buildonly-randconfig-002-20240710   clang-18
x86_64       buildonly-randconfig-003-20240710   clang-18
x86_64       buildonly-randconfig-004-20240710   clang-18
x86_64       buildonly-randconfig-005-20240710   clang-18
x86_64       buildonly-randconfig-006-20240710   clang-18
x86_64                              defconfig   clang-18
x86_64                              defconfig   gcc-13
x86_64                randconfig-001-20240710   clang-18
x86_64                randconfig-002-20240710   clang-18
x86_64                randconfig-003-20240710   clang-18
x86_64                randconfig-004-20240710   clang-18
x86_64                randconfig-005-20240710   clang-18
x86_64                randconfig-006-20240710   clang-18
x86_64                randconfig-011-20240710   clang-18
x86_64                randconfig-012-20240710   clang-18
x86_64                randconfig-013-20240710   clang-18
x86_64                randconfig-014-20240710   clang-18
x86_64                randconfig-015-20240710   clang-18
x86_64                randconfig-016-20240710   clang-18
x86_64                randconfig-071-20240710   clang-18
x86_64                randconfig-072-20240710   clang-18
x86_64                randconfig-073-20240710   clang-18
x86_64                randconfig-074-20240710   clang-18
x86_64                randconfig-075-20240710   clang-18
x86_64                randconfig-076-20240710   clang-18
x86_64                          rhel-8.3-rust   clang-18
xtensa                            allnoconfig   gcc-13.2.0
xtensa                randconfig-001-20240710   gcc-13.2.0
xtensa                randconfig-002-20240710   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

From: Chen Ni <nichen@iscas.ac.cn>
To: linus.walleij@linaro.org,
	brgl@bgdev.pl,
	grant.likely@secretlab.ca
Cc: linux-gpio@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Chen Ni <nichen@iscas.ac.cn>
Subject: [PATCH v2] gpio: mc33880: Convert comma to semicolon
Date: Wed, 10 Jul 2024 16:28:13 +0800
Message-Id: <20240710082813.2287329-1-nichen@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273284
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-gpio
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace a comma between expression statements by a semicolon.

Fixes: c103de240439 ("gpio: reorganize drivers")
Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
Changelog:

v1 -> v2:

1. Add Fixes tag.
---
 drivers/gpio/gpio-mc33880.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpio/gpio-mc33880.c b/drivers/gpio/gpio-mc33880.c
index 94f6fefc011b..5fb357d7b78a 100644
--- a/drivers/gpio/gpio-mc33880.c
+++ b/drivers/gpio/gpio-mc33880.c
@@ -99,7 +99,7 @@ static int mc33880_probe(struct spi_device *spi)
 
 	mc->spi = spi;
 
-	mc->chip.label = DRIVER_NAME,
+	mc->chip.label = DRIVER_NAME;
 	mc->chip.set = mc33880_set;
 	mc->chip.base = pdata->base;
 	mc->chip.ngpio = PIN_NUMBER;
-- 
2.25.1

.

From: Lu Baolu <baolu.lu@linux.intel.com>
To: Jason Gunthorpe <jgg@ziepe.ca>,
	Kevin Tian <kevin.tian@intel.com>,
	Joerg Roedel <joro@8bytes.org>,
	Will Deacon <will@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	Yi Liu <yi.l.liu@intel.com>
Cc: iommu@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Lu Baolu <baolu.lu@linux.intel.com>
Subject: [PATCH 0/3] iommufd: Avoid PRI Response Failure
Date: Wed, 10 Jul 2024 16:33:38 +0800
Message-Id: <20240710083341.44617-1-baolu.lu@linux.intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273291
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.iommu
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series is a follow-up for the discussion that happened here.

https://lore.kernel.org/linux-iommu/20240709173643.GI14050@ziepe.ca/

It prevents user space from responding to a group of page faults with a
response code other than IOMMUFD_PAGE_RESP_SUCCESS and
IOMMUFD_PAGE_RESP_INVALID, which will be treated by the device as
Response Failure according to the PCI spec.

Please help review and comment.

Lu Baolu (3):
  iommufd: Remove IOMMUFD_PAGE_RESP_FAILURE
  iommufd: Add check on user response code
  iommu: Convert response code from failure to invalid

 include/uapi/linux/iommufd.h  | 4 ----
 drivers/iommu/io-pgfault.c    | 2 +-
 drivers/iommu/iommufd/fault.c | 6 ++++++
 3 files changed, 7 insertions(+), 5 deletions(-)

-- 
2.34.1

.

From: Zhiguo Jiang <justinjiang@vivo.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>
Cc: opensource.kernel@vivo.com,
	Zhiguo Jiang <justinjiang@vivo.com>
Subject: [PATCH v10] mm: shrink skip folio mapped by an exiting process
Date: Wed, 10 Jul 2024 16:36:41 +0800
Message-ID: <20240710083641.546-1-justinjiang@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273295 org.kvack.linux-mm:203239
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The releasing process of the non-shared anonymous folio mapped solely by
an exiting process may go through two flows: 1) the anonymous folio is
firstly is swaped-out into swapspace and transformed into a swp_entry
in shrink_folio_list; 2) then the swp_entry is released in the process
exiting flow. This will result in the high cpu load of releasing a
non-shared anonymous folio mapped solely by an exiting process.

When the low system memory and the exiting process exist at the same
time, it will be likely to happen, because the non-shared anonymous
folio mapped solely by an exiting process may be reclaimed by
shrink_folio_list.

This patch is that shrink skips the non-shared anonymous folio solely
mapped by an exting process and this folio is only released directly in
the process exiting flow, which will save swap-out time and alleviate
the load of the process exiting. 

Acked-by: Barry Song <baohua@kernel.org>
Signed-off-by: Zhiguo Jiang <justinjiang@vivo.com>
---

Change log:
v9->v10:
1.Add folio_test_anon(folio) condition.
v8->v9:
1.Update Reviewed-by tag information.
v7->v8:
1.Add tags of Reviewed-by and Acked-by.
2.Add #include <linux/oom.h> to solve compilation issue.
v6->v7:
1.Modify tab indentation to space indentation of the continuation
lines of the condition.
v5->v6:
1.Move folio_likely_mapped_shared() under the PTL.
2.Add check_stable_address_space() to replace MMF_OOM_SKIP.
3.Remove folio_test_anon(folio).
v4->v5:
1.Further modify to skip non-shared anonymous folio only.
2.Update comments for pra->referenced = -1.
v3->v4:
1.Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process.
v2->v3:
Nothing.
v1->v2:
1.The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

Comments from participants and my responses:
[v9->v10]:
1.David Hildenbrand <david@redhat.com> && Barry Song <baohua@kernel.org>
BTW, we dropped the folio_test_anon() check, but what about shmem? They
also do __folio_set_swapbacked()?
Even though anon_shmem behaves similarly to anonymous memory when
releasing memory, it doesn't seem worth the added complexity?
-->
Take folio_test_anon() back.

[v8->v9]:
1.Barry Song <baohua@kernel.org>
No, this is a disaster. Please ask someone for help before you send it.
Neither Willy nor David has ever posted any Reviewed-by tags.
Please do get someone to help you. Stop posting like this!
-->
Update Reviewed-by tag information in v9.

[v7->v8]:
1.Barry Song <baohua@kernel.org>
You should have collected tags such as reviewed-by, acked-by you got in
v6 while sending v7.
-->
Added in patch v8.

You didn't even pass the compilation stage because you're missing
'linux/oom.h'. It's quite disappointing because I believe in your idea,
but you didn't even build it before sending.
-->
Sorry, I overlooked the compilation of folio_likely_mapped_shared() added
in patch v5. Compiled and Updated have been compeleted in patch v8.

[v6->v7]:
1.Matthew Wilcox <willy@infradead.org>
You told me you'd fix the indentation.  You cannot indent both the
continuation lines of the condition and the body of the if by one tab
each!
-->
Modify tab indentation to space indentation of the continuation
lines of the condition.

[v5->v6]:
1.David Hildenbrand <david@redhat.com>
I'm currently working on moving all folio_likely_mapped_shared() under
the PTL, where we are then sure that the folio is actually mapped by
this process (e.g., no concurrent unmapping poisslbe). Can we do the
same here directly? 
-->
You are right. we might use page_vma_mapped_walk_done() to bail out.
(Barry Song)

2.Barry Song <baohua@kernel.org>
By the way, I am not convinced that using test_bit(MMF_OOM_SKIP,
&vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap()
automatically has MMF_OOM_SKIP. What is the purpose of this check?
Is there a better way to determine if a process is an OOM target?
What about check_stable_address_space() ?
-->
Sorry, I overlook the situation with if (is_global_init(p)),
MMF_OOM_SKIP is indeed not suitable. It seems feasible for
check_stable_address_space() replacing MMF_OOM_SKIP.
check_stable_address_space() can indicate oom kill, and
!atomic_read(&vma->vm_mm->mm_users) can indicate the normal
process exiting. 

I also think we actually can remove "folio_test_anon(folio)".
-->
Yes, update in patch v6.

[v4->v5]:
1.Barry Song <baohua@kernel.org>
I don't think this is correct. folio_likely_mapped_shared() is almost
"correct" but not always.
Please explain why you set  pra->referenced =  -1. Please address all
comments before you send a new version.
-->
Update in patch v5.

2.Matthew Wilcox <willy@infradead.org>
How is the file folio similar?  File folios are never written to swap,
and they'll be written back from the page cache whenever the filesystem
decides it's a good time to do so.
-->
What do you mean is that the file folio will not have any relevant
identifier left in memory after it is reclamed in the shrink flow,
and it will not be released again during an exiting process? If that's
the case, I think we only need the anon folio is skipped here. 

[v3->v4]:
1.Barry Song <baohua@kernel.org>
This is clearly version 3, as you previously sent version 2, correct?
-->
Yes.

Could you please describe the specific impact on users, including user
experience and power consumption? How serious is this problem?
-->
At present, I do not have a suitable method to accurately measure the
optimization benefit datas of this modifications, but I believe it
theoretically has some benefits.
Launching large memory app (for example, starting the camera) in multiple
backend scenes may result in the high cpu load of the exiting processes. 

Applications?
-->
Yes, when system is low memory, it more likely to occur.

I'm not completely convinced this patch is correct, but it appears to be
heading in the right direction. Therefore, I expect to see new versions
rather than it being dead.
You changed the file mode to 755, which is incorrect.
-->
Solved.

Why use -1? Is this meant to simulate lock contention to keep the folio
without activating it? Please do have some comments to explain why.
I'm not convinced this change is appropriate for shared folios. It seems
more suitable for exclusive folios used solely by the exiting process.
-->
The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase
the folios will be freed soon in the exiting process flow.
Yes, the shared folios can not be simply skipped. I have made relevant
modifications in patch v4 and please help to further review.
https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/

2.David Hildenbrand <david@redhat.com>
but what if it is shared among multiple processes and only one of them
is exiting?
-->
Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process in next version v4.

[v2->v3:]
Nothing.

[v1->v2]:
1.Matthew Wilcox <willy@infradead.org>
What testing have you done of this patch?  How often does it happen?
Are there particular workloads that benefit from this?  (I'm not sure
what "mutil backed-applications" are?)
And I do mean specifically of this patch, because to my eyes it
shouldn't even compile. Except on 32-bit where it'll say "warning:
integer constant out of range".
-->
Yes, I have tested. When the low system memory and the exiting process
exist at the same time, it will happen. This modification can alleviate
the load of the exiting process. 
"mutil backed-applications" means that there are a large number of
the backend applications in the system.
The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

 mm/rmap.c   | 15 +++++++++++++++
 mm/vmscan.c |  7 ++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/mm/rmap.c b/mm/rmap.c
index 86787df6e212..316a6bb9747b 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -75,6 +75,7 @@
 #include <linux/memremap.h>
 #include <linux/userfaultfd_k.h>
 #include <linux/mm_inline.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 
@@ -870,6 +871,20 @@ static bool folio_referenced_one(struct folio *folio,
 			continue;
 		}
 
+		/*
+		 * Skip the non-shared swapbacked folio mapped solely by
+		 * the exiting or OOM-reaped process. This avoids redundant
+		 * swap-out followed by an immediate unmap.
+		 */
+		if ((!atomic_read(&vma->vm_mm->mm_users) ||
+		    check_stable_address_space(vma->vm_mm)) &&
+		    folio_test_anon(folio) && folio_test_swapbacked(folio) &&
+		    !folio_likely_mapped_shared(folio)) {
+			pra->referenced = -1;
+			page_vma_mapped_walk_done(&pvmw);
+			return false;
+		}
+
 		if (pvmw.pte) {
 			if (lru_gen_enabled() &&
 			    pte_young(ptep_get(pvmw.pte))) {
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 0761f91b407f..9afe4bb5ba87 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio,
 	if (vm_flags & VM_LOCKED)
 		return FOLIOREF_ACTIVATE;
 
-	/* rmap lock contention: rotate */
+	/*
+	 * There are two cases to consider.
+	 * 1) Rmap lock contention: rotate.
+	 * 2) Skip the non-shared swapbacked folio mapped solely by
+	 *    the exiting or OOM-reaped process.
+	 */
 	if (referenced_ptes == -1)
 		return FOLIOREF_KEEP;
 
-- 
2.39.0

.

Date: Wed, 10 Jul 2024 16:37:00 +0800
From: kernel test robot <oliver.sang@intel.com>
To: Anna-Maria Behnsen <anna-maria@linutronix.de>
CC: <oe-lkp@lists.linux.dev>, <lkp@intel.com>, <linux-kernel@vger.kernel.org>,
	<x86@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Frederic Weisbecker
	<frederic@kernel.org>, <oliver.sang@intel.com>
Subject: [tip:timers/urgent] [timers/migration]  8cdb61838e:
 WARNING:at_kernel/time/timer_migration.c:#tmigr_connect_child_parent
Message-ID: <202407101636.d9d4e8be-oliver.sang@intel.com>
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273296
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail



Hello,

kernel test robot noticed "WARNING:at_kernel/time/timer_migration.c:#tmigr_connect_child_parent" on:

commit: 8cdb61838ee5c63556773ea2eed24deab6b15257 ("timers/migration: Move hierarchy setup into cpuhotplug prepare callback")
https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git timers/urgent

[test failed on linux-next/master 82d01fe6ee52086035b201cfa1410a3b04384257]

in testcase: filebench
version: filebench-x86_64-22620e6-1_20240224
with following parameters:

	disk: 1HDD
	fs: xfs
	test: randomwrite.f
	cpufreq_governor: performance



compiler: gcc-13
test machine: 128 threads 2 sockets Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz (Ice Lake) with 128G memory

(please refer to attached dmesg/kmsg for entire log/backtrace)



If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202407101636.d9d4e8be-oliver.sang@intel.com


[   16.306955][  T209] ------------[ cut here ]------------
[ 16.312287][ T209] WARNING: CPU: 32 PID: 209 at kernel/time/timer_migration.c:1620 tmigr_connect_child_parent (kernel/time/timer_migration.c:1620 (discriminator 7)) 
[   16.323148][  T209] Modules linked in:
[   16.326901][  T209] CPU: 32 PID: 209 Comm: cpuhp/32 Not tainted 6.10.0-rc6-00002-g8cdb61838ee5 #1
[ 16.335766][ T209] RIP: 0010:tmigr_connect_child_parent (kernel/time/timer_migration.c:1620 (discriminator 7)) 
[ 16.341945][ T209] Code: c6 07 00 0f 1f 00 fb 66 90 0f b6 45 60 48 89 e2 48 89 ee 48 89 df 88 44 24 18 e8 ec fc ff ff 84 c0 75 09 48 83 7b 08 00 74 02 <0f> 0b 48 8b 44 24 20 65 48 2b 04 25 28 00 00 00 75 36 48 83 c4 28
All code
========
   0:	c6 07 00             	movb   $0x0,(%rdi)
   3:	0f 1f 00             	nopl   (%rax)
   6:	fb                   	sti    
   7:	66 90                	xchg   %ax,%ax
   9:	0f b6 45 60          	movzbl 0x60(%rbp),%eax
   d:	48 89 e2             	mov    %rsp,%rdx
  10:	48 89 ee             	mov    %rbp,%rsi
  13:	48 89 df             	mov    %rbx,%rdi
  16:	88 44 24 18          	mov    %al,0x18(%rsp)
  1a:	e8 ec fc ff ff       	callq  0xfffffffffffffd0b
  1f:	84 c0                	test   %al,%al
  21:	75 09                	jne    0x2c
  23:	48 83 7b 08 00       	cmpq   $0x0,0x8(%rbx)
  28:	74 02                	je     0x2c
  2a:*	0f 0b                	ud2    		<-- trapping instruction
  2c:	48 8b 44 24 20       	mov    0x20(%rsp),%rax
  31:	65 48 2b 04 25 28 00 	sub    %gs:0x28,%rax
  38:	00 00 
  3a:	75 36                	jne    0x72
  3c:	48 83 c4 28          	add    $0x28,%rsp

Code starting with the faulting instruction
===========================================
   0:	0f 0b                	ud2    
   2:	48 8b 44 24 20       	mov    0x20(%rsp),%rax
   7:	65 48 2b 04 25 28 00 	sub    %gs:0x28,%rax
   e:	00 00 
  10:	75 36                	jne    0x48
  12:	48 83 c4 28          	add    $0x28,%rsp
[   16.361382][  T209] RSP: 0000:ffa0000007587da0 EFLAGS: 00010286
[   16.367302][  T209] RAX: 0000000000000000 RBX: ff11002000b56b00 RCX: 0000000000010101
[   16.375130][  T209] RDX: 0000000000010101 RSI: ff11002000b56b00 RDI: ff11002000b56b50
[   16.382955][  T209] RBP: ff11002000b57500 R08: 0000000000000101 R09: ffa0000007587da0
[   16.390782][  T209] R10: 0000000000000001 R11: 00000000c5672a10 R12: 0000000000000001
[   16.398608][  T209] R13: ff11001084311240 R14: 0000000000000020 R15: 0000000000000002
[   16.406433][  T209] FS:  0000000000000000(0000) GS:ff11001fffe00000(0000) knlGS:0000000000000000
[   16.415213][  T209] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   16.421650][  T209] CR2: 0000000000000000 CR3: 000000207de1c001 CR4: 0000000000771ef0
[   16.429477][  T209] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[   16.437301][  T209] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[   16.445128][  T209] PKRU: 55555554
[   16.448535][  T209] Call Trace:
[   16.451680][  T209]  <TASK>
[ 16.454479][ T209] ? __warn (kernel/panic.c:693) 
[ 16.458405][ T209] ? tmigr_connect_child_parent (kernel/time/timer_migration.c:1620 (discriminator 7)) 
[ 16.463980][ T209] ? report_bug (lib/bug.c:180 lib/bug.c:219) 
[ 16.468338][ T209] ? handle_bug (arch/x86/kernel/traps.c:239) 
[ 16.472523][ T209] ? exc_invalid_op (arch/x86/kernel/traps.c:260 (discriminator 1)) 
[ 16.477055][ T209] ? asm_exc_invalid_op (arch/x86/include/asm/idtentry.h:621) 
[ 16.481936][ T209] ? tmigr_connect_child_parent (kernel/time/timer_migration.c:1620 (discriminator 7)) 
[ 16.487507][ T209] tmigr_setup_groups+0x1e6/0x430 
[ 16.492993][ T209] ? __pfx_tmigr_cpu_prepare (kernel/time/timer_migration.c:1727) 
[ 16.498305][ T209] tmigr_cpu_prepare (kernel/time/timer_migration.c:1721 kernel/time/timer_migration.c:1737) 
[ 16.502927][ T209] cpuhp_invoke_callback (kernel/cpu.c:194) 
[ 16.507980][ T209] ? __pfx_smpboot_thread_fn (kernel/smpboot.c:107) 
[ 16.513291][ T209] cpuhp_thread_fun (kernel/cpu.c:1092 (discriminator 1)) 
[ 16.517910][ T209] smpboot_thread_fn (kernel/smpboot.c:164) 
[ 16.522615][ T209] kthread (kernel/kthread.c:389) 
[ 16.526367][ T209] ? __pfx_kthread (kernel/kthread.c:342) 
[ 16.530814][ T209] ret_from_fork (arch/x86/kernel/process.c:147) 
[ 16.535088][ T209] ? __pfx_kthread (kernel/kthread.c:342) 
[ 16.539533][ T209] ret_from_fork_asm (arch/x86/entry/entry_64.S:257) 
[   16.544153][  T209]  </TASK>
[   16.547039][  T209] ---[ end trace 0000000000000000 ]---
[   16.562459][    T1] Timer migration setup failed



The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20240710/202407101636.d9d4e8be-oliver.sang@intel.com



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

From: Hsiao Chien Sung via B4 Relay <devnull+shawn.sung.mediatek.com@kernel.org>
Subject: [PATCH v2 0/5] Support alpha blending in MTK display driver
Date: Wed, 10 Jul 2024 16:37:18 +0800
Message-Id: <20240710-alpha-blending-v2-0-d4b505e6980a@mediatek.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Chun-Kuang Hu <chunkuang.hu@kernel.org>, 
 Philipp Zabel <p.zabel@pengutronix.de>, David Airlie <airlied@gmail.com>, 
 Daniel Vetter <daniel@ffwll.ch>, Matthias Brugger <matthias.bgg@gmail.com>, 
 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Cc: dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, 
 linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 Hsiao Chien Sung <shawn.sung@mediatek.corp-partner.google.com>, 
 CK Hu <ck.hu@mediatek.com>, Hsiao Chien Sung <shawn.sung@mediatek.com>
X-Original-From: Hsiao Chien Sung <shawn.sung@mediatek.com>
Reply-To: shawn.sung@mediatek.com
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273297
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.feeds.b4-sent
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Support "Pre-multiplied" and "None" blend mode on MediaTek's chips by
adding correct blend mode property when the planes init.
Before this patch, only the "Coverage" mode (default) is supported.

Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.corp-partner.google.com>
---
Changes in v2:
- Remove unnecessary codes
- Add more information to the commit message
- Link to v1: https://lore.kernel.org/r/20240620-blend-v1-0-72670072ca20@mediatek.com

---
Hsiao Chien Sung (5):
      drm/mediatek: Support "None" blending in OVL
      drm/mediatek: Support "None" blending in Mixer
      drm/mediatek: Support "Pre-multiplied" blending in OVL
      drm/mediatek: Support "Pre-multiplied" blending in Mixer
      drm/mediatek: Support alpha blending in display driver

 drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 36 +++++++++++++++++++++++++--------
 drivers/gpu/drm/mediatek/mtk_ethdr.c    | 13 +++++++++---
 drivers/gpu/drm/mediatek/mtk_plane.c    | 11 ++++++++++
 3 files changed, 49 insertions(+), 11 deletions(-)
---
base-commit: 8ad49a92cff4bab13eb2f2725243f5f31eff3f3b
change-id: 20240710-alpha-blending-067295570863

Best regards,
-- 
Hsiao Chien Sung <shawn.sung@mediatek.com>


.

From: Shun-yi Wang <shun-yi.wang@mediatek.com>
To: Bjorn Andersson <andersson@kernel.org>, Mathieu Poirier
	<mathieu.poirier@linaro.org>
CC: Matthias Brugger <matthias.bgg@gmail.com>, AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	<linux-remoteproc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <linux-mediatek@lists.infradead.org>,
	<Project_Global_Chrome_Upstream_Group@mediatek.com>,
	<jason-ch.chen@mediatek.com>, <yaya.chang@mediatek.com>,
	<teddy.chen@mediatek.com>, shun-yi.wang <shun-yi.wang@mediatek.com>
Subject: [PATCH RFC 0/1] Support CMA regions
Date: Wed, 10 Jul 2024 16:41:59 +0800
Message-ID: <20240710084200.6561-1-shun-yi.wang@mediatek.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273306
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-remoteproc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: "shun-yi.wang" <shun-yi.wang@mediatek.com>

In order to reserve specific Contiguous Memory Allocator (CMA) regions 
for hardware use. When the name of the reserved region contains "cma", 
then a corresponding CMA heap is added.

In the DTS (Device Tree Source), we may have several memory regions 
with different names, e.g.,
&scp {
	...
	memory-region = <&mem_reserved_1>, <&mem_reserved_2>;
};

mem_reserved_1: xxx-xxx-region {
	...
};
mem_reserved_2: xxx-xxx-cma-region {
	...
};

When the name of the region contains "cma", a corresponding heap 
allocator is added by cma_heap_add().
However, we are unsure if using the name "cma" as an identifier
is a good practice.
I sincerely hope that you can provide me some suggestions, thanks.
Especially within the segment of '#ifdef CONFIG_DMA_BUF_HEAPS_CMA'

Note: The cma_heap_add() is introduced from this patch:
dma-buf: heaps: Introduce cma_heap_add() for non-default CMA heap

shun-yi.wang (1):
  remoteproc: mediatek: Support reserved CMA regions

 drivers/remoteproc/mtk_scp.c | 38 ++++++++++++++++++++++++++++--------
 1 file changed, 30 insertions(+), 8 deletions(-)

-- 
2.18.0

.

From: Rayyan Ansari <rayyan.ansari@linaro.org>
To: linux-arm-msm@vger.kernel.org
Cc: Rayyan Ansari <rayyan.ansari@linaro.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	devicetree@vger.kernel.org,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	linux-kernel@vger.kernel.org,
	Rob Herring <robh@kernel.org>
Subject: [PATCH 0/3] ARM: dts: qcom: adhere to pinctrl dt schema
Date: Wed, 10 Jul 2024 09:41:08 +0100
Message-ID: <20240710084250.11342-1-rayyan.ansari@linaro.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273309
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,
The following patches make the device trees compliant with the pinctrl
text to dt schema conversion here:
https://lore.kernel.org/all/20240709162009.5166-1-rayyan.ansari@linaro.org/

Thanks,
Rayyan

Rayyan Ansari (3):
  ARM: dts: qcom: apq8064: adhere to pinctrl dtschema
  ARM: dts: qcom: ipq8064: adhere to pinctrl dtschema
  ARM: dts: qcom: ipq4019: adhere to pinctrl dtschema

 .../dts/qcom/qcom-apq8064-asus-nexus7-flo.dts |   4 -
 .../boot/dts/qcom/qcom-apq8064-cm-qs600.dts   |  25 +-
 .../boot/dts/qcom/qcom-apq8064-ifc6410.dts    |  25 +-
 arch/arm/boot/dts/qcom/qcom-apq8064-pins.dtsi | 362 +++++++-----------
 .../qcom-apq8064-sony-xperia-lagan-yuga.dts   |  10 +-
 arch/arm/boot/dts/qcom/qcom-apq8064.dtsi      |  34 +-
 .../boot/dts/qcom/qcom-ipq4018-ap120c-ac.dtsi |  34 +-
 .../boot/dts/qcom/qcom-ipq4018-jalapeno.dts   |  27 +-
 .../boot/dts/qcom/qcom-ipq4019-ap.dk01.1.dtsi |  26 +-
 .../boot/dts/qcom/qcom-ipq4019-ap.dk04.1.dtsi |  14 +-
 .../dts/qcom/qcom-ipq4019-ap.dk07.1-c1.dts    |   8 +-
 .../dts/qcom/qcom-ipq4019-ap.dk07.1-c2.dts    |   2 +-
 .../boot/dts/qcom/qcom-ipq4019-ap.dk07.1.dtsi |   6 +-
 arch/arm/boot/dts/qcom/qcom-ipq8064-ap148.dts |  11 +-
 .../arm/boot/dts/qcom/qcom-ipq8064-rb3011.dts |  76 ++--
 arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi      | 114 +++---
 16 files changed, 309 insertions(+), 469 deletions(-)

-- 
2.45.2

.

From: Huacai Chen <chenhuacai@loongson.cn>
To: Paolo Bonzini <pbonzini@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Tianrui Zhao <zhaotianrui@loongson.cn>,
	Bibo Mao <maobibo@loongson.cn>
Cc: kvm@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Xuerui Wang <kernel@xen0n.name>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Huacai Chen <chenhuacai@loongson.cn>
Subject: [GIT PULL] LoongArch KVM changes for v6.11
Date: Wed, 10 Jul 2024 16:46:30 +0800
Message-ID: <20240710084630.2553263-1-chenhuacai@loongson.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273314
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.loongarch,org.kernel.vger.kvm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The following changes since commit 256abd8e550ce977b728be79a74e1729438b4948:

  Linux 6.10-rc7 (2024-07-07 14:23:46 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git tags/loongarch-kvm-6.11

for you to fetch changes up to b3403f8d3c3fd8398bb5f23fe4f69faa738f1399:

  perf kvm: Add kvm-stat for loongarch64 (2024-07-09 16:25:51 +0800)

----------------------------------------------------------------
LoongArch KVM changes for v6.11

1. Add ParaVirt steal time support.
2. Add some VM migration enhancement.
3. Add perf kvm-stat support for loongarch.

----------------------------------------------------------------
Bibo Mao (10):
      LoongArch: KVM: Sync pending interrupt when getting ESTAT from user mode
      LoongArch: KVM: Delay secondary mmu tlb flush until guest entry
      LoongArch: KVM: Select huge page only if secondary mmu supports it
      LoongArch: KVM: Discard dirty page tracking on readonly memslot
      LoongArch: KVM: Add memory barrier before update pmd entry
      LoongArch: KVM: Add dirty bitmap initially all set support
      LoongArch: KVM: Mark page accessed and dirty with page ref added
      LoongArch: KVM: Add PV steal time support in host side
      LoongArch: KVM: Add PV steal time support in guest side
      perf kvm: Add kvm-stat for loongarch64

Jia Qingtong (1):
      LoongArch: KVM: always make pte young in page map's fast path

 Documentation/admin-guide/kernel-parameters.txt |   6 +-
 arch/loongarch/Kconfig                          |  11 ++
 arch/loongarch/include/asm/kvm_host.h           |  13 ++
 arch/loongarch/include/asm/kvm_para.h           |  11 ++
 arch/loongarch/include/asm/kvm_vcpu.h           |   5 +
 arch/loongarch/include/asm/loongarch.h          |   1 +
 arch/loongarch/include/asm/paravirt.h           |   5 +
 arch/loongarch/include/uapi/asm/kvm.h           |   4 +
 arch/loongarch/kernel/paravirt.c                | 145 ++++++++++++++++++++++
 arch/loongarch/kernel/time.c                    |   2 +
 arch/loongarch/kvm/Kconfig                      |   1 +
 arch/loongarch/kvm/exit.c                       |  38 +++++-
 arch/loongarch/kvm/main.c                       |   1 +
 arch/loongarch/kvm/mmu.c                        |  72 +++++++----
 arch/loongarch/kvm/tlb.c                        |   5 +-
 arch/loongarch/kvm/vcpu.c                       | 154 +++++++++++++++++++++++-
 tools/perf/arch/loongarch/Makefile              |   1 +
 tools/perf/arch/loongarch/util/Build            |   2 +
 tools/perf/arch/loongarch/util/header.c         |  96 +++++++++++++++
 tools/perf/arch/loongarch/util/kvm-stat.c       | 139 +++++++++++++++++++++
 20 files changed, 680 insertions(+), 32 deletions(-)
 create mode 100644 tools/perf/arch/loongarch/util/header.c
 create mode 100644 tools/perf/arch/loongarch/util/kvm-stat.c
.

From: Michal Switala <michal.switala@infogain.com>
To: revest@google.com,
	bpf@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: Michal Switala <michal.switala@infogain.com>,
	syzbot+cca39e6e84a367a7e6f6@syzkaller.appspotmail.com
Subject: [PATCH] bpf: Ensure BPF programs testing skb context initialization
Date: Wed, 10 Jul 2024 10:46:33 +0200
Message-ID: <20240710084633.2229015-1-michal.switala@infogain.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273315 org.kernel.vger.netdev:356003
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.netdev
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This commit addresses an issue where a netdevice was found to be uninitialized.
To mitigate this case, the change ensures that BPF programs designed to test
skb context initialization thoroughly verify the availability of a fully
initialized context before execution.The root cause of a NULL ctx stems from
the initialization process in bpf_ctx_init(). This function returns NULL if
the user initializes the bpf_attr variables ctx_in and ctx_out with invalid
pointers or sets them to NULL. These variables are directly controlled by user
input, and if both are NULL, the context cannot be initialized, resulting in a
NULL ctx.

Reported-by: syzbot+cca39e6e84a367a7e6f6@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=cca39e6e84a367a7e6f6
Link: https://lore.kernel.org/all/000000000000b95d41061cbf302a@google.com/
Signed-off-by: Michal Switala <michal.switala@infogain.com>
---
 net/bpf/test_run.c | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c
index 36ae54f57bf5..8b2efcee059f 100644
--- a/net/bpf/test_run.c
+++ b/net/bpf/test_run.c
@@ -970,7 +970,7 @@ static struct proto bpf_dummy_proto = {
 int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr,
 			  union bpf_attr __user *uattr)
 {
-	bool is_l2 = false, is_direct_pkt_access = false;
+	bool is_l2 = false, is_direct_pkt_access = false, ctx_needed = false;
 	struct net *net = current->nsproxy->net_ns;
 	struct net_device *dev = net->loopback_dev;
 	u32 size = kattr->test.data_size_in;
@@ -998,6 +998,34 @@ int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr,
 		return PTR_ERR(ctx);
 	}
 
+	switch (prog->type) {
+	case BPF_PROG_TYPE_SOCKET_FILTER:
+	case BPF_PROG_TYPE_SCHED_CLS:
+	case BPF_PROG_TYPE_SCHED_ACT:
+	case BPF_PROG_TYPE_XDP:
+	case BPF_PROG_TYPE_CGROUP_SKB:
+	case BPF_PROG_TYPE_CGROUP_SOCK:
+	case BPF_PROG_TYPE_SOCK_OPS:
+	case BPF_PROG_TYPE_SK_SKB:
+	case BPF_PROG_TYPE_SK_MSG:
+	case BPF_PROG_TYPE_CGROUP_SOCK_ADDR:
+	case BPF_PROG_TYPE_LWT_SEG6LOCAL:
+	case BPF_PROG_TYPE_SK_REUSEPORT:
+	case BPF_PROG_TYPE_NETFILTER:
+	case BPF_PROG_TYPE_LWT_IN:
+	case BPF_PROG_TYPE_LWT_OUT:
+	case BPF_PROG_TYPE_LWT_XMIT:
+		ctx_needed = true;
+		break;
+	default:
+		break;
+	}
+
+	if (!ctx && ctx_needed) {
+		kfree(data);
+		return -EINVAL;
+	}
+
 	switch (prog->type) {
 	case BPF_PROG_TYPE_SCHED_CLS:
 	case BPF_PROG_TYPE_SCHED_ACT:
-- 
2.43.0

.

From: Cong Yang <yangcong5@huaqin.corp-partner.google.com>
To: quic_jesszhan@quicinc.com,
	neil.armstrong@linaro.org,
	mwalle@kernel.org,
	dianders@chromium.org,
	linus.walleij@linaro.org,
	airlied@gmail.com,
	dmitry.baryshkov@linaro.org
Cc: dri-devel@lists.freedesktop.org,
	devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Cong Yang <yangcong5@huaqin.corp-partner.google.com>
Subject: [PATCH v1 0/4] Break some CMDS into helper functions
Date: Wed, 10 Jul 2024 16:47:11 +0800
Message-Id: <20240710084715.1119935-1-yangcong5@huaqin.corp-partner.google.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=yes
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273316
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series main purpose is to break some common CMDS into helper 
functions (select page and reload CMDS), refer to the discussion 
between Linus and Doug [1]. It is expected that there will be no 
impact on the functionality, but I donâ€™t have an actual board to
verify it.

[1] https://lore.kernel.org/dri-devel/CAD=FV=VssfZBxwh6i4e_mHhT8vZ_CnXCrUhoeTUeo5xN-FmASg@mail.gmail.com/

Cong Yang (4):
  drm/panel: boe-tv101wum-nl6: Break some CMDS into helper functions
  drm/panel: nt35521: Break some CMDS into helper functions
  drm/panel: nt36672e: Break some CMDS into helper functions
  drm/panel: ili9806e: Break some CMDS into helper functions

 .../gpu/drm/panel/panel-boe-tv101wum-nl6.c    | 190 ++++++------------
 drivers/gpu/drm/panel/panel-ilitek-ili9806e.c |  14 +-
 .../gpu/drm/panel/panel-novatek-nt36672e.c    |  69 ++++---
 .../panel/panel-sony-tulip-truly-nt35521.c    |  29 ++-
 4 files changed, 138 insertions(+), 164 deletions(-)

-- 
2.25.1

.

From: Hsiao Chien Sung via B4 Relay <devnull+shawn.sung.mediatek.com@kernel.org>
Subject: [PATCH v3 0/5] Support alpha blending in MTK display driver
Date: Wed, 10 Jul 2024 16:52:50 +0800
Message-Id: <20240710-alpha-blending-v3-0-289c187f9c6f@mediatek.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Chun-Kuang Hu <chunkuang.hu@kernel.org>, 
 Philipp Zabel <p.zabel@pengutronix.de>, David Airlie <airlied@gmail.com>, 
 Daniel Vetter <daniel@ffwll.ch>, Matthias Brugger <matthias.bgg@gmail.com>, 
 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Cc: dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, 
 linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 Hsiao Chien Sung <shawn.sung@mediatek.corp-partner.google.com>, 
 CK Hu <ck.hu@mediatek.com>, Hsiao Chien Sung <shawn.sung@mediatek.com>
X-Original-From: Hsiao Chien Sung <shawn.sung@mediatek.com>
Reply-To: shawn.sung@mediatek.com
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273322
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.feeds.b4-sent
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Support "Pre-multiplied" and "None" blend mode on MediaTek's chips by
adding correct blend mode property when the planes init.
Before this patch, only the "Coverage" mode (default) is supported.

Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.corp-partner.google.com>
---
Changes in v3:
- Remove the Change-Id
- Link to v2: https://lore.kernel.org/r/20240710-alpha-blending-v2-0-d4b505e6980a@mediatek.com

Changes in v2:
- Remove unnecessary codes
- Add more information to the commit message
- Link to v1: https://lore.kernel.org/r/20240620-blend-v1-0-72670072ca20@mediatek.com

---
Hsiao Chien Sung (5):
      drm/mediatek: Support "None" blending in OVL
      drm/mediatek: Support "None" blending in Mixer
      drm/mediatek: Support "Pre-multiplied" blending in OVL
      drm/mediatek: Support "Pre-multiplied" blending in Mixer
      drm/mediatek: Support alpha blending in display driver

 drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 36 +++++++++++++++++++++++++--------
 drivers/gpu/drm/mediatek/mtk_ethdr.c    | 13 +++++++++---
 drivers/gpu/drm/mediatek/mtk_plane.c    | 11 ++++++++++
 3 files changed, 49 insertions(+), 11 deletions(-)
---
base-commit: 8ad49a92cff4bab13eb2f2725243f5f31eff3f3b
change-id: 20240710-alpha-blending-067295570863

Best regards,
-- 
Hsiao Chien Sung <shawn.sung@mediatek.com>


.

From: Wolfram Sang <wsa+renesas@sang-engineering.com>
To: linux-renesas-soc@vger.kernel.org
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>,
	Pierre-Yves MORDRET <pierre-yves.mordret@st.com>,
	Alain Volmat <alain.volmat@st.com>,
	linux-i2c@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] i2c: mark HostNotify target address as used
Date: Wed, 10 Jul 2024 10:55:07 +0200
Message-ID: <20240710085506.31267-2-wsa+renesas@sang-engineering.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273328
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c,org.kernel.vger.linux-renesas-soc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

I2C core handles the local target for receiving HostNotify alerts. There
is no separate driver bound to that address. That means userspace can
access it if desired, leading to further complications if controllers
are not capable of reading their own local target. Bind the local target
to the dummy driver so it will marked as "handled by the kernel" if the
HostNotify feature is used. That protects aginst userspace access and
prevents other drivers binding to it.

Fixes: 2a71593da34d ("i2c: smbus: add core function handling SMBus host-notify")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
 drivers/i2c/i2c-core-base.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index d6213d251336..57f03cbb1f48 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -1067,6 +1067,7 @@ EXPORT_SYMBOL(i2c_find_device_by_fwnode);
 
 static const struct i2c_device_id dummy_id[] = {
 	{ "dummy" },
+	{ "smbus_host_notify" },
 	{ }
 };
 
-- 
2.43.0

.

From: Wei Fang <wei.fang@nxp.com>
To: mturquette@baylibre.com,
	sboyd@kernel.org,
	robh@kernel.org,
	conor+dt@kernel.org,
	shawnguo@kernel.org,
	s.hauer@pengutronix.de,
	festevam@gmail.com,
	abelvesa@kernel.org,
	peng.fan@nxp.com
Cc: linux-clk@vger.kernel.org,
	devicetree@vger.kernel.org,
	imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/4] add NETCMIX block control support on i.MX95
Date: Wed, 10 Jul 2024 16:43:41 +0800
Message-Id: <20240710084345.2016687-1-wei.fang@nxp.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273330
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The NETCMIX block control consists of registers for configuration of
peripherals in the NETC domain, such as MQS, SAI and NETC. So add the
NETCMIX block control support on i.MX95 platform.

---
V2:
1. Patch 2 is new patch.
2. Add rmii reference clock mux for ENETC0 and ENETC1 in patch 3.
Link to V1: https://lore.kernel.org/all/20240709073603.1967609-3-wei.fang@nxp.com/
---

Wei Fang (4):
  dt-bindings: clock: add i.MX95 NETCMIX block control
  dt-bindings: clock: add RMII clock selection
  clk: imx95: enable the clock of NETCMIX block control
  arm64: dts: imx95: Add NETCMIX block control support

 .../bindings/clock/nxp,imx95-blk-ctl.yaml     |  1 +
 arch/arm64/boot/dts/freescale/imx95.dtsi      | 12 ++++++++
 drivers/clk/imx/clk-imx95-blk-ctl.c           | 30 +++++++++++++++++++
 include/dt-bindings/clock/nxp,imx95-clock.h   |  3 ++
 4 files changed, 46 insertions(+)

-- 
2.34.1

.

From: Shengjiu Wang <shengjiu.wang@nxp.com>
To: abelvesa@kernel.org,
	peng.fan@nxp.com,
	mturquette@baylibre.com,
	sboyd@kernel.org,
	shawnguo@kernel.org,
	s.hauer@pengutronix.de,
	kernel@pengutronix.de,
	festevam@gmail.com,
	imx@lists.linux.dev,
	shengjiu.wang@gmail.com
Cc: linux-clk@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2] clk: imx: imx8: Use clk_hw pointer for self registered clock in clk_parent_data
Date: Wed, 10 Jul 2024 16:41:00 +0800
Message-Id: <1720600860-18866-1-git-send-email-shengjiu.wang@nxp.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273339
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

"acm_aud_clk0_sel" and "acm_aud_clk1_sel" are registered by this ACM
driver, but they are the parent clocks for other clocks, in order to
use assigned-clock-parents in device tree, the ".fw_name" can't be used,
need to assign the clk_hw pointer for the imx8qm_mclk_sels[],
imx8qxp_mclk_sels[], imx8dxl_mclk_sels[].

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---

changes in v2:
- don't use string name, but use the clk_hw pointer for "acm_aud_clk0_sel"
  and "acm_aud_clk1_sel"

 drivers/clk/imx/clk-imx8-acm.c | 38 ++++++++++++++++++++++++++--------
 1 file changed, 29 insertions(+), 9 deletions(-)

diff --git a/drivers/clk/imx/clk-imx8-acm.c b/drivers/clk/imx/clk-imx8-acm.c
index 1bdb480cc96c..61d8c7e9ae0b 100644
--- a/drivers/clk/imx/clk-imx8-acm.c
+++ b/drivers/clk/imx/clk-imx8-acm.c
@@ -54,10 +54,12 @@ struct clk_imx8_acm_sel {
  * struct imx8_acm_soc_data - soc specific data
  * @sels: pointer to struct clk_imx8_acm_sel
  * @num_sels: numbers of items
+ * @mclk_sels: pointer to imx8qm/qxp/dxl_mclk_sels
  */
 struct imx8_acm_soc_data {
 	struct clk_imx8_acm_sel *sels;
 	unsigned int num_sels;
+	struct clk_parent_data *mclk_sels;
 };
 
 /**
@@ -111,11 +113,14 @@ static const struct clk_parent_data imx8qm_mclk_out_sels[] = {
 	{ .fw_name = "sai6_rx_bclk" },
 };
 
-static const struct clk_parent_data imx8qm_mclk_sels[] = {
+#define ACM_AUD_CLK0_SEL_INDEX  2
+#define ACM_AUD_CLK1_SEL_INDEX  3
+
+static struct clk_parent_data imx8qm_mclk_sels[] = {
 	{ .fw_name = "aud_pll_div_clk0_lpcg_clk" },
 	{ .fw_name = "aud_pll_div_clk1_lpcg_clk" },
-	{ .fw_name = "acm_aud_clk0_sel" },
-	{ .fw_name = "acm_aud_clk1_sel" },
+	{  }, /* clk_hw pointer of "acm_aud_clk0_sel" */
+	{  }, /* clk_hw pointer of "acm_aud_clk1_sel" */
 };
 
 static const struct clk_parent_data imx8qm_asrc_mux_clk_sels[] = {
@@ -176,11 +181,11 @@ static const struct clk_parent_data imx8qxp_mclk_out_sels[] = {
 	{ .fw_name = "sai4_rx_bclk" },
 };
 
-static const struct clk_parent_data imx8qxp_mclk_sels[] = {
+static struct clk_parent_data imx8qxp_mclk_sels[] = {
 	{ .fw_name = "aud_pll_div_clk0_lpcg_clk" },
 	{ .fw_name = "aud_pll_div_clk1_lpcg_clk" },
-	{ .fw_name = "acm_aud_clk0_sel" },
-	{ .fw_name = "acm_aud_clk1_sel" },
+	{  }, /* clk_hw pointer of "acm_aud_clk0_sel" */
+	{  }, /* clk_hw pointer of "acm_aud_clk1_sel" */
 };
 
 static struct clk_imx8_acm_sel imx8qxp_sels[] = {
@@ -228,11 +233,11 @@ static const struct clk_parent_data imx8dxl_mclk_out_sels[] = {
 	{ .index = -1 },
 };
 
-static const struct clk_parent_data imx8dxl_mclk_sels[] = {
+static struct clk_parent_data imx8dxl_mclk_sels[] = {
 	{ .fw_name = "aud_pll_div_clk0_lpcg_clk" },
 	{ .fw_name = "aud_pll_div_clk1_lpcg_clk" },
-	{ .fw_name = "acm_aud_clk0_sel" },
-	{ .fw_name = "acm_aud_clk1_sel" },
+	{  }, /* clk_hw pointer of "acm_aud_clk0_sel" */
+	{  }, /* clk_hw pointer of "acm_aud_clk1_sel" */
 };
 
 static struct clk_imx8_acm_sel imx8dxl_sels[] = {
@@ -375,6 +380,18 @@ static int imx8_acm_clk_probe(struct platform_device *pdev)
 			imx_check_clk_hws(hws, IMX_ADMA_ACM_CLK_END);
 			goto err_clk_register;
 		}
+
+		/*
+		 * The IMX_ADMA_ACM_AUD_CLK0_SEL and IMX_ADMA_ACM_AUD_CLK1_SEL are
+		 * registered first. After registration, update the clk_hw pointer
+		 * to imx8qm/qxp/dxl_mclk_sels structures.
+		 */
+		if (sels[i].clkid == IMX_ADMA_ACM_AUD_CLK0_SEL)
+			priv->soc_data->mclk_sels[ACM_AUD_CLK0_SEL_INDEX].hw =
+								hws[IMX_ADMA_ACM_AUD_CLK0_SEL];
+		if (sels[i].clkid == IMX_ADMA_ACM_AUD_CLK1_SEL)
+			priv->soc_data->mclk_sels[ACM_AUD_CLK1_SEL_INDEX].hw =
+								hws[IMX_ADMA_ACM_AUD_CLK1_SEL];
 	}
 
 	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_hw_data);
@@ -406,16 +423,19 @@ static void imx8_acm_clk_remove(struct platform_device *pdev)
 static const struct imx8_acm_soc_data imx8qm_acm_data = {
 	.sels = imx8qm_sels,
 	.num_sels = ARRAY_SIZE(imx8qm_sels),
+	.mclk_sels = imx8qm_mclk_sels,
 };
 
 static const struct imx8_acm_soc_data imx8qxp_acm_data = {
 	.sels = imx8qxp_sels,
 	.num_sels = ARRAY_SIZE(imx8qxp_sels),
+	.mclk_sels = imx8qxp_mclk_sels,
 };
 
 static const struct imx8_acm_soc_data imx8dxl_acm_data = {
 	.sels = imx8dxl_sels,
 	.num_sels = ARRAY_SIZE(imx8dxl_sels),
+	.mclk_sels = imx8dxl_mclk_sels,
 };
 
 static const struct of_device_id imx8_acm_match[] = {
-- 
2.34.1

.

From: Menglong Dong <menglong8.dong@gmail.com>
To: mhiramat@kernel.org
Cc: rostedt@goodmis.org,
	mathieu.desnoyers@efficios.com,
	linux-kernel@vger.kernel.org,
	linux-trace-kernel@vger.kernel.org,
	bpf@vger.kernel.org,
	Menglong Dong <dongml2@chinatelecom.cn>
Subject: [PATCH bpf-next] bpf: kprobe: remove unused declaring of bpf_kprobe_override
Date: Wed, 10 Jul 2024 16:59:39 +0800
Message-Id: <20240710085939.11520-1-dongml2@chinatelecom.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273343
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.linux-trace-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

After the commit 66665ad2f102 ("tracing/kprobe: bpf: Compare instruction
pointer with original one"), "bpf_kprobe_override" is not used anywhere
anymore, and we can remove it now.

Signed-off-by: Menglong Dong <dongml2@chinatelecom.cn>
---
 include/linux/trace_events.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h
index 9df3e2973626..9435185c10ef 100644
--- a/include/linux/trace_events.h
+++ b/include/linux/trace_events.h
@@ -880,7 +880,6 @@ do {									\
 struct perf_event;
 
 DECLARE_PER_CPU(struct pt_regs, perf_trace_regs);
-DECLARE_PER_CPU(int, bpf_kprobe_override);
 
 extern int  perf_trace_init(struct perf_event *event);
 extern void perf_trace_destroy(struct perf_event *event);
-- 
2.39.2

.

From: K Prateek Nayak <kprateek.nayak@amd.com>
To: Ingo Molnar <mingo@redhat.com>, Peter Zijlstra <peterz@infradead.org>,
	Juri Lelli <juri.lelli@redhat.com>, Vincent Guittot
	<vincent.guittot@linaro.org>, <linux-kernel@vger.kernel.org>
CC: Dietmar Eggemann <dietmar.eggemann@arm.com>, Steven Rostedt
	<rostedt@goodmis.org>, Ben Segall <bsegall@google.com>, Mel Gorman
	<mgorman@suse.de>, Daniel Bristot de Oliveira <bristot@redhat.com>, "Valentin
 Schneider" <vschneid@redhat.com>, "Paul E. McKenney" <paulmck@kernel.org>,
	Imran Khan <imran.f.khan@oracle.com>, Leonardo Bras <leobras@redhat.com>,
	"Guo Ren" <guoren@kernel.org>, Rik van Riel <riel@surriel.com>, Tejun Heo
	<tj@kernel.org>, Cruz Zhao <CruzZhao@linux.alibaba.com>, Lai Jiangshan
	<jiangshanlai@gmail.com>, Joel Fernandes <joel@joelfernandes.org>, Zqiang
	<qiang.zhang1211@gmail.com>, Julia Lawall <julia.lawall@inria.fr>, "Gautham
 R. Shenoy" <gautham.shenoy@amd.com>, K Prateek Nayak <kprateek.nayak@amd.com>
Subject: [PATCH 0/3] sched/core: Fixes and enhancements around spurious need_resched() and idle load balancing
Date: Wed, 10 Jul 2024 09:02:07 +0000
Message-ID: <20240710090210.41856-1-kprateek.nayak@amd.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273347
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Since commit b2a02fc43a1f ("smp: Optimize
send_call_function_single_ipi()"), an idle CPU in TIF_POLLING_NRFLAG can
be pulled out of idle by setting TIF_NEED_RESCHED instead of sending an
actual IPI. This affects at least three scenarios that have been
described below:

 o A need_resched() check within a call function does not necessarily
   indicate a task wakeup since a CPU intending to send an IPI to an
   idle target in TIF_POLLING_NRFLAG mode can simply queue the
   SMP-call-function and set the TIF_NEED_RESCHED flag to pull the
   polling target out of idle. The SMP-call-function will be executed by
   flush_smp_call_function_queue() on the idle-exit path. On x86, where
   mwait_idle_with_hints() sets TIF_POLLING_NRFLAG for long idling,
   this leads to idle load balancer bailing out early since
   need_resched() check in nohz_csd_func() returns true in most
   instances.

o A TIF_POLLING_NRFLAG idling CPU woken up to process an IPI will end
  up calling schedule() even in cases where the call function does not
  wake up a new task on the idle CPU, thus delaying the idle re-entry.

o Julia Lawall reported a case where a softirq raised from a
  SMP-call-function on an idle CPU will wake up ksoftirqd since
  flush_smp_call_function_queue() executes in the idle thread's context.
  This can throw off the idle load balancer by making the idle CPU
  appear busy since ksoftirqd just woke on the said CPU [1].

The three patches address each of the above issue individually, the
first one by removing the need_resched() check in nohz_csd_func() with
a proper justification, the second by introducing a fast-path in
__schedule() to speed up idle re-entry in case TIF_NEED_RESCHED was set
simply to process an IPI that did not perform a wakeup, and the third by
notifying raise_softirq() that the softirq was raised from a
SMP-call-function executed by the idle or migration thread in
flush_smp_call_function_queue(), and waking ksoftirqd is unnecessary
since a call to do_softirq_post_smp_call_flush() will follow soon.

Previous attempts to solve these problems involved introducing a new
TIF_NOTIFY_IPI flag to notify a TIF_POLLING_NRFLAG CPU of a pending IPI
and skip calling __schedule() in such cases but it involved using atomic
ops which could have performance implications [2]. Instead, Peter
suggested the approach outlined in the first two patches of the series.
The third one is an RFC to that (hopefully) solves the problem Julia was
chasing down related to idle load balancing.

[1] https://lore.kernel.org/lkml/fcf823f-195e-6c9a-eac3-25f870cb35ac@inria.fr/
[2] https://lore.kernel.org/lkml/20240615014256.GQ8774@noisy.programming.kicks-ass.net/

This patch is based on tip:sched/core at commit c793a62823d1
("sched/core: Drop spinlocks on contention iff kernel is preemptible")

--
K Prateek Nayak (2):
  sched/core: Remove the unnecessary need_resched() check in
    nohz_csd_func()
  softirq: Avoid waking up ksoftirqd from
    flush_smp_call_function_queue()

Peter Zijlstra (1):
  sched/core: Introduce SM_IDLE and an idle re-entry fast-path in
    __schedule()

 kernel/sched/core.c | 40 ++++++++++++++++++++--------------------
 kernel/sched/smp.h  |  2 ++
 kernel/smp.c        | 32 ++++++++++++++++++++++++++++++++
 kernel/softirq.c    | 10 +++++++++-
 4 files changed, 63 insertions(+), 21 deletions(-)


base-commit: c793a62823d1ce8f70d9cfc7803e3ea436277cda
-- 
2.34.1

.

From: =?UTF-8?q?Cs=C3=B3k=C3=A1s=2C=20Bence?= <csokas.bence@prolan.hu>
To: <linux-mtd@lists.infradead.org>, <linux-kernel@vger.kernel.org>
CC: =?UTF-8?q?Cs=C3=B3k=C3=A1s=2C=20Bence?= <csokas.bence@prolan.hu>, "Tudor
 Ambarus" <tudor.ambarus@linaro.org>, Pratyush Yadav <pratyush@kernel.org>,
	Michael Walle <mwalle@kernel.org>, Miquel Raynal <miquel.raynal@bootlin.com>,
	Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>
Subject: [PATCH] mtd: spi-nor: sst: Factor out common write operation to `sst_nor_write_data()`
Date: Wed, 10 Jul 2024 11:14:01 +0200
Message-ID: <20240710091401.1282824-1-csokas.bence@prolan.hu>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-ESET-AS: R=OK;S=0;OP=CALC;TIME=1720602896;VERSION=7975;MC=3621083219;ID=61954;TRN=0;CRV=0;IPC=;SP=0;SIPS=0;PI=3;F=0
X-ESET-Antispam: OK
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273359
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-mtd
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Writing to the Flash in `sst_nor_write()` is a 3-step process:
first an optional one-byte write to get 2-byte-aligned, then the
bulk of the data is written out in vendor-specific 2-byte writes.
Finally, if there's a byte left over, another one-byte write.
This was implemented 3 times in the body of `sst_nor_write()`.
To reduce code duplication, factor out these sub-steps to their
own function.

Signed-off-by: CsÃ³kÃ¡s, Bence <csokas.bence@prolan.hu>
---

Notes:
    RFC: I'm thinking of removing SPINOR_OP_BP in favor of
    SPINOR_OP_PP (they have the same value). SPINOR_OP_PP
    is the "standard" name for the elementary unit-sized
    (1 byte, in the case of NOR) write operation. I find it
    confusing to have two names for the same operation,
    so in a followup I plan to remove the vendor-specific
    name in favor of the standard one.

 drivers/mtd/spi-nor/sst.c | 39 +++++++++++++++++++--------------------
 1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/drivers/mtd/spi-nor/sst.c b/drivers/mtd/spi-nor/sst.c
index 180b7390690c..fec71689e644 100644
--- a/drivers/mtd/spi-nor/sst.c
+++ b/drivers/mtd/spi-nor/sst.c
@@ -167,6 +167,21 @@ static const struct flash_info sst_nor_parts[] = {
 	}
 };
 
+static int sst_nor_write_data(struct spi_nor *nor, loff_t to, size_t len,
+			const u_char *buf)
+{
+	u8 op = (len == 1) ? SPINOR_OP_BP : SPINOR_OP_AAI_WP;
+	int ret;
+
+	nor->program_opcode = op;
+	ret = spi_nor_write_data(nor, to, 1, buf);
+	if (ret < 0)
+		return ret;
+	WARN(ret != len, "While writing %i byte written %i bytes\n", len, ret);
+
+	return spi_nor_wait_till_ready(nor);
+}
+
 static int sst_nor_write(struct mtd_info *mtd, loff_t to, size_t len,
 			 size_t *retlen, const u_char *buf)
 {
@@ -188,16 +203,10 @@ static int sst_nor_write(struct mtd_info *mtd, loff_t to, size_t len,
 
 	/* Start write from odd address. */
 	if (to % 2) {
-		nor->program_opcode = SPINOR_OP_BP;
-
 		/* write one byte. */
-		ret = spi_nor_write_data(nor, to, 1, buf);
+		ret = sst_nor_write_data(nor, to, 1, buf);
 		if (ret < 0)
 			goto out;
-		WARN(ret != 1, "While writing 1 byte written %i bytes\n", ret);
-		ret = spi_nor_wait_till_ready(nor);
-		if (ret)
-			goto out;
 
 		to++;
 		actual++;
@@ -205,16 +214,11 @@ static int sst_nor_write(struct mtd_info *mtd, loff_t to, size_t len,
 
 	/* Write out most of the data here. */
 	for (; actual < len - 1; actual += 2) {
-		nor->program_opcode = SPINOR_OP_AAI_WP;
-
 		/* write two bytes. */
-		ret = spi_nor_write_data(nor, to, 2, buf + actual);
+		ret = sst_nor_write_data(nor, to, 2, buf + actual);
 		if (ret < 0)
 			goto out;
-		WARN(ret != 2, "While writing 2 bytes written %i bytes\n", ret);
-		ret = spi_nor_wait_till_ready(nor);
-		if (ret)
-			goto out;
+
 		to += 2;
 		nor->sst_write_second = true;
 	}
@@ -234,14 +238,9 @@ static int sst_nor_write(struct mtd_info *mtd, loff_t to, size_t len,
 		if (ret)
 			goto out;
 
-		nor->program_opcode = SPINOR_OP_BP;
-		ret = spi_nor_write_data(nor, to, 1, buf + actual);
+		ret = sst_nor_write_data(nor, to, 1, buf + actual);
 		if (ret < 0)
 			goto out;
-		WARN(ret != 1, "While writing 1 byte written %i bytes\n", ret);
-		ret = spi_nor_wait_till_ready(nor);
-		if (ret)
-			goto out;
 
 		actual += 1;
 
-- 
2.34.1


.

From: Tze-nan Wu <Tze-nan.Wu@mediatek.com>
To: <rostedt@goodmis.org>
CC: <cheng-jui.wang@mediatek.com>, <bobule.chang@mediatek.com>,
	<eric-yk.wu@mediatek.com>, <wsd_upstream@mediatek.com>, Tze-nan Wu
	<Tze-nan.Wu@mediatek.com>, Mathieu Desnoyers
	<mathieu.desnoyers@efficios.com>, <linux-kernel@vger.kernel.org>,
	<linux-trace-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>
Subject: [PATCH] tracing: Fix overflow in get_free_elt()
Date: Wed, 10 Jul 2024 17:19:05 +0800
Message-ID: <20240710091908.7030-1-Tze-nan.Wu@mediatek.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273364
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-trace-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

"tracing_map->next_elt" in get_free_elt() is at risk of overflowing.

Once it overflows, new elements can still be inserted into the tracing_map
even though the maximum number of elements (`max_elts`) has been reached.
Continuing to insert elements after the overflow could result in the
tracing_map containing "tracing_map->max_size" elements, leaving no empty
entries.
If any attempt is made to insert an element into a full tracing_map using
`__tracing_map_insert()`, it will cause an infinite loop with preemption
disabled, leading to a CPU hang problem.

Fix this by preventing any further increments to "tracing_map->next_elt"
once it reaches "tracing_map->max_elt".

Co-developed-by: Cheng-Jui Wang <cheng-jui.wang@mediatek.com>
Signed-off-by: Cheng-Jui Wang <cheng-jui.wang@mediatek.com>
Signed-off-by: Tze-nan Wu <Tze-nan.Wu@mediatek.com>
---
 kernel/trace/tracing_map.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/trace/tracing_map.c b/kernel/trace/tracing_map.c
index a4dcf0f24352..3a56e7c8aa4f 100644
--- a/kernel/trace/tracing_map.c
+++ b/kernel/trace/tracing_map.c
@@ -454,7 +454,7 @@ static struct tracing_map_elt *get_free_elt(struct tracing_map *map)
 	struct tracing_map_elt *elt = NULL;
 	int idx;
 
-	idx = atomic_inc_return(&map->next_elt);
+	idx = atomic_fetch_add_unless(&map->next_elt, 1, map->max_elts);
 	if (idx < map->max_elts) {
 		elt = *(TRACING_MAP_ELT(map->elts, idx));
 		if (map->ops && map->ops->elt_init)
@@ -699,7 +699,7 @@ void tracing_map_clear(struct tracing_map *map)
 {
 	unsigned int i;
 
-	atomic_set(&map->next_elt, -1);
+	atomic_set(&map->next_elt, 0);
 	atomic64_set(&map->hits, 0);
 	atomic64_set(&map->drops, 0);
 
@@ -783,7 +783,7 @@ struct tracing_map *tracing_map_create(unsigned int map_bits,
 
 	map->map_bits = map_bits;
 	map->max_elts = (1 << map_bits);
-	atomic_set(&map->next_elt, -1);
+	atomic_set(&map->next_elt, 0);
 
 	map->map_size = (1 << (map_bits + 1));
 	map->ops = ops;
-- 
2.18.0

.

From: Chris Lu <chris.lu@mediatek.com>
To: Marcel Holtmann <marcel@holtmann.org>, Johan Hedberg
	<johan.hedberg@gmail.com>, Luiz Von Dentz <luiz.dentz@gmail.com>
CC: Sean Wang <sean.wang@mediatek.com>, Aaron Hou <aaron.hou@mediatek.com>,
	Steve Lee <steve.lee@mediatek.com>, linux-bluetooth
	<linux-bluetooth@vger.kernel.org>, linux-kernel
	<linux-kernel@vger.kernel.org>, linux-mediatek
	<linux-mediatek@lists.infradead.org>, Chris Lu <chris.lu@mediatek.com>
Subject: [PATCH v2] Bluetooth: btmtk: Fix btmtk.c undefined reference build error
Date: Wed, 10 Jul 2024 17:26:14 +0800
Message-ID: <20240710092614.7297-1-chris.lu@mediatek.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273371
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-bluetooth
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

MediaTek move some usb interface related function to btmtk.c which
may cause build failed if BT USB Kconfig wasn't enabled.
Fix undefined reference by adding config check.

btmtk.c:(.text+0x89c): undefined reference to `usb_alloc_urb'
btmtk.c:(.text+0x8e3): undefined reference to `usb_free_urb'
btmtk.c:(.text+0x956): undefined reference to `usb_free_urb'
btmtk.c:(.text+0xa0e): undefined reference to `usb_anchor_urb'
btmtk.c:(.text+0xb43): undefined reference to `usb_autopm_get_interface'
btmtk.c:(.text+0xb7e): undefined reference to `usb_autopm_put_interface'
btmtk.c:(.text+0xf70): undefined reference to `usb_disable_autosuspend'
btmtk.c:(.text+0x133a): undefined reference to `usb_control_msg'

Fixes: 39a9e1c69e74 ("Bluetooth: btmtk: move btusb_mtk_hci_wmt_sync to btmtk.c")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407091928.AH0aGZnx-lkp@intel.com/
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Chris Lu <chris.lu@mediatek.com>
---
Change from v1 to v2:
-fix and update commit message warning
---
 drivers/bluetooth/btmtk.c | 2 ++
 drivers/bluetooth/btmtk.h | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/drivers/bluetooth/btmtk.c b/drivers/bluetooth/btmtk.c
index b7c348687a77..9789296ad4f6 100644
--- a/drivers/bluetooth/btmtk.c
+++ b/drivers/bluetooth/btmtk.c
@@ -437,6 +437,7 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
 }
 EXPORT_SYMBOL_GPL(btmtk_process_coredump);
 
+#if IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK)
 static void btmtk_usb_wmt_recv(struct urb *urb)
 {
 	struct hci_dev *hdev = urb->context;
@@ -1487,6 +1488,7 @@ int btmtk_usb_shutdown(struct hci_dev *hdev)
 	return 0;
 }
 EXPORT_SYMBOL_GPL(btmtk_usb_shutdown);
+#endif
 
 MODULE_AUTHOR("Sean Wang <sean.wang@mediatek.com>");
 MODULE_AUTHOR("Mark Chen <mark-yw.chen@mediatek.com>");
diff --git a/drivers/bluetooth/btmtk.h b/drivers/bluetooth/btmtk.h
index 453ed5131a37..890dbe9beff8 100644
--- a/drivers/bluetooth/btmtk.h
+++ b/drivers/bluetooth/btmtk.h
@@ -165,6 +165,7 @@ struct btmtk_data {
 	btmtk_reset_sync_func_t reset_sync;
 	struct btmtk_coredump_info cd_info;
 
+#if IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK)
 	struct usb_device *udev;
 	struct usb_interface *intf;
 	struct usb_anchor *ctrl_anchor;
@@ -177,6 +178,7 @@ struct btmtk_data {
 
 	/* spinlock for ISO data transmission */
 	spinlock_t isorxlock;
+#endif
 };
 
 typedef int (*wmt_cmd_sync_func_t)(struct hci_dev *,
@@ -202,6 +204,7 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb);
 void btmtk_fw_get_filename(char *buf, size_t size, u32 dev_id, u32 fw_ver,
 			   u32 fw_flavor);
 
+#if IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK)
 int btmtk_usb_subsys_reset(struct hci_dev *hdev, u32 dev_id);
 
 int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb);
@@ -216,6 +219,7 @@ int btmtk_usb_suspend(struct hci_dev *hdev);
 int btmtk_usb_setup(struct hci_dev *hdev);
 
 int btmtk_usb_shutdown(struct hci_dev *hdev);
+#endif
 #else
 
 static inline int btmtk_set_bdaddr(struct hci_dev *hdev,
-- 
2.18.0

.

From: Juergen Gross <jgross@suse.com>
To: linux-kernel@vger.kernel.org,
	x86@kernel.org,
	linux-doc@vger.kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v2] xen: make multicall debug boot time selectable
Date: Wed, 10 Jul 2024 11:27:49 +0200
Message-ID: <20240710092749.13595-1-jgross@suse.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273372 org.xenproject.lists.xen-devel:51840
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.xenproject.lists.xen-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Today Xen multicall debugging needs to be enabled via modifying a
define in a source file for getting debug data of multicall errors
encountered by users.

Switch multicall debugging to depend on a boot parameter "xen_mc_debug"
instead, enabling affected users to boot with the new parameter set in
order to get better diagnostics.

With debugging enabled print the following information in case at least
one of the batched calls failed:
- all calls of the batch with operation, result and caller
- all parameters of each call
- all parameters stored in the multicall data for each call

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- fixed argument printing, added parameter printing
- in debug case print entries without error, too
- rename struct member from debug to entries (Boris Ostrovsky)
- get rid of get_mc_debug_ptr() (Boris Ostrovsky)
---
 .../admin-guide/kernel-parameters.txt         |   6 +
 arch/x86/xen/multicalls.c                     | 125 ++++++++++++++----
 2 files changed, 108 insertions(+), 23 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 27ec49af1bf2..b33d048e01d8 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -7427,6 +7427,12 @@
 			Crash from Xen panic notifier, without executing late
 			panic() code such as dumping handler.
 
+	xen_mc_debug	[X86,XEN,EARLY]
+			Enable multicall debugging when running as a Xen PV guest.
+			Enabling this feature will reduce performance a little
+			bit, so it should only be enabled for obtaining extended
+			debug data in case of multicall errors.
+
 	xen_msr_safe=	[X86,XEN,EARLY]
 			Format: <bool>
 			Select whether to always use non-faulting (safe) MSR
diff --git a/arch/x86/xen/multicalls.c b/arch/x86/xen/multicalls.c
index 07054572297f..a8d699687d5c 100644
--- a/arch/x86/xen/multicalls.c
+++ b/arch/x86/xen/multicalls.c
@@ -23,6 +23,8 @@
 #include <linux/percpu.h>
 #include <linux/hardirq.h>
 #include <linux/debugfs.h>
+#include <linux/jump_label.h>
+#include <linux/printk.h>
 
 #include <asm/xen/hypercall.h>
 
@@ -31,18 +33,12 @@
 
 #define MC_BATCH	32
 
-#define MC_DEBUG	0
-
 #define MC_ARGS		(MC_BATCH * 16)
 
 
 struct mc_buffer {
 	unsigned mcidx, argidx, cbidx;
 	struct multicall_entry entries[MC_BATCH];
-#if MC_DEBUG
-	struct multicall_entry debug[MC_BATCH];
-	void *caller[MC_BATCH];
-#endif
 	unsigned char args[MC_ARGS];
 	struct callback {
 		void (*fn)(void *);
@@ -50,13 +46,98 @@ struct mc_buffer {
 	} callbacks[MC_BATCH];
 };
 
+struct mc_debug_data {
+	struct multicall_entry entries[MC_BATCH];
+	void *caller[MC_BATCH];
+	size_t argsz[MC_BATCH];
+	unsigned long *args[MC_BATCH];
+};
+
 static DEFINE_PER_CPU(struct mc_buffer, mc_buffer);
+static struct mc_debug_data mc_debug_data_early __initdata;
+static struct mc_debug_data __percpu *mc_debug_data __refdata =
+	&mc_debug_data_early;
 DEFINE_PER_CPU(unsigned long, xen_mc_irq_flags);
 
+static struct static_key mc_debug __ro_after_init;
+static bool mc_debug_enabled __initdata;
+
+static int __init xen_parse_mc_debug(char *arg)
+{
+	mc_debug_enabled = true;
+	static_key_slow_inc(&mc_debug);
+
+	return 0;
+}
+early_param("xen_mc_debug", xen_parse_mc_debug);
+
+static int __init mc_debug_enable(void)
+{
+	struct mc_debug_data __percpu *mcdb;
+	unsigned long flags;
+
+	if (!mc_debug_enabled)
+		return 0;
+
+	mcdb = alloc_percpu(struct mc_debug_data);
+	if (!mcdb) {
+		pr_err("xen_mc_debug inactive\n");
+		static_key_slow_dec(&mc_debug);
+		return -ENOMEM;
+	}
+
+	/* Be careful when switching to percpu debug data. */
+	local_irq_save(flags);
+	xen_mc_flush();
+	mc_debug_data = mcdb;
+	local_irq_restore(flags);
+
+	pr_info("xen_mc_debug active\n");
+
+	return 0;
+}
+early_initcall(mc_debug_enable);
+
+/* Number of parameters of hypercalls used via multicalls. */
+static const uint8_t hpcpars[] = {
+	[__HYPERVISOR_mmu_update] = 4,
+	[__HYPERVISOR_stack_switch] = 2,
+	[__HYPERVISOR_fpu_taskswitch] = 1,
+	[__HYPERVISOR_update_descriptor] = 2,
+	[__HYPERVISOR_update_va_mapping] = 3,
+	[__HYPERVISOR_mmuext_op] = 4,
+};
+
+static void print_debug_data(struct mc_buffer *b, struct mc_debug_data *mcdb,
+			     int idx)
+{
+	unsigned int arg;
+	unsigned int opidx = mcdb->entries[idx].op & 0xff;
+	unsigned int pars = 0;
+
+	pr_err("  call %2d: op=%lu result=%ld caller=%pS ", idx + 1,
+	       mcdb->entries[idx].op, b->entries[idx].result,
+	       mcdb->caller[idx]);
+	if (opidx < ARRAY_SIZE(hpcpars))
+		pars = hpcpars[opidx];
+	if (pars) {
+		pr_cont("pars=");
+		for (arg = 0; arg < pars; arg++)
+			pr_cont("%lx ", mcdb->entries[idx].args[arg]);
+	}
+	if (mcdb->argsz[idx]) {
+		pr_cont("args=");
+		for (arg = 0; arg < mcdb->argsz[idx] / 8; arg++)
+			pr_cont("%lx ", mcdb->args[idx][arg]);
+	}
+	pr_cont("\n");
+}
+
 void xen_mc_flush(void)
 {
 	struct mc_buffer *b = this_cpu_ptr(&mc_buffer);
 	struct multicall_entry *mc;
+	struct mc_debug_data *mcdb = NULL;
 	int ret = 0;
 	unsigned long flags;
 	int i;
@@ -69,10 +150,11 @@ void xen_mc_flush(void)
 
 	trace_xen_mc_flush(b->mcidx, b->argidx, b->cbidx);
 
-#if MC_DEBUG
-	memcpy(b->debug, b->entries,
-	       b->mcidx * sizeof(struct multicall_entry));
-#endif
+	if (static_key_false(&mc_debug)) {
+		mcdb = this_cpu_ptr(mc_debug_data);
+		memcpy(mcdb->entries, b->entries,
+		       b->mcidx * sizeof(struct multicall_entry));
+	}
 
 	switch (b->mcidx) {
 	case 0:
@@ -103,21 +185,14 @@ void xen_mc_flush(void)
 		pr_err("%d of %d multicall(s) failed: cpu %d\n",
 		       ret, b->mcidx, smp_processor_id());
 		for (i = 0; i < b->mcidx; i++) {
-			if (b->entries[i].result < 0) {
-#if MC_DEBUG
-				pr_err("  call %2d: op=%lu arg=[%lx] result=%ld\t%pS\n",
-				       i + 1,
-				       b->debug[i].op,
-				       b->debug[i].args[0],
-				       b->entries[i].result,
-				       b->caller[i]);
-#else
+			if (static_key_false(&mc_debug)) {
+				print_debug_data(b, mcdb, i);
+			} else if (b->entries[i].result < 0) {
 				pr_err("  call %2d: op=%lu arg=[%lx] result=%ld\n",
 				       i + 1,
 				       b->entries[i].op,
 				       b->entries[i].args[0],
 				       b->entries[i].result);
-#endif
 			}
 		}
 	}
@@ -155,9 +230,13 @@ struct multicall_space __xen_mc_entry(size_t args)
 	}
 
 	ret.mc = &b->entries[b->mcidx];
-#if MC_DEBUG
-	b->caller[b->mcidx] = __builtin_return_address(0);
-#endif
+	if (static_key_false(&mc_debug)) {
+		struct mc_debug_data *mcdb = this_cpu_ptr(mc_debug_data);
+
+		mcdb->caller[b->mcidx] = __builtin_return_address(0);
+		mcdb->argsz[b->mcidx] = args;
+		mcdb->args[b->mcidx] = (unsigned long *)(&b->args[argidx]);
+	}
 	b->mcidx++;
 	ret.args = &b->args[argidx];
 	b->argidx = argidx + args;
-- 
2.43.0

.

From: Andreas Larsson <andreas@gaisler.com>
To: David Miller <davem@davemloft.net>,
	sparclinux@vger.kernel.org
Cc: Sam Ravnborg <sam@ravnborg.org>,
	linux-kernel@vger.kernel.org,
	kernel test robot <lkp@intel.com>
Subject: [PATCH] sparc32: Fix truncated relocation errors when linking large kernels
Date: Wed, 10 Jul 2024 11:23:41 +0200
Message-Id: <20240710092341.457591-1-andreas@gaisler.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273376
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.sparclinux
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use jumps instead of branches when jumping from one section to another
to avoid branches to addresses further away than 22 bit offsets can
handle that results in errors such as

arch/sparc/kernel/signal_32.o:(.fixup+0x0): relocation truncated to fit: R_SPARC_WDISP22 against `.text'

This is the same approach that was taken for sparc64 in commit
52eb053b7191 ("[SPARC64]: Fix linkage of enormous kernels.")

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202405080936.tWaJdO3P-lkp@intel.com/
Closes: https://lore.kernel.org/oe-kbuild-all/202406240441.5zaoshVX-lkp@intel.com/
Signed-off-by: Andreas Larsson <andreas@gaisler.com>
---
 arch/sparc/include/asm/uaccess_32.h |  6 ++++--
 arch/sparc/kernel/head_32.S         | 15 +++++++++++----
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
index 9fd6c53644b6..43284b6ec46a 100644
--- a/arch/sparc/include/asm/uaccess_32.h
+++ b/arch/sparc/include/asm/uaccess_32.h
@@ -95,7 +95,8 @@ __asm__ __volatile__(							\
 		".section .fixup,#alloc,#execinstr\n\t"			\
 		".align	4\n"						\
 	"3:\n\t"							\
-		"b	2b\n\t"						\
+		"sethi	%%hi(2b), %0\n\t"				\
+		"jmpl	%0 + %%lo(2b), %%g0\n\t"			\
 		" mov	%3, %0\n\t"					\
 		".previous\n\n\t"					\
 		".section __ex_table,#alloc\n\t"			\
@@ -163,8 +164,9 @@ __asm__ __volatile__(							\
 		".section .fixup,#alloc,#execinstr\n\t"			\
 		".align	4\n"						\
 	"3:\n\t"							\
+		"sethi	%%hi(2b), %0\n\t"				\
 		"clr	%1\n\t"						\
-		"b	2b\n\t"						\
+		"jmpl	%0 + %%lo(2b), %%g0\n\t"			\
 		" mov	%3, %0\n\n\t"					\
 		".previous\n\t"						\
 		".section __ex_table,#alloc\n\t"			\
diff --git a/arch/sparc/kernel/head_32.S b/arch/sparc/kernel/head_32.S
index 964c61b5cd03..38345460d542 100644
--- a/arch/sparc/kernel/head_32.S
+++ b/arch/sparc/kernel/head_32.S
@@ -118,9 +118,12 @@ current_pc:
 		mov	%o7, %g3
 
 		tst	%o0
-		be	no_sun4u_here
+		bne	2f
 		 mov	%g4, %o7		/* Previous %o7. */
-
+		sethi	%hi(no_sun4u_here), %l1
+		jmpl	%l1 + %lo(no_sun4u_here), %g0
+		 nop
+2:
 		mov	%o0, %l0		! stash away romvec
 		mov	%o0, %g7		! put it here too
 		mov	%o1, %l1		! stash away debug_vec too
@@ -195,7 +198,8 @@ halt_notsup:
 		sub	%o0, %l6, %o0
 		call	%o1
 		 nop
-		ba	halt_me
+		sethi	%hi(halt_me), %o0
+		jmpl	%o0 + %lo(halt_me), %g0
 		 nop
 
 not_a_sun4:
@@ -431,8 +435,11 @@ leon_init:
 #ifdef CONFIG_SMP
 		ldub	[%g2 + %lo(boot_cpu_id)], %g1
 		cmp	%g1, 0xff		! unset means first CPU
-		bne	leon_smp_cpu_startup	! continue only with master
+		be 1f
+		 sethi	%hi(leon_smp_cpu_startup), %g1
+		jmpl	%g1 + %lo(leon_smp_cpu_startup), %g0
 		 nop
+1:
 #endif
 		/* Get CPU-ID from most significant 4-bit of ASR17 */
 		rd     %asr17, %g1
-- 
2.34.1

.

From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Daniel Vetter <daniel.vetter@intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Sumit Semwal <sumit.semwal@linaro.org>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	linux-media@vger.kernel.org,
	linaro-mm-sig@lists.linaro.org
Subject: [PATCH 1/2] drm: Add might_fault to drm_modeset_lock priming
Date: Wed, 10 Jul 2024 11:31:16 +0200
Message-ID: <20240710093120.732208-1-daniel.vetter@ffwll.ch>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273378
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.freedesktop.lists.intel-gfx,org.kernel.vger.linux-media
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

We already teach lockdep that dma_resv nests within drm_modeset_lock,
but there's a lot more: All drm kms ioctl rely on being able to
put/get_user while holding modeset locks, so we really need a
might_fault in there too to complete the picture. Add it.

Motivated by a syzbot report that blew up on bcachefs doing an
unconditional console_lock way deep in the locking hierarchy, and
lockdep only noticing the depency loop in a drm ioctl instead of much
earlier. This annotation will make sure such issues have a much harder
time escaping.

References: https://lore.kernel.org/dri-devel/00000000000073db8b061cd43496@google.com/
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Sumit Semwal <sumit.semwal@linaro.org>
Cc: "Christian KÃ¶nig" <christian.koenig@amd.com>
Cc: linux-media@vger.kernel.org
Cc: linaro-mm-sig@lists.linaro.org
---
 drivers/gpu/drm/drm_mode_config.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 568972258222..37d2e0a4ef4b 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -456,6 +456,8 @@ int drmm_mode_config_init(struct drm_device *dev)
 		if (ret == -EDEADLK)
 			ret = drm_modeset_backoff(&modeset_ctx);
 
+		might_fault();
+
 		ww_acquire_init(&resv_ctx, &reservation_ww_class);
 		ret = dma_resv_lock(&resv, &resv_ctx);
 		if (ret == -EDEADLK)
-- 
2.45.2

.

From: Juergen Gross <jgross@suse.com>
To: linux-kernel@vger.kernel.org,
	x86@kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	xen-devel@lists.xenproject.org,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Subject: [PATCH 0/2] x86/xen: cleanup of xen private headers
Date: Wed, 10 Jul 2024 11:37:16 +0200
Message-ID: <20240710093718.14552-1-jgross@suse.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273382 org.xenproject.lists.xen-devel:51841
Newsgroups: org.kernel.vger.linux-kernel,org.xenproject.lists.xen-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Cleanup the private header files in arch/x86/xen by merging them into
one file and by removing unneeded stuff.

Juergen Gross (2):
  x86/xen: make some functions static
  x86/xen: eliminate some private header files

 arch/x86/xen/apic.c          |   2 -
 arch/x86/xen/debugfs.c       |   2 +-
 arch/x86/xen/debugfs.h       |   7 --
 arch/x86/xen/enlighten.c     |   2 -
 arch/x86/xen/enlighten_hvm.c |   2 -
 arch/x86/xen/enlighten_pv.c  |   4 -
 arch/x86/xen/mmu.c           |   3 +-
 arch/x86/xen/mmu.h           |  28 -------
 arch/x86/xen/mmu_hvm.c       |   2 +-
 arch/x86/xen/mmu_pv.c        |  15 ++--
 arch/x86/xen/multicalls.c    |   3 +-
 arch/x86/xen/multicalls.h    |  69 ----------------
 arch/x86/xen/p2m.c           |   2 -
 arch/x86/xen/pmu.c           |   1 -
 arch/x86/xen/pmu.h           |  22 ------
 arch/x86/xen/setup.c         |   1 -
 arch/x86/xen/smp.c           |   1 -
 arch/x86/xen/smp.h           |  51 ------------
 arch/x86/xen/smp_hvm.c       |   2 -
 arch/x86/xen/smp_pv.c        |   3 -
 arch/x86/xen/suspend.c       |   2 -
 arch/x86/xen/xen-ops.h       | 148 ++++++++++++++++++++++++++++++++++-
 include/xen/events.h         |   2 +
 23 files changed, 158 insertions(+), 216 deletions(-)
 delete mode 100644 arch/x86/xen/debugfs.h
 delete mode 100644 arch/x86/xen/mmu.h
 delete mode 100644 arch/x86/xen/multicalls.h
 delete mode 100644 arch/x86/xen/pmu.h
 delete mode 100644 arch/x86/xen/smp.h

-- 
2.43.0

.

From: Andreas Larsson <andreas@gaisler.com>
To: David Miller <davem@davemloft.net>,
	sparclinux@vger.kernel.org
Cc: Sam Ravnborg <sam@ravnborg.org>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 0/4] sparc64: Fix prototype warnings and out of sync function signature
Date: Wed, 10 Jul 2024 11:41:51 +0200
Message-Id: <20240710094155.458731-1-andreas@gaisler.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273391
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.sparclinux
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch series fixes a number of prototype warnings as well as fixes a
function signature that has become out of sync with its caller.

Andreas Larsson (4):
  sparc64: Fix prototype warnings for floppy_64.h
  sparc64: Fix incorrect function signature and add prototype for
    prom_cif_init
  sparc64: Fix prototype warning for prom_get_mmu_ihandle
  sparc64: Fix prototype warnings in hibernate.c

 arch/sparc/include/asm/floppy_64.h | 5 +++--
 arch/sparc/include/asm/oplib_64.h  | 1 +
 arch/sparc/power/hibernate.c       | 1 +
 arch/sparc/prom/init_64.c          | 3 ---
 arch/sparc/prom/misc_64.c          | 2 +-
 arch/sparc/prom/p1275.c            | 2 +-
 6 files changed, 7 insertions(+), 7 deletions(-)

-- 
2.34.1

.

From: Viken Dadhaniya <quic_vdadhani@quicinc.com>
To: andersson@kernel.org, konrad.dybcio@linaro.org, robh@kernel.org,
        krzk+dt@kernel.org, linux-arm-msm@vger.kernel.org, conor+dt@kernel.org,
        devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: quic_msavaliy@quicinc.com, quic_anupkulk@quicinc.com,
        Viken Dadhaniya <quic_vdadhani@quicinc.com>
Subject: [PATCH v1] arm64: dts: qcom: sa8775p: Add UART node
Date: Wed, 10 Jul 2024 15:11:49 +0530
Message-Id: <20240710094149.13299-1-quic_vdadhani@quicinc.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273393
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add missing UART configuration for sa8775.

Signed-off-by: Viken Dadhaniya <quic_vdadhani@quicinc.com>
---
 arch/arm64/boot/dts/qcom/sa8775p.dtsi | 231 ++++++++++++++++++++++++++
 1 file changed, 231 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
index 23f1b2e5e624..c107ee40341d 100644
--- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi
+++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: BSD-3-Clause
 /*
  * Copyright (c) 2023, Linaro Limited
+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #include <dt-bindings/interconnect/qcom,icc.h>
@@ -657,6 +658,21 @@
 				status = "disabled";
 			};
 
+			uart14: serial@880000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00880000 0x0 0x4000>;
+				interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c15: i2c@884000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x884000 0x0 0x4000>;
@@ -699,6 +715,21 @@
 				status = "disabled";
 			};
 
+			uart15: serial@884000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00884000 0x0 0x4000>;
+				interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c16: i2c@888000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x888000 0x0 0x4000>;
@@ -741,6 +772,21 @@
 				status = "disabled";
 			};
 
+			uart16: serial@888000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00888000 0x0 0x4000>;
+				interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c17: i2c@88c000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x88c000 0x0 0x4000>;
@@ -840,6 +886,21 @@
 				status = "disabled";
 			};
 
+			uart18: serial@890000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00890000 0x0 0x4000>;
+				interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c19: i2c@894000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x894000 0x0 0x4000>;
@@ -882,6 +943,21 @@
 				status = "disabled";
 			};
 
+			uart19: serial@894000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00894000 0x0 0x4000>;
+				interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c20: i2c@898000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x898000 0x0 0x4000>;
@@ -923,6 +999,22 @@
 				power-domains = <&rpmhpd SA8775P_CX>;
 				status = "disabled";
 			};
+
+			uart20: serial@898000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00898000 0x0 0x4000>;
+				interrupts = <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 		};
 
 		qupv3_id_0: geniqup@9c0000 {
@@ -979,6 +1071,21 @@
 				status = "disabled";
 			};
 
+			uart0: serial@980000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x980000 0x0 0x4000>;
+				interrupts = <GIC_SPI 550 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c1: i2c@984000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x984000 0x0 0x4000>;
@@ -1021,6 +1128,21 @@
 				status = "disabled";
 			};
 
+			uart1: serial@984000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x984000 0x0 0x4000>;
+				interrupts = <GIC_SPI 551 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c2: i2c@988000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x988000 0x0 0x4000>;
@@ -1063,6 +1185,21 @@
 				status = "disabled";
 			};
 
+			uart2: serial@988000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x988000 0x0 0x4000>;
+				interrupts = <GIC_SPI 529 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c3: i2c@98c000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x98c000 0x0 0x4000>;
@@ -1105,6 +1242,21 @@
 				status = "disabled";
 			};
 
+			uart3: serial@98c000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x98c000 0x0 0x4000>;
+				interrupts = <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c4: i2c@990000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x990000 0x0 0x4000>;
@@ -1147,6 +1299,21 @@
 				status = "disabled";
 			};
 
+			uart4: serial@990000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x990000 0x0 0x4000>;
+				interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+				clock-names = "se";
+				interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+				interconnect-names = "qup-core", "qup-config";
+				power-domains = <&rpmhpd SA8775P_CX>;
+				status = "disabled";
+			};
+
 			i2c5: i2c@994000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0x994000 0x0 0x4000>;
@@ -1259,6 +1426,22 @@
 				status = "disabled";
 			};
 
+			uart7: serial@a80000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00a80000 0x0 0x4000>;
+				interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+				clock-names = "se";
+				clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+				interconnect-names = "qup-core", "qup-config";
+				interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+				power-domains = <&rpmhpd SA8775P_CX>;
+				operating-points-v2 = <&qup_opp_table_100mhz>;
+				status = "disabled";
+			};
+
 			i2c8: i2c@a84000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0xa84000 0x0 0x4000>;
@@ -1301,6 +1484,22 @@
 				status = "disabled";
 			};
 
+			uart8: serial@a84000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00a84000 0x0 0x4000>;
+				interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+				clock-names = "se";
+				clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+				interconnect-names = "qup-core", "qup-config";
+				interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+				power-domains = <&rpmhpd SA8775P_CX>;
+				operating-points-v2 = <&qup_opp_table_100mhz>;
+				status = "disabled";
+			};
+
 			i2c9: i2c@a88000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0xa88000 0x0 0x4000>;
@@ -1458,6 +1657,22 @@
 				status = "disabled";
 			};
 
+			uart11: serial@a90000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00a90000 0x0 0x4000>;
+				interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+				clock-names = "se";
+				clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+				interconnect-names = "qup-core", "qup-config";
+				interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+				power-domains = <&rpmhpd SA8775P_CX>;
+				operating-points-v2 = <&qup_opp_table_100mhz>;
+				status = "disabled";
+			};
+
 			i2c12: i2c@a94000 {
 				compatible = "qcom,geni-i2c";
 				reg = <0x0 0xa94000 0x0 0x4000>;
@@ -1590,6 +1805,22 @@
 				power-domains = <&rpmhpd SA8775P_CX>;
 				status = "disabled";
 			};
+
+			uart21: serial@b80000 {
+				compatible = "qcom,geni-uart";
+				reg = <0x0 0x00b80000 0x0 0x4000>;
+				interrupts = <GIC_SPI 831 IRQ_TYPE_LEVEL_HIGH>;
+				clock-names = "se";
+				clocks = <&gcc GCC_QUPV3_WRAP3_S0_CLK>;
+				interconnect-names = "qup-core", "qup-config";
+				interconnects = <&clk_virt MASTER_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS
+						 &clk_virt SLAVE_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS>,
+						<&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+						 &config_noc SLAVE_QUP_3 QCOM_ICC_TAG_ALWAYS>;
+				power-domains = <&rpmhpd SA8775P_CX>;
+				operating-points-v2 = <&qup_opp_table_100mhz>;
+				status = "disabled";
+			};
 		};
 
 		rng: rng@10d2000 {
-- 
2.17.1

.

From: Ryan Roberts <ryan.roberts@arm.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	Hugh Dickins <hughd@google.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Lance Yang <ioworker0@gmail.com>,
	Matthew Wilcox <willy@infradead.org>,
	Zi Yan <ziy@nvidia.com>,
	Daniel Gomez <da.gomez@samsung.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>,
	linux-kernel@vger.kernel.org,
	linux-mm@kvack.org
Subject: [PATCH v2] mm: shmem: Rename mTHP shmem counters
Date: Wed, 10 Jul 2024 10:55:01 +0100
Message-ID: <20240710095503.3193901-1-ryan.roberts@arm.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273409 org.kvack.linux-mm:203245
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The legacy PMD-sized THP counters at /proc/vmstat include
thp_file_alloc, thp_file_fallback and thp_file_fallback_charge, which
rather confusingly refer to shmem THP and do not include any other types
of file pages. This is inconsistent since in most other places in the
kernel, THP counters are explicitly separated for anon, shmem and file
flavours. However, we are stuck with it since it constitutes a user ABI.

Recently, commit 66f44583f9b6 ("mm: shmem: add mTHP counters for
anonymous shmem") added equivalent mTHP stats for shmem, keeping the
same "file_" prefix in the names. But in future, we may want to add
extra stats to cover actual file pages, at which point, it would all
become very confusing.

So let's take the opportunity to rename these new counters "shmem_"
before the change makes it upstream and the ABI becomes immutable. While
we are at it, let's improve the documentation for the legacy counters to
make it clear that they count shmem pages only.

Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Reviewed-by: Lance Yang <ioworker0@gmail.com>
---

Hi All,

Applies on top of yesterday's mm-unstable (2073cda629a4) and tested with mm
selftests; no regressions observed.

The backstory here is that I'd like to introduce some counters for regular file
folio allocations to observe how often large folio allocation succeeds, but
these shmem counters are named "file" which is going to make things confusing.
So hoping to solve that before commit 66f44583f9b6 ("mm: shmem: add mTHP
counters for anonymous shmem") goes upstream (it is currently in mm-stable).

Changes since v1 [1]
====================
  - Updated documentation for existing legacy "file_" counters to make it clear
    they only count shmem pages.

[1] https://lore.kernel.org/linux-mm/20240708112445.2690631-1-ryan.roberts@arm.com/

Thanks,
Ryan

 Documentation/admin-guide/mm/transhuge.rst | 29 ++++++++++++----------
 include/linux/huge_mm.h                    |  6 ++---
 mm/huge_memory.c                           | 12 ++++-----
 mm/shmem.c                                 |  8 +++---
 4 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/admin-guide/mm/transhuge.rst
index 747c811ee8f1..3528daa1f239 100644
--- a/Documentation/admin-guide/mm/transhuge.rst
+++ b/Documentation/admin-guide/mm/transhuge.rst
@@ -412,20 +412,23 @@ thp_collapse_alloc_failed
 	the allocation.

 thp_file_alloc
-	is incremented every time a file huge page is successfully
-	allocated.
+	is incremented every time a shmem huge page is successfully
+	allocated (Note that despite being named after "file", the counter
+	measures only shmem).

 thp_file_fallback
-	is incremented if a file huge page is attempted to be allocated
-	but fails and instead falls back to using small pages.
+	is incremented if a shmem huge page is attempted to be allocated
+	but fails and instead falls back to using small pages. (Note that
+	despite being named after "file", the counter measures only shmem).

 thp_file_fallback_charge
-	is incremented if a file huge page cannot be charged and instead
+	is incremented if a shmem huge page cannot be charged and instead
 	falls back to using small pages even though the allocation was
-	successful.
+	successful. (Note that despite being named after "file", the
+	counter measures only shmem).

 thp_file_mapped
-	is incremented every time a file huge page is mapped into
+	is incremented every time a file or shmem huge page is mapped into
 	user address space.

 thp_split_page
@@ -496,16 +499,16 @@ swpout_fallback
 	Usually because failed to allocate some continuous swap space
 	for the huge page.

-file_alloc
-	is incremented every time a file huge page is successfully
+shmem_alloc
+	is incremented every time a shmem huge page is successfully
 	allocated.

-file_fallback
-	is incremented if a file huge page is attempted to be allocated
+shmem_fallback
+	is incremented if a shmem huge page is attempted to be allocated
 	but fails and instead falls back to using small pages.

-file_fallback_charge
-	is incremented if a file huge page cannot be charged and instead
+shmem_fallback_charge
+	is incremented if a shmem huge page cannot be charged and instead
 	falls back to using small pages even though the allocation was
 	successful.

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index acb6ac24a07e..cff002be83eb 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -269,9 +269,9 @@ enum mthp_stat_item {
 	MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE,
 	MTHP_STAT_SWPOUT,
 	MTHP_STAT_SWPOUT_FALLBACK,
-	MTHP_STAT_FILE_ALLOC,
-	MTHP_STAT_FILE_FALLBACK,
-	MTHP_STAT_FILE_FALLBACK_CHARGE,
+	MTHP_STAT_SHMEM_ALLOC,
+	MTHP_STAT_SHMEM_FALLBACK,
+	MTHP_STAT_SHMEM_FALLBACK_CHARGE,
 	MTHP_STAT_SPLIT,
 	MTHP_STAT_SPLIT_FAILED,
 	MTHP_STAT_SPLIT_DEFERRED,
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 9ec64aa2be94..f9696c94e211 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -568,9 +568,9 @@ DEFINE_MTHP_STAT_ATTR(anon_fault_fallback, MTHP_STAT_ANON_FAULT_FALLBACK);
 DEFINE_MTHP_STAT_ATTR(anon_fault_fallback_charge, MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE);
 DEFINE_MTHP_STAT_ATTR(swpout, MTHP_STAT_SWPOUT);
 DEFINE_MTHP_STAT_ATTR(swpout_fallback, MTHP_STAT_SWPOUT_FALLBACK);
-DEFINE_MTHP_STAT_ATTR(file_alloc, MTHP_STAT_FILE_ALLOC);
-DEFINE_MTHP_STAT_ATTR(file_fallback, MTHP_STAT_FILE_FALLBACK);
-DEFINE_MTHP_STAT_ATTR(file_fallback_charge, MTHP_STAT_FILE_FALLBACK_CHARGE);
+DEFINE_MTHP_STAT_ATTR(shmem_alloc, MTHP_STAT_SHMEM_ALLOC);
+DEFINE_MTHP_STAT_ATTR(shmem_fallback, MTHP_STAT_SHMEM_FALLBACK);
+DEFINE_MTHP_STAT_ATTR(shmem_fallback_charge, MTHP_STAT_SHMEM_FALLBACK_CHARGE);
 DEFINE_MTHP_STAT_ATTR(split, MTHP_STAT_SPLIT);
 DEFINE_MTHP_STAT_ATTR(split_failed, MTHP_STAT_SPLIT_FAILED);
 DEFINE_MTHP_STAT_ATTR(split_deferred, MTHP_STAT_SPLIT_DEFERRED);
@@ -581,9 +581,9 @@ static struct attribute *stats_attrs[] = {
 	&anon_fault_fallback_charge_attr.attr,
 	&swpout_attr.attr,
 	&swpout_fallback_attr.attr,
-	&file_alloc_attr.attr,
-	&file_fallback_attr.attr,
-	&file_fallback_charge_attr.attr,
+	&shmem_alloc_attr.attr,
+	&shmem_fallback_attr.attr,
+	&shmem_fallback_charge_attr.attr,
 	&split_attr.attr,
 	&split_failed_attr.attr,
 	&split_deferred_attr.attr,
diff --git a/mm/shmem.c b/mm/shmem.c
index 921d59c3d669..f24dfbd387ba 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1777,7 +1777,7 @@ static struct folio *shmem_alloc_and_add_folio(struct vm_fault *vmf,
 			if (pages == HPAGE_PMD_NR)
 				count_vm_event(THP_FILE_FALLBACK);
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-			count_mthp_stat(order, MTHP_STAT_FILE_FALLBACK);
+			count_mthp_stat(order, MTHP_STAT_SHMEM_FALLBACK);
 #endif
 			order = next_order(&suitable_orders, order);
 		}
@@ -1804,8 +1804,8 @@ static struct folio *shmem_alloc_and_add_folio(struct vm_fault *vmf,
 				count_vm_event(THP_FILE_FALLBACK_CHARGE);
 			}
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-			count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_FALLBACK);
-			count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_FALLBACK_CHARGE);
+			count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_FALLBACK);
+			count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_FALLBACK_CHARGE);
 #endif
 		}
 		goto unlock;
@@ -2181,7 +2181,7 @@ static int shmem_get_folio_gfp(struct inode *inode, pgoff_t index,
 			if (folio_test_pmd_mappable(folio))
 				count_vm_event(THP_FILE_ALLOC);
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-			count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_ALLOC);
+			count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_ALLOC);
 #endif
 			goto alloced;
 		}
--
2.43.0

.

From: Wei Yang <richard.weiyang@gmail.com>
To: yury.norov@gmail.com,
	linux@rasmusvillemoes.dk,
	willy@infradead.org
Cc: linux-kernel@vger.kernel.org,
	Wei Yang <richard.weiyang@gmail.com>
Subject: [PATCH] radix tree test suite: put definition of bitmap_clear() into lib/bitmap.c
Date: Wed, 10 Jul 2024 09:55:54 +0000
Message-Id: <20240710095554.16725-1-richard.weiyang@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273410
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Instead of keeping a bitmap.c in radix-tree own directory, we can use
the common implementation in lib/ directory.

Just move the definition and link some related libs, no functional
change.

Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
CC: Matthew Wilcox <willy@infradead.org>
---
 tools/lib/bitmap.c                | 20 ++++++++++++++++++++
 tools/testing/radix-tree/Makefile |  4 ++--
 tools/testing/radix-tree/bitmap.c | 23 -----------------------
 3 files changed, 22 insertions(+), 25 deletions(-)
 delete mode 100644 tools/testing/radix-tree/bitmap.c

diff --git a/tools/lib/bitmap.c b/tools/lib/bitmap.c
index c3e4871967bc..a96dbf001244 100644
--- a/tools/lib/bitmap.c
+++ b/tools/lib/bitmap.c
@@ -100,3 +100,23 @@ bool __bitmap_intersects(const unsigned long *bitmap1,
 			return true;
 	return false;
 }
+
+void bitmap_clear(unsigned long *map, unsigned int start, int len)
+{
+	unsigned long *p = map + BIT_WORD(start);
+	const unsigned int size = start + len;
+	int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG);
+	unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start);
+
+	while (len - bits_to_clear >= 0) {
+		*p &= ~mask_to_clear;
+		len -= bits_to_clear;
+		bits_to_clear = BITS_PER_LONG;
+		mask_to_clear = ~0UL;
+		p++;
+	}
+	if (len) {
+		mask_to_clear &= BITMAP_LAST_WORD_MASK(size);
+		*p &= ~mask_to_clear;
+	}
+}
diff --git a/tools/testing/radix-tree/Makefile b/tools/testing/radix-tree/Makefile
index 7527f738b4a1..505cc24a8b9c 100644
--- a/tools/testing/radix-tree/Makefile
+++ b/tools/testing/radix-tree/Makefile
@@ -5,8 +5,8 @@ CFLAGS += -I. -I../../include -I../../../lib -g -Og -Wall \
 LDFLAGS += -fsanitize=address -fsanitize=undefined
 LDLIBS+= -lpthread -lurcu
 TARGETS = main idr-test multiorder xarray maple
-CORE_OFILES := xarray.o radix-tree.o idr.o linux.o test.o find_bit.o bitmap.o \
-			 slab.o maple.o
+LIBS := find_bit.o bitmap.o hweight.o vsprintf.o
+CORE_OFILES := xarray.o radix-tree.o idr.o linux.o test.o slab.o maple.o $(LIBS)
 OFILES = main.o $(CORE_OFILES) regression1.o regression2.o regression3.o \
 	 regression4.o tag_check.o multiorder.o idr-test.o iteration_check.o \
 	 iteration_check_2.o benchmark.o
diff --git a/tools/testing/radix-tree/bitmap.c b/tools/testing/radix-tree/bitmap.c
deleted file mode 100644
index 66ec4a24a203..000000000000
--- a/tools/testing/radix-tree/bitmap.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* lib/bitmap.c pulls in at least two other files. */
-
-#include <linux/bitmap.h>
-
-void bitmap_clear(unsigned long *map, unsigned int start, int len)
-{
-	unsigned long *p = map + BIT_WORD(start);
-	const unsigned int size = start + len;
-	int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG);
-	unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start);
-
-	while (len - bits_to_clear >= 0) {
-		*p &= ~mask_to_clear;
-		len -= bits_to_clear;
-		bits_to_clear = BITS_PER_LONG;
-		mask_to_clear = ~0UL;
-		p++;
-	}
-	if (len) {
-		mask_to_clear &= BITMAP_LAST_WORD_MASK(size);
-		*p &= ~mask_to_clear;
-	}
-}
-- 
2.34.1

.

From: Benjamin Hahn <B.Hahn@phytec.de>
Date: Wed, 10 Jul 2024 11:48:54 +0200
Subject: [PATCH v3] arm64: dts: freescale: imx8mp-phycore: Add no-eth
 overlay
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-ID: <20240710-bspimx8m-3180-v3-1-8ef55381172c@phytec.de>
To: Shawn Guo <shawnguo@kernel.org>, Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>, Fabio Estevam
	<festevam@gmail.com>, Rob Herring <robh@kernel.org>, Krzysztof Kozlowski
	<krzk+dt@kernel.org>, Conor Dooley <conor+dt@kernel.org>
CC: <imx@lists.linux.dev>, <linux-arm-kernel@lists.infradead.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<upstream@lists.phytec.de>, Benjamin Hahn <B.Hahn@phytec.de>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273419
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add a devicetree overlay to disable ethernet for boards where it is not
populated.

Signed-off-by: Benjamin Hahn <B.Hahn@phytec.de>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
---
Changes in v3:
- rebase to master
- Link to v2: https://lore.kernel.org/r/20240705-bspimx8m-3180-v2-1-dc1a7e1689be@phytec.de

Changes in v2:
- Remove the compatible from the overlay
- Link to v1: https://lore.kernel.org/r/20240703-bspimx8m-3180-v1-1-e43e035a9b2a@phytec.de
---
 arch/arm64/boot/dts/freescale/Makefile                   |  2 ++
 arch/arm64/boot/dts/freescale/imx8mp-phycore-no-eth.dtso | 16 ++++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index bd443c2bc5a4..647282cc861b 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -173,6 +173,8 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-icore-mx8mp-edimm2.2.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-msc-sm2s-ep1.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-navqp.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk.dtb
+imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-rdk.dtb imx8mp-phycore-no-eth.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revb-hdmi.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revb-lt6.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revb-mi1010ait-1cp1.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phycore-no-eth.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phycore-no-eth.dtso
new file mode 100644
index 000000000000..5f0278bf61ee
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-phycore-no-eth.dtso
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2024 PHYTEC Messtechnik GmbH
+ * Author: Cem Tenruh <c.tenruh@phytec.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+&ethphy1 {
+	status = "disabled";
+};
+
+&fec {
+	status = "disabled";
+};

---
base-commit: 34afb82a3c67f869267a26f593b6f8fc6bf35905
change-id: 20240617-bspimx8m-3180-47bed184a854

Best regards,
-- 
Benjamin Hahn <B.Hahn@phytec.de>

.

From: Lukasz Majewski <lukma@denx.de>
To: Pavel Machek <pavel@ucw.cz>,
	Lee Jones <lee@kernel.org>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Christian Marangi <ansuelsmth@gmail.com>,
	Jakub Kicinski <kuba@kernel.org>,
	=?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>,
	Daniel Golle <daniel@makrotopia.org>,
	Li Zetao <lizetao1@huawei.com>,
	linux-leds@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Lukasz Majewski <lukma@denx.de>
Subject: [PATCH v1 net-next] leds: trigger: netdev: Add support for tx_err and rx_err notification with LEDs
Date: Wed, 10 Jul 2024 12:06:51 +0200
Message-Id: <20240710100651.4059887-1-lukma@denx.de>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273422
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-leds
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch provides support for enabling blinking of LEDs when RX or TX
errors are detected.

Approach taken in this patch is similar to one for TX or RX data
transmission indication (i.e. TRIGGER_NETDEV_TX/RX attribute).

One can inspect transmission errors with:
ip -s link show eth0

Example LED configuration:
cd /sys/devices/platform/amba_pl@0/a001a000.leds/leds/
echo netdev > mode:blue/trigger && \
echo eth0 > mode:blue/device_name && \
echo 1 > mode:blue/tx_err

Signed-off-by: Lukasz Majewski <lukma@denx.de>
---
 drivers/leds/trigger/ledtrig-netdev.c | 24 +++++++++++++++++++++---
 include/linux/leds.h                  |  2 ++
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/drivers/leds/trigger/ledtrig-netdev.c b/drivers/leds/trigger/ledtrig-netdev.c
index 22bba8e97642..4b0863db901a 100644
--- a/drivers/leds/trigger/ledtrig-netdev.c
+++ b/drivers/leds/trigger/ledtrig-netdev.c
@@ -39,6 +39,8 @@
  *         (has carrier) or not
  * tx -  LED blinks on transmitted data
  * rx -  LED blinks on receive data
+ * tx_err -  LED blinks on transmit error
+ * rx_err -  LED blinks on receive error
  *
  * Note: If the user selects a mode that is not supported by hw, default
  * behavior is to fall back to software control of the LED. However not every
@@ -144,7 +146,9 @@ static void set_baseline_state(struct led_netdev_data *trigger_data)
 		 * checking stats
 		 */
 		if (test_bit(TRIGGER_NETDEV_TX, &trigger_data->mode) ||
-		    test_bit(TRIGGER_NETDEV_RX, &trigger_data->mode))
+		    test_bit(TRIGGER_NETDEV_RX, &trigger_data->mode) ||
+		    test_bit(TRIGGER_NETDEV_TX_ERR, &trigger_data->mode) ||
+		    test_bit(TRIGGER_NETDEV_RX_ERR, &trigger_data->mode))
 			schedule_delayed_work(&trigger_data->work, 0);
 	}
 }
@@ -337,6 +341,8 @@ static ssize_t netdev_led_attr_show(struct device *dev, char *buf,
 	case TRIGGER_NETDEV_FULL_DUPLEX:
 	case TRIGGER_NETDEV_TX:
 	case TRIGGER_NETDEV_RX:
+	case TRIGGER_NETDEV_TX_ERR:
+	case TRIGGER_NETDEV_RX_ERR:
 		bit = attr;
 		break;
 	default:
@@ -371,6 +377,8 @@ static ssize_t netdev_led_attr_store(struct device *dev, const char *buf,
 	case TRIGGER_NETDEV_FULL_DUPLEX:
 	case TRIGGER_NETDEV_TX:
 	case TRIGGER_NETDEV_RX:
+	case TRIGGER_NETDEV_TX_ERR:
+	case TRIGGER_NETDEV_RX_ERR:
 		bit = attr;
 		break;
 	default:
@@ -429,6 +437,8 @@ DEFINE_NETDEV_TRIGGER(half_duplex, TRIGGER_NETDEV_HALF_DUPLEX);
 DEFINE_NETDEV_TRIGGER(full_duplex, TRIGGER_NETDEV_FULL_DUPLEX);
 DEFINE_NETDEV_TRIGGER(tx, TRIGGER_NETDEV_TX);
 DEFINE_NETDEV_TRIGGER(rx, TRIGGER_NETDEV_RX);
+DEFINE_NETDEV_TRIGGER(tx_err, TRIGGER_NETDEV_TX_ERR);
+DEFINE_NETDEV_TRIGGER(rx_err, TRIGGER_NETDEV_RX_ERR);
 
 static ssize_t interval_show(struct device *dev,
 			     struct device_attribute *attr, char *buf)
@@ -538,6 +548,8 @@ static struct attribute *netdev_trig_attrs[] = {
 	&dev_attr_half_duplex.attr,
 	&dev_attr_rx.attr,
 	&dev_attr_tx.attr,
+	&dev_attr_rx_err.attr,
+	&dev_attr_tx_err.attr,
 	&dev_attr_interval.attr,
 	&dev_attr_offloaded.attr,
 	NULL
@@ -628,7 +640,9 @@ static void netdev_trig_work(struct work_struct *work)
 
 	/* If we are not looking for RX/TX then return  */
 	if (!test_bit(TRIGGER_NETDEV_TX, &trigger_data->mode) &&
-	    !test_bit(TRIGGER_NETDEV_RX, &trigger_data->mode))
+	    !test_bit(TRIGGER_NETDEV_RX, &trigger_data->mode) &&
+	    !test_bit(TRIGGER_NETDEV_TX_ERR, &trigger_data->mode) &&
+	    !test_bit(TRIGGER_NETDEV_RX_ERR, &trigger_data->mode))
 		return;
 
 	dev_stats = dev_get_stats(trigger_data->net_dev, &temp);
@@ -636,7 +650,11 @@ static void netdev_trig_work(struct work_struct *work)
 	    (test_bit(TRIGGER_NETDEV_TX, &trigger_data->mode) ?
 		dev_stats->tx_packets : 0) +
 	    (test_bit(TRIGGER_NETDEV_RX, &trigger_data->mode) ?
-		dev_stats->rx_packets : 0);
+		dev_stats->rx_packets : 0) +
+	    (test_bit(TRIGGER_NETDEV_TX_ERR, &trigger_data->mode) ?
+		dev_stats->tx_errors : 0) +
+	    (test_bit(TRIGGER_NETDEV_RX_ERR, &trigger_data->mode) ?
+		dev_stats->rx_errors : 0);
 
 	if (trigger_data->last_activity != new_activity) {
 		led_stop_software_blink(trigger_data->led_cdev);
diff --git a/include/linux/leds.h b/include/linux/leds.h
index 6300313c46b7..c4087c15e61d 100644
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -574,6 +574,8 @@ enum led_trigger_netdev_modes {
 	TRIGGER_NETDEV_FULL_DUPLEX,
 	TRIGGER_NETDEV_TX,
 	TRIGGER_NETDEV_RX,
+	TRIGGER_NETDEV_TX_ERR,
+	TRIGGER_NETDEV_RX_ERR,
 
 	/* Keep last */
 	__TRIGGER_NETDEV_MAX,
-- 
2.39.2

.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Date: Wed, 10 Jul 2024 03:20:21 -0700
Message-ID: <000000000000690606061ce1fe7e@google.com>
Subject: [syzbot] [ext4?] INFO: task hung in ext4_stop_mmpd
From: syzbot <syzbot+0dd5b81275fa083055d7@syzkaller.appspotmail.com>
To: adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, 
	linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com, tytso@mit.edu
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273434
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-ext4
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,

syzbot found the following issue on:

HEAD commit:    34afb82a3c67 Merge tag '6.10-rc6-smb3-server-fixes' of git..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=1444869e980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=42a432cfd0e579e0
dashboard link: https://syzkaller.appspot.com/bug?extid=0dd5b81275fa083055d7
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/5e93dc1544ee/disk-34afb82a.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/005e374613f0/vmlinux-34afb82a.xz
kernel image: https://storage.googleapis.com/syzbot-assets/b6931db81a1a/bzImage-34afb82a.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+0dd5b81275fa083055d7@syzkaller.appspotmail.com

INFO: task syz-executor:16187 blocked for more than 143 seconds.
      Not tainted 6.10.0-rc7-syzkaller-00012-g34afb82a3c67 #0
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:syz-executor    state:D stack:20288 pid:16187 tgid:16187 ppid:1      flags:0x00004006
Call Trace:
 <TASK>
 context_switch kernel/sched/core.c:5408 [inline]
 __schedule+0x1796/0x49d0 kernel/sched/core.c:6745
 __schedule_loop kernel/sched/core.c:6822 [inline]
 schedule+0x14b/0x320 kernel/sched/core.c:6837
 schedule_timeout+0xb0/0x310 kernel/time/timer.c:2557
 do_wait_for_common kernel/sched/completion.c:95 [inline]
 __wait_for_common kernel/sched/completion.c:116 [inline]
 wait_for_common kernel/sched/completion.c:127 [inline]
 wait_for_completion+0x355/0x620 kernel/sched/completion.c:148
 kthread_stop+0x19e/0x630 kernel/kthread.c:710
 ext4_stop_mmpd+0x47/0xb0 fs/ext4/mmp.c:261
 ext4_put_super+0x6f6/0xcd0 fs/ext4/super.c:1362
 generic_shutdown_super+0x136/0x2d0 fs/super.c:642
 kill_block_super+0x44/0x90 fs/super.c:1685
 ext4_kill_sb+0x68/0xa0 fs/ext4/super.c:7301
 deactivate_locked_super+0xc4/0x130 fs/super.c:473
 cleanup_mnt+0x41f/0x4b0 fs/namespace.c:1267
 task_work_run+0x24f/0x310 kernel/task_work.c:180
 resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
 exit_to_user_mode_loop kernel/entry/common.c:114 [inline]
 exit_to_user_mode_prepare include/linux/entry-common.h:328 [inline]
 __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline]
 syscall_exit_to_user_mode+0x168/0x360 kernel/entry/common.c:218
 do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f9123f76f07
RSP: 002b:00007fffeca9de48 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00007f9123f76f07
RDX: 0000000000000000 RSI: 0000000000000009 RDI: 00007fffeca9df00
RBP: 00007fffeca9df00 R08: 0000000000000000 R09: 0000000000000000
R10: 00000000ffffffff R11: 0000000000000246 R12: 00007fffeca9efc0
R13: 00007f9123fe3515 R14: 00000000000f57c0 R15: 00000000000f4f30
 </TASK>
INFO: task kmmpd-loop3:16389 blocked for more than 143 seconds.
      Not tainted 6.10.0-rc7-syzkaller-00012-g34afb82a3c67 #0
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kmmpd-loop3     state:D stack:27680 pid:16389 tgid:16389 ppid:2      flags:0x00024000
Call Trace:
 <TASK>
 context_switch kernel/sched/core.c:5408 [inline]
 __schedule+0x1796/0x49d0 kernel/sched/core.c:6745
 __schedule_loop kernel/sched/core.c:6822 [inline]
 schedule+0x14b/0x320 kernel/sched/core.c:6837
 percpu_rwsem_wait+0x3c2/0x450 kernel/locking/percpu-rwsem.c:162
 __percpu_down_read+0xee/0x130 kernel/locking/percpu-rwsem.c:177
 percpu_down_read include/linux/percpu-rwsem.h:65 [inline]
 __sb_start_write include/linux/fs.h:1655 [inline]
 sb_start_write include/linux/fs.h:1791 [inline]
 write_mmp_block+0x2f2/0x3a0 fs/ext4/mmp.c:66
 kmmpd+0x26d/0xaa0 fs/ext4/mmp.c:246
 kthread+0x2f0/0x390 kernel/kthread.c:389
 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>

Showing all locks held in the system:
4 locks held by kworker/u8:1/12:
 #0: ffff888018ecb948 ((wq_completion)writeback){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline]
 #0: ffff888018ecb948 ((wq_completion)writeback){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329
 #1: ffffc90000117d00 ((work_completion)(&(&wb->dwork)->work)){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline]
 #1: ffffc90000117d00 ((work_completion)(&(&wb->dwork)->work)){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329
 #2: ffff88802fd960e0 (&type->s_umount_key#31){++++}-{3:3}, at: super_trylock_shared+0x22/0xf0 fs/super.c:562
 #3: ffff8880b942a718 (&base->lock){-.-.}-{2:2}, at: __mod_timer+0x744/0xeb0 kernel/time/timer.c:1164
1 lock held by khungtaskd/30:
 #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:329 [inline]
 #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:781 [inline]
 #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: debug_show_all_locks+0x55/0x2a0 kernel/locking/lockdep.c:6614
2 locks held by dhcpcd/4747:
 #0: ffff888051767678 (nlk_cb_mutex-ROUTE){+.+.}-{3:3}, at: netlink_dump+0xcb/0xe50 net/netlink/af_netlink.c:2277
 #1: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: netlink_dump+0x5d3/0xe50 net/netlink/af_netlink.c:2336
2 locks held by getty/4835:
 #0: ffff88802fd500a0 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref_wait+0x25/0x70 drivers/tty/tty_ldisc.c:243
 #1: ffffc90002f0e2f0 (&ldata->atomic_read_lock){+.+.}-{3:3}, at: n_tty_read+0x6b5/0x1e10 drivers/tty/n_tty.c:2211
3 locks held by kworker/1:4/5136:
 #0: ffff888015080948 ((wq_completion)events){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline]
 #0: ffff888015080948 ((wq_completion)events){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329
 #1: ffffc900046f7d00 ((linkwatch_work).work){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline]
 #1: ffffc900046f7d00 ((linkwatch_work).work){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329
 #2: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: linkwatch_event+0xe/0x60 net/core/link_watch.c:276
6 locks held by kworker/u8:9/9949:
 #0: ffff888015ed3148 ((wq_completion)netns){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline]
 #0: ffff888015ed3148 ((wq_completion)netns){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329
 #1: ffffc90003adfd00 (net_cleanup_work){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline]
 #1: ffffc90003adfd00 (net_cleanup_work){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329
 #2: ffffffff8f5c80d0 (pernet_ops_rwsem){++++}-{3:3}, at: cleanup_net+0x16a/0xcc0 net/core/net_namespace.c:594
 #3: ffff88806e0340e8 (&dev->mutex){....}-{3:3}, at: device_lock include/linux/device.h:1009 [inline]
 #3: ffff88806e0340e8 (&dev->mutex){....}-{3:3}, at: devl_dev_lock net/devlink/devl_internal.h:108 [inline]
 #3: ffff88806e0340e8 (&dev->mutex){....}-{3:3}, at: devlink_pernet_pre_exit+0x13b/0x440 net/devlink/core.c:506
 #4: ffff88806e035250 (&devlink->lock_key#117){+.+.}-{3:3}, at: devl_lock net/devlink/core.c:276 [inline]
 #4: ffff88806e035250 (&devlink->lock_key#117){+.+.}-{3:3}, at: devl_dev_lock net/devlink/devl_internal.h:109 [inline]
 #4: ffff88806e035250 (&devlink->lock_key#117){+.+.}-{3:3}, at: devlink_pernet_pre_exit+0x14d/0x440 net/devlink/core.c:506
 #5: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: nsim_init_netdevsim drivers/net/netdevsim/netdev.c:678 [inline]
 #5: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: nsim_create+0x408/0x890 drivers/net/netdevsim/netdev.c:750
1 lock held by syz-executor/16187:
 #0: ffff88801fb3e0e0 (&type->s_umount_key#31){++++}-{3:3}, at: __super_lock fs/super.c:56 [inline]
 #0: ffff88801fb3e0e0 (&type->s_umount_key#31){++++}-{3:3}, at: __super_lock_excl fs/super.c:71 [inline]
 #0: ffff88801fb3e0e0 (&type->s_umount_key#31){++++}-{3:3}, at: deactivate_super+0xb5/0xf0 fs/super.c:505
1 lock held by kmmpd-loop3/16389:
 #0: ffff88801fb3e420 (sb_writers#4){++++}-{0:0}, at: kmmpd+0x26d/0xaa0 fs/ext4/mmp.c:246
1 lock held by syz.3.1124/16973:
 #0: ffff88801fb3e0e0 (&type->s_umount_key#31){++++}-{3:3}, at: __super_lock fs/super.c:56 [inline]
 #0: ffff88801fb3e0e0 (&type->s_umount_key#31){++++}-{3:3}, at: super_lock+0x196/0x400 fs/super.c:120
2 locks held by kworker/u8:5/17216:
 #0: ffff8880b943e758 (&rq->__lock){-.-.}-{2:2}, at: raw_spin_rq_lock_nested+0x2a/0x140 kernel/sched/core.c:559
 #1: ffff8880b9428948 (&per_cpu_ptr(group->pcpu, cpu)->seq){-.-.}-{0:0}, at: psi_task_switch+0x3a7/0x770 kernel/sched/psi.c:976
8 locks held by syz-executor/17933:
 #0: ffff88801e4ee420 (sb_writers#8){.+.+}-{0:0}, at: file_start_write include/linux/fs.h:2854 [inline]
 #0: ffff88801e4ee420 (sb_writers#8){.+.+}-{0:0}, at: vfs_write+0x227/0xc90 fs/read_write.c:586
 #1: ffff88802a9d4488 (&of->mutex){+.+.}-{3:3}, at: kernfs_fop_write_iter+0x1eb/0x500 fs/kernfs/file.c:325
 #2: ffff8880236b6788 (kn->active#49){.+.+}-{0:0}, at: kernfs_fop_write_iter+0x20f/0x500 fs/kernfs/file.c:326
 #3: ffffffff8eee1f28 (nsim_bus_dev_list_lock){+.+.}-{3:3}, at: del_device_store+0xfc/0x480 drivers/net/netdevsim/bus.c:216
 #4: ffff8880582a00e8 (&dev->mutex){....}-{3:3}, at: device_lock include/linux/device.h:1009 [inline]
 #4: ffff8880582a00e8 (&dev->mutex){....}-{3:3}, at: __device_driver_lock drivers/base/dd.c:1093 [inline]
 #4: ffff8880582a00e8 (&dev->mutex){....}-{3:3}, at: device_release_driver_internal+0xce/0x7c0 drivers/base/dd.c:1290
 #5: ffff8880582a7250 (&devlink->lock_key#121){+.+.}-{3:3}, at: nsim_drv_remove+0x50/0x160 drivers/net/netdevsim/dev.c:1672
 #6: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: nsim_destroy+0x71/0x5c0 drivers/net/netdevsim/netdev.c:773
 #7: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: exp_funnel_lock kernel/rcu/tree_exp.h:291 [inline]
 #7: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: synchronize_rcu_expedited+0x381/0x830 kernel/rcu/tree_exp.h:939
1 lock held by syz-executor/18023:
 #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_lock net/core/rtnetlink.c:79 [inline]
 #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x842/0x1180 net/core/rtnetlink.c:6632
1 lock held by syz-executor/18040:
 #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_lock net/core/rtnetlink.c:79 [inline]
 #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x842/0x1180 net/core/rtnetlink.c:6632
1 lock held by syz-executor/18086:
 #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_lock net/core/rtnetlink.c:79 [inline]
 #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x842/0x1180 net/core/rtnetlink.c:6632
2 locks held by syz-executor/18127:
 #0: ffffffff8f5c80d0 (pernet_ops_rwsem){++++}-{3:3}, at: copy_net_ns+0x4c6/0x7b0 net/core/net_namespace.c:504
 #1: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: ip_tunnel_init_net+0x20e/0x710 net/ipv4/ip_tunnel.c:1159

=============================================

NMI backtrace for cpu 0
CPU: 0 PID: 30 Comm: khungtaskd Not tainted 6.10.0-rc7-syzkaller-00012-g34afb82a3c67 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
 nmi_cpu_backtrace+0x49c/0x4d0 lib/nmi_backtrace.c:113
 nmi_trigger_cpumask_backtrace+0x198/0x320 lib/nmi_backtrace.c:62
 trigger_all_cpu_backtrace include/linux/nmi.h:162 [inline]
 check_hung_uninterruptible_tasks kernel/hung_task.c:223 [inline]
 watchdog+0xfde/0x1020 kernel/hung_task.c:379
 kthread+0x2f0/0x390 kernel/kthread.c:389
 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>
Sending NMI from CPU 0 to CPUs 1:
NMI backtrace for cpu 1
CPU: 1 PID: 12 Comm: kworker/u8:1 Not tainted 6.10.0-rc7-syzkaller-00012-g34afb82a3c67 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
Workqueue: events_unbound cfg80211_wiphy_work
RIP: 0010:check_kcov_mode kernel/kcov.c:184 [inline]
RIP: 0010:__sanitizer_cov_trace_pc+0x37/0x70 kernel/kcov.c:207
Code: 80 d4 03 00 65 8b 15 b0 ad 6d 7e f7 c2 00 01 ff 00 74 11 f7 c2 00 01 00 00 74 35 83 b9 1c 16 00 00 00 74 2c 8b 91 f8 15 00 00 <83> fa 02 75 21 48 8b 91 00 16 00 00 48 8b 32 48 8d 7e 01 8b 89 fc
RSP: 0018:ffffc90000116a80 EFLAGS: 00000246
RAX: ffffffff8140f017 RBX: ffffffff8accb138 RCX: ffff8880176b5a00
RDX: 0000000000000000 RSI: ffffffff8accb138 RDI: ffffc90000116b60
RBP: ffffc90000116b60 R08: 0000000000000003 R09: ffffc90000116c50
R10: 0000000000000003 R11: ffffffff8181dca0 R12: ffff8880176b5a00
R13: dffffc0000000000 R14: ffffc90000116c40 R15: ffffc90000116b60
FS:  0000000000000000(0000) GS:ffff8880b9500000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffc5ed43f8c CR3: 000000000e132000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <NMI>
 </NMI>
 <TASK>
 unwind_next_frame+0x27/0x2a00 arch/x86/kernel/unwind_orc.c:469
 arch_stack_walk+0x151/0x1b0 arch/x86/kernel/stacktrace.c:25
 stack_trace_save+0x118/0x1d0 kernel/stacktrace.c:122
 kasan_save_stack mm/kasan/common.c:47 [inline]
 kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
 poison_kmalloc_redzone mm/kasan/common.c:370 [inline]
 __kasan_kmalloc+0x98/0xb0 mm/kasan/common.c:387
 kasan_kmalloc include/linux/kasan.h:211 [inline]
 __do_kmalloc_node mm/slub.c:4123 [inline]
 __kmalloc_noprof+0x1f9/0x400 mm/slub.c:4136
 kmalloc_noprof include/linux/slab.h:664 [inline]
 kzalloc_noprof include/linux/slab.h:778 [inline]
 cfg80211_inform_single_bss_data+0xd78/0x2360 net/wireless/scan.c:2265
 cfg80211_inform_bss_data+0x3dd/0x5a70 net/wireless/scan.c:3117
 cfg80211_inform_bss_frame_data+0x3bc/0x720 net/wireless/scan.c:3207
 ieee80211_bss_info_update+0x8a7/0xbc0 net/mac80211/scan.c:226
 ieee80211_rx_bss_info net/mac80211/ibss.c:1099 [inline]
 ieee80211_rx_mgmt_probe_beacon net/mac80211/ibss.c:1578 [inline]
 ieee80211_ibss_rx_queued_mgmt+0x1962/0x2d70 net/mac80211/ibss.c:1605
 ieee80211_iface_process_skb net/mac80211/iface.c:1603 [inline]
 ieee80211_iface_work+0x8a3/0xf10 net/mac80211/iface.c:1657
 cfg80211_wiphy_work+0x221/0x260 net/wireless/core.c:437
 process_one_work kernel/workqueue.c:3248 [inline]
 process_scheduled_works+0xa2c/0x1830 kernel/workqueue.c:3329
 worker_thread+0x86d/0xd50 kernel/workqueue.c:3409
 kthread+0x2f0/0x390 kernel/kthread.c:389
 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
.

From: Philipp Zabel <p.zabel@pengutronix.de>
Subject: [PATCH v3 0/2] Input: exc3000 - EXC81W32 controller support
Date: Wed, 10 Jul 2024 12:28:30 +0200
Message-Id: <20240710-input-exc3000-exc81w32-v3-0-4272183628b4@pengutronix.de>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>, 
 Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>
Cc: linux-input@vger.kernel.org, devicetree@vger.kernel.org, 
 linux-kernel@vger.kernel.org, kernel@pengutronix.de, 
 Philipp Zabel <p.zabel@pengutronix.de>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273445
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-input
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

EXC81W32 controllers use the same protocol and have the same resolution
as the EXC80 controllers. They can be supported by the exc3000 driver
with minimal changes.

Their featureset may differ, though. Looking at the messages, it appears
the EXC81 also supports touch pressure or area measurement, for example.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
Changes in v3:
- mark exc81w32 as compatible with exc80h84
- Link to v2: https://lore.kernel.org/r/20240628-input-exc3000-exc81w32-v2-0-c2b21a369c05@pengutronix.de

Changes in v2:
- split device tree binding compatible update out of the driver patch
- Link to v1: https://lore.kernel.org/r/20240626-input-exc3000-exc81w32-v1-1-ac42d3b87aff@pengutronix.de

---
Philipp Zabel (2):
      dt-bindings: input: touchscreen: exc3000: add EXC81W32
      Input: exc3000 - add EXC81W32 support

 .../devicetree/bindings/input/touchscreen/eeti,exc3000.yaml  | 12 ++++++++----
 drivers/input/touchscreen/exc3000.c                          |  7 +++++++
 2 files changed, 15 insertions(+), 4 deletions(-)
---
base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
change-id: 20240626-input-exc3000-exc81w32-58585ba4a98f

Best regards,
-- 
Philipp Zabel <p.zabel@pengutronix.de>

.

From: Ma Ke <make24@iscas.ac.cn>
To: fbarrat@linux.ibm.com,
	ajd@linux.ibm.com,
	arnd@arndb.de,
	gregkh@linuxfoundation.org,
	clombard@linux.vnet.ibm.com,
	imunsie@au1.ibm.com,
	mpe@ellerman.id.au,
	manoj@linux.vnet.ibm.com
Cc: linuxppc-dev@lists.ozlabs.org,
	linux-kernel@vger.kernel.org,
	Ma Ke <make24@iscas.ac.cn>,
	stable@vger.kernel.org
Subject: [PATCH v2] cxl: Fix possible null pointer dereference in read_handle()
Date: Wed, 10 Jul 2024 18:33:52 +0800
Message-Id: <20240710103352.1890726-1-make24@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273452
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.ozlabs.lists.linuxppc-dev
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In read_handle(), of_get_address() may return NULL which is later
dereferenced. Fix this by adding NULL check.

Cc: stable@vger.kernel.org
Fixes: 14baf4d9c739 ("cxl: Add guest-specific code")
Signed-off-by: Ma Ke <make24@iscas.ac.cn>
---
Changes in v2:
- The potential vulnerability was discovered as follows: based on our 
customized static analysis tool, extract vulnerability features[1], and 
then match similar vulnerability features in this function.
- Reference link:
[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2d9adecc88ab678785b581ab021f039372c324cb
---
 drivers/misc/cxl/of.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/misc/cxl/of.c b/drivers/misc/cxl/of.c
index bcc005dff1c0..d8dbb3723951 100644
--- a/drivers/misc/cxl/of.c
+++ b/drivers/misc/cxl/of.c
@@ -58,7 +58,7 @@ static int read_handle(struct device_node *np, u64 *handle)
 
 	/* Get address and size of the node */
 	prop = of_get_address(np, 0, &size, NULL);
-	if (size)
+	if (!prop || size)
 		return -EINVAL;
 
 	/* Helper to read a big number; size is in cells (not bytes) */
-- 
2.25.1

.

From: =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Subject: [PATCH 00/15] usb: typec: tcpci: few TCPCi & TCPCi-Maxim cleanups
 (mostly genmask())
Date: Wed, 10 Jul 2024 11:36:07 +0100
Message-Id: <20240710-tcpc-cleanup-v1-0-0ec1f41f4263@linaro.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Peter Griffin <peter.griffin@linaro.org>, 
 Tudor Ambarus <tudor.ambarus@linaro.org>, 
 Will McVicker <willmcvicker@google.com>, 
 Badhri Jagan Sridharan <badhri@google.com>, kernel-team@android.com, 
 linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, 
 =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273455
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

While looking through the TCPCi drivers, it occurred to me that all of the
open-coded register bit manipulations can be simplified and made more
legible by using the standard GENMASK(), FIELD_GET(), and FIELD_PREP()
macros, which also is less prone to errors: e.g.

	if (((reg & (TCPC_ROLE_CTRL_CC2_MASK << TCPC_ROLE_CTRL_CC2_SHIFT)) >>
	     TCPC_ROLE_CTRL_CC2_SHIFT) !=
	    ((reg & (TCPC_ROLE_CTRL_CC1_MASK << TCPC_ROLE_CTRL_CC1_SHIFT)) >>
	     TCPC_ROLE_CTRL_CC1_SHIFT))

(arguably) is much harder to read and reason about than:

	if (FIELD_GET(TCPC_ROLE_CTRL_CC2, reg) != FIELD_GET(TCPC_ROLE_CTRL_CC1, reg))

and so on.

These patches do that. In addition, there are a few comment fixes and I
added in a conversion to using dev_err_probe() and
devm_add_action_or_reset() in the Maxim TCPCi driver.

I kept the patches separated by register or register field as appropriate to
simplify reviewing, allowing to focus on one field/register at a time.

Signed-off-by: AndrÃ© Draszik <andre.draszik@linaro.org>
---
AndrÃ© Draszik (15):
      usb: typec: tcpci: fix a comment typo
      usb: typec: tcpm/tcpci_maxim: clarify a comment
      usb: typec: tcpci: use GENMASK() for TCPC_CC_STATUS_CC[12]
      usb: typec: tcpci: use GENMASK() for TCPC_ROLE_CTRL_CC[12]
      usb: typec: tcpci: use GENMASK() for TCPC_ROLE_CTRL_RP_VAL
      usb: typec: tcpci: use GENMASK() for TCPC_MSG_HDR_INFO_REV
      usb: typec: tcpci: use GENMASK() for TCPC_TRANSMIT register fields
      usb: typec: tcpm/tcpci_maxim: sort TCPC_ALERT_MASK values by bit
      usb: typec: tcpm/tcpci_maxim: simplify clearing of TCPC_ALERT_RX_BUF_OVF
      usb: typec: tcpm/tcpci_maxim: drop STATUS_CHECK()
      usb: typec: tcpm/tcpci_maxim: use GENMASK() for TCPC_VENDOR_CC_CTRL2 register
      usb: typec: tcpm/tcpci_maxim: use GENMASK() for TCPC_VENDOR_CC_CTRL3 register
      usb: typec: tcpm/tcpci_maxim: use GENMASK() for TCPC_VENDOR_ADC_CTRL1 register
      usb: typec: tcpm/tcpci_maxim: convert to dev_err_probe()
      usb: typec: tcpm/tcpci_maxim: use device managed TCPCI port deregistration

 drivers/usb/typec/anx7411.c                |   5 +-
 drivers/usb/typec/tcpm/maxim_contaminant.c |  46 +++++++------
 drivers/usb/typec/tcpm/tcpci.c             | 104 ++++++++++++++---------------
 drivers/usb/typec/tcpm/tcpci_maxim.h       |  18 ++---
 drivers/usb/typec/tcpm/tcpci_maxim_core.c  |  71 ++++++++++----------
 drivers/usb/typec/tcpm/tcpci_rt1711h.c     |  27 ++++----
 include/linux/usb/tcpci.h                  |  31 +++------
 7 files changed, 144 insertions(+), 158 deletions(-)
---
base-commit: 82d01fe6ee52086035b201cfa1410a3b04384257
change-id: 20240710-tcpc-cleanup-61e29124a87d

Best regards,
-- 
AndrÃ© Draszik <andre.draszik@linaro.org>

.

From: Richard Fitzgerald <rf@opensource.cirrus.com>
To: <broonie@kernel.org>
CC: <linux-kernel@vger.kernel.org>, <patches@opensource.cirrus.com>,
        <alsa-devel@alsa-project.org>, <linux-sound@vger.kernel.org>
Subject: [PATCH v2 0/4] firmware: cs_dsp: Some small coding improvements
Date: Wed, 10 Jul 2024 11:36:36 +0100
Message-ID: <20240710103640.78197-1-rf@opensource.cirrus.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273472
Newsgroups: org.kernel.vger.linux-kernel,org.alsa-project.alsa-devel,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Commit series that makes some small improvements to code and the
kernel log messages.

---
Changes since V1:
- Replaced commit #3 with one that keeps the wmfw format version
  message on its own line instead of merging it into the INFO text
  message.
- Commit #4 rebased onto the new #3

Richard Fitzgerald (4):
  firmware: cs_dsp: Don't allocate temporary buffer for info text
  firmware: cs_dsp: Make wmfw and bin filename arguments const char *
  firmware: cs_dsp: Clarify wmfw format version log message
  firmware: cs_dsp: Rename fw_ver to wmfw_ver

 drivers/firmware/cirrus/cs_dsp.c       | 68 +++++++++-----------------
 include/linux/firmware/cirrus/cs_dsp.h | 10 ++--
 sound/soc/codecs/wm_adsp.c             |  2 +-
 3 files changed, 29 insertions(+), 51 deletions(-)

-- 
2.39.2

.

Date: Wed, 10 Jul 2024 20:36:46 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Linux Next Mailing List <linux-next@vger.kernel.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: linux-next: Tree for Jul 10
Message-ID: <20240710203646.306d9190@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/NYRIbLSHrHYuucegfi.2CzU";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273477 org.kernel.vger.linux-next:62178
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/NYRIbLSHrHYuucegfi.2CzU
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

Changes since 20240709:

The mm tree lost its build failure but gained another for which I applied
a patch.

The dma-mapping tree gained a build failure for which I applied a patch.

The drm tree still had its build failures for which I reverted a commit.

The mfd tree gained a conflict against the mmc tree.

The leds-lj tree gained a build failure so I used the version from
next-20240709.

Non-merge commits (relative to Linus' tree): 11134
 11585 files changed, 830616 insertions(+), 214053 deletions(-)

----------------------------------------------------------------------------

I have created today's linux-next tree at
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
(patches at http://www.kernel.org/pub/linux/kernel/next/ ).  If you
are tracking the linux-next tree using git, you should not use "git pull"
to do so as that will try to merge the new linux-next release with the
old one.  You should use "git fetch" and checkout or reset to the new
master.

You can see which trees have been included by looking in the Next/Trees
file in the source.  There is also the merge.log file in the Next
directory.  Between each merge, the tree was built with a ppc64_defconfig
for powerpc, an allmodconfig for x86_64, a multi_v7_defconfig for arm
and a native build of tools/perf. After the final fixups (if any), I do
an x86_64 modules_install followed by builds for x86_64 allnoconfig,
powerpc allnoconfig (32 and 64 bit), ppc44x_defconfig, allyesconfig
and pseries_le_defconfig and i386, arm64, s390, sparc and sparc64
defconfig and htmldocs. And finally, a simple boot test of the powerpc
pseries_le_defconfig kernel in qemu (with and without kvm enabled).

Below is a summary of the state of the merge.

I am currently merging 378 trees (counting Linus' and 106 trees of bug
fix patches pending for the current merge release).

Stats about the size of the tree over time can be seen at
http://neuling.org/linux-next-size.html .

Status of my local build tests will be at
http://kisskb.ellerman.id.au/linux-next .  If maintainers want to give
advice about cross compilers/configs that work, we are always open to add
more builds.

Thanks to Randy Dunlap for doing many randconfig builds.  And to Paul
Gortmaker for triage and bug fixes.

--=20
Cheers,
Stephen Rothwell

$ git checkout master
$ git reset --hard stable
Merging origin/master (34afb82a3c67 Merge tag '6.10-rc6-smb3-server-fixes' =
of git://git.samba.org/ksmbd)
Merging fixes/fixes (2dde18cd1d8f Linux 6.5)
Merging mm-hotfixes/mm-hotfixes-unstable (557b663c654c dt-bindings: arm: op=
date James Clark's email address)
Merging vfs-brauner-fixes/vfs.fixes (0570730c1630 hfsplus: fix uninit-value=
 in copy_name)
Merging fscrypt-current/for-current (256abd8e550c Linux 6.10-rc7)
Merging fsverity-current/for-current (256abd8e550c Linux 6.10-rc7)
Merging btrfs-fixes/next-fixes (f04a05bcdad5 Merge branch 'misc-6.10' into =
next-fixes)
Merging vfs-fixes/fixes (bba1f6758a9e lirc: rc_dev_get_from_fd(): fix file =
leak)
Merging erofs-fixes/fixes (9b32b063be10 erofs: ensure m_llen is reset to 0 =
if metadata is invalid)
Merging nfsd-fixes/nfsd-fixes (ac03629b1612 Revert "nfsd: fix oops when rea=
ding pool_stats before server is started")
Merging v9fs-fixes/fixes/next (1613e604df0c Linux 6.10-rc1)
Merging overlayfs-fixes/ovl-fixes (77a28aa47687 ovl: relax WARN_ON in ovl_v=
erify_area())
Merging fs-current (e8ee69b5fe5d Merge branch 'fixes' of git://git.kernel.o=
rg/pub/scm/linux/kernel/git/viro/vfs.git)
Merging kbuild-current/fixes (22a40d14b572 Linux 6.10-rc6)
Merging arc-current/for-curr (e67572cd2204 Linux 6.9-rc6)
Merging arm-current/fixes (0c66c6f4e21c ARM: 9359/1: flush: check if the fo=
lio is reserved for no-mapping addresses)
Merging arm64-fixes/for-next/fixes (ecc54006f158 arm64: Clear the initial I=
D map correctly before remapping)
Merging arm-soc-fixes/arm/fixes (f3a6a54104b8 MAINTAINERS: Move myself from=
 SPRD Maintainer to Reviewer)
Merging davinci-current/davinci/for-current (6613476e225e Linux 6.8-rc1)
Merging drivers-memory-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging sophgo-fixes/fixes (90f6cc7f8e07 riscv: dts: sophgo: disable write-=
protection for milkv duo)
Merging m68k-current/for-linus (ec8c8266373f m68k: defconfig: Update defcon=
figs for v6.9-rc1)
Merging powerpc-fixes/fixes (8b7f59de92ac selftests/powerpc: Fix build with=
 USERCFLAGS set)
Merging s390-fixes/fixes (b3a58f3b90f5 s390/dasd: Fix invalid dereferencing=
 of indirect CCW data pointer)
Merging net/main (f153831097b4 net: fix rc7's __skb_datagram_iter())
Merging bpf/master (f153831097b4 net: fix rc7's __skb_datagram_iter())
Merging ipsec/master (2d5317753e5f xfrm: Export symbol xfrm_dev_state_delet=
e.)
Merging netfilter/main (9f6958ba2e90 netfilter: nf_tables: unconditionally =
flush pending work before notifier)
Merging ipvs/main (9f6958ba2e90 netfilter: nf_tables: unconditionally flush=
 pending work before notifier)
Merging wireless/for-next (4130c67cd123 wifi: iwlwifi: mvm: check vif for N=
ULL/ERR_PTR before dereference)
Merging wpan/master (b8ec0dc3845f net: mac802154: Fix racy device stats upd=
ates by DEV_STATS_INC() and DEV_STATS_ADD())
Merging rdma-fixes/for-rc (f2661062f16b Linux 6.10-rc5)
Merging sound-current/for-linus (b46953029c52 ALSA: hda/realtek: Enable Mut=
e LED on HP 250 G7)
Merging sound-asoc-fixes/for-linus (680e126ec040 firmware: cs_dsp: Use strn=
len() on name fields in V1 wmfw files)
Merging regmap-fixes/for-linus (76f19626bd35 regmap: add missing MODULE_DES=
CRIPTION() macros)
Merging regulator-fixes/for-linus (f2661062f16b Linux 6.10-rc5)
Merging spi-fixes/for-linus (8221545c440b spi: omap2-mcspi: Revert multi mo=
de support)
Merging pci-current/for-linus (1613e604df0c Linux 6.10-rc1)
Merging driver-core.current/driver-core-linus (6ba59ff42279 Linux 6.10-rc4)
Merging tty.current/tty-linus (2ac33975abda serial: qcom-geni: do not kill =
the machine on fifo underrun)
Merging usb.current/usb-linus (6d3c721e686e usb: gadget: configfs: Prevent =
OOB read/write in usb_string_copy())
Merging usb-serial-fixes/usb-linus (c15a688e4998 USB: serial: mos7840: fix =
crash on resume)
Merging phy/fixes (f2661062f16b Linux 6.10-rc5)
Merging staging.current/staging-linus (22a40d14b572 Linux 6.10-rc6)
Merging iio-fixes/fixes-togreg (1d7cfde11d49 staging: iio: frequency: ad983=
4: Validate frequency parameter value)
Merging counter-current/counter-current (22a40d14b572 Linux 6.10-rc6)
Merging char-misc.current/char-misc-linus (389637d4fb5f mei: vsc: Fix spell=
ing error)
Merging soundwire-fixes/fixes (f2661062f16b Linux 6.10-rc5)
Merging thunderbolt-fixes/fixes (f2661062f16b Linux 6.10-rc5)
Merging input-current/for-linus (7c7b1be19b22 Input: ads7846 - use spi_devi=
ce_id table)
Merging crypto-current/master (a5d8922ab2ae crypto: qat - fix linking error=
s when PCI_IOV is disabled)
Merging vfio-fixes/for-linus (d71a989cf5d9 vfio/pci: Insert full vma on mma=
p'd MMIO fault)
Merging kselftest-fixes/fixes (66cde337fa1b selftests/vDSO: remove duplicat=
e compiler invocations from Makefile)
Merging dmaengine-fixes/fixes (f2661062f16b Linux 6.10-rc5)
Merging backlight-fixes/for-backlight-fixes (1613e604df0c Linux 6.10-rc1)
Merging mtd-fixes/mtd/fixes (b27d8946b5ed mtd: rawnand: rockchip: ensure NV=
DDR timings are rejected)
Merging mfd-fixes/for-mfd-fixes (68f860426d50 mfd: axp20x: AXP717: Fix miss=
ing IRQ status registers range)
Merging v4l-dvb-fixes/fixes (fd404435d44b media: ivsc: Depend on IPU_BRIDGE=
 or not IPU_BRIDGE)
Merging reset-fixes/reset/fixes (ab35896730a5 reset: hisilicon: hi6220: add=
 missing MODULE_DESCRIPTION() macro)
Merging mips-fixes/mips-fixes (0d5679a0aae2 mips: fix compat_sys_lseek sysc=
all)
Merging at91-fixes/at91-fixes (1613e604df0c Linux 6.10-rc1)
Merging omap-fixes/fixes (9b6a51aab5f5 ARM: dts: Fix occasional boot hang f=
or am3 usb)
Merging kvm-fixes/master (8ad209fc6448 Merge tag 'kvm-s390-master-6.10-1' o=
f git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD)
Merging kvms390-fixes/master (4c6abb7f7b34 KVM: s390: fix LPSWEY handling)
Merging hwmon-fixes/hwmon (6ba59ff42279 Linux 6.10-rc4)
Merging nvdimm-fixes/libnvdimm-fixes (33908660e814 ACPI: NFIT: Fix incorrec=
t calculation of idt size)
Merging cxl-fixes/fixes (a0f39d51dbf7 cxl: documentation: add missing files=
 to cxl driver-api)
Merging dma-mapping-fixes/for-linus (75961ffb5cb3 swiotlb: initialise restr=
icted pool list_head when SWIOTLB_DYNAMIC=3Dy)
Merging drivers-x86-fixes/fixes (e527a6127223 platform/x86: toshiba_acpi: F=
ix quickstart quirk handling)
Merging samsung-krzk-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging pinctrl-samsung-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging devicetree-fixes/dt/linus (2cf6b7d15a28 of/irq: Disable "interrupt-=
map" parsing for PASEMI Nemo)
Merging dt-krzk-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging scsi-fixes/fixes (7a6bbc2829d4 scsi: sd: Do not repeat the starting=
 disk message)
Merging drm-fixes/drm-fixes (256abd8e550c Linux 6.10-rc7)
Merging drm-intel-fixes/for-linux-next-fixes (f36139c756a9 i915/perf: Remov=
e code to update PWR_CLK_STATE for gen12)
Merging mmc-fixes/fixes (ab069ce12596 mmc: sdhci: Do not lock spinlock arou=
nd mmc_gpio_get_ro())
Merging rtc-fixes/rtc-fixes (1613e604df0c Linux 6.10-rc1)
Merging gnss-fixes/gnss-linus (6ba59ff42279 Linux 6.10-rc4)
Merging hyperv-fixes/hyperv-fixes (3b85a2eacd3d Documentation: hyperv: Add =
overview of Confidential Computing VM support)
Merging soc-fsl-fixes/fix (06c2afb862f9 Linux 6.5-rc1)
Merging risc-v-fixes/fixes (c562ba719df5 riscv: kexec: Avoid deadlock in ke=
xec crash path)
Merging riscv-dt-fixes/riscv-dt-fixes (e21de658f8e8 MAINTAINERS: thead: upd=
ate Maintainer)
Merging riscv-soc-fixes/riscv-soc-fixes (1613e604df0c Linux 6.10-rc1)
Merging fpga-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging spdx/spdx-linus (a3e18a540541 Merge tag 'xfs-6.10-fixes-3' of git:/=
/git.kernel.org/pub/scm/fs/xfs/xfs-linux)
Merging gpio-brgl-fixes/gpio/for-current (256abd8e550c Linux 6.10-rc7)
Merging gpio-intel-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging pinctrl-intel-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging auxdisplay-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging kunit-fixes/kunit-fixes (1613e604df0c Linux 6.10-rc1)
Merging memblock-fixes/fixes (8043832e2a12 memblock: use numa_valid_node() =
helper to check for invalid node ID)
Merging renesas-fixes/fixes (8c987693dc2d ARM: dts: renesas: rcar-gen2: Add=
 missing #interrupt-cells to DA9063 nodes)
Merging perf-current/perf-tools (7b2450bb4027 perf dsos: When adding a dso =
into sorted dsos maintain the sort order)
Merging efi-fixes/urgent (46e27b9961d8 efi/arm64: Fix kmemleak false positi=
ve in arm64_efi_rt_init())
Merging zstd-fixes/zstd-linus (77618db34645 zstd: Fix array-index-out-of-bo=
unds UBSAN warning)
Merging battery-fixes/fixes (d3911f1639e6 power: supply: rt5033: Bring back=
 i2c_set_clientdata)
Merging uml-fixes/fixes (73a23d771033 um: harddog: fix modular build)
Merging iommufd-fixes/for-rc (dd5a440a31fa Linux 6.9-rc7)
Merging rust-fixes/rust-fixes (a126eca84435 rust: avoid unused import warni=
ng in `rusttest`)
Merging w1-fixes/fixes (1613e604df0c Linux 6.10-rc1)
Merging pmdomain-fixes/fixes (ddab91f4b2de pmdomain: qcom: rpmhpd: Skip ret=
ention level for Power Domains)
Merging i2c-host-fixes/i2c/i2c-host-fixes (4e36c0f20cb1 i2c: rcar: bring ha=
rdware to known state when probing)
Merging sparc-fixes/for-linus (6613476e225e Linux 6.8-rc1)
Merging clk-fixes/clk-fixes (10f84de27bd0 Merge tag 'qcom-clk-fixes-for-6.1=
0' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into clk-f=
ixes)
Merging pwrseq-fixes/pwrseq/for-current (83a7eefedc9b Linux 6.10-rc3)
Merging drm-misc-fixes/for-linux-next-fixes (cb520c3f366c drm/gma500: fix n=
ull pointer dereference in cdv_intel_lvds_get_modes)
Merging mm-stable/mm-stable (71547ac57102 mm: zswap: fix zswap_never_enable=
d() for CONFIG_ZSWAP=3D=3DN)
Merging mm-nonmm-stable/mm-nonmm-stable (0f3819e8c483 nilfs2: avoid undefin=
ed behavior in nilfs_cnt32_ge macro)
Merging mm/mm-everything (c94a01613651 foo)
Applying: fixup for "init/modpost: conditionally check section mismatch to =
__meminit*"
Merging kbuild/for-next (cd843d58ee1d kbuild: deb-pkg: use default string w=
hen variable is unset or null)
Merging clang-format/clang-format (5a205c6a9f79 clang-format: Update with v=
6.7-rc4's `for_each` macro list)
Merging perf/perf-tools-next (608c3b1e612a perf install: Don't propagate su=
bdir to Documentation submake)
Merging compiler-attributes/compiler-attributes (2993eb7a8d34 Compiler Attr=
ibutes: counted_by: fixup clang URL)
Merging dma-mapping/for-next (b21a42af002d swiotlb: reduce swiotlb pool loo=
kups)
Applying: fixup for "swiotlb: reduce swiotlb pool lookups"
Merging asm-generic/master (f564176f4e4f riscv: convert to generic syscall =
table)
Merging arc/for-next (0bb80ecc33a8 Linux 6.6-rc1)
Merging arm/for-next (b5e352609497 Merge branches 'clkdev', 'fixes' and 'mi=
sc' into for-next)
Merging arm64/for-next/core (8b288f7785c6 Merge branch 'for-next/misc' into=
 for-next/core)
Merging arm-perf/for-next/perf (dc4c33f753ca perf: arm_pmuv3: Add support f=
or Armv9.4 PMU instruction counter)
Merging arm-soc/for-next (cc121e3945aa Merge branch 'soc/dt' into for-next)
Merging amlogic/for-next (18542679e730 Merge branch 'v6.11/arm-dt' into for=
-next)
Merging asahi-soc/asahi-soc/for-next (ffc253263a13 Linux 6.6)
Merging aspeed/for-next (73feb9cd46f1 ARM: dts: aspeed: System1: Updates to=
 BMC board)
Merging at91/at91-next (1cdb1c9626a4 Merge branch 'at91-defconfig' into at9=
1-next)
Merging broadcom/next (4caff16b6e00 Merge branch 'devicetree-arm64/next' in=
to next)
Merging davinci/davinci/for-next (6613476e225e Linux 6.8-rc1)
Merging drivers-memory/for-next (815cc7715ab1 dt-bindings: memory: fsl: rep=
lace maintainer)
Merging imx-mxs/for-next (ffa7b132ee5f Merge branch 'imx/defconfig' into fo=
r-next)
  3898bc187cde ("arm64: defconfig: Enable the IWLWIFI driver")
Merging mediatek/for-next (1613e604df0c Linux 6.10-rc1)
Merging mvebu/for-next (ffd0d7df6bdb Merge branch 'mvebu/dt64' into mvebu/f=
or-next)
Merging omap/for-next (5856330c3d56 Merge branch 'drivers-ti-sysc-for-v6.10=
' into for-next)
Merging qcom/for-next (6fd4da15c334 Merge branches 'arm32-for-6.11', 'arm64=
-defconfig-fixes-for-6.10', 'arm64-defconfig-for-6.11', 'arm64-fixes-for-6.=
10', 'arm64-for-6.11', 'clk-fixes-for-6.10', 'clk-for-6.11', 'drivers-fixes=
-for-6.10' and 'drivers-for-6.11' into for-next)
Merging renesas/next (5c91aa40e630 Merge branches 'renesas-arm-defconfig-fo=
r-v6.11' and 'renesas-dts-for-v6.11' into renesas-next)
Merging reset/reset/next (c1267e1afae6 arm64: dts: renesas: rz-smarc: Repla=
ce fixed regulator for USB VBUS)
Merging rockchip/for-next (d02701b77967 Merge branch 'v6.11-armsoc/dts64' i=
nto for-next)
Merging samsung-krzk/for-next (b305fd6840d1 Merge branch 'next/dt64' into f=
or-next)
  85863cee8ce0 ("soc: samsung: exynos-pmu: add support for PMU_ALIVE non at=
omic registers")
Merging scmi/for-linux-next (eaaeef9e62f9 Merge tags 'scmi-updates-6.11', '=
ffa-updates-6.11', 'vexpress-updates-6.11' and 'juno-updates-6.11' of ssh:/=
/gitolite.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into for-l=
inux-next)
Merging sophgo/for-next (1613e604df0c Linux 6.10-rc1)
Merging stm32/stm32-next (1eafc48af859 arm64: stm32: enable scmi regulator =
for stm32)
  1eafc48af859 ("arm64: stm32: enable scmi regulator for stm32")
Merging sunxi/sunxi/for-next (0682fbf17dd9 Merge branches 'sunxi/clk-fixes-=
for-6.10', 'sunxi/drivers-for-6.11' and 'sunxi/dt-for-6.11' into sunxi/for-=
next)
Merging tee/next (cd88a296582c Merge branch 'optee_notif_wait_timeout_for_v=
6.11' into next)
Merging tegra/for-next (5211d93c551f Merge branch for-6.11/arm64/defconfig =
into for-next)
Merging ti/ti-next (b6332e83c241 Merge branch 'ti-k3-dts-next' into ti-next)
Merging xilinx/for-next (41aa58501753 Merge branch 'zynqmp/soc' into for-ne=
xt)
Merging clk/clk-next (0e3575a61335 Merge branch 'clk-mediatek' into clk-nex=
t)
Merging clk-imx/for-next (466da3d2d967 clk: imx: composite-7ulp: Use NULL i=
nstead of 0)
Merging clk-renesas/renesas-clk (c7e58843d1e4 clk: renesas: r9a08g045: Add =
clock, reset and power domain support for I2C)
Merging csky/linux-next (2c40c1c6adab Merge tag 'usb-6.7-rc1' of git://git.=
kernel.org/pub/scm/linux/kernel/git/gregkh/usb)
Merging loongarch/loongarch-next (a08dcaa69e33 Merge branch 'loongarch-kvm'=
 into loongarch-next)
CONFLICT (content): Merge conflict in arch/loongarch/include/uapi/asm/unist=
d.h
CONFLICT (content): Merge conflict in tools/perf/arch/loongarch/util/Build
Applying: fixup for "LoongArch: Define __ARCH_WANT_NEW_STAT in unistd.h"
Merging m68k/for-next (21b9e722ad28 m68k: cmpxchg: Fix return value for def=
ault case in __arch_xchg())
Merging m68knommu/for-next (256abd8e550c Linux 6.10-rc7)
Merging microblaze/next (1613e604df0c Linux 6.10-rc1)
Merging mips/mips-next (680e7863de0c MIPS: GIC: Generate redirect block acc=
essors)
Merging openrisc/for-next (4dc70e1aadfa openrisc: Move FPU state out of pt_=
regs)
Merging parisc-hd/for-next (2fd4e52e442c parisc: Use max() to calculate par=
isc_tlb_flush_threshold)
Merging powerpc/next (20ce0c247b25 powerpc/pci: Hotplug driver bridge suppo=
rt)
CONFLICT (content): Merge conflict in arch/powerpc/mm/nohash/Makefile
Merging soc-fsl/next (fb9c384625dd bus: fsl-mc: fsl-mc-allocator: Drop a wr=
ite-only variable)
Merging risc-v/for-next (60a6707f582e Merge patch series "riscv: Memory Hot=
(Un)Plug support")
CONFLICT (content): Merge conflict in arch/riscv/kernel/patch.c
Merging riscv-dt/riscv-dt-for-next (2904244a8c46 riscv: dts: starfive: add =
PCIe dts configuration for JH7110)
Merging riscv-soc/riscv-soc-for-next (c813ef3c5f6c MAINTAINERS: drop riscv =
list from cache controllers)
Merging s390/for-next (313a6dadfa35 Merge branch 'features' into for-next)
Merging sh/for-next (1613e604df0c Linux 6.10-rc1)
Merging sparc/for-next (1c9e709cde80 sparc/leon: Remove on-stack cpumask va=
r)
Merging uml/next (98ff534ec2cd um: vector: always reset vp->opened)
Merging xtensa/xtensa-for-next (b7cf2a1d9881 xtensa: remove redundant flush=
_dcache_page and ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE macros)
Merging bcachefs/for-next (d6d793ae5589 bcachefs: Simplify btree key cache =
fill path)
CONFLICT (content): Merge conflict in fs/bcachefs/super.c
[fs-next af7c9743097a] Merge branch 'for-next' of https://evilpiepirate.org=
/git/bcachefs.git
Merging pidfd/for-next (a901a3568fd2 Merge tag 'iomap-6.5-merge-1' of git:/=
/git.kernel.org/pub/scm/fs/xfs/xfs-linux)
Merging fscrypt/for-next (256abd8e550c Linux 6.10-rc7)
Merging afs/afs-next (abcbd3bfbbfe afs: trace: Log afs_make_call(), includi=
ng server address)
Merging btrfs/for-next (871a1174fd0c Merge branch 'for-next-next-v6.10-2024=
0704' into for-next-20240704)
Merging ceph/master (93a2221c9c1a doc: ceph: update userspace command to ge=
t CephFS metadata)
Merging cifs/for-next (e8e820877963 cifs: fix setting SecurityFlags to true)
Merging configfs/for-next (4425c1d9b44d configfs: improve item creation per=
formance)
Merging dlm/next (89b01913dc73 dlm: add rcu_barrier before destroy kmem cac=
he)
Merging erofs/dev (2080ca1ed3e4 erofs: tidy up `struct z_erofs_bvec`)
Merging exfat/dev (0daa52fbc7ac exfat: fix potential deadlock on __exfat_ge=
t_dentry_set)
Merging exportfs/exportfs-next (e8f897f4afef Linux 6.8)
Merging ext3/for_next (85f22bb5d2c2 Merge UDF consistency fixes.)
Merging ext4/dev (83f4414b8f84 ext4: sanity check for NULL pointer after ex=
t4_force_shutdown)
  89a8718cef85 ("jbd2: add missing MODULE_DESCRIPTION()")
Merging f2fs/dev (388a2a0640e1 f2fs: remove redundant sanity check in sanit=
y_check_inode())
Merging fsverity/for-next (256abd8e550c Linux 6.10-rc7)
Merging fuse/for-next (529395d2ae64 virtio-fs: add multi-queue support)
Merging gfs2/for-next (f75efefb6db3 gfs2: Clean up glock demote logic)
Merging jfs/jfs-next (d0fa70aca54c jfs: don't walk off the end of ealist)
Merging ksmbd/ksmbd-for-next (e2e33caa5dc2 ksmbd: discard write access to t=
he directory open)
Merging nfs/linux-next (22a40d14b572 Linux 6.10-rc6)
Merging nfs-anna/linux-next (b571cfcb9dca nfs: don't reuse partially comple=
ted requests in nfs_lock_and_join_requests)
Merging nfsd/nfsd-next (a3123341dc35 gss_krb5: Fix the error handling path =
for crypto_sync_skcipher_setkey)
Merging ntfs3/master (bde63e8eae5d fs/ntfs3: Fix formatting, change comment=
s, renaming)
Merging orangefs/for-next (53e4efa470d5 orangefs: fix out-of-bounds fsid ac=
cess)
Merging overlayfs/overlayfs-next (004b8d1491b4 ovl: fix encoding fid for lo=
wer only root)
Merging ubifs/next (af9a8730ddb6 jffs2: Fix potential illegal address acces=
s in jffs2_free_inode)
Merging v9fs/9p-next (2211561723a6 9p: Enable multipage folios)
Merging v9fs-ericvh/ericvh/for-next (1613e604df0c Linux 6.10-rc1)
Merging xfs/for-next (49cdc4e834e4 xfs: get rid of xfs_ag_resv_rmapbt_alloc)
Merging zonefs/for-next (df2f9708ff1f zonefs: enable support for large foli=
os)
Merging iomap/iomap-for-next (3ac974796e5d iomap: fix short copy in iomap_w=
rite_iter())
Merging djw-vfs/vfs-for-next (ce85a1e04645 xfs: stabilize fs summary counte=
rs for online fsck)
Merging file-locks/locks-next (e0152e7481c6 Merge tag 'riscv-for-linus-6.6-=
mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux)
Merging iversion/iversion-next (e0152e7481c6 Merge tag 'riscv-for-linus-6.6=
-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux)
Merging vfs-brauner/vfs.all (5f30e082ab8b Merge branch 'vfs.iomap' into vfs=
.all Signed-off-by: Christian Brauner <brauner@kernel.org>)
CONFLICT (content): Merge conflict in fs/btrfs/inode.c
[fs-next 097b5bc6147b] Merge branch 'vfs.all' of git://git.kernel.org/pub/s=
cm/linux/kernel/git/vfs/vfs.git
Merging vfs/for-next (a38297e3fb01 Linux 6.9)
Merging fs-next (097b5bc6147b Merge branch 'vfs.all' of git://git.kernel.or=
g/pub/scm/linux/kernel/git/vfs/vfs.git)
CONFLICT (content): Merge conflict in arch/arm64/include/asm/unistd.h
CONFLICT (content): Merge conflict in arch/arm64/include/asm/unistd32.h
CONFLICT (content): Merge conflict in fs/nfs/internal.h
Applying: fixup for "fs/xattr: add *at family syscalls"
Merging printk/for-next (07c2ab22a8da Merge branch 'for-6.11' into for-next)
Merging pci/next (d9dcb950e926 Merge branch 'pci/misc')
CONFLICT (content): Merge conflict in drivers/pci/pci.c
Merging pstore/for-next/pstore (9b3c13c9ea4e pstore: platform: add missing =
MODULE_DESCRIPTION() macro)
Merging hid/for-next (3959f155ad59 Merge branch 'for-6.11/bpf' into for-nex=
t)
CONFLICT (content): Merge conflict in include/linux/hid_bpf.h
Merging i2c/i2c/for-next (35dc6101fd9c Merge branch 'i2c/for-current' into =
i2c/for-next)
Merging i2c-host/i2c/i2c-host (fd6acb0d21b8 i2c: mt7621: Add Airoha EN7581 =
i2c support)
Merging i3c/i3c/next (145ca7b61e95 i3c: dw: Add optional apb clock)
Merging dmi/dmi-for-next (4d1b28a8119c firmware: dmi: Add info message for =
number of populated and total memory slots)
Merging hwmon-staging/hwmon-next (f4a180247e06 hwmon: (g762) Initialize fan=
s after configuring clock)
Merging jc_docs/docs-next (4049657ff563 Merge branch 'docs-mw' into docs-ne=
xt)
Merging v4l-dvb/master (156922faabce media: atomisp: Switch to new Intel CP=
U model defines)
Merging v4l-dvb-next/master (5d5f67b3b23f media: atomisp: Fix spelling mist=
akes in sh_css_sp.c)
Merging pm/linux-next (72d2d9b52a2d Merge branch 'pm-opp' into linux-next)
Merging cpufreq-arm/cpufreq/arm/linux-next (d992f881764c cpufreq: sti: fix =
build warning)
Merging cpupower/cpupower (3a5bb5066f4c cpupower: fix lib default installat=
ion path)
Merging devfreq/devfreq-next (1d143dde7679 PM / devfreq: exynos: Use Use de=
vm_clk_get_enabled() helpers)
Merging pmdomain/next (67ce905f5f72 mdomain: Merge branch fixes into next)
Merging opp/opp/linux-next (e3943f00afdb OPP: Introduce an OF helper functi=
on to inform if required-opps is used)
Merging thermal/thermal/linux-next (7eeb114a635a dt-bindings: thermal: conv=
ert hisilicon-thermal.txt to dt-schema)
Merging rdma/for-next (af48f95492dc RDMA/core: Introduce "name_assign_type"=
 for an IB device)
Merging net-next/main (40ab9e0dc865 netxen_nic: Use {low,upp}er_32_bits() h=
elpers)
CONFLICT (content): Merge conflict in arch/riscv/net/bpf_jit_comp64.c
Applying: HID: bpf: Fix up build
Merging bpf-next/for-next (605c96997d89 bpf: relax zero fixed offset constr=
aint on KF_TRUSTED_ARGS/KF_RCU)
Merging ipsec-next/master (f531d13bdfe3 xfrm: support sending NAT keepalive=
s in ESP in UDP states)
Merging mlx5-next/mlx5-next (b339e0a39dc3 RDMA/mlx5: Add Qcounters req_tran=
sport_retries_exceeded/req_rnr_retries_exceeded)
Merging netfilter-next/main (ac26327635d6 Merge branch 'fixes-for-stm32-dwm=
ac-driver-fails-to-probe')
Merging ipvs-next/main (ac26327635d6 Merge branch 'fixes-for-stm32-dwmac-dr=
iver-fails-to-probe')
Merging bluetooth/master (c6052c312e85 Bluetooth: btnxpuart: Add system sus=
pend and resume handlers)
CONFLICT (content): Merge conflict in net/bluetooth/hci_core.c
Merging wireless-next/for-next (0321e45737b8 Merge tag 'rtw-next-2024-07-05=
' of https://github.com/pkshih/rtw)
Merging wpan-next/master (9187210eee7d Merge tag 'net-next-6.9' of git://gi=
t.kernel.org/pub/scm/linux/kernel/git/netdev/net-next)
Merging wpan-staging/staging (9187210eee7d Merge tag 'net-next-6.9' of git:=
//git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next)
Merging mtd/mtd/next (2538af030d6f mtd: cmdlinepart: Replace `dbg()` macro =
with `pr_debug()`)
Merging nand/nand/next (5f713030117a mtd: rawnand: lpx32xx: Fix dma_request=
_chan() error checks)
Merging spi-nor/spi-nor/next (d35df77707bf mtd: spi-nor: winbond: fix w25q1=
28 regression)
Merging crypto/master (8323c036789b crypto: starfive - Fix nent assignment =
in rsa dec)
Merging drm/drm-next (62a05f4ae9c1 Merge tag 'drm-msm-next-2024-07-04' of h=
ttps://gitlab.freedesktop.org/drm/msm into drm-next)
CONFLICT (content): Merge conflict in drivers/gpu/drm/xe/xe_migrate.c
Merging drm-exynos/for-linux-next (221009347844 drm/exynos/vidi: convert to=
 struct drm_edid)
Merging drm-misc/for-linux-next (ec85147a3529 drm/panel: sharp-lq101r1sx01:=
 Fixed reversed "if" in remove)
Merging amdgpu/drm-next (ee98fb71baa8 drm/amdgpu: set CP_HQD_PQ_DOORBELL_CO=
NTROL.DOORBELL_MODE to 1)
Merging drm-intel/for-linux-next (b2013783c445 drm/i915/display: Cache adpa=
tive sync caps to use it later)
Merging drm-tegra/for-next (2429b3c529da drm/tegra: Avoid potential 32-bit =
integer overflow)
Merging drm-msm/msm-next (fe34394ecdad dt-bindings: display/msm: dsi-contro=
ller-main: Add SM7150)
Merging drm-msm-lumag/msm-next-lumag (399af57ccca2 dt-bindings: display/msm=
/gpu: fix the schema being not applied)
Merging drm-xe/drm-xe-next (3d122660dc70 drm/xe/gt: Remove double include)
Merging etnaviv/etnaviv/next (704d3d60fec4 drm/etnaviv: don't block schedul=
er when GPU is still active)
Merging fbdev/for-next (7ee6cfe6d9cf fbdev: omap2: Return clk_prepare_enabl=
e to transfer the error)
Merging regmap/for-next (3dc4236dc44d Merge remote-tracking branch 'regmap/=
for-6.11' into regmap-next)
Merging sound/for-next (d2eb433c8546 ALSA: ppc: keywest: Drop explicit init=
ialization of struct i2c_device_id::driver_data to 0)
Merging ieee1394/for-next (9f349e8e532d Revert "firewire: ohci: use common =
macro to interpret be32 data in le32 buffer")
Merging sound-asoc/for-next (31e84a3d57d0 Merge remote-tracking branch 'aso=
c/for-6.11' into asoc-next)
Merging modules/modules-next (61842868de13 module: create weak dependecies)
Merging input/next (5e91cef94426 Input: himax_hx83112b - add support for HX=
83100A)
CONFLICT (content): Merge conflict in include/linux/interrupt.h
Merging block/for-next (1f04aa0a3392 Merge branch 'for-6.11/block' into for=
-next)
CONFLICT (content): Merge conflict in fs/stat.c
CONFLICT (content): Merge conflict in include/linux/fs.h
Merging device-mapper/for-next (299fb56df9ec dm raid: fix stripes adding re=
shape size issues)
Merging libata/for-next (f97106b10d9a ata: ahci: Add debug print for extern=
al port)
Merging pcmcia/pcmcia-next (0630e3bc0e91 pcmcia: add missing MODULE_DESCRIP=
TION() macros)
Merging mmc/next (c17aecf85800 mmc: dw_mmc-bluefield: Add support for eMMC =
HW reset)
Merging mfd/for-mfd-next (70b46487b155 mfd: tmio: Move header to platform_d=
ata)
CONFLICT (modify/delete): include/linux/mfd/tmio.h deleted in mfd/for-mfd-n=
ext and modified in HEAD.  Version HEAD of include/linux/mfd/tmio.h left in=
 tree.
$ git rm -f include/linux/mfd/tmio.h
Applying: fixup for "mfd: tmio: Move header to platform_data"
Merging backlight/for-backlight-next (1df5aa3754ca backlight: sky81452-back=
light: Use backlight power constants)
Merging battery/for-next (be6299c6e55e power: supply: sysfs: use power_supp=
ly_property_is_writeable())
CONFLICT (content): Merge conflict in include/linux/leds.h
Merging regulator/for-next (ef0b29e74496 regulator: dt-bindings: pca9450: M=
ake interrupt optional)
Merging security/next (08b377b86c0c Automated merge of 'dev' into 'next')
Merging apparmor/apparmor-next (3dd384108d53 apparmor: fix possible NULL po=
inter dereference)
Merging integrity/next-integrity (fbf06cee6087 ima: fix wrong zero-assignme=
nt during securityfs dentry remove)
Merging selinux/next (e123134b39dc selinux: Use 1UL for EBITMAP_BIT to matc=
h maps type)
Merging smack/next (e86cac0acdb1 smack: unix sockets: fix accept()ed socket=
 label)
Merging tomoyo/master (b96342141183 rtnetlink: print rtnl_mutex holder/wait=
er for debug purpose)
Merging tpmdd/next (bb3bd6a6663c tpm_tis_spi: add missing attpm20p SPI devi=
ce ID entry)
Merging watchdog/master (22a40d14b572 Linux 6.10-rc6)
Merging iommu/next (87b2e7792b68 Merge branches 'iommu/core', 'iommu/fwspec=
-ops-removal', 'iommu/pci/ats', 'iommu/iommufd/attach-handles', 'iommu/iomm=
ufd/paging-domain-alloc', 'iommu/allwinner/sun50i', 'iommu/amd/amd-vi', 'io=
mmu/arm/smmu', 'iommu/intel/vt-d' and 'iommu/qualcomm/msm' into iommu/next)
Merging audit/next (1613e604df0c Linux 6.10-rc1)
Merging devicetree/for-next (9ca5a7d9d2e0 dt-bindings: soc: fsl: Add fsl,ls=
1028a-reset for reset syscon node)
CONFLICT (content): Merge conflict in scripts/Makefile.lib
Merging dt-krzk/for-next (828f810f69f3 Merge branch 'next/dt64' into for-ne=
xt)
Merging mailbox/for-next (256abd8e550c Linux 6.10-rc7)
Merging spi/for-next (ad02097d49dd Merge remote-tracking branch 'spi/for-6.=
11' into spi-next)
Merging tip/master (aa9d8caba6e4 Merge timers/core into tip/master)
CONFLICT (content): Merge conflict in arch/x86/include/asm/cpufeatures.h
CONFLICT (content): Merge conflict in include/linux/cacheinfo.h
Merging clockevents/timers/drivers/next (0d8d1bd925c8 dt-bindings: timer: r=
enesas,tmu: Add R-Car Gen2 support)
Merging edac/edac-for-next (9a1c5fe0f0a8 Merge ras/edac-misc into for-next)
Merging ftrace/for-next (5dfebf3c26dc Merge ring-buffer/for-next)
CONFLICT (content): Merge conflict in arch/x86/entry/syscalls/syscall_64.tbl
CONFLICT (content): Merge conflict in include/uapi/asm-generic/unistd.h
Merging rcu/next (02219caa92b5 Merge branches 'doc.2024.06.06a', 'fixes.202=
4.07.04a', 'mb.2024.06.28a', 'nocb.2024.06.03a', 'rcu-tasks.2024.06.06a', '=
rcutorture.2024.06.06a' and 'srcu.2024.06.18a' into HEAD)
Merging paulmck/non-rcu/next (8122d6e11bd8 Merge branches 'cmpxchg.2024.07.=
04a', 'kcsan.2024.06.06a', 'lkmm.2024.06.06a', 'nolibc.2024.06.30a' and 'to=
rture.2024.05.30b' into HEAD)
Merging kvm/next (02b0d3b9d4dd Merge branch 'kvm-6.10-fixes' into HEAD)
CONFLICT (content): Merge conflict in arch/x86/include/asm/sev-common.h
Merging kvm-arm/next (4012664073a0 Merge branch kvm-arm64/misc into kvmarm/=
next)
Merging kvms390/next (7816e58967d0 kvm: s390: Reject memory region operatio=
ns for ucontrol VMs)
Merging kvm-ppc/topic/ppc-kvm (ca8dad041516 KVM: PPC: add missing MODULE_DE=
SCRIPTION() macros)
Merging kvm-riscv/riscv_kvm_next (e325618349cd RISC-V: KVM: Redirect AMO lo=
ad/store access fault traps to guest)
CONFLICT (content): Merge conflict in tools/perf/arch/riscv/util/Build
Merging kvm-x86/next (771df9ffadb8 Merge branch 'static_calls')
Merging xen-tip/linux-next (611ff1b1ae98 xen: privcmd: Fix possible access =
to a freed kirqfd instance)
Merging percpu/for-next (2d9ad81ef935 Merge branch 'for-6.8-fixes' into for=
-next)
Merging workqueues/for-next (fb7e4b92f44e Merge branch 'for-6.11' into for-=
next)
Merging sched-ext/for-next (e7a6395a889a sched_ext: Make scx_bpf_reenqueue_=
local() skip tasks that are being migrated)
Merging drivers-x86/for-next (d23430233494 platform/x86: hp-wmi: Fix platfo=
rm profile option switch bug on Omen and Victus laptops)
Merging chrome-platform/for-next (4baf1cc54433 power: supply: cros_charge-c=
ontrol: Fix signedness bug in charge_behaviour_store())
CONFLICT (content): Merge conflict in MAINTAINERS
Merging chrome-platform-firmware/for-firmware-next (fc2c1d716d4a firmware: =
google: add missing MODULE_DESCRIPTION() macros)
Merging hsi/for-next (f02cfe695047 HSI: ssi_protocol: Remove unused linux/g=
pio.h)
Merging leds-lj/for-leds-next (b9bd59026848 leds: flash: leds-qcom-flash: T=
est the correct variable in init)
$ git reset --hard HEAD^
Merging next-20240709 version of leds-lj
Merging ipmi/for-next (19a01155ddfe ipmi: Drop explicit initialization of s=
truct i2c_device_id::driver_data to 0)
Merging driver-core/driver-core-next (997197b58bf6 devres: Correct code sty=
le for functions that return a pointer type)
CONFLICT (content): Merge conflict in drivers/fsi/fsi-occ.c
CONFLICT (content): Merge conflict in drivers/reset/reset-meson-audio-arb.c
Applying: net: ethernet: rtsn: Fix up for remove() coversion to return void
Applying: drm: Fix up STM LVDS driver for void remove() conversion
Applying: fix up for "platform: Make platform_driver::remove() return void"
Merging usb/usb-next (179264157bba usb: dwc3: core: Check all ports when se=
t phy suspend)
Merging thunderbolt/next (49056c95df44 thunderbolt: debugfs: Use FIELD_GET(=
))
Merging usb-serial/usb-next (df8c0b8a03e8 USB: serial: garmin_gps: use stru=
ct_size() to allocate pkt)
Merging tty/tty-next (17199dfccd4b Documentation: kernel-parameters: Add DE=
VNAME:0.0 format for serial ports)
CONFLICT (content): Merge conflict in drivers/tty/serial/imx.c
Merging char-misc/char-misc-next (e56af94b9b54 misc: keba: Fix missing AUXI=
LIARY_BUS dependency)
CONFLICT (content): Merge conflict in Documentation/devicetree/bindings/ven=
dor-prefixes.yaml
CONFLICT (content): Merge conflict in MAINTAINERS
Merging accel/habanalabs-next (f03eee5fc922 Merge tag 'drm-xe-next-fixes-20=
24-05-02' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-next)
Merging coresight/next (2e5657aa5966 hwtracing: use for_each_endpoint_of_no=
de())
Merging fastrpc/for-next (1613e604df0c Linux 6.10-rc1)
Merging fpga/for-next (3a0fa8e97d30 fpga: altera-fpga2sdram: remove unused =
struct 'prop_map')
Merging icc/icc-next (226e58b20975 Merge branch 'icc-rpmh-qos' into icc-nex=
t)
Merging iio/togreg (1ebab783647a Merge tag 'mhi-for-v6.11' of ssh://gitolit=
e.kernel.org/pub/scm/linux/kernel/git/mani/mhi into char-misc-next)
Merging phy-next/next (2a011c3c12e8 phy: airoha: Add dtime and Rx AEQ IO re=
gisters)
CONFLICT (content): Merge conflict in include/linux/soc/samsung/exynos-regs=
-pmu.h
Merging soundwire/next (fdd3d14ca3c8 soundwire: debugfs: simplify with clea=
nup.h)
Merging extcon/extcon-next (e508f2606c0b extcon: Add LC824206XA microUSB sw=
itch driver)
Merging gnss/gnss-next (6ba59ff42279 Linux 6.10-rc4)
Merging vfio/next (abe8103da3c5 vfio/pci: Fix typo in macro to declare acce=
ssors)
Merging w1/for-next (26bf5fc86033 w1: Drop allocation error message)
Merging spmi/spmi-next (1613e604df0c Linux 6.10-rc1)
Merging staging/staging-next (d3401cefd0f7 staging: nvec: Use x instead of =
x !=3D NULL to improve readability.)
Merging counter-next/counter-next (7b47e79eac4c Merge tag 'ib-mfd-counter-v=
5.11' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/lee/mfd into co=
unter-next)
Merging siox/siox/for-next (db418d5f1ca5 siox: bus-gpio: Simplify using dev=
m_siox_* functions)
Merging mux/for-next (44c026a73be8 Linux 6.4-rc3)
Merging dmaengine/next (316d1225b112 dmaengine: fsl-dpaa2-qdma: add missing=
 MODULE_DESCRIPTION() macro)
Merging cgroup/for-next (ecd36a3ae7ff Merge branch 'for-6.11' into for-next)
Merging scsi/for-next (dbe36d249533 Merge branch 'fixes' into for-next)
Merging scsi-mkp/for-next (6cd48c8f62ad Merge patch series "mpi3mr: Support=
 PCI Error Recovery")
CONFLICT (content): Merge conflict in drivers/scsi/mpi3mr/mpi3mr_transport.c
Merging vhost/linux-next (8e0f5a6d6030 virtio: rename virtio_find_vqs_info(=
) to virtio_find_vqs())
Merging rpmsg/for-next (d87dbfd31796 Merge branches 'hwspinlock-next', 'rpm=
sg-next' and 'rproc-next' into for-next)
Merging gpio/for-next (0bb80ecc33a8 Linux 6.6-rc1)
Merging gpio-brgl/gpio/for-next (337049890b8c dt-bindings: gpio: convert At=
mel GPIO to json-schema)
Merging gpio-intel/for-next (1613e604df0c Linux 6.10-rc1)
Merging pinctrl/for-next (11eaac6e8e72 Merge tag 'renesas-pinctrl-for-v6.11=
-tag3' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drive=
rs into devel)
Merging pinctrl-intel/for-next (1613e604df0c Linux 6.10-rc1)
Merging pinctrl-renesas/renesas-pinctrl (2453e858e945 pinctrl: renesas: rzg=
2l: Support output enable on RZ/G2L)
Merging pinctrl-samsung/for-next (1613e604df0c Linux 6.10-rc1)
Merging pwm/pwm/for-next (9845ded2f4af pwm: Allow pwm state transitions fro=
m an invalid state)
Merging ktest/for-next (07283c1873a4 ktest: force $buildonly =3D 1 for 'mak=
e_warnings_file' test type)
Merging kselftest/next (e903350a13da selftests/x86: fix printk warnings rep=
orted by clang)
Merging kunit/test (1613e604df0c Linux 6.10-rc1)
Merging kunit-next/kunit (67c9971cd6d3 kunit/usercopy: Add missing MODULE_D=
ESCRIPTION())
Merging livepatching/for-next (9871e6af43db Merge branch 'for-6.11/sysfs-pa=
tch-replace' into for-next)
Merging rtc/rtc-next (a47d377e22c4 rtc: Drop explicit initialization of str=
uct i2c_device_id::driver_data to 0)
Merging nvdimm/libnvdimm-for-next (b0d478e34dbf testing: nvdimm: Add MODULE=
_DESCRIPTION() macros)
Merging at24/at24/for-next (3a9ba4e32230 dt-bindings: eeprom: at24: Add com=
patible for ONSemi N24S64B)
Merging ntb/ntb-next (9341b37ec17a ntb_perf: Fix printk format)
Merging seccomp/for-next/seccomp (f0c508faea64 selftests/seccomp: check tha=
t a zombie leader doesn't affect others)
Merging fsi/next (c5eeb63edac9 fsi: Fix panic on scom file read)
Merging slimbus/for-next (1613e604df0c Linux 6.10-rc1)
Merging nvmem/for-next (1613e604df0c Linux 6.10-rc1)
Merging xarray/main (2a15de80dd0f idr: fix param name in idr_alloc_cyclic()=
 doc)
Merging hyperv/hyperv-next (f2580a907e5c x86/hyperv: Use Hyper-V entropy to=
 seed guest random number generator)
Merging auxdisplay/for-next (2ccfe94bc3ac auxdisplay: ht16k33: Drop referen=
ce after LED registration)
Merging kgdb/kgdb/for-next (9bccbe7b2087 kdb: Get rid of redundant kdb_curr=
_task())
Merging hmm/hmm (6613476e225e Linux 6.8-rc1)
Merging cfi/cfi/next (06c2afb862f9 Linux 6.5-rc1)
Merging mhi/mhi-next (65bc58c3dcad net: wwan: mhi: make default data link i=
d configurable)
Merging memblock/for-next (9364a7e40d54 memblock tests: fix implicit declar=
ation of function 'numa_valid_node')
CONFLICT (content): Merge conflict in mm/memblock.c
Merging cxl/next (86588139b843 Documentation: CXL Maturity Map)
Merging zstd/zstd-next (3f832dfb8a8e zstd: fix g_debuglevel export warning)
Merging efi/next (ebf5a79acf9a x86/efistub: Drop redundant clearing of BSS)
Merging unicode/for-next (68318904a775 unicode: add MODULE_DESCRIPTION() ma=
cros)
Merging slab/slab/for-next (fe4e761669ab Merge branch 'slab/for-6.11/bucket=
s' into slab/for-next)
Merging random/master (9507f35ffebb selftests/vDSO: add tests for vgetrando=
m)
CONFLICT (content): Merge conflict in mm/rmap.c
CONFLICT (content): Merge conflict in tools/testing/selftests/mm/Makefile
Merging landlock/next (395a02d04ed4 landlock: Use bit-fields for storing ha=
ndled layer access masks)
Merging rust/rust-next (fc6e66f4696b rust: add abstraction for `struct page=
`)
CONFLICT (content): Merge conflict in rust/bindings/bindings_helper.h
Merging sysctl/sysctl-next (acc154691fc7 sysctl: Warn on an empty procname =
element)
Merging execve/for-next/execve (2a97388a807b ELF: fix kernel.randomize_va_s=
pace double read)
Merging bitmap/bitmap-for-next (e0eeb938adb0 bitops: Add a comment explaini=
ng the double underscore macros)
CONFLICT (content): Merge conflict in include/linux/cpumask.h
Merging hte/for-next (9e4259716f60 hte: tegra-194: add missing MODULE_DESCR=
IPTION() macro)
Merging kspp/for-next/kspp (cd3e31b57c39 Merge branch 'for-next/hardening' =
into for-next/kspp)
Merging kspp-gustavo/for-next/kspp (6613476e225e Linux 6.8-rc1)
Merging nolibc/nolibc (1613e604df0c Linux 6.10-rc1)
Merging tsm/tsm-next (f4738f56d1dc virt: tdx-guest: Add Quote generation su=
pport using TSM_REPORTS)
Merging iommufd/for-next (18dcca24963a Merge branch 'iommufd_pri' into iomm=
ufd for-next)
Merging turbostat/next (478a01016c08 tools/power turbostat: Fix typo in tur=
bostat.8)
Merging pwrseq/pwrseq/for-next (50b040ef3732 PCI/pwrctl: only call of_platf=
orm_populate() if CONFIG_OF is enabled)
CONFLICT (add/add): Merge conflict in drivers/power/sequencing/core.c
Merging header_cleanup/header_cleanup (5f4c01f1e3c7 spinlock: Fix failing b=
uild for PREEMPT_RT)
Applying: Revert "drm/omap: Allow build with COMPILE_TEST=3Dy"

--Sig_/NYRIbLSHrHYuucegfi.2CzU
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaOZD4ACgkQAVBC80lX
0GwfdAf8DfCyDo4BZnjYs4pZ8AuWrh5u/QBgIqLyGAHjMcNAkjSK7MEAGCb5RX3S
WZYxLpqFZmrUckVTquYtVp0UL8HR6ZLWgRuiPQuhEjXwa0ttDN3QoBYUguh1vTBx
Trk5GXYs4pAHvREqze5jOcEoFNE8VRuEMjUTvGXgC5qacO3GvmGh9ECfPgv/r9D6
vBuh5ZBC1+g9wYM523DPS1usq4Tv+ooNceK5KIy+v8Zit6rAGW+JnpstWfeq9CtQ
wtBaMEra+koV8jD3cu9bu8bcIoLQDreh0W3Q31zYMgR0fEKDMuhuIAFzUe2Ycmb3
z2oXaUZrFfy7TOKY+VFfzOug4GDH8w==
=yW//
-----END PGP SIGNATURE-----

--Sig_/NYRIbLSHrHYuucegfi.2CzU--
.

From: Huacai Chen <chenhuacai@loongson.cn>
To: Paolo Bonzini <pbonzini@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Tianrui Zhao <zhaotianrui@loongson.cn>,
	Bibo Mao <maobibo@loongson.cn>
Cc: kvm@vger.kernel.org,
	loongarch@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Xuerui Wang <kernel@xen0n.name>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Huacai Chen <chenhuacai@loongson.cn>
Subject: [GIT PULL] LoongArch KVM changes for v6.11
Date: Wed, 10 Jul 2024 18:49:23 +0800
Message-ID: <20240710104923.2569660-1-chenhuacai@loongson.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273487
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.loongarch,org.kernel.vger.kvm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The following changes since commit 256abd8e550ce977b728be79a74e1729438b4948:

  Linux 6.10-rc7 (2024-07-07 14:23:46 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git tags/loongarch-kvm-6.11

for you to fetch changes up to 492ac37fa38faf520b5beae44c930063265ee183:

  perf kvm: Add kvm-stat for loongarch64 (2024-07-10 16:50:27 +0800)

----------------------------------------------------------------
LoongArch KVM changes for v6.11

1. Add ParaVirt steal time support.
2. Add some VM migration enhancement.
3. Add perf kvm-stat support for loongarch.

----------------------------------------------------------------
Bibo Mao (10):
      LoongArch: KVM: Sync pending interrupt when getting ESTAT from user mode
      LoongArch: KVM: Delay secondary mmu tlb flush until guest entry
      LoongArch: KVM: Select huge page only if secondary mmu supports it
      LoongArch: KVM: Discard dirty page tracking on readonly memslot
      LoongArch: KVM: Add memory barrier before update pmd entry
      LoongArch: KVM: Add dirty bitmap initially all set support
      LoongArch: KVM: Mark page accessed and dirty with page ref added
      LoongArch: KVM: Add PV steal time support in host side
      LoongArch: KVM: Add PV steal time support in guest side
      perf kvm: Add kvm-stat for loongarch64

Jia Qingtong (1):
      LoongArch: KVM: always make pte young in page map's fast path

 Documentation/admin-guide/kernel-parameters.txt |   6 +-
 arch/loongarch/Kconfig                          |  11 ++
 arch/loongarch/include/asm/kvm_host.h           |  13 ++
 arch/loongarch/include/asm/kvm_para.h           |  11 ++
 arch/loongarch/include/asm/kvm_vcpu.h           |   5 +
 arch/loongarch/include/asm/loongarch.h          |   1 +
 arch/loongarch/include/asm/paravirt.h           |   5 +
 arch/loongarch/include/uapi/asm/kvm.h           |   4 +
 arch/loongarch/kernel/paravirt.c                | 145 ++++++++++++++++++++++
 arch/loongarch/kernel/time.c                    |   2 +
 arch/loongarch/kvm/Kconfig                      |   1 +
 arch/loongarch/kvm/exit.c                       |  38 +++++-
 arch/loongarch/kvm/main.c                       |   1 +
 arch/loongarch/kvm/mmu.c                        |  72 +++++++----
 arch/loongarch/kvm/tlb.c                        |   5 +-
 arch/loongarch/kvm/vcpu.c                       | 154 +++++++++++++++++++++++-
 tools/perf/arch/loongarch/Makefile              |   1 +
 tools/perf/arch/loongarch/util/Build            |   2 +
 tools/perf/arch/loongarch/util/header.c         |  96 +++++++++++++++
 tools/perf/arch/loongarch/util/kvm-stat.c       | 139 +++++++++++++++++++++
 20 files changed, 680 insertions(+), 32 deletions(-)
 create mode 100644 tools/perf/arch/loongarch/util/header.c
 create mode 100644 tools/perf/arch/loongarch/util/kvm-stat.c
.

From: Oscar Salvador <osalvador@suse.de>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org,
	linux-mm@kvack.org,
	Muchun Song <muchun.song@linux.dev>,
	David Hildenbrand <david@redhat.com>,
	Michal Hocko <mhocko@suse.com>,
	Donet Tom <donettom@linux.ibm.com>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	Matthew Wilcox <willy@infradead.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	Oscar Salvador <osalvador@suse.de>
Subject: [RFC PATCH 0/8] Unify hugetlb into arch_get_unmapped_area functions
Date: Wed, 10 Jul 2024 12:50:34 +0200
Message-ID: <20240710105042.30165-1-osalvador@suse.de>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273491 org.kvack.linux-mm:203251
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi all,

this is a first attempt to get rid of a fair amount of duplicated code
wrt. hugetlb and *get_unmapped_area* functions.

HugeTLB registers a .get_unmapped_area function which gets called from
__get_unmapped_area().
hugetlb_get_unmapped_area() is defined by a bunch of architectures and
it also has a generic definition for those that do not define it.
Short-long story is that there is a ton of duplicated code between
specific hugetlb *_get_unmapped_area_* functions and mm-core functions,
so we can do better by teaching arch_get_unmapped_area* functions how
to deal with hugetlb mappings.

Note that not a lot of things need to be taught though.
hugetlb_mmap_check_and_align(), that gets called for hugetlb mappings
prior to call mm_get_unmapped_area_vmflags(), runs some sanity checks
and aligns the addr to huge_page_size(), so we do not need to that
down the road in the respective {generic,arch}_get_unmapped_area*
functions.

More information can be found in the respective patches.

LTP mmapstress and hugemmap testcases were ran on arm64, powerpc64le and
x86_64 without raising any issue.

Oscar Salvador (8):
  mm/mmap: Teach generic_get_unmapped_area{_topdown} to handle hugetlb
    mappings
  arch/s390: Teach arch_get_unmapped_area{_topdown} to handle hugetlb
    mappings
  arch/x86: Teach arch_get_unmapped_area_vmflags to handle hugetlb
    mappings
  arch/sparc: Teach arch_get_unmapped_area{_topdown} to handle hugetlb
    mappings
  arch/powerpc: Teach book3s64 arch_get_unmapped_area{_topdown} to
    handle hugetlb mappings
  mm: Make hugetlb mappings go through mm_get_unmapped_area_vmflags
  mm: Drop hugetlb_get_unmapped_area{_*} functions
  mm: Consolidate common checks in hugetlb_mmap_check_and_align

 arch/loongarch/include/asm/hugetlb.h |   4 -
 arch/mips/include/asm/hugetlb.h      |   4 -
 arch/parisc/include/asm/hugetlb.h    |  15 ----
 arch/parisc/mm/hugetlbpage.c         |  23 ------
 arch/powerpc/mm/book3s64/slice.c     |  49 +++++++-----
 arch/s390/include/asm/hugetlb.h      |  16 ----
 arch/s390/mm/hugetlbpage.c           |  84 ---------------------
 arch/s390/mm/mmap.c                  |   8 +-
 arch/sh/include/asm/hugetlb.h        |  15 ----
 arch/sparc/kernel/sys_sparc_32.c     |  16 +++-
 arch/sparc/kernel/sys_sparc_64.c     |  36 +++++++--
 arch/sparc/mm/hugetlbpage.c          | 108 ---------------------------
 arch/x86/kernel/sys_x86_64.c         |  24 ++++--
 arch/x86/mm/hugetlbpage.c            | 100 -------------------------
 fs/hugetlbfs/inode.c                 |  92 ++---------------------
 include/asm-generic/hugetlb.h        |   7 --
 include/linux/hugetlb.h              |  21 +++---
 mm/mmap.c                            |  19 ++++-
 18 files changed, 129 insertions(+), 512 deletions(-)

-- 
2.45.2

.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: "Rafael J. Wysocki" <rafael@kernel.org>
Date: Wed, 10 Jul 2024 12:57:16 +0200
Message-ID: <CAJZ5v0iomX7aKU5c9-uBiRoVKonwRdCvoT9xNih8401ef7ShuQ@mail.gmail.com>
Subject: [GIT PULL] Thermal control fixes for v6.10-rc8
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux PM <linux-pm@vger.kernel.org>, 
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Daniel Lezcano <daniel.lezcano@linaro.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273500
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Linus,

Please pull from the tag

 git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
 thermal-6.10-rc8

with top-most commit 94eacc1c583dd2ba51a2158fb13285f5dc42714b

 thermal: core: Fix list sorting in __thermal_zone_device_update()

on top of commit 22a40d14b572deb80c0648557f4bd502d7e83826

 Linux 6.10-rc6

to receive thermal control fixes for final 6.10.

These fix a possible NULL pointer dereference in a thermal governor, fix
up the handling of thermal zones enabled before their temperature can be
determined and fix list sorting during thermal zone temperature updates.

Specifics:

 - Prevent the Power Allocator thermal governor from dereferencing a NULL
   pointer if it is bound to a tripless thermal zone (N=C3=ADcolas Prado).

 - Prevent thermal zones enabled too early from staying effectively
   dormant forever because their temperature cannot be determined
   initially (Rafael Wysocki).

 - Fix list sorting during thermal zone temperature updates to ensure
   the proper ordering of trip crossing notifications (Rafael Wysocki).

Thanks!


---------------

N=C3=ADcolas F. R. A. Prado (1):
      thermal: gov_power_allocator: Return early in manage if trip_max is N=
ULL

Rafael J. Wysocki (2):
      thermal: core: Call monitor_thermal_zone() if zone temperature is inv=
alid
      thermal: core: Fix list sorting in __thermal_zone_device_update()

---------------

 drivers/thermal/gov_power_allocator.c |  3 +++
 drivers/thermal/thermal_core.c        | 15 ++++++++-------
 drivers/thermal/thermal_core.h        |  6 ++++++
 3 files changed, 17 insertions(+), 7 deletions(-)
.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: "Rafael J. Wysocki" <rafael@kernel.org>
Date: Wed, 10 Jul 2024 12:58:50 +0200
Message-ID: <CAJZ5v0j01pmgnms9cPKeUn=5TNH_g3cwYB6Wd0kCuEic42PRgA@mail.gmail.com>
Subject: [GIT PULL] Power management fixes for v6.10-rc8
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux PM <linux-pm@vger.kernel.org>, 
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, 
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273501
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-acpi,org.kernel.vger.linux-pm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Linus,

Please pull from the tag

 git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
 pm-6.10-rc8

with top-most commit d92467ad9d9ee63a700934b9228a989ef671d511

 cpufreq: ACPI: Mark boost policy as enabled when setting boost

on top of commit 22a40d14b572deb80c0648557f4bd502d7e83826

 Linux 6.10-rc6

to receive power management fixes for final 6.10.

These fix two issues related to boost frequencies handling, one in the
cpufreq core and one in the ACPI cpufreq driver (Mario Limonciello).

Thanks!


---------------

Mario Limonciello (2):
      cpufreq: Allow drivers to advertise boost enabled
      cpufreq: ACPI: Mark boost policy as enabled when setting boost

---------------

 drivers/cpufreq/acpi-cpufreq.c | 4 +++-
 drivers/cpufreq/cpufreq.c      | 3 ++-
 2 files changed, 5 insertions(+), 2 deletions(-)
.

From: Ma Ke <make24@iscas.ac.cn>
To: adrian.hunter@intel.com,
	ulf.hansson@linaro.org,
	thomas.petazzoni@free-electrons.com
Cc: linux-mmc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Ma Ke <make24@iscas.ac.cn>
Subject: [PATCH v2] mmc: sdhci-pxav3: Fix potential NULL dereference in sdhci_pxav3_probe
Date: Wed, 10 Jul 2024 18:59:11 +0800
Message-Id: <20240710105911.2076942-1-make24@iscas.ac.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273502
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-mmc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In sdhci_pxav3_probe(), mv_mbus_dram_info() returns NULL if
CONFIG_PLAT_ORION macro is not defined[1]. Fix this bug by adding NULL 
check.

Fixes: aa8165f91442 ("mmc: sdhci-pxav3: do the mbus window configuration after enabling clocks")
Signed-off-by: Ma Ke <make24@iscas.ac.cn>
---
Changes in v2:
- refined the vulnerability description;
- provided similar vulnerability's reference link[2].
Reference link:
[1] https://github.com/torvalds/linux/blob/34afb82a3c67f869267a26f593b6f8fc6bf35905/include/linux/mbus.h#L65
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d48d0c5fd733bd6d8d3ddb2ed553777ab4724169
---
 drivers/mmc/host/sdhci-pxav3.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-pxav3.c b/drivers/mmc/host/sdhci-pxav3.c
index 3af43ac05825..ac89cb2eb9f6 100644
--- a/drivers/mmc/host/sdhci-pxav3.c
+++ b/drivers/mmc/host/sdhci-pxav3.c
@@ -375,6 +375,7 @@ static int sdhci_pxav3_probe(struct platform_device *pdev)
 	struct sdhci_host *host = NULL;
 	struct sdhci_pxa *pxa = NULL;
 	const struct of_device_id *match;
+	const struct mbus_dram_target_info *dram;
 	int ret;
 
 	host = sdhci_pltfm_init(pdev, &sdhci_pxav3_pdata, sizeof(*pxa));
@@ -406,7 +407,12 @@ static int sdhci_pxav3_probe(struct platform_device *pdev)
 		ret = armada_38x_quirks(pdev, host);
 		if (ret < 0)
 			goto err_mbus_win;
-		ret = mv_conf_mbus_windows(pdev, mv_mbus_dram_info());
+		dram = mv_mbus_dram_info();
+		if (!dram) {
+			ret = 0;
+			goto err_mbus_win;
+		}
+		ret = mv_conf_mbus_windows(pdev, dram);
 		if (ret < 0)
 			goto err_mbus_win;
 	}
-- 
2.25.1

.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: "Rafael J. Wysocki" <rafael@kernel.org>
Date: Wed, 10 Jul 2024 13:00:05 +0200
Message-ID: <CAJZ5v0iDKW7jLS=mD3dGqAdh8SuNsCe6Eq83DRoCEY5ATseG4A@mail.gmail.com>
Subject: [GIT PULL] ACPI fix for v6.10-rc8
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: ACPI Devel Maling List <linux-acpi@vger.kernel.org>, Linux PM <linux-pm@vger.kernel.org>, 
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273505
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-acpi,org.kernel.vger.linux-pm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Linus,

Please pull from the tag

 git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
 acpi-6.10-rc8

with top-most commit 233323f9b9f828cd7cd5145ad811c1990b692542

 ACPI: processor_idle: Fix invalid comparison with insertion sort for latency

on top of commit 22a40d14b572deb80c0648557f4bd502d7e83826

 Linux 6.10-rc6

to receive an ACPI fix for final 6.10.

This fixes the sorting of _CST output data in the ACPI processor idle
driver (Kuan-Wei Chiu).

Thanks!


---------------

Kuan-Wei Chiu (1):
      ACPI: processor_idle: Fix invalid comparison with insertion sort
for latency

---------------

 drivers/acpi/processor_idle.c | 37 ++++++++++++++++---------------------
 1 file changed, 16 insertions(+), 21 deletions(-)
.

From: Juergen Gross <jgross@suse.com>
To: linux-kernel@vger.kernel.org,
	x86@kernel.org,
	linux-doc@vger.kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Will Deacon <will@kernel.org>,
	Waiman Long <longman@redhat.com>,
	Boqun Feng <boqun.feng@gmail.com>,
	xen-devel@lists.xenproject.org
Subject: [PATCH] x86/xen: remove deprecated xen_nopvspin boot parameter
Date: Wed, 10 Jul 2024 13:01:39 +0200
Message-ID: <20240710110139.22300-1-jgross@suse.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273507 org.xenproject.lists.xen-devel:51865
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.xenproject.lists.xen-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The xen_nopvspin boot parameter is deprecated since 2019. nopvspin
can be used instead.

Remove the xen_nopvspin boot parameter and replace the xen_pvspin
variable use cases with nopvspin.

This requires to move the nopvspin variable out of the .initdata
section, as it needs to be accessed for cpuhotplug, too.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 .../admin-guide/kernel-parameters.txt         |  5 -----
 arch/x86/xen/spinlock.c                       | 20 +++++--------------
 kernel/locking/qspinlock.c                    |  2 +-
 3 files changed, 6 insertions(+), 21 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index b33d048e01d8..2074ba03f2e3 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -7439,11 +7439,6 @@
 			access functions when running as Xen PV guest. The
 			default value is controlled by CONFIG_XEN_PV_MSR_SAFE.
 
-	xen_nopvspin	[X86,XEN,EARLY]
-			Disables the qspinlock slowpath using Xen PV optimizations.
-			This parameter is obsoleted by "nopvspin" parameter, which
-			has equivalent effect for XEN platform.
-
 	xen_nopv	[X86]
 			Disables the PV optimizations forcing the HVM guest to
 			run as generic HVM guest with no PV drivers.
diff --git a/arch/x86/xen/spinlock.c b/arch/x86/xen/spinlock.c
index 5c6fc16e4b92..8e4efe0fb6f9 100644
--- a/arch/x86/xen/spinlock.c
+++ b/arch/x86/xen/spinlock.c
@@ -18,7 +18,6 @@
 static DEFINE_PER_CPU(int, lock_kicker_irq) = -1;
 static DEFINE_PER_CPU(char *, irq_name);
 static DEFINE_PER_CPU(atomic_t, xen_qlock_wait_nest);
-static bool xen_pvspin = true;
 
 static void xen_qlock_kick(int cpu)
 {
@@ -68,7 +67,7 @@ void xen_init_lock_cpu(int cpu)
 	int irq;
 	char *name;
 
-	if (!xen_pvspin)
+	if (nopvspin)
 		return;
 
 	WARN(per_cpu(lock_kicker_irq, cpu) >= 0, "spinlock on CPU%d exists on IRQ%d!\n",
@@ -95,7 +94,7 @@ void xen_uninit_lock_cpu(int cpu)
 {
 	int irq;
 
-	if (!xen_pvspin)
+	if (nopvspin)
 		return;
 
 	kfree(per_cpu(irq_name, cpu));
@@ -125,10 +124,10 @@ PV_CALLEE_SAVE_REGS_THUNK(xen_vcpu_stolen);
 void __init xen_init_spinlocks(void)
 {
 	/*  Don't need to use pvqspinlock code if there is only 1 vCPU. */
-	if (num_possible_cpus() == 1 || nopvspin)
-		xen_pvspin = false;
+	if (num_possible_cpus() == 1)
+		nopvspin = true;
 
-	if (!xen_pvspin) {
+	if (nopvspin) {
 		printk(KERN_DEBUG "xen: PV spinlocks disabled\n");
 		static_branch_disable(&virt_spin_lock_key);
 		return;
@@ -143,12 +142,3 @@ void __init xen_init_spinlocks(void)
 	pv_ops.lock.kick = xen_qlock_kick;
 	pv_ops.lock.vcpu_is_preempted = PV_CALLEE_SAVE(xen_vcpu_stolen);
 }
-
-static __init int xen_parse_nopvspin(char *arg)
-{
-	pr_notice("\"xen_nopvspin\" is deprecated, please use \"nopvspin\" instead\n");
-	xen_pvspin = false;
-	return 0;
-}
-early_param("xen_nopvspin", xen_parse_nopvspin);
-
diff --git a/kernel/locking/qspinlock.c b/kernel/locking/qspinlock.c
index 1df5fef8a656..7d96bed718e4 100644
--- a/kernel/locking/qspinlock.c
+++ b/kernel/locking/qspinlock.c
@@ -583,7 +583,7 @@ EXPORT_SYMBOL(queued_spin_lock_slowpath);
 #include "qspinlock_paravirt.h"
 #include "qspinlock.c"
 
-bool nopvspin __initdata;
+bool nopvspin;
 static __init int parse_nopvspin(char *arg)
 {
 	nopvspin = true;
-- 
2.43.0

.

From: Wolfram Sang <wsa+renesas@sang-engineering.com>
To: linux-renesas-soc@vger.kernel.org
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>,
	Andi Shyti <andi.shyti@kernel.org>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	linux-i2c@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] i2c: rcar: clear NO_RXDMA flag after resetting
Date: Wed, 10 Jul 2024 13:03:00 +0200
Message-ID: <20240710110259.49181-2-wsa+renesas@sang-engineering.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273509
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c,org.kernel.vger.linux-renesas-soc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

We should allow RXDMA only if the reset was really successful, so clear
the flag after the reset call.

Fixes: 0e864b552b23 ("i2c: rcar: reset controller is mandatory for Gen3+")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
 drivers/i2c/busses/i2c-rcar.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
index 29c7fafeb8a9..8f2ede534f30 100644
--- a/drivers/i2c/busses/i2c-rcar.c
+++ b/drivers/i2c/busses/i2c-rcar.c
@@ -912,10 +912,10 @@ static int rcar_i2c_master_xfer(struct i2c_adapter *adap,
 
 	/* Gen3+ needs a reset. That also allows RXDMA once */
 	if (priv->devtype >= I2C_RCAR_GEN3) {
-		priv->flags &= ~ID_P_NO_RXDMA;
 		ret = rcar_i2c_do_reset(priv);
 		if (ret)
 			goto out;
+		priv->flags &= ~ID_P_NO_RXDMA;
 	}
 
 	rcar_i2c_init(priv);
-- 
2.43.0

.

Date: Wed, 10 Jul 2024 16:38:13 +0530
From: Ankit Agrawal <agrawal.ag.ankit@gmail.com>
To: Bjorn Andersson <andersson@kernel.org>
Cc: Konrad Dybcio <konrad.dybcio@linaro.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Thomas Gleixner <tglx@linutronix.de>, linux-arm-msm@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] drivers/clocksource/qcom: Add missing iounmap() on error
 when reading clock frequency.
Message-ID: <20240710110813.GA15351@bnew-VirtualBox>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273515
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add the missing iounmap() when clock frequency fails to get read by the
of_property_read_u32() call.

Signed-off-by: Ankit Agrawal <agrawal.ag.ankit@gmail.com>
---
 drivers/clocksource/timer-qcom.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/clocksource/timer-qcom.c b/drivers/clocksource/timer-qcom.c
index b4afe3a67..a66fa7f8e 100644
--- a/drivers/clocksource/timer-qcom.c
+++ b/drivers/clocksource/timer-qcom.c
@@ -233,6 +233,7 @@ static int __init msm_dt_timer_init(struct device_node *np)
 	}
 
 	if (of_property_read_u32(np, "clock-frequency", &freq)) {
+		iounmap(cpu0_base);
 		pr_err("Unknown frequency\n");
 		return -EINVAL;
 	}
-- 
2.25.1

.

From: Krishna chaitanya chundru <quic_krichai@quicinc.com>
Subject: [PATCH v7 0/4] PCI: endpoint: add D-state change notifier support
Date: Wed, 10 Jul 2024 16:38:13 +0530
Message-ID: <20240710-dstate_notifier-v7-0-8d45d87b2b24@quicinc.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
        Kishon Vijay Abraham I
	<kishon@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Jonathan Corbet
	<corbet@lwn.net>,
        Lorenzo Pieralisi <lpieralisi@kernel.org>,
        Rob Herring
	<robh@kernel.org>
CC: <linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
        <linux-kernel@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
        <mhi@lists.linux.dev>, <quic_vbadigan@quicinc.com>,
        <quic_ramkri@quicinc.com>, <quic_nitegupt@quicinc.com>,
        <quic_skananth@quicinc.com>, <quic_parass@quicinc.com>,
        "Krishna chaitanya
 chundru" <quic_krichai@quicinc.com>,
        Manivannan Sadhasivam <mani@kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273516 org.kernel.vger.linux-pci:145115
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.mhi,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-doc,org.kernel.vger.linux-pci
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In this series we added the support to nofity the EPF driver
whenever there is change in the D-state if the EPF driver
registered for it.

This series needed by the following series for epf driver to know
whether link is in D3Cold or D3hot to wake the host because EPF driver
needs to send PME when the link is D3hot and toggle wake when the link
is in D3Cold('PCI: EPC: Add support to wake up host from D3 states').

The following link is for older series a newer series will be sent after
rebasing on this series.
https://lore.kernel.org/linux-pci/1690952359-8625-4-git-send-email-quic_krichai@quicinc.com/T/

Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
---
Changes from v6:
	- Rebased on linux next.
	- Link to v6: https://lore.kernel.org/all/20230908-dstate_change-v6-0-b414a6edd765@quicinc.com/T/
Changes from v5:
	- Fixed compilation errors & removed checks in the dstate_notify()
	  function as suggested by bjorn.

---
Krishna chaitanya chundru (4):
      PCI: endpoint: Add D-state change notifier support
      PCI: qcom-ep: Add support for D-state change notification
      PCI: qcom-ep: Print D-state name to distinguish D3hot/D3cold
      PCI: epf-mhi: Add support for handling D-state notify from EPC

 Documentation/PCI/endpoint/pci-endpoint.rst  |  3 +++
 drivers/pci/controller/dwc/pcie-qcom-ep.c    | 10 ++++++++--
 drivers/pci/endpoint/functions/pci-epf-mhi.c | 11 +++++++++++
 drivers/pci/endpoint/pci-epc-core.c          | 24 ++++++++++++++++++++++++
 include/linux/mhi_ep.h                       |  3 +++
 include/linux/pci-epc.h                      |  2 ++
 include/linux/pci-epf.h                      |  2 ++
 7 files changed, 53 insertions(+), 2 deletions(-)
---
base-commit: 82d01fe6ee52086035b201cfa1410a3b04384257
change-id: 20240710-dstate_notifier-2c2f4e2b4eed

Best regards,
-- 
Krishna chaitanya chundru <quic_krichai@quicinc.com>

.

From: Krishna chaitanya chundru <quic_krichai@quicinc.com>
Subject: [PATCH v6 0/5] PCI: EPC: Add support to wake up host from D3
 states
Date: Wed, 10 Jul 2024 16:46:07 +0530
Message-ID: <20240710-wakeup_host-v6-0-ef00f31ea38d@quicinc.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>,
        =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
        Kishon Vijay Abraham I
	<kishon@kernel.org>,
        Bjorn Helgaas <bhelgaas@google.com>, Jonathan Corbet
	<corbet@lwn.net>,
        Jingoo Han <jingoohan1@gmail.com>,
        Lorenzo Pieralisi
	<lpieralisi@kernel.org>,
        Rob Herring <robh@kernel.org>
CC: <linux-pci@vger.kernel.org>, <linux-doc@vger.kernel.org>,
        <linux-kernel@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
        <mhi@lists.linux.dev>, <quic_vbadigan@quicinc.com>,
        <quic_ramkri@quicinc.com>, <quic_nitegupt@quicinc.com>,
        <quic_skananth@quicinc.com>, <quic_parass@quicinc.com>,
        "Krishna chaitanya
 chundru" <quic_krichai@quicinc.com>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273530 org.kernel.vger.linux-pci:145122
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.mhi,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-doc,org.kernel.vger.linux-pci
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Here we propose this patch series to add support in PCI endpoint
driver to wake up host from D3 states.

As endpoint cannot send any data/MSI when the D-state is in
D3Cold or D3hot. Endpoint needs to bring the device back to D0
to send any kind of data.

For this endpoint needs to send inband PME the device is in D3hot
state or toggle wake when the device is D3 cold and vaux is not supplied.

Based on the D-state the EPF driver decides to wake host either by
toggling wake or by sending PME.

When the MHI state is in M3 MHI driver will wakeup the host using the
wakeup op.

This change is dependent on this series PCI: endpoint: add D-state change notifier
support
https://lore.kernel.org/all/20240710-dstate_notifier-v7-0-8d45d87b2b24@quicinc.com/T/#t

Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
---
Changes from v5:
	- rebased on linux next.
	- Link to v5: https://lore.kernel.org/linux-pci/1690952359-8625-4-git-send-email-quic_krichai@quicinc.com/T/#
Changes from v4:
	- removed the enum to select to send PME or toggle wake and use bool variable in 
	  the api itself as suggested by mani.
Changes from v3:
	- changed the bool return type to int for waking the host in mhi ep driver
	 as suggested by dan and bjorn.
	- Changed commit logs as suggested by bjorn.
Changes from v2:
        - Addressed review comments made by mani.
Changes from v1:
        - Moved from RFC patch to regular patch
        - Inclueded EPF patch and added a new op patch to notify D-state change.

---
Krishna chaitanya chundru (5):
      PCI: endpoint: Add wakeup host API to EPC core
      PCI: dwc: Add wakeup host op to pci_epc_ops
      PCI: qcom-ep: Add wake up host op to dw_pcie_ep_ops
      PCI: epf-mhi: Add wakeup host op
      bus: mhi: ep: wake up host if the MHI state is in M3

 Documentation/PCI/endpoint/pci-endpoint.rst     |  6 +++++
 drivers/bus/mhi/ep/main.c                       | 28 +++++++++++++++++++++++
 drivers/pci/controller/dwc/pcie-designware-ep.c | 12 ++++++++++
 drivers/pci/controller/dwc/pcie-designware.h    |  1 +
 drivers/pci/controller/dwc/pcie-qcom-ep.c       | 25 +++++++++++++++++++++
 drivers/pci/endpoint/functions/pci-epf-mhi.c    | 11 +++++++++
 drivers/pci/endpoint/pci-epc-core.c             | 30 +++++++++++++++++++++++++
 include/linux/mhi_ep.h                          |  1 +
 include/linux/pci-epc.h                         |  5 +++++
 9 files changed, 119 insertions(+)
---
base-commit: 4e0938fbb7efe1df1e57c0450a840d9605734c27
change-id: 20240710-wakeup_host-2b95824c0bcf

Best regards,
-- 
Krishna chaitanya chundru <quic_krichai@quicinc.com>

.

From: Colin Ian King <colin.i.king@gmail.com>
To: Ping-Ke Shih <pkshih@realtek.com>,
	Kalle Valo <kvalo@kernel.org>,
	linux-wireless@vger.kernel.org
Cc: kernel-janitors@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH][next] wifi: rtw89: 8852bt: rfk: Fix spelling mistake "KIP_RESOTRE" -> "KIP_RESTORE"
Date: Wed, 10 Jul 2024 12:22:53 +0100
Message-Id: <20240710112253.228171-1-colin.i.king@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273538 org.kernel.vger.linux-wireless:85857
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-wireless
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

There is a spelling mistake in a literal string. Fix it.

Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
---
 drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c
index fa0e49d58112..5bdabb45e968 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt_rfk.c
@@ -1863,7 +1863,7 @@ static void _dpk_one_shot(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy,
 		    id == 0x14 ? "PWR_CAL" :
 		    id == 0x15 ? "DPK_RXAGC" :
 		    id == 0x16 ? "KIP_PRESET" :
-		    id == 0x17 ? "KIP_RESOTRE" :
+		    id == 0x17 ? "KIP_RESTORE" :
 		    "DPK_TXAGC", dpk_cmd);
 }
 
-- 
2.39.2

.

From: Rayyan Ansari <rayyan.ansari@linaro.org>
To: devicetree@vger.kernel.org
Cc: Rayyan Ansari <rayyan.ansari@linaro.org>,
	alsa-devel@alsa-project.org,
	Banajit Goswami <bgoswami@quicinc.com>,
	Conor Dooley <conor+dt@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	linux-arm-msm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-sound@vger.kernel.org,
	Mark Brown <broonie@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Subject: [PATCH v2 0/2] ASoC: dt-bindings: convert qcom sound bindings to yaml
Date: Wed, 10 Jul 2024 12:36:05 +0100
Message-ID: <20240710113833.39859-1-rayyan.ansari@linaro.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273551
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,
These patches convert the remaining plain text bindings for Qualcomm
sound drivers to dt schema, so device trees can be validated against
them.

v1: https://lore.kernel.org/all/20240709152808.155405-1-rayyan.ansari@linaro.org/

Thanks,
Rayyan

Rayyan Ansari (2):
  ASoC: dt-bindings: qcom,msm8916-wcd-digital-codec: convert to dtschema
  ASoC: dt-bindings: qcom,apq8096-sndcard: use dtschema

 .../bindings/sound/qcom,apq8096.txt           | 128 ------------------
 .../sound/qcom,msm8916-wcd-digital-codec.yaml |  55 ++++++++
 .../sound/qcom,msm8916-wcd-digital.txt        |  20 ---
 .../bindings/sound/qcom,sm8250.yaml           |   1 +
 4 files changed, 56 insertions(+), 148 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/sound/qcom,apq8096.txt
 create mode 100644 Documentation/devicetree/bindings/sound/qcom,msm8916-wcd-digital-codec.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/qcom,msm8916-wcd-digital.txt

-- 
2.45.2

.

From: Kory Maincent <kory.maincent@bootlin.com>
To: Andrew Lunn <andrew@lunn.ch>,
	"Kory Maincent (Dent Project)" <kory.maincent@bootlin.com>,
	Jakub Kicinski <kuba@kernel.org>,
	netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: thomas.petazzoni@bootlin.com,
	Oleksij Rempel <o.rempel@pengutronix.de>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>
Subject: [PATCH v2 1/2] net: pse-pd: Do not return EOPNOSUPP if config is null
Date: Wed, 10 Jul 2024 13:42:30 +0200
Message-Id: <20240710114232.257190-1-kory.maincent@bootlin.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273556 org.kernel.vger.netdev:356008
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.netdev
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

For a PSE supporting both c33 and PoDL, setting config for one type of PoE
leaves the other type's config null. Currently, this case returns
EOPNOTSUPP, which is incorrect. Instead, we should do nothing if the
configuration is empty.

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Fixes: d83e13761d5b ("net: pse-pd: Use regulator framework within PSE framework")
---

Changes in v2:
- New patch to fix dealing with a null config.
---
 drivers/net/pse-pd/pse_core.c | 4 ++--
 net/ethtool/pse-pd.c          | 4 +++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/pse-pd/pse_core.c b/drivers/net/pse-pd/pse_core.c
index 795ab264eaf2..513cd7f85933 100644
--- a/drivers/net/pse-pd/pse_core.c
+++ b/drivers/net/pse-pd/pse_core.c
@@ -719,13 +719,13 @@ int pse_ethtool_set_config(struct pse_control *psec,
 {
 	int err = 0;
 
-	if (pse_has_c33(psec)) {
+	if (pse_has_c33(psec) && config->c33_admin_control) {
 		err = pse_ethtool_c33_set_config(psec, config);
 		if (err)
 			return err;
 	}
 
-	if (pse_has_podl(psec))
+	if (pse_has_podl(psec) && config->podl_admin_control)
 		err = pse_ethtool_podl_set_config(psec, config);
 
 	return err;
diff --git a/net/ethtool/pse-pd.c b/net/ethtool/pse-pd.c
index 2c981d443f27..982995ff1628 100644
--- a/net/ethtool/pse-pd.c
+++ b/net/ethtool/pse-pd.c
@@ -183,7 +183,9 @@ ethnl_set_pse(struct ethnl_req_info *req_info, struct genl_info *info)
 	if (pse_has_c33(phydev->psec))
 		config.c33_admin_control = nla_get_u32(tb[ETHTOOL_A_C33_PSE_ADMIN_CONTROL]);
 
-	/* Return errno directly - PSE has no notification */
+	/* Return errno directly - PSE has no notification
+	 * pse_ethtool_set_config() will do nothing if the config is null
+	 */
 	return pse_ethtool_set_config(phydev->psec, info->extack, &config);
 }
 
-- 
2.34.1

.

Date: Wed, 10 Jul 2024 07:42:38 -0400
From: "Michael S. Tsirkin" <mst@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@redhat.com>
Subject: [PATCH v2 0/2] virtio-balloon: make it spec compliant
Message-ID: <cover.1720611677.git.mst@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Mutt-Fcc: =sent
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273558
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Currently, if VIRTIO_BALLOON_F_FREE_PAGE_HINT is off but
VIRTIO_BALLOON_F_REPORTING is on, then the reporting vq
gets number 3 while spec says it's number 4.
It happens to work because the qemu virtio pci driver
is *also* out of spec.

To fix:
1. add vq4 as per spec
2. to help out the buggy qemu driver, if finding vqs fail,
try with vq3 as reporting.

Fixes: b0c504f15471 ("virtio-balloon: add support for providing free page reports to host")
Cc: "Alexander Duyck" <alexander.h.duyck@linux.intel.com>
Reported-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

Changes from v1:
	rebased on vhost tip


Michael S. Tsirkin (2):
  virtio_balloon: add work around for out of spec QEMU
  virtio: fix vq # for balloon

 arch/um/drivers/virtio_uml.c           |  4 ++--
 drivers/remoteproc/remoteproc_virtio.c |  4 ++--
 drivers/s390/virtio/virtio_ccw.c       |  4 ++--
 drivers/virtio/virtio_balloon.c        | 19 +++++++++++++++++--
 drivers/virtio/virtio_mmio.c           |  4 ++--
 drivers/virtio/virtio_pci_common.c     | 11 ++++++++---
 drivers/virtio/virtio_vdpa.c           |  4 ++--
 7 files changed, 35 insertions(+), 15 deletions(-)

-- 
MST

.

From: Siddharth Vadapalli <s-vadapalli@ti.com>
To: <vkoul@kernel.org>, <kishon@kernel.org>, <p.zabel@pengutronix.de>,
        <sjakhade@cadence.com>, <rogerq@kernel.org>,
        <thomas.richard@bootlin.com>, <theo.lebrun@bootlin.com>,
        <robh@kernel.org>
CC: <linux-phy@lists.infradead.org>, <linux-kernel@vger.kernel.org>,
        <linux-arm-kernel@lists.infradead.org>, <srk@ti.com>,
        <s-vadapalli@ti.com>
Subject: [PATCH v2] phy: cadence-torrent: add support for three or more links using 2 protocols
Date: Wed, 10 Jul 2024 17:26:24 +0530
Message-ID: <20240710115624.3232925-1-s-vadapalli@ti.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273571
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-phy
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The Torrent SERDES can support at most two different protocols. This only
mandates that the device-tree sub-nodes expressing the configuration should
describe links with at-most two different protocols.

The existing implementation however imposes an artificial constraint that
allows only two links (device-tree sub-nodes). As long as at-most two
protocols are chosen, using more than two links to describe them in an
alternating configuration is still a valid configuration of the Torrent
SERDES.

A 3-Link 2-Protocol configuration of the 4-Lane SERDES can be:
Lane 0 => Protocol 1 => Link 1
Lane 1 => Protocol 1 => Link 1
Lane 2 => Protocol 2 => Link 2
Lane 3 => Protocol 1 => Link 3

A 4-Link 2-Protocol configuration of the 4-Lane SERDES can be:
Lane 0 => Protocol 1 => Link 1
Lane 1 => Protocol 2 => Link 2
Lane 2 => Protocol 1 => Link 3
Lane 3 => Protocol 2 => Link 4

Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
---

Hello,

This patch is based on linux-next tagged next-20240710.
Patch has been sanity tested and tested for functionality in the following
configurations with the Torrent SERDES0 on J7200-EVM:
1. PCIe (Lanes 0 and 1) + QSGMII (Lane 2)
   => 2 protocols, 2 links
2. PCIe (Lane0 as 1 Link) + PCIe (Lane 1 as 1 Link)
   => 1 protocol, 2 links
3. PCIe (Lanes 0 and 1) + QSGMII (Lane 2) + PCIe (Lane 3)
   => 2 protocols, 3 links

v1:
https://lore.kernel.org/r/20240709120703.2716397-1-s-vadapalli@ti.com/
Changes since v1:
- A multilink configuration doesn't necessarily imply two protocols
  since a single protocol may be split across links as follows:
  Lane 0 => Protocol 1
  Lane 1 => Unused
  Lane 2 => Protocol 1
  Lane 3 => Unused
  which corresponds to two links and therefore two sub-nodes. In such a
  case, treat it as two single-link configurations performed sequentially
  which happens to be the case prior to this patch. To address this,
  handle the case where cdns_torrent_phy_configure_multilink() can be
  invoked for a single protocol with multiple sub-nodes (links) by
  erroring out only when the number of protocols is strictly greater
  than two, followed by handling the configuration similar to how it was
  done prior to this patch.

Regards,
Siddharth.

 drivers/phy/cadence/phy-cadence-torrent.c | 252 ++++++++++++----------
 1 file changed, 136 insertions(+), 116 deletions(-)

diff --git a/drivers/phy/cadence/phy-cadence-torrent.c b/drivers/phy/cadence/phy-cadence-torrent.c
index 56ce82a47f88..a6d0082e448d 100644
--- a/drivers/phy/cadence/phy-cadence-torrent.c
+++ b/drivers/phy/cadence/phy-cadence-torrent.c
@@ -351,6 +351,7 @@ struct cdns_torrent_phy {
 	void __iomem *sd_base; /* SD0801 registers base */
 	u32 max_bit_rate; /* Maximum link bit rate to use (in Mbps) */
 	u32 dp_pll;
+	u32 protocol_bitmask;
 	struct reset_control *phy_rst;
 	struct reset_control *apb_rst;
 	struct device *dev;
@@ -2475,21 +2476,32 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
 	struct cdns_reg_pairs *reg_pairs;
 	enum cdns_torrent_ssc_mode ssc;
 	struct regmap *regmap;
-	u32 num_regs;
+	u32 num_regs, num_protocols, protocol;
 
-	/* Maximum 2 links (subnodes) are supported */
-	if (cdns_phy->nsubnodes != 2)
+	num_protocols = hweight32(cdns_phy->protocol_bitmask);
+	/* Maximum 2 protocols are supported */
+	if (num_protocols > 2) {
 		return -EINVAL;
-
-	phy_t1 = cdns_phy->phys[0].phy_type;
-	phy_t2 = cdns_phy->phys[1].phy_type;
+	} else if (num_protocols == 2) {
+		phy_t1 = fns(cdns_phy->protocol_bitmask, 0);
+		phy_t2 = fns(cdns_phy->protocol_bitmask, 1);
+	} else {
+		phy_t1 = fns(cdns_phy->protocol_bitmask, 0);
+		/**
+		 * For a single protocol split across multiple links,
+		 * assign TYPE_NONE to phy_t2 for configuring each link
+		 * identical to a single-link configuration with a single
+		 * protocol.
+		 */
+		phy_t2 = TYPE_NONE;
+	}
 
 	/**
 	 * First configure the PHY for first link with phy_t1. Get the array
 	 * values as [phy_t1][phy_t2][ssc].
 	 */
-	for (node = 0; node < cdns_phy->nsubnodes; node++) {
-		if (node == 1) {
+	for (protocol = 0; protocol < num_protocols; protocol++) {
+		if (protocol == 1) {
 			/**
 			 * If first link with phy_t1 is configured, then
 			 * configure the PHY for second link with phy_t2.
@@ -2499,130 +2511,136 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
 			swap(ref_clk, ref_clk1);
 		}
 
-		mlane = cdns_phy->phys[node].mlane;
-		ssc = cdns_phy->phys[node].ssc_mode;
-		num_lanes = cdns_phy->phys[node].num_lanes;
+		for (node = 0; node < cdns_phy->nsubnodes; node++) {
+			if (cdns_phy->phys[node].phy_type != phy_t1)
+				continue;
 
-		/**
-		 * PHY configuration specific registers:
-		 * link_cmn_vals depend on combination of PHY types being
-		 * configured and are common for both PHY types, so array
-		 * values should be same for [phy_t1][phy_t2][ssc] and
-		 * [phy_t2][phy_t1][ssc].
-		 * xcvr_diag_vals also depend on combination of PHY types
-		 * being configured, but these can be different for particular
-		 * PHY type and are per lane.
-		 */
-		link_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->link_cmn_vals_tbl,
-							  CLK_ANY, CLK_ANY,
-							  phy_t1, phy_t2, ANY_SSC);
-		if (link_cmn_vals) {
-			reg_pairs = link_cmn_vals->reg_pairs;
-			num_regs = link_cmn_vals->num_regs;
-			regmap = cdns_phy->regmap_common_cdb;
+			mlane = cdns_phy->phys[node].mlane;
+			ssc = cdns_phy->phys[node].ssc_mode;
+			num_lanes = cdns_phy->phys[node].num_lanes;
 
 			/**
-			 * First array value in link_cmn_vals must be of
-			 * PHY_PLL_CFG register
+			 * PHY configuration specific registers:
+			 * link_cmn_vals depend on combination of PHY types being
+			 * configured and are common for both PHY types, so array
+			 * values should be same for [phy_t1][phy_t2][ssc] and
+			 * [phy_t2][phy_t1][ssc].
+			 * xcvr_diag_vals also depend on combination of PHY types
+			 * being configured, but these can be different for particular
+			 * PHY type and are per lane.
 			 */
-			regmap_field_write(cdns_phy->phy_pll_cfg,
-					   reg_pairs[0].val);
+			link_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->link_cmn_vals_tbl,
+								  CLK_ANY, CLK_ANY,
+								  phy_t1, phy_t2, ANY_SSC);
+			if (link_cmn_vals) {
+				reg_pairs = link_cmn_vals->reg_pairs;
+				num_regs = link_cmn_vals->num_regs;
+				regmap = cdns_phy->regmap_common_cdb;
 
-			for (i = 1; i < num_regs; i++)
-				regmap_write(regmap, reg_pairs[i].off,
-					     reg_pairs[i].val);
-		}
+				/**
+				 * First array value in link_cmn_vals must be of
+				 * PHY_PLL_CFG register
+				 */
+				regmap_field_write(cdns_phy->phy_pll_cfg,
+						   reg_pairs[0].val);
 
-		xcvr_diag_vals = cdns_torrent_get_tbl_vals(&init_data->xcvr_diag_vals_tbl,
-							   CLK_ANY, CLK_ANY,
-							   phy_t1, phy_t2, ANY_SSC);
-		if (xcvr_diag_vals) {
-			reg_pairs = xcvr_diag_vals->reg_pairs;
-			num_regs = xcvr_diag_vals->num_regs;
-			for (i = 0; i < num_lanes; i++) {
-				regmap = cdns_phy->regmap_tx_lane_cdb[i + mlane];
-				for (j = 0; j < num_regs; j++)
-					regmap_write(regmap, reg_pairs[j].off,
-						     reg_pairs[j].val);
+				for (i = 1; i < num_regs; i++)
+					regmap_write(regmap, reg_pairs[i].off,
+						     reg_pairs[i].val);
 			}
-		}
 
-		/* PHY PCS common registers configurations */
-		pcs_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->pcs_cmn_vals_tbl,
-							 CLK_ANY, CLK_ANY,
-							 phy_t1, phy_t2, ANY_SSC);
-		if (pcs_cmn_vals) {
-			reg_pairs = pcs_cmn_vals->reg_pairs;
-			num_regs = pcs_cmn_vals->num_regs;
-			regmap = cdns_phy->regmap_phy_pcs_common_cdb;
-			for (i = 0; i < num_regs; i++)
-				regmap_write(regmap, reg_pairs[i].off,
-					     reg_pairs[i].val);
-		}
+			xcvr_diag_vals = cdns_torrent_get_tbl_vals(&init_data->xcvr_diag_vals_tbl,
+								   CLK_ANY, CLK_ANY,
+								   phy_t1, phy_t2, ANY_SSC);
+			if (xcvr_diag_vals) {
+				reg_pairs = xcvr_diag_vals->reg_pairs;
+				num_regs = xcvr_diag_vals->num_regs;
+				for (i = 0; i < num_lanes; i++) {
+					regmap = cdns_phy->regmap_tx_lane_cdb[i + mlane];
+					for (j = 0; j < num_regs; j++)
+						regmap_write(regmap, reg_pairs[j].off,
+							     reg_pairs[j].val);
+				}
+			}
 
-		/* PHY PMA common registers configurations */
-		phy_pma_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->phy_pma_cmn_vals_tbl,
-							     CLK_ANY, CLK_ANY,
-							     phy_t1, phy_t2, ANY_SSC);
-		if (phy_pma_cmn_vals) {
-			reg_pairs = phy_pma_cmn_vals->reg_pairs;
-			num_regs = phy_pma_cmn_vals->num_regs;
-			regmap = cdns_phy->regmap_phy_pma_common_cdb;
-			for (i = 0; i < num_regs; i++)
-				regmap_write(regmap, reg_pairs[i].off,
-					     reg_pairs[i].val);
-		}
+			/* PHY PCS common registers configurations */
+			pcs_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->pcs_cmn_vals_tbl,
+								 CLK_ANY, CLK_ANY,
+								 phy_t1, phy_t2, ANY_SSC);
+			if (pcs_cmn_vals) {
+				reg_pairs = pcs_cmn_vals->reg_pairs;
+				num_regs = pcs_cmn_vals->num_regs;
+				regmap = cdns_phy->regmap_phy_pcs_common_cdb;
+				for (i = 0; i < num_regs; i++)
+					regmap_write(regmap, reg_pairs[i].off,
+						     reg_pairs[i].val);
+			}
 
-		/* PMA common registers configurations */
-		cmn_vals = cdns_torrent_get_tbl_vals(&init_data->cmn_vals_tbl,
-						     ref_clk, ref_clk1,
-						     phy_t1, phy_t2, ssc);
-		if (cmn_vals) {
-			reg_pairs = cmn_vals->reg_pairs;
-			num_regs = cmn_vals->num_regs;
-			regmap = cdns_phy->regmap_common_cdb;
-			for (i = 0; i < num_regs; i++)
-				regmap_write(regmap, reg_pairs[i].off,
-					     reg_pairs[i].val);
-		}
+			/* PHY PMA common registers configurations */
+			phy_pma_cmn_vals =
+				cdns_torrent_get_tbl_vals(&init_data->phy_pma_cmn_vals_tbl,
+							  CLK_ANY, CLK_ANY, phy_t1, phy_t2,
+							  ANY_SSC);
+			if (phy_pma_cmn_vals) {
+				reg_pairs = phy_pma_cmn_vals->reg_pairs;
+				num_regs = phy_pma_cmn_vals->num_regs;
+				regmap = cdns_phy->regmap_phy_pma_common_cdb;
+				for (i = 0; i < num_regs; i++)
+					regmap_write(regmap, reg_pairs[i].off,
+						     reg_pairs[i].val);
+			}
 
-		/* PMA TX lane registers configurations */
-		tx_ln_vals = cdns_torrent_get_tbl_vals(&init_data->tx_ln_vals_tbl,
-						       ref_clk, ref_clk1,
-						       phy_t1, phy_t2, ssc);
-		if (tx_ln_vals) {
-			reg_pairs = tx_ln_vals->reg_pairs;
-			num_regs = tx_ln_vals->num_regs;
-			for (i = 0; i < num_lanes; i++) {
-				regmap = cdns_phy->regmap_tx_lane_cdb[i + mlane];
-				for (j = 0; j < num_regs; j++)
-					regmap_write(regmap, reg_pairs[j].off,
-						     reg_pairs[j].val);
+			/* PMA common registers configurations */
+			cmn_vals = cdns_torrent_get_tbl_vals(&init_data->cmn_vals_tbl,
+							     ref_clk, ref_clk1,
+							     phy_t1, phy_t2, ssc);
+			if (cmn_vals) {
+				reg_pairs = cmn_vals->reg_pairs;
+				num_regs = cmn_vals->num_regs;
+				regmap = cdns_phy->regmap_common_cdb;
+				for (i = 0; i < num_regs; i++)
+					regmap_write(regmap, reg_pairs[i].off,
+						     reg_pairs[i].val);
 			}
-		}
 
-		/* PMA RX lane registers configurations */
-		rx_ln_vals = cdns_torrent_get_tbl_vals(&init_data->rx_ln_vals_tbl,
-						       ref_clk, ref_clk1,
-						       phy_t1, phy_t2, ssc);
-		if (rx_ln_vals) {
-			reg_pairs = rx_ln_vals->reg_pairs;
-			num_regs = rx_ln_vals->num_regs;
-			for (i = 0; i < num_lanes; i++) {
-				regmap = cdns_phy->regmap_rx_lane_cdb[i + mlane];
-				for (j = 0; j < num_regs; j++)
-					regmap_write(regmap, reg_pairs[j].off,
-						     reg_pairs[j].val);
+			/* PMA TX lane registers configurations */
+			tx_ln_vals = cdns_torrent_get_tbl_vals(&init_data->tx_ln_vals_tbl,
+							       ref_clk, ref_clk1,
+							       phy_t1, phy_t2, ssc);
+			if (tx_ln_vals) {
+				reg_pairs = tx_ln_vals->reg_pairs;
+				num_regs = tx_ln_vals->num_regs;
+				for (i = 0; i < num_lanes; i++) {
+					regmap = cdns_phy->regmap_tx_lane_cdb[i + mlane];
+					for (j = 0; j < num_regs; j++)
+						regmap_write(regmap, reg_pairs[j].off,
+							     reg_pairs[j].val);
+				}
 			}
-		}
 
-		if (phy_t1 == TYPE_DP) {
-			ret = cdns_torrent_dp_get_pll(cdns_phy, phy_t2);
-			if (ret)
-				return ret;
-		}
+			/* PMA RX lane registers configurations */
+			rx_ln_vals = cdns_torrent_get_tbl_vals(&init_data->rx_ln_vals_tbl,
+							       ref_clk, ref_clk1,
+							       phy_t1, phy_t2, ssc);
+			if (rx_ln_vals) {
+				reg_pairs = rx_ln_vals->reg_pairs;
+				num_regs = rx_ln_vals->num_regs;
+				for (i = 0; i < num_lanes; i++) {
+					regmap = cdns_phy->regmap_rx_lane_cdb[i + mlane];
+					for (j = 0; j < num_regs; j++)
+						regmap_write(regmap, reg_pairs[j].off,
+							     reg_pairs[j].val);
+				}
+			}
 
-		reset_control_deassert(cdns_phy->phys[node].lnk_rst);
+			if (phy_t1 == TYPE_DP) {
+				ret = cdns_torrent_dp_get_pll(cdns_phy, phy_t2);
+				if (ret)
+					return ret;
+			}
+
+			reset_control_deassert(cdns_phy->phys[node].lnk_rst);
+		}
 	}
 
 	/* Take the PHY out of reset */
@@ -2826,6 +2844,7 @@ static int cdns_torrent_phy_probe(struct platform_device *pdev)
 	dev_set_drvdata(dev, cdns_phy);
 	cdns_phy->dev = dev;
 	cdns_phy->init_data = data;
+	cdns_phy->protocol_bitmask = 0;
 
 	cdns_phy->sd_base = devm_platform_ioremap_resource(pdev, 0);
 	if (IS_ERR(cdns_phy->sd_base))
@@ -3010,6 +3029,7 @@ static int cdns_torrent_phy_probe(struct platform_device *pdev)
 		}
 
 		cdns_phy->phys[node].phy = gphy;
+		cdns_phy->protocol_bitmask |= BIT(cdns_phy->phys[node].phy_type);
 		phy_set_drvdata(gphy, &cdns_phy->phys[node]);
 
 		node++;
-- 
2.40.1

.

From: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
To: marcel@holtmann.org,
	luiz.dentz@gmail.com
Cc: linux-bluetooth@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	amitkumar.karwar@nxp.com,
	rohit.fule@nxp.com,
	neeraj.sanjaykale@nxp.com,
	sherry.sun@nxp.com,
	ziniu.wang_1@nxp.com,
	haibo.chen@nxp.com,
	LnxRevLi@nxp.com
Subject: [PATCH v1] Bluetooth: btnxpuart: Fix warnings for suspend and resume functions
Date: Wed, 10 Jul 2024 17:45:58 +0530
Message-Id: <20240710121558.934069-1-neeraj.sanjaykale@nxp.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273592
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bluetooth
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This fixes the warnings 'nxp_serdev_resume' and 'nxp_serdev_suspend'
defined but not used.

Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407100518.06Xxq5PK-lkp@intel.com/
---
 drivers/bluetooth/btnxpuart.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index c5b40bba6bfa..b9b5032480b1 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -1498,6 +1498,7 @@ static void nxp_serdev_remove(struct serdev_device *serdev)
 	hci_free_dev(hdev);
 }
 
+#ifdef CONFIG_PM_SLEEP
 static int nxp_serdev_suspend(struct device *dev)
 {
 	struct btnxpuart_dev *nxpdev = dev_get_drvdata(dev);
@@ -1515,6 +1516,7 @@ static int nxp_serdev_resume(struct device *dev)
 	ps_control(data->hdev, PS_STATE_AWAKE);
 	return 0;
 }
+#endif
 
 static struct btnxpuart_data w8987_data __maybe_unused = {
 	.helper_fw_name = NULL,
-- 
2.34.1

.

From: zhangchun <zhang.chuna@h3c.com>
To: <akpm@linux-foundation.org>
CC: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>, <jiaoxupo@h3c.com>,
        <zhang.zhengming@h3c.com>, <zhang.zhansheng@h3c.com>,
        <shaohaojize@126.com>, zhangchun <zhang.chuna@h3c.com>
Subject: [PATCH v2] =?UTF-8?q?mm:=20Give=20kmap=5Flock=20before=20call=20flus?= =?UTF-8?q?h=5Ftlb=5Fkernel=5Frang=EF=BC=8Cavoid=20kmap=5Fhigh=20deadlock.?=
Date: Wed, 10 Jul 2024 20:20:28 +0800
Message-ID: <1720614028-2260-1-git-send-email-zhang.chuna@h3c.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-DNSRBL: 
X-SPAM-SOURCE-CHECK: pass
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273595 org.kvack.linux-mm:203262
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use kmap_high and kmap_XXX or kumap_xxx among differt cores at the same
time may cause deadlock. The issue is like thisï¼š

 CPU 0:                                                 CPU 1:
 kmap_high(){                                           kmap_xxx() {
               ...                                        irq_disable();
        spin_lock(&kmap_lock)
               ...
        map_new_virtual                                     ...
           flush_all_zero_pkmaps
              flush_tlb_kernel_range         /* CPU0 holds the kmap_lock */
                      smp_call_function_many         spin_lock(&kmap_lock)
                      ...                                   ....
        spin_unlock(&kmap_lock)
               ...

CPU 0 holds the kmap_lock, waiting for CPU 1 respond to IPI. But CPU 1
has disabled irqs, waiting for kmap_lock, cannot answer the IPI. Fix
this by releasing  kmap_lock before call flush_tlb_kernel_range,
avoid kmap_lock deadlock.

Fixes: 3297e760776a ("highmem: atomic highmem kmap page pinning")
Signed-off-by: zhangchun <zhang.chuna@h3c.com>
Co-developed-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Signed-off-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Suggested-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: zhangzhengming <zhang.zhengming@h3c.com>
---
 mm/highmem.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mm/highmem.c b/mm/highmem.c
index bd48ba4..841b370 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void)
 		set_page_address(page, NULL);
 		need_flush = 1;
 	}
-	if (need_flush)
+	if (need_flush) {
+		unlock_kmap();
 		flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
+		lock_kmap();
+	}
 }
 
 void __kmap_flush_unused(void)
-- 
1.8.3.1

.

From: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
To: marcel@holtmann.org,
	luiz.dentz@gmail.com
Cc: linux-bluetooth@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	amitkumar.karwar@nxp.com,
	rohit.fule@nxp.com,
	neeraj.sanjaykale@nxp.com,
	sherry.sun@nxp.com,
	ziniu.wang_1@nxp.com,
	haibo.chen@nxp.com,
	LnxRevLi@nxp.com
Subject: [PATCH v2] Bluetooth: btnxpuart: Fix warnings for suspend and resume functions
Date: Wed, 10 Jul 2024 18:04:26 +0530
Message-Id: <20240710123426.935122-1-neeraj.sanjaykale@nxp.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273614
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bluetooth
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This fixes the warnings 'nxp_serdev_resume' and 'nxp_serdev_suspend'
defined but not used.

Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407100518.06Xxq5PK-lkp@intel.com/
---
v2: Rebase master, fix conflict due to copy-paste error from previous
patch (bluez.test.bot)
---
 drivers/bluetooth/btnxpuart.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index f75b24bd3045..31d3dd90b672 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -1522,6 +1522,7 @@ static void nxp_serdev_remove(struct serdev_device *serdev)
 	hci_free_dev(hdev);
 }
 
+#ifdef CONFIG_PM_SLEEP
 static int nxp_serdev_suspend(struct device *dev)
 {
 	struct btnxpuart_dev *nxpdev = dev_get_drvdata(dev);
@@ -1539,6 +1540,7 @@ static int nxp_serdev_resume(struct device *dev)
 	ps_control(psdata->hdev, PS_STATE_AWAKE);
 	return 0;
 }
+#endif
 
 static struct btnxpuart_data w8987_data __maybe_unused = {
 	.helper_fw_name = NULL,
-- 
2.34.1

.

From: Aleksandr Mishin <amishin@t-argos.ru>
To: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
CC: Aleksandr Mishin <amishin@t-argos.ru>, Jesse Brandeburg
	<jesse.brandeburg@intel.com>, Tony Nguyen <anthony.l.nguyen@intel.com>,
	"David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	<intel-wired-lan@lists.osuosl.org>, <netdev@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <lvc-project@linuxtesting.org>, Przemek
 Kitszel <przemyslaw.kitszel@intel.com>
Subject: [PATCH net-next v4] ice: Adjust over allocation of memory in ice_sched_add_root_node() and ice_sched_add_node()
Date: Wed, 10 Jul 2024 15:39:49 +0300
Message-ID: <20240710123949.9265-1-amishin@t-argos.ru>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-KSMG-Rule-ID: 1
X-KSMG-Message-Action: clean
X-KSMG-AntiSpam-Lua-Profiles: 186432 [Jul 10 2024]
X-KSMG-AntiSpam-Version: 6.1.0.4
X-KSMG-AntiSpam-Envelope-From: amishin@t-argos.ru
X-KSMG-AntiSpam-Rate: 0
X-KSMG-AntiSpam-Status: not_detected
X-KSMG-AntiSpam-Method: none
X-KSMG-AntiSpam-Auth: dkim=none
X-KSMG-AntiSpam-Info: LuaCore: 24 0.3.24 186c4d603b899ccfd4883d230c53f273b80e467f, {Tracking_uf_ne_domains}, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;t-argos.ru:7.1.1;mx1.t-argos.ru.ru:7.1.1;127.0.0.199:7.1.2;lore.kernel.org:7.1.1, FromAlignment: s
X-MS-Exchange-Organization-SCL: -1
X-KSMG-AntiSpam-Interceptor-Info: scan successful
X-KSMG-AntiPhishing: Clean, bases: 2024/07/10 11:05:00
X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2024/07/10 05:16:00 #25942711
X-KSMG-AntiVirus-Status: Clean, skipped
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273620 org.kernel.vger.netdev:356014
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.netdev,org.osuosl.intel-wired-lan
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In ice_sched_add_root_node() and ice_sched_add_node() there are calls to
devm_kcalloc() in order to allocate memory for array of pointers to
'ice_sched_node' structure. But incorrect types are used as sizeof()
arguments in these calls (structures instead of pointers) which leads to
over allocation of memory.

Adjust over allocation of memory by correcting types in devm_kcalloc()
sizeof() arguments.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Aleksandr Mishin <amishin@t-argos.ru>
---
v4:
  - Remove Suggested-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
  - Add Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    (https://lore.kernel.org/all/6d8ac0cf-b954-4c12-8b5b-e172c850e529@intel.com/)
v3: https://lore.kernel.org/all/20240708182736.8514-1-amishin@t-argos.ru/
  - Update comment and use the correct entities as suggested by Przemek
v2: https://lore.kernel.org/all/20240706140518.9214-1-amishin@t-argos.ru/
  - Update comment, remove 'Fixes' tag and change the tree from 'net' to
    'net-next' as suggested by Simon
    (https://lore.kernel.org/all/20240706095258.GB1481495@kernel.org/)
v1: https://lore.kernel.org/all/20240705163620.12429-1-amishin@t-argos.ru/

 drivers/net/ethernet/intel/ice/ice_sched.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_sched.c b/drivers/net/ethernet/intel/ice/ice_sched.c
index ecf8f5d60292..6ca13c5dcb14 100644
--- a/drivers/net/ethernet/intel/ice/ice_sched.c
+++ b/drivers/net/ethernet/intel/ice/ice_sched.c
@@ -28,9 +28,8 @@ ice_sched_add_root_node(struct ice_port_info *pi,
 	if (!root)
 		return -ENOMEM;
 
-	/* coverity[suspicious_sizeof] */
 	root->children = devm_kcalloc(ice_hw_to_dev(hw), hw->max_children[0],
-				      sizeof(*root), GFP_KERNEL);
+				      sizeof(*root->children), GFP_KERNEL);
 	if (!root->children) {
 		devm_kfree(ice_hw_to_dev(hw), root);
 		return -ENOMEM;
@@ -186,10 +185,9 @@ ice_sched_add_node(struct ice_port_info *pi, u8 layer,
 	if (!node)
 		return -ENOMEM;
 	if (hw->max_children[layer]) {
-		/* coverity[suspicious_sizeof] */
 		node->children = devm_kcalloc(ice_hw_to_dev(hw),
 					      hw->max_children[layer],
-					      sizeof(*node), GFP_KERNEL);
+					      sizeof(*node->children), GFP_KERNEL);
 		if (!node->children) {
 			devm_kfree(ice_hw_to_dev(hw), node);
 			return -ENOMEM;
-- 
2.30.2

.

From: Joshua Felmeden <jfelmeden@thegoodpenguin.co.uk>
Subject: [PATCH v2 0/2] iio: humidity: Add support for en21x sensor family
Date: Wed, 10 Jul 2024 13:48:01 +0100
Message-Id: <20240710-ens21x-v2-0-a37c22018b0c@thegoodpenguin.co.uk>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Jonathan Cameron <jic23@kernel.org>, 
 Lars-Peter Clausen <lars@metafoo.de>, Rob Herring <robh@kernel.org>, 
 Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, 
 Joshua Felmeden <jfelmeden@thegoodpenguin.co.uk>
Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, 
 linux-kernel@vger.kernel.org
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273623
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-iio
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch series adds support for the
ENS210/ENS210A/ENS211/ENS212/ENS213A/ENS215 temperature and humidity
sensors.

Patch 1 adds the required device tree bindings.

Patch 2 adds the driver, providing the probe and read functions.

Signed-off-by: Joshua Felmeden <jfelmeden@thegoodpenguin.co.uk>

changelog v1 -> v2:
sciosense,ens21x.yaml: Add supply to documentation
sciosense,ens21x.yaml: Add fallback to compatible strings
ens21x.c: Move i2c_device_id next to of_device_id
ens21x.c: Use i2c_of_match_device() instead of of_match_device()

Link to V1: https://lore.kernel.org/all/20240709-ens21x-v1-2-678521433cdd@thegoodpenguin.co.uk/

Many thanks for taking the time to review my patch.

Thanks,
Josh

---
Joshua Felmeden (2):
      dt-bindings: iio: humidity: add ENS21x sensor family
      iio: humidity: Add support for ENS21x

 .../bindings/iio/humidity/sciosense,ens21x.yaml    |  55 ++++
 drivers/iio/humidity/Kconfig                       |  11 +
 drivers/iio/humidity/Makefile                      |   1 +
 drivers/iio/humidity/ens21x.c                      | 346 +++++++++++++++++++++
 4 files changed, 413 insertions(+)
---
base-commit: 1ebab783647a9e3bf357002d5c4ff060c8474a0a
change-id: 20240709-ens21x-8f2530968f2e

Best regards,
-- 
Joshua Felmeden <jfelmeden@thegoodpenguin.co.uk>

.

From: Jeff Layton <jlayton@kernel.org>
Subject: [PATCH 0/3] nfsd: plug some filecache refcount leaks
Date: Wed, 10 Jul 2024 09:05:30 -0400
Message-Id: <20240710-nfsd-next-v1-0-21fca616ac53@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Chuck Lever <chuck.lever@oracle.com>, Neil Brown <neilb@suse.de>, 
 Olga Kornievskaia <kolga@netapp.com>, Dai Ngo <Dai.Ngo@oracle.com>, 
 Tom Talpey <tom@talpey.com>
Cc: Youzhong Yang <youzhong@gmail.com>, linux-nfs@vger.kernel.org, 
 linux-kernel@vger.kernel.org, Jeff Layton <jlayton@kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273647 org.kernel.vger.linux-nfs:86670
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Youzhong Yang sent an email to the list (along with some draft patches)
that indicated some nfsd_file refcount leaks. I went crawling over the
filecache code (again) and found a couple of places where we didn't put
references when we should. I'm not sure if it'll fix the problem they
reported, but they are bugs.

Plus, let's start counting nfsd_file allocations. The last patch adds
support for this.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
Jeff Layton (3):
      nfsd: fix refcount leak when failing to hash nfsd_file
      nfsd: fix refcount leak when file is unhashed after being found
      nfsd: count nfsd_file allocations

 fs/nfsd/filecache.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
---
base-commit: 24decb225ed20a5ba46a79f4609e109cb0e4a359
change-id: 20240710-nfsd-next-01e2afdebb31

Best regards,
-- 
Jeff Layton <jlayton@kernel.org>

.

From: Joshua Felmeden <jfelmeden@thegoodpenguin.co.uk>
Subject: [PATCH v3 0/2] iio: humidity: Add support for en21x sensor family
Date: Wed, 10 Jul 2024 14:24:03 +0100
Message-Id: <20240710-ens21x-v3-0-4e3fbcf2a7fb@thegoodpenguin.co.uk>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Jonathan Cameron <jic23@kernel.org>, 
 Lars-Peter Clausen <lars@metafoo.de>, Rob Herring <robh@kernel.org>, 
 Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, 
 Joshua Felmeden <jfelmeden@thegoodpenguin.co.uk>
Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, 
 linux-kernel@vger.kernel.org
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273669
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-iio
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch series adds support for the
ENS210/ENS210A/ENS211/ENS212/ENS213A/ENS215 temperature and humidity
sensors.

Patch 1 adds the required device tree bindings.

Patch 2 adds the driver, providing the probe and read functions.

Signed-off-by: Joshua Felmeden <jfelmeden@thegoodpenguin.co.uk>

changelog v1 -> v2:
sciosense,ens21x.yaml: Add supply to documentation
sciosense,ens21x.yaml: Add fallback to compatible strings
ens21x.c: Move i2c_device_id next to of_device_id
ens21x.c: Use i2c_of_match_device() instead of of_match_device()

Many thanks for taking the time to review my patch.

Thanks,
Josh

---
changelog v2 -> v3:
sciosense,ens21x.yaml: Update yaml to match dt_binding_check

- Link to V1: https://lore.kernel.org/all/20240709-ens21x-v1-2-678521433cdd@thegoodpenguin.co.uk/
- Link to v2: https://lore.kernel.org/r/20240710-ens21x-v2-0-a37c22018b0c@thegoodpenguin.co.uk

---
Joshua Felmeden (2):
      dt-bindings: iio: humidity: add ENS21x sensor family
      iio: humidity: Add support for ENS21x

 .../bindings/iio/humidity/sciosense,ens21x.yaml    |  55 ++++
 drivers/iio/humidity/Kconfig                       |  11 +
 drivers/iio/humidity/Makefile                      |   1 +
 drivers/iio/humidity/ens21x.c                      | 346 +++++++++++++++++++++
 4 files changed, 413 insertions(+)
---
base-commit: 1ebab783647a9e3bf357002d5c4ff060c8474a0a
change-id: 20240709-ens21x-8f2530968f2e

Best regards,
-- 
Joshua Felmeden <jfelmeden@thegoodpenguin.co.uk>

.

From: =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Subject: [PATCH v3 0/2] gs101 oriole: UART clock fixes
Date: Wed, 10 Jul 2024 14:29:13 +0100
Message-Id: <20240710-gs101-non-essential-clocks-2-v3-0-5dcb8d040d1c@linaro.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Jiri Slaby <jirislaby@kernel.org>, Rob Herring <robh@kernel.org>, 
 Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, 
 Peter Griffin <peter.griffin@linaro.org>, 
 Sylwester Nawrocki <s.nawrocki@samsung.com>, 
 Chanwoo Choi <cw00.choi@samsung.com>, Alim Akhtar <alim.akhtar@samsung.com>, 
 Michael Turquette <mturquette@baylibre.com>, 
 Stephen Boyd <sboyd@kernel.org>, Sam Protsenko <semen.protsenko@linaro.org>, 
 Tudor Ambarus <tudor.ambarus@linaro.org>
Cc: Will McVicker <willmcvicker@google.com>, kernel-team@android.com, 
 linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, 
 devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-samsung-soc@vger.kernel.org, linux-clk@vger.kernel.org, 
 =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273674
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-samsung-soc,org.kernel.vger.linux-serial
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,

This series fixes two issues in the gs101 clocking / uart handling & related
device tree binding:
1) the binding omitted specifying the required number of clocks for the UART
2) an incorrect work-around in the gs101 clock driver

The 2nd point is essentially the last remaining patch [1] with all review
comments addressed, from the series [2] that was sent earlier this year, see
lore links below.

As requested, I'm also documenting (in the binding) the hand-over issue
between earlycon and (real) console driver that we have on gs101, see [3].
While doing that, I noticed the omission mentioned in point 1) above, hence
this series.

To avoid confusion, I'm marking this whole series as v3 because the patch to
clk-gs101.c had been sent as v2 previously, and this supersedes it.

Signed-off-by: AndrÃ© Draszik <andre.draszik@linaro.org>

[1] https://lore.kernel.org/all/20240130093812.1746512-6-andre.draszik@linaro.org/
[2] https://lore.kernel.org/all/20240130093812.1746512-1-andre.draszik@linaro.org/
[3] https://lore.kernel.org/all/d45de3b2bb6b48653842cf1f74e58889ed6783ae.camel@linaro.org/

---
AndrÃ© Draszik (2):
      dt-bindings: serial: samsung: fix maxItems for gs101 & document earlycon requirements
      clk: samsung: gs101: don't mark non-essential (UART) clocks critical

 Documentation/devicetree/bindings/serial/samsung_uart.yaml | 14 ++++++++++++++
 drivers/clk/samsung/clk-gs101.c                            |  6 ++----
 2 files changed, 16 insertions(+), 4 deletions(-)
---
base-commit: 523b23f0bee3014a7a752c9bb9f5c54f0eddae88
change-id: 20240430-gs101-non-essential-clocks-2-6a3280fa1be8

Best regards,
-- 
AndrÃ© Draszik <andre.draszik@linaro.org>

.

From: Diederik de Haas <didi.debian@cknow.org>
To: Heiko Stuebner <heiko@sntech.de>
Cc: Alex Bee <knaerzche@gmail.com>,
	linux-rockchip@lists.infradead.org,
	devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Johan Jonker <jbx6244@gmail.com>,
	Chen-Yu Tsai <wens@csie.org>,
	Diederik de Haas <didi.debian@cknow.org>
Subject: [PATCH v3 0/2] sdmmc/sdio/emmc improvements for RK3328
Date: Wed, 10 Jul 2024 15:28:10 +0200
Message-ID: <20240710132830.14710-1-didi.debian@cknow.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273677
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This is a rebased resend of Alex Bee's prior patches which haven't been
merged even though there doesn't seem to be anything wrong with it.
These patches have been used in LibreELEC for years, which means I've
been using it for years on my Rock64 and I've also added it to my
latest 6.10-rc7 build and that worked fine too.

Link to v2:
https://lore.kernel.org/linux-rockchip/20210623145918.187018-1-knaerzche@gmail.com/

Alex Bee (2):
  arm64: dts: rockchip: Add sdmmc_ext for RK3328
  arm64: dts: rockchip: Add sdmmc/sdio/emmc reset controls for RK3328

 arch/arm64/boot/dts/rockchip/rk3328.dtsi | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)


base-commit: d79d713d602e8b32cf935ddfdf61769cb74ba1dc
-- 
2.45.2

.

From: =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Date: Wed, 10 Jul 2024 14:33:29 +0100
Subject: [PATCH] tty: serial: samsung: add clock comment for earlycon on
 gs101
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Message-Id: <20240710-samsung_tty-gs101earlycon-v1-1-bd0f8481542a@linaro.org>
To: Krzysztof Kozlowski <krzk@kernel.org>, 
 Alim Akhtar <alim.akhtar@samsung.com>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Jiri Slaby <jirislaby@kernel.org>
Cc: Peter Griffin <peter.griffin@linaro.org>, 
 Tudor Ambarus <tudor.ambarus@linaro.org>, 
 Will McVicker <willmcvicker@google.com>, 
 Sam Protsenko <semen.protsenko@linaro.org>, kernel-team@android.com, 
 linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, 
 linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, 
 =?utf-8?q?Andr=C3=A9_Draszik?= <andre.draszik@linaro.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273683
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-samsung-soc,org.kernel.vger.linux-serial
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

As pointed out in [1] before, the hand-over between earlycon and serial
console is fragile due to clocking issues:

    ... causing earlycon to stop to work sometime into the boot for two
    reasons:
    * peric0_top1_ipclk_0 requires its parent gout_cmu_peric0_ip to be
      running, but because earlycon doesn't deal with clocks that
      parent will be disabled when none of the other drivers that
      actually deal with clocks correctly require it to be running and
      the real serial driver (which does deal with clocks) hasn't taken
      over yet

    The console UART, and I2C bus 8 are on the same cmu_peric0 controller,
    and that cmu_peric0 has two clocks coming from cmu_top, ip and bus. For
    I2C8 & UART to work, both of these clocks from cmu_top need to to be on
    as they are the parent of the i2c8-(ip|pclk) and uart-(ip|pclk) each.

    The bootloader leaves those clocks running, yes. So earlycon works (for
    a while).

    At some point into the boot, one of two things happens:
    1) Linux will load the i2c driver. That driver does clock handling
    (correctly), it will initialise and then it has nothing to do, therefore
    it disables cmu_peric0's i2c8 ip and pclk clocks. Because at that stage
    nothing appears to be using the cmu_peric0's ip clock (the real serial
    driver hasn't initialised yet), Linux decides to also disable the parent
    ip clock coming from cmu_top.

    At this stage, the earlycon driver stops working, as the parent ip clock
    of the uart ip clock is not running any more. No serial output can be
    observed from this stage onwards. I think what is probably happening is
    that the console uart FIFO doesn't get emptied anymore, and earlycon
    will simply wait forever for space to become available in the FIFO (but
    I didn't debug this).

    Anyway, the boot doesn't progress, the system appears to hang. In any
    case it's not usable as we have no other means of using it at this stage
    (network / usb / display etc.).

    2) Alternatively, the UART driver will load at this stage. Again, it
    will tweak the clocks and after probe it will leave its clocks disabled.
    The serial console driver hasn't taken over at this stage and earlycon
    is still active. Again, the system will hang, because IP and PCLK have
    been disabled by the UART driver. Once the serial console is enabled,
    clocks are being enabled again, but because earlycon is still waiting
    for progress, the boot doesn't progress past disabling ip and pclk. It
    never gets to enabling the serial console (re-enabling the clocks).

    So in both cases we get some output from earlycon, but the system hangs
    once the first consumer driver of an IP attached to cmu_peric0 has
    completed probing.

    ...

    If earlycon is not enabled in kernel command line, everything works
    fine, the kernel buffers its messages and once the real serial console
    driver starts, all messages since boot are being printed.

As requested, add a comment to the code for posterity, so the
information is not lost. The patch referenced in the comment can be
found at [2].

Link: https://lore.kernel.org/all/d45de3b2bb6b48653842cf1f74e58889ed6783ae.camel@linaro.org/ [1]
Link: https://lore.kernel.org/all/20240710-gs101-non-essential-clocks-2-v3-2-5dcb8d040d1c@linaro.org/ [2]
Suggested-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: AndrÃ© Draszik <andre.draszik@linaro.org>
---
 drivers/tty/serial/samsung_tty.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index dc35eb77d2ef..ae2378cfcf84 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -2821,6 +2821,15 @@ static int __init gs101_early_console_setup(struct earlycon_device *device,
 	return s5pv210_early_console_setup(device, opt);
 }
 
+/*
+ * Note that for earlycon to work, the respective ipclk and pclk need to be
+ * running! The bootloader normally leaves them enabled, but the serial
+ * driver will start handling those clocks before the console driver takes
+ * over from earlycon, breaking earlycon. If earlycon is required, please
+ * revert the patch "clk: samsung: gs101: don't mark non-essential (UART)
+ * clocks critical" locally first to mark them CLK_IS_CRITICAL and avoid this
+ * problem.
+ */
 OF_EARLYCON_DECLARE(gs101, "google,gs101-uart", gs101_early_console_setup);
 
 /* Apple S5L */

---
base-commit: 523b23f0bee3014a7a752c9bb9f5c54f0eddae88
change-id: 20240710-samsung_tty-gs101earlycon-417b130df51d

Best regards,
-- 
AndrÃ© Draszik <andre.draszik@linaro.org>

.

From: Junxian Huang <huangjunxian6@hisilicon.com>
To: <jgg@ziepe.ca>, <leon@kernel.org>
CC: <linux-rdma@vger.kernel.org>, <linuxarm@huawei.com>,
	<linux-kernel@vger.kernel.org>, <huangjunxian6@hisilicon.com>
Subject: [PATCH v2 for-rc 0/8] RDMA/hns: Bugfixes
Date: Wed, 10 Jul 2024 21:36:57 +0800
Message-ID: <20240710133705.896445-1-huangjunxian6@hisilicon.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273692
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-rdma
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Here are some bugfixes for hns driver.

v1 -> v2:
* Drop patch #2 in v1 because Leon pointed out a problem about mailbox
  mode, and we plan to handle it in another patchset.
* Patch #1: put the atomic length check in set_rc_wqe(), stop processing
  WQEs and return immediately if there is an error.
* Patch #2: use BH workqueue instead of tasklet.

Chengchang Tang (5):
  RDMA/hns: Fix missing pagesize and alignment check in FRMR
  RDMA/hns: Fix shift-out-bounds when max_inline_data is 0
  RDMA/hns: Fix undifined behavior caused by invalid max_sge
  RDMA/hns: Fix insufficient extend DB for VFs.
  RDMA/hns: Fix mbx timing out before CMD execution is completed

Junxian Huang (3):
  RDMA/hns: Check atomic wr length
  RDMA/hns: Fix soft lockup under heavy CEQE load
  RDMA/hns: Fix unmatch exception handling when init eq table fails

 drivers/infiniband/hw/hns/hns_roce_device.h |   7 +
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c  | 164 +++++++++++++-------
 drivers/infiniband/hw/hns/hns_roce_hw_v2.h  |   6 +
 drivers/infiniband/hw/hns/hns_roce_mr.c     |   5 +
 drivers/infiniband/hw/hns/hns_roce_qp.c     |   4 +-
 drivers/infiniband/hw/hns/hns_roce_srq.c    |   2 +-
 6 files changed, 127 insertions(+), 61 deletions(-)

--
2.33.0

.

From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Subject: [PATCH 0/4] ASoC: codecs: wsa88xx: Few cleanups
Date: Wed, 10 Jul 2024 15:52:29 +0200
Message-Id: <20240710-asoc-wsa88xx-version-v1-0-f1c54966ccde@linaro.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>, 
 Banajit Goswami <bgoswami@quicinc.com>, Liam Girdwood <lgirdwood@gmail.com>, 
 Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>, 
 Takashi Iwai <tiwai@suse.com>
Cc: alsa-devel@alsa-project.org, linux-arm-msm@vger.kernel.org, 
 linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, 
 Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273709
Newsgroups: org.kernel.vger.linux-kernel,org.alsa-project.alsa-devel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,

Few cleanups around wsa88xx codecs.

Best regards,
Krzysztof

---
Krzysztof Kozlowski (4):
      ASoC: codecs: wsa881x: Drop unused version readout
      ASoC: codecs: wsa883x: Handle reading version failure
      ASoC: codecs: wsa883x: Simplify handling variant/version
      ASoC: codecs: wsa884x: Simplify handling variant

 sound/soc/codecs/wsa881x.c |  2 --
 sound/soc/codecs/wsa883x.c | 33 ++++++++++++++++++---------------
 sound/soc/codecs/wsa884x.c |  5 ++---
 3 files changed, 20 insertions(+), 20 deletions(-)
---
base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233
change-id: 20240710-asoc-wsa88xx-version-dd0039265245

Best regards,
-- 
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

.

From: Lei Liu <liulei.rjpt@vivo.com>
To: Sumit Semwal <sumit.semwal@linaro.org>,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Brian Starkey <Brian.Starkey@arm.com>,
	John Stultz <jstultz@google.com>,
	"T.J. Mercier" <tjmercier@google.com>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>,
	Muhammad Usama Anjum <usama.anjum@collabora.com>,
	Andrei Vagin <avagin@google.com>,
	Ryan Roberts <ryan.roberts@arm.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	linux-media@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linaro-mm-sig@lists.linaro.org,
	linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org
Cc: opensource.kernel@vivo.com,
	Lei Liu <liulei.rjpt@vivo.com>
Subject: [PATCH 0/2] Support direct I/O read and write for memory allocated by dmabuf
Date: Wed, 10 Jul 2024 21:57:52 +0800
Message-Id: <20240710135757.25786-1-liulei.rjpt@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273719 org.kvack.linux-mm:203271
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-media,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use vm_insert_page to establish a mapping for the memory allocated
by dmabuf, thus supporting direct I/O read and write; and fix the
issue of incorrect memory statistics after mapping dmabuf memory.

Lei Liu (2):
  mm: dmabuf_direct_io: Support direct_io for memory allocated by dmabuf
  mm: dmabuf_direct_io: Fix memory statistics error for dmabuf allocated
    memory with direct_io support

 drivers/dma-buf/heaps/system_heap.c |  5 +++--
 fs/proc/task_mmu.c                  |  8 +++++++-
 include/linux/mm.h                  |  1 +
 mm/memory.c                         | 15 ++++++++++-----
 mm/rmap.c                           |  9 +++++----
 5 files changed, 26 insertions(+), 12 deletions(-)

-- 
2.34.1

.

Return-Path: <SRS0=7Kk3=OK=amd.com=John.Allen@kernel.org>
From: John Allen <john.allen@amd.com>
List-Id: <linux-firmware.lore.kernel.org>
To: <jwboyer@kernel.org>, <linux-firmware@kernel.org>
CC: <linux-kernel@vger.kernel.org>, <suravee.suthikulpanit@amd.com>,
	<benjamin.cheatham@amd.com>, <bp@alien8.de>, <mario.limoncielo@amd.com>,
	"John Allen" <john.allen@amd.com>
Subject: [PATCH] linux-firmware: Update AMD cpu microcode
Date: Wed, 10 Jul 2024 14:58:02 +0000
Message-ID: <20240710145803.89218-1-john.allen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.lore.linux-firmware:2046 org.kernel.vger.linux-kernel:1273725
Newsgroups: org.kernel.lore.linux-firmware,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

* Update AMD cpu microcode for processor family 17h
* Update AMD cpu microcode for processor family 19h

Key Name        = AMD Microcode Signing Key (for signing microcode container files only)
Key ID          = F328AE73
Key Fingerprint = FC7C 6C50 5DAF CC14 7183 57CA E4BE 5339 F328 AE73

Signed-off-by: John Allen <john.allen@amd.com>
---
 WHENCE                                 |   4 ++--
 amd-ucode/README                       |  16 ++++++++--------
 amd-ucode/microcode_amd_fam17h.bin     | Bin 12924 -> 12924 bytes
 amd-ucode/microcode_amd_fam17h.bin.asc |  16 ++++++++--------
 amd-ucode/microcode_amd_fam19h.bin     | Bin 39172 -> 39172 bytes
 amd-ucode/microcode_amd_fam19h.bin.asc |  16 ++++++++--------
 6 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/WHENCE b/WHENCE
index 17b7585e..d08ff118 100644
--- a/WHENCE
+++ b/WHENCE
@@ -4177,9 +4177,9 @@ Version: 2018-05-24
 RawFile: amd-ucode/microcode_amd_fam16h.bin
 Version: 2014-10-28
 RawFile: amd-ucode/microcode_amd_fam17h.bin
-Version: 2023-12-05
+Version: 2024-07-10
 RawFile: amd-ucode/microcode_amd_fam19h.bin
-Version: 2024-01-16
+Version: 2024-07-10
 File: amd-ucode/README
 
 License: Redistributable. See LICENSE.amd-ucode for details
diff --git a/amd-ucode/README b/amd-ucode/README
index 9fd019c6..4f862af0 100644
--- a/amd-ucode/README
+++ b/amd-ucode/README
@@ -31,19 +31,19 @@ Microcode patches in microcode_amd_fam16h.bin:
   Family=0x16 Model=0x00 Stepping=0x01: Patch=0x0700010f Length=3458 bytes
 
 Microcode patches in microcode_amd_fam17h.bin:
+  Family=0x17 Model=0x01 Stepping=0x02: Patch=0x0800126f Length=3200 bytes
+  Family=0x17 Model=0x31 Stepping=0x00: Patch=0x0830107c Length=3200 bytes
   Family=0x17 Model=0x08 Stepping=0x02: Patch=0x0800820d Length=3200 bytes
-  Family=0x17 Model=0x31 Stepping=0x00: Patch=0x0830107b Length=3200 bytes
   Family=0x17 Model=0xa0 Stepping=0x00: Patch=0x08a00008 Length=3200 bytes
-  Family=0x17 Model=0x01 Stepping=0x02: Patch=0x0800126e Length=3200 bytes
 
 Microcode patches in microcode_amd_fam19h.bin:
-  Family=0x19 Model=0x11 Stepping=0x02: Patch=0x0a101244 Length=5568 bytes
-  Family=0x19 Model=0x01 Stepping=0x02: Patch=0x0a001236 Length=5568 bytes
-  Family=0x19 Model=0x01 Stepping=0x00: Patch=0x0a001079 Length=5568 bytes
-  Family=0x19 Model=0x01 Stepping=0x01: Patch=0x0a0011d3 Length=5568 bytes
-  Family=0x19 Model=0xa0 Stepping=0x02: Patch=0x0aa00213 Length=5568 bytes
+  Family=0x19 Model=0x01 Stepping=0x00: Patch=0x0a00107a Length=5568 bytes
+  Family=0x19 Model=0x11 Stepping=0x02: Patch=0x0a101248 Length=5568 bytes
+  Family=0x19 Model=0xa0 Stepping=0x02: Patch=0x0aa00215 Length=5568 bytes
+  Family=0x19 Model=0x01 Stepping=0x02: Patch=0x0a001238 Length=5568 bytes
+  Family=0x19 Model=0x11 Stepping=0x01: Patch=0x0a101148 Length=5568 bytes
+  Family=0x19 Model=0x01 Stepping=0x01: Patch=0x0a0011d5 Length=5568 bytes
   Family=0x19 Model=0xa0 Stepping=0x01: Patch=0x0aa00116 Length=5568 bytes
-  Family=0x19 Model=0x11 Stepping=0x01: Patch=0x0a101144 Length=5568 bytes
 
 NOTE: For Genoa (Family=0x19 Model=0x11) and Bergamo (Family=0x19 Model=0xa0),
 either AGESA version >= 1.0.0.8 OR a kernel with the following commit is
diff --git a/amd-ucode/microcode_amd_fam17h.bin b/amd-ucode/microcode_amd_fam17h.bin
index 4afcc9833d26adc165647ef1c5fa9ada2a7d9124..ae94feefdde4bea0fc3e229bc4df9aa90393cfc2 100644
GIT binary patch
delta 3209
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
L&3yZ+#A^Qk7t33n

delta 3333
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
X$o$6Zk8wQ6)|A1Du|B|x!Rr45KPvyg

diff --git a/amd-ucode/microcode_amd_fam17h.bin.asc b/amd-ucode/microcode_amd_fam17h.bin.asc
index 49a9f32b..7c428495 100644
--- a/amd-ucode/microcode_amd_fam17h.bin.asc
+++ b/amd-ucode/microcode_amd_fam17h.bin.asc
@@ -1,11 +1,11 @@
 -----BEGIN PGP SIGNATURE-----
 
-iQEzBAABCgAdFiEE/HxsUF2vzBRxg1fK5L5TOfMornMFAmVCWc4ACgkQ5L5TOfMo
-rnPh/wf+LAIyLbenqgpit5OPRZBhw/zWk3Wtl08328h1LJilI+ebJxtjYLlL8sQc
-NAkfN2f1RqRAoqhktxEMiWc9G4C7gqji1CTKTFLdALk+NaHPFA9z1E8nc+aUp58Y
-EXfmr0wWjKdMfyGzkDt+gX2QVGom5yN2uAe+rg/OeepuzvVMQtijOHsu4jKlDk4o
-lcuD8m+oRxCA4umPGQVNoeAhqTK+0MIAYQ8Igv6v/yk6bmYvd9CTCs16OrL1cFPm
-153kvq2agnmqLlB9Tl9yVApqkE0iinzWBBDuYuno+1I/tfs1k5AOmsxGa1CVVz45
-ZrYL1jovjWpW7VTiyKxIUlR2SHv22A==
-=B89Z
+iQEzBAABCgAdFiEE/HxsUF2vzBRxg1fK5L5TOfMornMFAmX+B5wACgkQ5L5TOfMo
+rnOyEQgAjcQdiUYTOecifIkRdvIotUmd0rYG4Y4atXIkcMKpuZXY3ipiIJQTi+zb
+fsTrrzqvfdS0FeG9GPePsgZwBvUCbvxbW+I2ffw4KXmZQh7J0WE3qYAEx3uV3IaE
+UtV6yM9OW6EEFuIwx8m2LQsl3bP6X/Cwgf3DEHlsVZzDexrYNU9lP/BkujpO0m/q
+s8PanPluQqesoaOm+DAQnceMC4r1jpfeZ3DShvyGqaNzB9HeOE2uQEfWW69cfkU9
+n3Lsqxjgl45EmKyNqqy5o3uMBwMJzl0jW2NR5k80+H65hv4Skclk6YCz651zx9C5
+bisCiEwf4gg7ffQPLYW9MCsK3yjTaQ==
+=vQEt
 -----END PGP SIGNATURE-----
diff --git a/amd-ucode/microcode_amd_fam19h.bin b/amd-ucode/microcode_amd_fam19h.bin
index 2717d54cfe69831e89143514eb28b2767aa71f41..4dcdca899694302a73f7886e2bf90fd7c0f99033 100644
GIT binary patch
delta 30631
zcmYhiV{k4^u&y23wr$(CZQIF;lP9*F727MeZQHi(<h-YLec#z#)l=Qoch8Uc(N%NR
zOh^MrNCOB!OkNo1|60I*j)a*1-}*m>ln(@if>`kXr9deEg&>HP|9=khUx@O*^eF%7
zk^h$-`9D4K|EeSZR|o!I{lNdTRU!Z#oQ#M9#5<Xq4i`|M05ce0i3k?raX}3estHSK
zu2>1nJV}hfrbALmz0WscgQ|sy$eP-xiYlfwQ_(JGO)Ugri>oF&bliCrw^uF*0dJ`E
zt4?<7;yeBrKYt8Aw@$#j^y5H(87e#BteLMuVN^PkVe6CE=x>Ktm|A0IVgEBWDN_72
zJP22Ldkmlv7<9BjE9!bNm$Cmw$Cn3H&L`ydbwCUUNFW=u+<hz6&gD0IwVRY&4Wxn?
z{19p?#DM$cn9d1YGnwkwZfWtR#T*`Mk6mC6mX5(#rOwk(7tDZ!NnFA~!x032%j1p+
zewzJ|bNLbvywmTA^JBlt{xygZ5?$|})N6J1O8^nIZuG?j0|9s=0l|nKY-t5El2+BT
zSFu{P4OUPaLM&>|C8Mq-HthU?8cqfNRfa1e8u2z#j<qh(5-cLLqD1pW!+el@$v=pt
z(?Wc}kR;N-;8kwd7XgP~y+oJ|TlL&@_!dhY`m%i!Pp*et<Y<2XT{%zhwv;KhU60wr
zYVw}2gC^ndod$5UJ-a+|K8-M*QwNl9ud4s#2S|30p;_(j>=v@9BRK9`P?A<bDXCF)
z`%6IGX&^Ex5+3b3<sMPJx6}pM0z;!*@m`MUfU(p2R-Tcr)s)`Cn8T@mT-0G;izZeY
zssmELn%wWcAJ<C=s0BMrWF^|QWdOs8_W#Os=#4{ZC;=CyLGgkqyA=*HhP)HdGvf=&
z!E-z)uupXx$LzeDcD~ZR1Iw7?T8)JSBmxUt>XObBN^p$OZ~Q|oPd`RJe+(j8&^1~&
zUH)~kUl;_n8X~E|Xg+`j`-u|GH!w3bV#KEtknyQDM4A49zPfH<t8-O*#K1O7`Us%(
zJ=R}9BLz$c05g2#^cT-dXVHLwijPMRQ+3}qyLOISr(IjC=)QTbL6MpUrAjzl`?~TU
zhxH@V$ysI{i1iXAFpp6z9ANYvqVY~S+fjRd>hfnf7?L^Ps{s%Y;fsuSUB^BN*hyd3
ztTC=zHRUehc)_3_LT=6$oaSzpvub_SJ$=6`lK{dE$uu+K@G(T~yI}iBWLee$x_T|j
zg5647g$BsY(edf+lS^d!-p8(u*GFu+?Tj60<<_Z?CQ0~Wj%ZS$IPOVVK&D@sctp*;
z3uK?b)KBT%*`pchkE)~?1KWe?e0Jj^LI;qqw}RUZ3|8V>u6s49#C}c3r<iYGcHY>Z
zRsi*&1USG@N8Y9o53$?6*Po%8V$dm}M*{9ImS<?udrbkple<HW`5870Wb{os(MU>B
z29UZh!gURt#08$H^U2oaIcWi7t;W%9@$P<ovndowFU015x%T$7My&iMjlh1h0^UAW
zfjYBSDc+VflHawWpjF=4N(L$`73WpG=YYS~w!aq5gx2+C><i$>PJhfVe)7zMd*7LV
ztR^AB?(h&CQ|f)ecX!zT+&r0IV7!!I{gLxv5bqv`VO#qf8WiwX+#%X=m2hu1dkg`>
zb}wkHwUy2xNksiQ*f!Atndi?9jCBwM>3uX9P=pV83IwK;(V<gKT999#%Is@wm=2(Q
zGGK@|G4l#p3D^~L%=RfP;*qN$!yN)D=MgebegO7*;d*u=$I90NDnP`v=pUS+Lpsk>
z_4ONV^uF8ayyYV(5z0FD+g}r3ZID!S?pU^uu_(DjZ^GvbHx+|g6L>@jn47Mskm}wD
zEA-@Ae(fOtozmgCa~*a`*ykJ_a14OKhew2i=8tg!eAwUBzZm}RaRM7{+-j!Vc{T+8
z>R1!aRjJK(@_pEJmem@fZ>PZGESea1y6P?bn=A3e-vHS4Ff6>}p#+kFt6E$+HbF)$
zfuW_2M3kc@8NPeUZlI32{>uYhI|5&!_qk!k{#b@#hf7o|$jxw;@z3dfJ0gH9&X0qW
zLP)l3heXe}S8kh<*KjAT>H@Pbewh*ag;@<Vurvstf0&+8-;RE3H#N+{k=T}_<cx?h
zOFz~g4+{z$=5$^ae4#9Y>z^Q2IwrwxVXGy+5Upj=_d(s<j}aiKQiaC{_j2|^?<{_H
znai^ayPNjot$dJ@!CV6CBOid+4eFr@lD^5;Iwy!}3R8G)xaUOESZ0V9F2V$)5HsND
zA5g5#&cE>?ywho6?OG`pG`QG1#r=8i+$3qCse7ljhr=$r&3{>M+FXwq4mO@3BG7IM
zSKvXKyhvG}?bA83da|}4%!itzpRZZy#WgA`4WZ^bJgob_umb>B4M+eY7~{8Af4=+%
zIY&F<;Odr}nmGdOwIH$xp@Rt<2e0-u4#GmK`+f7Ln{sM8DqQygNRs{9&Hyz*Ust1~
z>DEc@kF=53l%$qVqlw?~4Jz)$u27bn^=;|WB39n*G~daAG2eATz!{p<Y|9#H1V+xY
zLd%E`DVnbi>2KSx>KS15E1D2QrMYdk<7Vu|BjU#f;nG@2<Pfqvdm~iEEh!KUs@jvW
z*HmZEG{nR^6qL%I-k82e-MOxd9f&$Zxh^eF*6wq{q?slkM$9YtO|KW@chhUeQ;0X-
zc~tLQjo#k7Eu1bfAf>@W((VX{jzhLx)mZu_ee#Y}NmpFjGX)U1HWfZ3e9j|)SED+r
zA(@`WdW-gRPoOo*7Ji5n%1a=kr?n@fo#|R2-lRhG7%kM4)HKqli_h3*Gp!tu_K&D@
z&y&pIge8RS<XVC*PeNRzt9S>ialXNj;5)!_U}ig;QHBwsr>Q;d*TAF>rWvz6U|t6y
zk=hPeM^_@sni3%4g#0klxuWT&3>P{BV<M?`Y^<@PnguK!D(AL&`6Rm>)Ft-=jwfkK
zvMa~T+y%6RYhCBxHKY5H5UrID34FY)|3UYV*emUdl$D*7e^7siiU05FT5-(^dApVk
z*}QIdJ(mWbi#vwNUAppBt(2B|vy{+B@ss7ZY#I5Sd<0No<lF^pMt{jsH(HOga8W;R
z(gqoCx7Q_7PI&~a%;GrJkE99@sRz@rCKADlmx~zlCyqr>)0PAcYGWmP?-RHXsq_e2
zJD|4q=r|)fMzsE%f<!^xNd2Hii#=+OcTegq02PgZGJnIGG-pajqM~0F<f_L{P=_p(
zY^|LKMi3BF*P9vth`dCoii?!Y_nxQsc(a%6W>23y6jovi+=0n;1C1THTNGh{#nqPE
z)ZIZEB6(>~$(^{a6Ti<<0th=>@r97sWHc7#0mc`7YKUjBj3wZeFUjM!!WLY5u{S?G
zAqUbC-Fy>$ukO8S7!9&2+x_|Xw`y`j*N9GmS_+`TbjGZEf{9Eeo$V1dySbzg*FzXP
zvLn54#p7fR?)T+HKvaLFciEs~KbjXw$8`Lr8Bkdji04G|3tAp#D>f-7m0;8|jS}t?
zqx;eXox8CAtzc7@##C!vX-X9_prL%>qdqxZdakV@+m;xaTkPEf!Gq2y7yu%5T7o`3
zb_JlnKM=GkK4NK$!@8u-057<pDI{Uh3{y~j?WV9@B~Z`Jzy{&8b3c%GWZ*KxOyDN3
zwUKfyl=d`_kP>z8sja$a7#8SHh<MCHK^+kV`D=<I0|$|En=%G(;!DmC?Q0p?f}VrL
z=bky5hd%}%8a4)M#J_(Nis01-l#u6B!vFw=yfrVk36Y9sZ2ZI=3{QO<z#<p*xhFjr
z{<~f7D>jV7hH9R-%l$k;2^J$osZq5)bQor_$s#8JLO)JGDD6q-cBnz~hklGcRlO0n
zdrA8MCQ01FzUNG4VaFRv(G>WrMjwL&1B*L-obHpvFCkP${n$-Z01_{HdyXe|C;-5-
zkl<{;2vbPmuFzhh#6NdvEk+OhcM3mR%ZeaKArP#4J=ifUH$yk{^{xfXu1mC|M^zak
zI30TGl9cCr4?pCSId@Vl22P24K4&(%QLVC;|257b%N@SZ*NULimqwPRuhO%L6vy8n
z3)V2SYeH;s&T+?_va-_&ouBO|EgG;5W0Ym>mZWioQ?~MF`>0~qHOM5scG){x*QSQG
zt~!Xj3z$96YruwSL)<n^F(m$5$VaIIlL8u$hZD^h5m`}Z>`9A@Vyfw0FS@MCUi0vc
zlxINv$AJV18Qc4SdLxJmCU!byYK?4LwQ%jX1GukfBk7{^fbH&PKy$z~L=V7|!cnn@
z1yi72?by<)7u1N<Y^*ar6NA63Ci%B-Co!)5*)5%en{ZcE&gZx_*SQwR;oX~k68Bdd
zvO?o7jH$9FckN_EpIe!YC1B}?R|RaEXn%SG9j9(FU&u`StE(+`mOfNdLKp+Us0=`2
z{(^A#r@-_UE@_VPF!~n$n+fm*x4aCU@8hus055w)ujdvIjYBbJ6f>iT^Qg@wy}Zte
z3Sy$VY_uaNjWGh={&gfpVu6zOI9)HVyIFlKHBecR*Es3d^3kKLX_O-CT>A2CKmc*&
zzhlV4hYAXvvFD9gvt`1Yz;(|&MLaK;U1LcZzo>3#kySDnve@~uSOC!LK&f=GNP>aW
zAw?QD;Ft}YPllKLC%YD;dVuxgHL92%*HWYvUdAL8H7~)sM=_)gETZfkXY3+gC2MLy
z*{q+{euhGWKNImqtH>cZfmH(#djzA6#Z}cQ#J==X2tYVXs!=z>JPp%Sq;o==_30~^
z->;`%_X`9=+U?~%Apo%W7W_Ou@6QqB*J<fp@pOoA?CV(4`91-4B*R7bf^X|pB}t|G
z<BsoOn^r6<H@Hv>C^s&U{3K0ZIKcKDk3k-?6ezb@J*&Vsz6>d7^PI|C29si97*Jq3
z!LcVQmWOb=A>@)9>5nXiUgyzh!8TwWm{HV~LoW_WgcsMXKY$_98=iL~*aNteW?f=J
zI<)F~q*NJ2P1y^1ZYAcgZqJah0H)Y9NOhH6gi?&*yP*&JPs2v|+<&lqrsDD*11DUR
zf^BzkWrpGa(ncY7KHZC4>+k!RmINjU2Q%=UounTr^XeLWo=rjJm75(DY39IRE|abG
zC<^$?hcO%!NdObN;97B^%?V6e2nPXPxjA97iZwt^y`r8%@cI?KE*k<x@l+;C*XOlM
zjI0a1Bdq(6YVphA*4+-HRZLC=x;Pnt^fIUHh~qum1Qu2Zk`^-Kv%~(|6wR`cTm>C5
z7${PCQcoeCPw7VuV?*yius7zNZwN;QPoA-0_|Jwp7oan4zj>BzNPo4-EZAN$A!bM$
zmx(`e#sy!h1Jet2X{l+Ym|=d;sf=ge<cR^VzkU7~(w3RUWgPV`=Cy}i9|ioUd}>+f
zUZz6DN&tVxG%^OoXm3GAc#LZCLK;T2lna#eVFRr;8E|L?ZYtT#aO#8LPrS5f+aw31
zzfJd62T-w;<X{=5%`6uipj+=U=!8CjNlG62+kX47>F-#BXl@Kr0RcDgK!iJAqA=F^
zIvF<=tOj+qUGj0XrzejW&43X}B!K^l(T(^8fQ!Phb#?i3);DG7uT_TIs|qx2u$jcR
zZLJwb>1X5H#{p)TwShhv?Dk^;g!HaLDL*t<515(tjO9Stu0#+*s44R0ZvsPGTTRl+
zu;tf&Y`*wDef1DL2wbrt(&+0azC6uQs$7im;CuJpzW|@<>$f<q6CiNe&NX&k;IJ(s
zb#sGagiOt5OW<YFH!bOLGB4Tp+~FVhJ(u|ddY3;an?D8i1zPN6*5ZsEI!tnM!ec;s
z3b11<y3xa(F_Xf8Mio)}G0v^VysWU6`R=WU{lvpi5rn|g=#R?peY78Q(^Mh!3+4FZ
z4bNEn>m!icsMBw=)k}86uRIJy@Vzz9CL@`efHhGfLxa@4317ko+ZBIbeE6&59VQ>d
zRj|P2%LleBk$e@78KSJud*p|My07%$2XH7(3`esUm)zFMG)tb^_MmP8a176t4P`Wo
zaSCVk_7ESW;t;;35sDqY5pC{-+cP}i#-UY3&@4h|x9rp$F)2@v39acHh7c0_Guyw=
z13jjf0+f7}55>idx4Ya6)R2Z<6mi*lbwe_h@3y&T_wAPFGD3Ou<-C@`P|%{80mxLd
z>nty1X4Nu_yz<wYviU{`ZIAb-BjW~P@gVBww+gOj#ZR4soOY}opn^k~D=Om;A^*Oe
z=lBUjdr3fjdf~6V&-MwF9PZW{II4{1AQTI^+!!?)3%s<03N86uDlz9STZ3NW5sx)^
z{!zKA0|7;Y@RYmd7GGyba-2vb0~Ecl@;9UtW|6{5q-aJxUA`xe*fUu>ICkf~CJ#zu
zgybyd7y8^!U|JslL{;(4w%?&Sp(_WgE2{n{mT?4yvpEGAjspqaYF32Q0-?~$ax!GN
z&8PDfj>@Mj=)H8RqL0Rbybno=mijB-;Moi?#fe^#hPyAJZRGP%Y+?2E09`}x8{i|o
z-Syru{@qlT`U<L&;6@NA0!vGJ+@}sqY;7>bUAcg|r<V_#*ywd#OhJ126j)3~MfAhg
zJlx+H@P6?ZQ=b+)&n^U5;jZq(uJ?(Vc7Jmxy{8Pakf%?uLs43sNk-<mTyPiR2VvQ`
zhA}nuQ7lFN^#AxwcRhtT!0aWPiL*3MZxyk!&uK#z!wlaEU{>(BhYOT$3(*-R+p!7`
zxmb|hkaMwT)f5=-pJ<PoOgYk>v4iFQhctdd5$3S;_}9vox&>+&#@a9nG6Ym|P~cRM
z9;93f)PuG*i$U^B7&CB|=>nG*u@fgM_ad6Esb>U}aCBLU9Ms=k;qHBT>F^iUTmC0k
z1D%A_Ue*0P9Ml2v+GMzBNsan>R-lBL)~4Ti_)p{URPE2HSrPoRIwBpEKEX&x<J)TS
zbt>?GoUjia2<ZQ!J*mV@TmYer1UJK!!a1iou`J;^{UtZomczqi5yvNI{wyV>=YemU
zszn$w(32p@@2?-d6<Fbhr*Uy-u@uoQs9kybd;C~3M>VFi@jPPvEik>g?7la8X+S8m
z2eUDW1LYleHcy-$Mej~!aE=-_i&G*<ifCmRdbaLjKl3iq!>OeFHGpmNuf_2VvE}<J
zOi;bw{dF?+F8-ne<8UfkU&IlqZKSEb+FaC);2=2$nKe=@5fPoi33pWoB=4mhMN67+
zY8zCYLnY<kuy4fzZeg(cdZ2B3!{b0p=k5W<m+-wob1Uz8MXn@^)7$Z_ZXI=L|Gd%(
zNGraVS4q&oIWm9IOOULT{~>!)C`d40mjvkVl#`IBK{0obb`w+Cw2}QiMt{~L`n$oe
z?3%^z`-Pi__;}tTu3UEF9V$p=TmFj2hWRrP9P`DI65Xm=NVpV8E;RZTo_!JQutq6Z
zrWdi6GHDe;92FH}2ft3ZT^T!HlMOCA^vlbq{R=^?Gh&Q78<L)VOxy-^mr>5}9f4#2
zQA<R%<*zzfDs?K1hlA5|G@F?376Zcj#h$2@oNcQMa9B@%eD$g5KG|^=cpiMp=aop~
zgj&@NYspaRU4DzxSB|%G?^x4+_@OuYck9y0PWvzxVC)f)vAMO=A0yf=>jGUbnQ;%s
zI8J==`cDG97Jb`IM3^2x+fGN|oCg8ElRNbkau}<|x#{AfrF12hjyF1-`z$9UP31vi
z@rtm5(B>!WO9o!zFy*$jmk!eRGG77VxBva+z&QQHTK9x`w6biw*@So2iRvs6al8UK
zRKI3eoqI6+FYU2Ha%yiN3_`2c2CZB)GP>d?T7il|m(28`=BWixzoRFN$FG)1Df)+~
z$-;PQblgQQZd$^Jk6<g4$co3(|KczdW&ROn<w7x~uzXqf8gjE+yV+$xM`H&)lH`?J
zjNq-am9@%z4>TCf_0Zn2j8|V_kw4SQjdP`94ho~2snHAwi=%g(Xpssp3AcV^za(7D
z9iWrQ<CyP*TzCe^8FBwR$Ki>QmX`wumN862hQFU9cIgD$VBK6XuI78+kHX74DdKVP
z@J?G8#>Y;;6sJ)P(aM3U_=g1CtmJT!Y&}#qtvtNNmOeu(2IPX~(HdML5OmtSQhM0C
zo7PT3($w@de>MeRZ$f}XD0KOXU|qcDG1`&Z!fWNbzC8*!1J_%d1go{9z3f#4%AD=5
zW|x*fHwAfm0cz>lFHctyP5w(w!;rlhA<Y*kWODs$I-}0~VUfK?<MYkJUD*DHQ72%i
zGKysE_FT~NNQ>}p2KoXkOGPE)Bk*A42lbc6_eP@wi9VN8C22M17iZd~uU8W75AJJa
zOKa>kqw6`q`MvZ(&4cpV;d$*o@xq17XYVnS=Xd_Te$5QdCfPJ)a|eN~@sS054=qt;
ze>X`E-eeiq+3RN^_Yk_3?gj!lnhU{HdhihbY0Z=bc*rcNTXG+j#4;Wuq2yze8F=%$
z&I=x7Oe%6mvEmlQ!tyBFvX?$tj7f~JVO|T+2MGdzC*F7>tsX=HQDVSlN5@VuJIGsD
z7DxYEv$ecb&#F4B%S6$qn6l_wV>o0IP0bwog<p=CXdy;pVGXqze^lMR`3xuf36C<W
zf5nb^({?dy{WiQLGxUpb<@U<7#RK(&vCln%2O$u(O@K~2czg*Efa+7rKp0l*8LH1-
z9#;b7|3PV$fy@fR<f)ciV9mPuzMfrh+LB*h3w`&lLS``ZdPPRAfVCY<cOG?oohAk&
zwoSXcC$}Rp%fv#AWUG#jwAhzX>N`D6w21|G7Kul7=}Pw$FzcfLvfcABy*D#p|7FJ%
zDTp!E)$7OSESY>Fg6wu)@`1OwX5~8!#t8*j%Gkyjm1UZ}S>V@;pMKf<O&wW-(l9G#
z0l#e)U4hq;D$2NS$P%+0_jztpJV)qIq!eq`sb7YU?xwb#1wN=xZKr@vkaV8OGhhb|
z|Ma3xjvILp0v{zN{(8Uu5$@Lh4bDEur-{W51)dJ<lj%cb!S*YK?78os;`F2O4+#OR
z;5FF?*W$^-WKw*G*DTT9+FB>?!WTtd{&^!3s-{9?Rb{$=yOX%1&>p%Zkb~a}46aIz
z{yJf?ZUHIqzOkY0`|Tf2qrHZ-{-BYgk3?I8Z7k@@==puKP_@}M049Vx`sXNzvxPQR
z){ZgfyScS$woqeO^acKoVWT<ChZ+w!4_v%_;(ag+t}fOVea7*1&hn_yi;R+-iF9R%
zjW}jHC{ZQJxdA=CYf>(}L68(Vgw1EOX^s9B-9H+cd=1$?U={zChQRCIhY_Bl^4BO7
zL$XFsUbVKGy=KP602R@AyCXG*>&x?T0kZ`R%!4j74OC4>oO~_qe(pVmLudmw>hcMf
zm2V{?U=s|LtV(OQW6B}}JI}SdG~_=$8w$(`W(s}?(~*2{xi*}069l2A-@pj}MwZ<Z
zBD2YIzD%>pi&vceo5K8yz12EvUB!!7+a^tZ9p1K=u8(La4HWi;2z;za&w-S1cw^m$
zvyS-8-D@I@>TuL3z|qvL2dxRnw%f_K6_Nhj-(`H={F`Z9aEkF(ASZ|0eEV;_s)@)j
zD{>UNDAqbEk6z$mV@LK;H!BHV10zN=es7n0c7$JTV*WXHi^r2%v<EC(4Y086qI>^Q
zyTPvFzKe#Tu0DIbDjlAQkR=Z4Q+rUxp~eZ}G5F-oD_-^JL2hRt7ugFa>^ek?$jRm_
zC8aPVpKU4xsS?fu!xby@Io!X53NjOZm8)`WKIN4pA%~yhAkP#L(x}%IAwwB%`ZLY6
zB!i(!Ozps2LD9oHA#ien+1RAv+77^k(HB4vqn3}b-V!`Lb@v8A#l%BRiBbtKEQfnC
zz7yji_+!mh^nMX~M?nkd`M?}n@9D~id9kJriJqw_Uxy`zdNSL(wN~NR9gJmywIg`D
zD|+RCG231Vb(N~2thcc=s;9H0;GUzx8U69lbW%&jxgrwgYUQSnVOHcqDT-PS5!M`#
z*$CxnjtAF@dKp7(J%F{e??86Lf_`ntnW&jJv9DRXwlXdK9r^@loxDUTE8CR?L~0c2
zDo}+20?kxfvR6D$F-LGd!&2?$3<3UX@-(O!a!SukI6<WndXP`_UNHwc{$F$P7`<8I
zFrN2AH#XzHOwuKg$J~(gy>$=Wo$@dbD736I*LL}lYT}BUhWbmK=gRJ(9e=RPIIbNs
zZgn=#28Wo*D(V1@{f~tjQo%>ndKW9Q2rL9pXPy*#rJ;E6PsT;sEv73o<QN0ZZ@$Sm
z6(v{YXE%w%rMx99qw_eX>VbnDJGdiTe<=@6X0;pU@ZnXyhgh_1b2WIv2Q=YK9EDRG
zQsfxDxPSOUS{4a8Mlvskyoq8ZYqEQ;qNqultJb)q3TgmlY&RH#-$9;wf-(C0LgES{
z|Djv)8i%+*p|RgH&s;QX4qrI)1>1a3fe=IOE^HE-8{<K-rNmbr&!P8?$#nGN@;NU9
zMCAqH(8>ut6Qi?wcvf;*AA`OX8Q*!Am}MSrI81ReK_(Ei^V935%H>nkKWeq?tu+?P
z+$Y1tS0aGV30d@Ccs8F$<jnX<hOlC2gr<%LIIbJEwvXz=cAF<(&qnEi6bvN3m}|-<
zFX6n134iyDgFJLeET`yn4fay?Nrgft!s!&z$>-eQdzB|2dSKl^$kQQZVRF!o^atXQ
zGGu!@j}k)X6cZ{T2p!f(M2IEQYbsV3v&rz6+gN~IUe{<NWP3j%5Y_4PGb5WG>yz4W
z>f+OdvDa5&dp-ZQE}kPlf@uOxQ;_IwrC}$z@A@#=`~{LhKu_66b;;%*kHo2YEr~T?
zgXj&WJSmqd>G=cIF-<RYXiFPq(tAfZVE#VQxbbvbq-$*&A0?vaeEaB=goLGIiJ*+8
zk2HW)A?6T$EPU{b3sX)-o0LWkoi}R$Z>#<I%=0$-zaeA!T_ee<R6Bayux`FuKffj0
z<@SwuQ^75SqgoXAX7xy<Zw7xRIfFEr*CKMU@LV;%*tiylrsA6MeuerL1DowKgf`fI
z{GPTO(&_7wL2@7>vln~vaFl1)t$iE&xD!CjInz?%A<b8A^U}N&d_+f$7ir8%v_UOD
zeUQx^mJxoAExPE&6dwQA=3*UNIk%0tamm-SHWDK&`znW}n-Yo#RKOS!<--=Y4R=L7
zPf2>iyK)DYn}BY-q{wC~0Vh47-xy;DSu+IjHw(FC-FKe%9H;CpDEai{sh?Pu%?aRL
z6oc$V?T=zooU%dK!8bYV<YfDOQyU{Lhugg~W(HkNoNF!77QS*o-`QsP1oYPI-$jzs
zVc}EF_-(AK!s&2<#SU>zX~mxhTTx5UUo0xHSs(W+l!rMg0_I%vbj>tN-WSpE6OBZ_
zTrhcBC1m~S2oV)h(`tpvwAlH>1YW>>Ow=@6NY^@ltG$btV;EF26`8MmgC|8^rqkHX
zzLSdsY}KmDaLpdb)R0yB_)k<O7skkKh(Y#GJOyIAUpHx5zq@prLfkYZ%u;DTikgOK
zNm|U+TT9@!@YE6c{NgF_j$2g;MQ<g&z&iT^Et!#rCWrzTrI7eclyd+Nry_uG?39*W
zdJqO+>(8NHtS=(8s0htVZ?LhLez7DlP<b9JcJHP{P21ck0@2C<pxB4T4sMA!@J)`D
zH}my@x%<{KSH7)a9@Ag!Vmzi6pruDJ^iSmylZ3D%Gme{OLXO9@`3v$+5A&_`>rPf4
zS_&GKanU`c&veSk`d10*Wd=};67x%;3s|d1A7Mp5IPTxIdxCTCnigQdNhIp0$kRKZ
z6B=N(AcZE%?dWV2x%;-aMe{{E;~sIk(l-l2F)a(g)K$>a|JBs#zqyVp6#w|1nhVZM
z(7LG)<2(8a@=kx@wG1lN*$5S0XE14NMv~zwg;lc>M)e8G%iG%QGXUJW1BW-|F~1sM
zWY$H{C}Ha?I$hQWB>d&#HZ^dx5H)W4Tqv^8uCxw`eIF=)s>;+)-pymMP%o2za35r{
zNxwqI&bo43br={%9IX*pStLbs!5g7TK&v&&)KiiszB?~AFT67IhRSam8H2<>=%7L1
zj(w@Pu8@@QpW%3{fB@VcuL{%*#%Kk<os2T|dB`Qo9u~M5;@<8~l0NFmWAvyJ2nKAF
zh&nz02CulL&b18oBL$zI=Wl!)yg)8^xn%eSSfNg+*jgrr0@o%eJEK3{3SPPMB~lI2
zwls_YKfqc)(nIwZWH-G+fVhBVLuCbo`^<gwa7w&$LYovC^8yw=zYb_rEGnF8U=9Br
z1|o{zH$ZIYQ`7Bo2Zq(8{hXJK!Oxw=7fAReIS^XnCQhm1G{Mh$I4`54X@HltznqoI
zrke9$G75FQXgFm`8_OR;_qDfhbLb~C*9eQG^pJ%<xFR9ZJkXu!qgP1|YY{+UJkFtP
zX!E}I1=#CL!~_02t1<>hGogKrg-9E?r0!HsV4ylV0ftSPS-YMqGTIZm@ikZ&(_XCZ
z-j8q~2OX`{hb_1bB&2h?Ql$iFr*6E@SBBW}sEsZ=_HfC>G+`zJNQ~C_9Zv>L(J|(1
zO4JCAg3`axO0CG_z#qi7#jEk}2$@HX<0^sRWrjVwpnwL!LV7~A5@OqFhl(NlNNTfb
z6X&j3vPXXy{ES6PbX(9}MqI$uA`VpDZ@pWI11(I>*TT=y(WXtSFJ-%u&g7#9onh+(
zsVwA^VcU+;3A~bZ$FZG;n23Eqi)o+(I!R=o^CHppVZs69hxyt0>q8N~au;F8@entj
z5-!5rC?GVu$`7C2D3N<899lY#prTJ2=-f+HHTxq?K6QfU>7#yaI?o@M&$R(uU1b)K
zZCVBdU<+WJgPs!1n`RAxQ{v%&qnxUy0}6=JIQg(b<Fc&kLGC@`K$}j#)N9ABlH&ZB
zOusTFlu>6F!R{fpm#QufCfUO<qoY<YE_(oP2PguG%It2M`vyNAR6fq5A+5rHg?4FQ
z-D@4DK^#M6yO>|~zRtyJ(Cra5LJq)H)_PuUH1dh}a>Z}o0NGfLyzxgA&=!fa4gcLd
z&SEtIz5Jn2?KvUDZdyFDHE@)y;9gdzvcBR%N?`|vP#BSbDBNZ1o1m(jH9}1EFZ)-x
z10X%I1X}mx96e*TVqJ|#5$B3Xh4va_H&@~#L1YXl%#bhA>e@>NfmpFw&DFzh?v<*4
z4t1EBEC9n)-B0;`ZWmNeJJJ?mzYmWbo4eOJIBC!}(4B$kEUOMBZ%@YSpE;2Wtn<SB
zcOXv+scwa#&?>a{yx%eu#9xH%Bx38Z1yIcS=5^~fBAUjtd&(mQ&}a<@J1RXy96~J+
zl=U{OwBQNr)7uH&x^3b)RtMS_EJgCrXvO%*?9xkAxpxhc{lsx>I-4FmcM?wzsah9d
z+Y@wfqP$k+yLFZ6Bm6#H_QQ=>r^aO&^<mc&pN6Y;TgklMo2*Q8OD;Tmr2eBY1>iOU
zp9V?NrU+8BFv(W7nB<rGJP){S^7?=#SpM)}oEZD9tEQE@6Zo-<NaK!w1PJ9d*hdc`
zspSatVIB~=-Q#^f!T3ulKtd*YAHE?sVuH|D7jTd8IgUqUatSQZ-zkmk84!MWJJ_se
z*nFqnK+3|N<bY=pefbf`legQAC~P0yk_oFw98wy%7b;RsvhX9OIFYHT5@(GCpQc}c
zI=6nP@AHo!khk$P7cT1UNUdyS>db~pR~3j!ehTRjza#uVvPT7ip4_g93m}>X!IwE~
zkevp}yKI0ADRyDlh$knJh;AvOv9yZ#h@1D#r2rcFQFp^ieJn9&$h7o>6>k&ifk|Va
zw#M)5;!bE!!c5{CO5Kj__Klk3h_|gpVYZ92?6m;y-u;6EVAv2<B3kVL_3Y6_Jl|D&
zblp=u+aJLSjj)^EVa)~a2aKXDG+Lk6zwiNLw?u}=>TDp11s~fYE+J!G@%q`s<Sh!1
zs=JP}<&}{wFti_TN#C@@fz2UFHM=4nr7qFp^E11uC*FNp&)dn|r)13CITtT~<GzyT
z`)V-#^00`y*JYUdue`(j95vF!*;w{-N(t*-p(%gk{6v3i6~0P&gFs~b586Wq$%i?I
zuN+g(XDqD2-!U;|tA`4}&aaEIf&oSp66%p~=YR@E>8;2{S&s}&<|T+~0<B-87I;yJ
z1gW2x_>0upg`ep<@ger(UnW^=W<7u$2y!>O+{^Cvw%A3qaWTJ-Ds!7Xvw;#`w)VL~
zJ+Dzk_pBjP(_vth^-#PaBnGezFmOuRU;WhgQ*y+0M~mCbH`J}YGUd4vWwZBWxyf3F
zE)AJJA-GDi%l*gP8w^jXYYGo1I+Bv=r^SZeSgc*a{xH<0P(+d;T1@y&!@nOxqnRuH
z8Bm)4aF3+OPCTntK7n{lYmS7mQ-PHf8jhjv4GgOB-ze6d;<~g1ECbdwEEYLULzb%w
zuZ$P^;TXd}w(xtm2^{U9B1`V<!q^2rCUXMF6B`TM6ZGTA#$IJfBk$F;1<;MuHj=R0
z5(zv@XZpkv`Zg0lYj#-tp5p{=Ac~_WIy2Sqg~nlO*^Sxd6q=1Q%g;!eLLyVOq#siL
zz$98S5~@%0gGnfNPyizHOfEXqPSxT;`h!n3nUzekYap<e$J_pNdH`)g3x61^H9EG8
z>(9cr2v*ik$KYr-vG9*Q(3oz)kQ@#6e$*8_PPS&c)yV1LN5VC`ixy=+;c7!FC(9Q4
z#ZWzT1eAYu)~Tnh67nJx+$NGR<`=&b+26e+^=1{|-DEn#1^`H2Y18KMf3kSGHOxoL
z(UuIeJN=?5B&*34ER{H9mRaIA#PF471zyH!u7V%OWD9kFziMPlK`2hWF&ee!5}zas
ziGd2@#<f7AdSjLkrEXmqjG*1?{P7^FTbMA^56Fy0UPQ}`SA?6_mN?yXqI=B~*^nKm
zgMm7)!CV7S=l~!M%6t#g2xXuDF5+*YWOC?JMdv*;J7LZ~oF8n0b;<%C>E)bbS-L(d
zpf%0loM{&wo)~QJm_E?Oi+FYD4M}15eXODa%?Y!P4*Z3(ME*wMMjEwRumURJAd(y9
z#;jh!1tS<pb{%%_#QoHG*D4&c^Wk1}H)9v?%>@EYeE>Ol29l)~wu5owTjwPw`4odz
zhWIWVSsS?fN`cTLm}p6|R~T%*5Y74bR}-hTs12S>6iO4Ohr50NeqM0ypB|$N!vxZ;
zYtfW-WZ96Zjiy;4po*@2s=#(CUo+f3w6%;cin@Q4p8hAQsdnXpT<F)qu)8yDNRJuK
zOAr<dr~uXBq7rf$1g~v10Z2&faVKm0`{~eD6%S8n;?c<vhE22CgO!fHQkaN@3;<rz
z&A3ABEa6dG4}roi<k*%|rC)VE$SnJd?5_jy99>{}n^v9~WRyfHul6GKa<zUF4f~E5
ziCq5NNHG3$EB_ufJg=Cq1pcfj)yZIf?Bbt68o<r%>kUnbBfS*Li{gVg_2oW);pBN#
z*={kykk_atJl8$xRu?l{Jtd5Kwfz@?ou2c=U}`f2U&pajx|=W!7JNOB;7*k+X)rF(
zJ!*u^TSY_)1^925@#|fmew$c-X~jb=5>Yu5%gwgP?X5#Kqj}IU#iVzPvxU#6sEp!r
zHsAuU=a;p~%w663y`d?4GNv$u2B*t*UM(_O&Y#<~`)3SV9U;8z(A*B&u_qgjwX`dS
z@{rhw(zRLMA&R-2VN#d24lfxQekSzxe$;dfvGf8G-1@NMQ=^(j^10v;VK*Ov_x1CL
zWu49V%D%T%pX_^dyS$f3)qh+~+|WX83h)!K$bj%F9nA{twidzIz-@$Pb1+Rom4bXO
zicayuX_<M#p*%aMVZrj6x|jtw1)carghbsjNE@ywAV=fxQ#vk)D1<#9yB~B9iba-0
zw<^Y<!7F(3`*br-V2C$L(55}Z2^N(XK+JA$&3`o3>ciK~gx}nx`$uJ_A8B#T4loED
ze4cDCpU#axnTnS29Pn@1(&~Xoo6Zu@cz#3Xlt6A4jL88sdA0zAMkVr3zrH9nt?z(9
z>8nZL2}p5|3H{x_*H1R`&-DsnhWeI}n6+xS(PLGqFg}N*Y;K`vq2fY~k*XY*6;vk7
z#yx{2rq|4`L4x;Yd#<+H{-nRI7{E`}9ld`SbcL&CYQsy7Qltk~6BK-LV1GJwN;~mr
zv8bSC?O<2iy7Vp*v|7V1V+m(X-XPs6DN%!$z9bc0-wT4Q+_yPINx?9B#<H1ujG4)*
z92!9Z0QoN(ySZ|p^=T5i8DaFwq0#_3lBtjQHzVwj`NRu!S~vZ|Mu|#47~tO-syjO`
z7at&LWr29J#-*LVs}9MYz%Q(c7#pJ7GA8&q8q=@JZ9u7cB!GMsCxEus#R>N^d&MvT
z{gg=7HMmnkb^$@r2te|ie~rp9F#y&VWKL13X0x{t7SN?Yj=hnj5z9l1B$Ev|$fp;;
zdIct$W}7}iSqdInMr+`K0!-alvh8n;k(J-PWVVkdkM_4OKR9X)@8ItLX2kw*T;`dj
z!?Cyk`-lKr<~J)oe&d^|+WVyDX1UqLv)Hb_s2QjL8s*6i^MJEO?RhNX3ZoI07oiI_
zn=K}|rz76~LA9;G96rj$xi;oaqtQ35gkImT9g_J}nH_j8kJphz1IP>AuWdtJ7fp_9
ziq%0F%AA5d@E$7i%HmoP2EuWjyH4vjjX3n#vE5Lih31NE8rV)RtTk+LaL>iQ-9Hd{
zxQPsE+-uTd)OXq<(nw7HZPtt4&Vw3LjF*IF*D$LDv@w0?m0UFLPbhLEgN!ufs>;~Q
z!)<ygu6^=UUoDiq07PFJ8D}AIimzGm@2t}rs70KYyle;qTSXo*oHSvxRV7myK)p|$
zpycpy9qbEGFIVd>p?r)GT>h+Pu@$i!hi1~M=VLbYbMlqbNPdZR0sr?kpnB@I1fm?a
z^0RLpV>8nNR;{0g8&)eVHEhZCVHNacsV{<(D+W91e3hG86TojV#J+~;IeotUbWBa1
z3Qo1LdKPP=8n$kR7|i%vyKzH8kcu~9`Q3|Xb$|gQpn0Waw3^(mKz9!tvXre{#>2eh
zHgg|&LAoiqH-D|VG0UDR`Ker($U`F8=LS6u4iwmm@lN+47uRF6BTW++XhoR|Gh7!@
zg}Ue6q8(kq3D_{teQ&B4Du4BE;e@j2gIq;u)?3Pf>;Idag(Tm!UPLWMu?$&j>ocKq
zILQ{Ci!t+6htC)<Y>&kT>LcbZQN}AD44%*mtNKshH3eQ>T<?1LdUkeqNS+9{Z(&T8
z>=5wDISrR$P}OQ<_%t-a@EpEg$&$rOpl_N*qoJ#k3Xlj$j!o~uMYnw*VPHh$f!nd=
zE9OzbmX9~zRvM3j&Q0o@IGJ1>glYsuCMQwv2s@E(-G2h3F*8Z*9!zgto=fnrHs@!q
zak~=qi!&0{K0vHby9n4k-G$Kh$<Y69XRrX&Np{-CdaSvQb3QP{b6)Cw#tN{4enJ%z
zncI=40d$K{pIrTJ`OZpnKHL!ZoA|s+l(vfo+{h%Mjtml?vEeoAKJtjd-0Z>a&LdB9
z&d>C)Fal_MFXPI&Zub6FigWlun#M&%^I_7|AD5unPJ3or?cRs#?%X(5h@4`R)rd;g
zmYX9mGG^u%4QxF{0i}ig2I&sJ1=#A*fb4Qb1NMk=53}H5IKo8@c|z{@a1%BSn{mQW
zx3xl~mAenSA%p+B0|u+SfxI1f0ev&Z+#tSwKn(kO`So;;X5(fj?@J9!m#@R;*4K$n
zRY8wYjj5ne*^`6@pmzxvf)TaT9-bZRG-U{v``j=WE%agcR{`~@U_?E8be*{$C!~v?
z0f?>zAllnI-wM6auz(o)I!-mXP@4$b`pCx!zE*rUaB^!04#&M+6xK1I=A^)c60%AK
zfIx)q&=$;zmN&F-9v5i2-Dz!WgD^digmDpeyDuIqgN7k8K1xXnDj<KPL55=#($bOz
zM4xkYvM`ku_L0i;pwY3yt2xn;WUsOX0O{7)xWrp5#!fa|RiQPOs?HF`$h4JhbbB?`
zO(4B$Vuh$$@Cgvedne;^f=8gi>l7c!wYcx!JynX@JxHAX-%wtpvf=Tx2y8k=SvCYm
zp2panq0!gz*@WJ!^#xMSiC=s;KNBLaLJH%rgtCgYQ*hLX$JRp1*4==?c;U`S!0c3!
zh+=_HbJYUSt%&d3_5Mn3L#>cB7S!h>(vO_9m<k?Rh>0g3;-e@Y_bNYPL>`WGp-If$
zvb09h0|uG}wsw{P>^yu)`$*9%l!Fa|(<U**g=q?k-$EnXp&PC24YD6o{iErit8-t5
ze=o^Q<D>(l*Odw(^=#t1>35MG;N@QoQG>J0x|h2pM2PWUhW>s~e5@$Ts*o0WOA>ZV
z<BT-}R4_!%?ub<r@z7ZML%wtHK2FfwAb%hQ)s--K31^N%y-9d~kJ^AL8%k+&tenY7
zi5(s}+kIsz*HM)Y1&$kB3esf99NjMCOpv*Y8D)iyg$zxIk8DTYWC?F>Ks%RFTink#
zqjiigV~X})r{OM-+zak~)=zeo!8o;P$wLx(*~0KYJczT*F-qjeI@d?HnP?J*fc1gl
zgmsQ^bd{i`s`#l+IOnd8J&f_2oi%4hb&f9~*R8nTtt;1`wMKApNF-@=Vs?njk{w_b
zsR+V?0bO=lN)j?S{Wt<4K(M&<BUDd@AWcEjcjD?Gw;$(Qxa8HNcDar0t@%9<?;s>{
zD;m^ll9G>kw2EmVO1^egL_Zq)`EI_+aBi}rufdaDY=9=~9i1gfSRF1+E=7i!XN~4b
z+xb|LjY+fIR`>zt`m*rHn65|ll4pU_$Oe7RHaoA4L)lxFA0&4VfJrT>j7BSCn>LT#
z^l51Bkyb<QSr3$U>PAiyQSSO-?1y0gX=uGhhq4^nmO-K<UQNl)Z9l!&3$@yIFkauT
zGB)ri>~{R4L9$l_LNAip_~_b3F^$PTS&q{C_dUbHbP=Sw3LN<L!=kj(w-2l+*#NyK
zx+}J)@OTqAdj8x85Y?X4iWMId9FNO=q8joc1$8$p)Duxl8?&vBYI$sN2(Pv${+$<a
zy<~F~wM0Xv<@arzk4H|?;pqjntHr1_18Q7I@I?X6hrod?2{J4v&kMZF{%p5nlR)T`
zm<WESu5z1rWo|(?OmX@geXyihH=7>pv&ZO9yb%PsU=IHW!2JfexNlWyy1EO&j*y)p
z=tj3KI{CM@Wclqe(-gvr;rm>TIPMxVNu2A@&%5=;v!y9$3Vt5~a1Oo(GmsGWJs8<|
zC~G_EO2JQi3GQlUxj953YSP;9vb=O7;=rH8j!DC>_{LVbujCvDag=)T#nC4SVYmi~
zdJKXZS;y}KsAwg8V}YG}@+amDw^EEV4P+@7O(hmcH!Jjvn}$Jf`$^t855VPNsZ2pL
zzC;bLDWA|wy}<BOmPah}{MG;B=2cvR?}3ZAnXe<YAJkJh5k|TCPHKD=-I+lEsWi{>
z2g<rPp_l6zsTzauLUSu!Ho@O%@v#LKm1<(@`|qtO;G(n}2)AoN(?m<RIo=CFHuo{6
zA=v)Yg7AX(xFG?yYHcLUcomLEqySOE)#*jFracD&IHYWdqZn9f_TN?@kUf`S_07L5
zIszU-F1EL_{sCYDDG_}4&tea~%wv!kgf$z&bveZSTig2tkC)D^t}oKYaA`{#DJAG~
zN^DbI08UeZ)Kyay`j?7daO2FJM>}4ac+BC<a_^ULE<H)#f_E9{<w%cvvn8V{5bj@M
zV%y*f4VjPUi4GqwDv2+GLvciVIT}5dEK)l}OFSdM0LI`3_16iR?6dC+n?5clX!oLf
zJ~jyAZ2R8LnvK}G0gNS*P4%!avZ22+y`f<}AS&W~qLWxi1VCax%Hv5!NPqz07#fv_
zD+n(KJwrGoYA;DRqSp`Znx*;1ahLkjRotB@+h0zp-pN2c_91XnLhN6^M%qm7Hc8&;
zr;UMsXENj-9G4E$pSu5|Y@Wna5>)VcrNFEWlao9ZN6#2vdhgu_JD^YPDPmO`YL3nU
z!2D`bc-;TzF`qOF^I{&69Bspm=@>tT__?l-WrbIz#}Q!9m{@Ga&Z6&8Qepp0qaC(G
zQ3aV|VP8mED4f39k3cp^bRB{yGJ<VZBi_g4B-zv9vP&;6DT*nE#WIhYd!c>^r32A|
zL`^@bNb6iAS6Y|+9f@oR4DZ-H*HG#TxJCc<F4MBw1`<1NU*E>@f#$!~qp~dMix~WP
z)oA4CRzAI25tRNx90)Fm2lI_{K14aTrwx=Z-W}S&Hg?RzRsp_z%J`{)d|_v?BHf(U
ze6_Z*(ZrM~2S>)!sO{$PRCK6~iIezCt5ft>OnG;BYZD8Xedl+B?<AUagK`d40m5sU
z>WTdo#&Xmx6Xxs5d*_h+8T>Q~l#Qof$KT93?1R#8({q`ciuP)grv^3hRNwWVQ?)O~
z@86BbiKE8O&x!ws_9#HOl8rHN0nT!Nsw5vG^Rf!KKeY32xh{9hQRoq6uWn68Noxhk
z@Wyx}i`7Wf=;&z;$H<Y?Ectj;!f#D3Re7=$(-Y;!TF!`{OnyfRJ5DQM0!Fvtp8X}=
z3;U?X(bep?d-1i7Dt21XP8i^S+_oD;w=n^69B8Ptvsc^YHO;FLmk+9903XR~?l7@r
zf$7m-D_EL7)FQR4G{w`)x_B`4lJ_%6sS;lgy1AI*2Q!^>lwY}`Br01U`t0xqr0nWG
zuAOzdO<@f=@Rl9s>c-)1&gWo!&xAyC^@|knw*iX;*Rt2b@)6o_q7a?9Ni3%=Hh{i5
zxFlSvhl6AiBkiY}$jt^Zh@Z*-pgk@WAei9%@>jL0E1%>5Wz1LFUs`%7Ep7<Om3#8?
zd?8G&XTsd1GbgVPkF0LYKTUr`)%)n%gamr9og79iQ*dR<g_;d3FtvdrxA)WM=IoZp
zmC94icX#$nT2=rIFK9S1nk^hveR;61R2>WavZt3n@S<Kp1AnhRQ0#JBNC5dZ--<ST
zNIvoMqF*xDP@puD;~)7~H9SpWQ=io&Y|VJXHbSEmf}qqCpZx>!WK$CkgEnkD9*q^i
z<VkF?yGU4!z~ToCf$s$HDGTzCHz3st9i0$L#PuGf+Xkve-u^Z+=?^89wYLyvnFYKa
zQWQ@9(dkLzt|JrIGSMjb?10&OT4Htqy3KZ#TOgtPSf0)8!K*m#{j&$R^+T)b;bn8{
zjDd{nkXhDJ<N7iGBgVm{DfC*R>u9&iK}Csrs-Fm`BB<SxaOYMm-LdhpiO>}0+p(hS
zU`bOYYvQg~c%#e3W^ohKYA@}3IHyAjnzTZ`;18+*E|EcMw|>ezKY&<9hZC13`fq=2
zT%xFfW&t)jD2(lzz3g@*Bu@$J@6CRx#q%F_W)pnRgTzX!e~O!uEWJ*K;+%3#fWLWn
z7#*u7j^fsJh;_dX{F|!doB~Er12e?gzd=$pT)&UBL*SB2EXcz$E51&#`C7D~0nZuY
zkc}d8TYP%vrGn_kR)EKV&rcI_s0S|)0-$>guh0^gsk-dD9eaWSX|G6?!3(2(q)TS8
za#!`pWYPCxP#)ez&li0K3OBl`6m~Z^U_|`sQFeFml`?u6v#AT04_3fZ&VE`>=VR9f
z5so^C73$yB0%^{bF$Q%!`<ikMULXS_qFbuVHOM&FU#tAod4Nu3p2N75KJ|t8X}G1$
z80Lfuda7L%J^)JIMG612(H?ah=!VnMpQzXTJvCb##QU6?ggEZEtz6{%_||a`vlhEz
z@=5rU1+Go^sTy8qR>Lk3ZW^>DC2=pN=kGY~<O6P5w^*-KA-!S%mM85b_^9Ox+_NMM
zeXWQ^$N_cy8NjSXKubYz&JobBf+7>Bj0=*yvv3@R5+Q<K^%_lf(2|~08L5&C)x>Mm
z<J#aF^uhi-abD30sS5<HVCJL&^G%iVD>5WRsR+;-7a1c1mDDD+=?aj;ga7(J?c7s$
zo(<Hl;WW0{*tV_4w(Td4-QbRGH@0m%joIKy<FsL8JL}z8W309Rjc>2NVD4YznCE#z
zbo$5bOkVGCgFd`!5~ou6zNrr3`*Y({NJ+Huwz-S?s!RwL(9+kz4z;ox=fzV$Nx;Et
zY4wMwgXsmCQ&e7g6bIQW*149FI#4EcJ0l(SJ12|D6(-8EXKsiItfZTwr<@g>Dc8-B
zyeT8!PK+B0PYpJHXFR0lT{Qu36I6^TAr@2_k_5rCvtM|W{C_7%_cU-%h0Z_p{D*>n
z4SC1R+xF7~mVJU>v=VAA#%a4tPa@1Z9(Irz#*uK9Z-;xj;<DYsu^ST*7>U<xLe94y
zg9*ch;(AYV6G~PK$Jj>aS_xksjUF;EYCW|N{@P?Lt*QHB()jJS<8mbR$$H}CeUncD
zR`LN~@n3F9m1G7q?i+RpyF)kqc=j1e{L_O(_AXd}_wn#@>9w#HS8fz*rroF279$1%
zQFtyT-yU4Q07eA@rdeaVuf2&^7{sMXw8*7lGu1;-=s(Y1ELjOl5g#)0q0g@lyeU8@
z1ocT+_)!{EzJk-YZ8jjsDoGqV<EV;#`&BUPh15OF#{Enzl5xIJA!D>t-~DySU3`r*
z4A~|yDMs`}!p@KT8KEt8NlF?lpZ=Ge!U})vnnx+3O6NvLKJ0d;kXQNwA~AJmojqb^
zUNDuvmZ*h@H!`hn)b`V?=k1wKj~o{Uj}U5eJtx@ET*o8*`}i-0;zZh*+bmS6H=&L_
z!d_lt(M{;TT4HOJ`DuQ$PuHH@&?Sn48-5}{C<u<(9NUef@w3Zdt)OG!!xyN##kQ5$
z4k+^nTQ9CNFDEm@-0&kWzQ@>k8b(U9gZrfBmI^_XW%N_nP6dd?*MliPXDirW&u6lY
z+XVBgYJz8i<;kBg(sjT2`8{(@i5h3Y!pLZhlU`f%eYh3PcQU)H$_dq!%76ANlICm!
z{NJ6G8gpAIDF?jKcI3pGSR8_%4-%((Stv!fb8k_y@gh)WiKB?g;^(jxI7{vu_VnS^
z3^&9*8|`iQ;3EUB!}&HCwPUS$4E-F?Hko#=JB{CjAvm&?S7O_Jc(Sg3I=H`}7R+||
zVMm+oAMm{>D|IXEmTcO!FUySWj(2eajnXF{?Tv^_HFQZ9(OfewP3{b|;Ka|}Au3qS
z74r~beDq2SbEt468`c*_8PFf-falDW+R%_>eYMUg2FSNP#mpSWd1x)ln!dD=`XJz-
z;uj(M9Ql#pD-gy6htsr*+oLzzaFuD!`ORf_*1nOKkUd-L;$?JRSG-}fr)d$G@jA#m
zwS4NE7w+a$F*#hRAJcm3-LvQPQ(!wjD$DPCY=AnfyqzB<F;`k<lE35qHjG*UBs{-L
zptzRO&0v_?jtYOoyKea|(UG&?2IE<g94i;d!q^@qnM7CXI4RKK*Q0kM<+PrS;ZEe~
zQmP}FQS~4@8i^!1<2>#BlvoGK@3z+>$cqfTwe_jWY=z=*YrVKP7piw`hwzhO(5R`K
z)cjx8pLsrBIP$Gw3Exd~XDbz9IGOj|2v~?$$|lYkYeVw&f8Wyy()1=*Ffoffhuyk^
zcE(){cA+dU(pnkT)RSWf>m{3qOVMRJu+inLaB1w>3dYkZU9=?%8-xK3-By2ln?vD_
zzsqUFT<CaH^sOQWzlu?){<?ju9bH_w-7u^F=niCSh{xlc6Nfz4J@~HE4AjfTDOBIQ
z1c@Aja30e}rw6gNMP^$C@lOqq;H(<)=i4aFIb6MV{>w!mZBY@$Km;J5jW+r{S4>d;
zQPu?yX-4p(E_%pe@Xr8;hVHEg$>6-#yD2@CB*L%T-j-K`%6tk;bh(G2HGG`h&|wI%
zFb%wzE1;As<aPfMBevvaJG!d(zK9_GHF_TMo}*f$_y}#8w%=87mX)~mSIV6H`zJ{j
zAS+YEK*1$L*l?eF?V@jIE-W&99%56jmK>EdrHUO47KiTzKnPHDak?Oln^Gevu1j^3
z>DQrb7t-=uRJ*L4`m`gv#M%%A?rRC`1o!uDTW=-t32p(kPtK;h3%N~P_`-qFiCy4m
zWwLErp$zFnSb1cWV3)~YRF5AG7R}C|NVBa`@X-Ur9N*kTsTDt|OkGU!ytf<Lxxl$l
z3#Pqd7U`KFBI^KR5J5$J<aGWT^61h73n@PaC11d4KiUvF^7yCUwe~d`^60z&kO-an
z#Iuy*I&H7Ke(dIJOf;E@(qA@yTODgiFr@mbVNU+$B{9)k`z*s$WJzE@MWsRN6NTOK
z$1a=mgKG~?2!S~gVGH>&>zgQ2V7_}Etoj4=51ZWYVKQC7Mh&T%uC`kxvxMDop}2KP
zzwb{kH0Pb->&OYEq^1({)Vde<8{A^r?UT5nfgHn4vP<kA{DmQ3CMR0+#YY#HtYPN<
z0tn1F{gw%2^<gDhj;S>dco{1foW=&kAY1GEYv;fGLLWwzBu|HS;UG?Gq?<#`(DX6{
zIo3icn8s#6)#+eH$HzSUd$KNPv5ZFL_1usu5vC08CfV(1Ut|>re8xjxr<wWp=C~^h
zC<D`DR_J;SDt?mHjb<99<Pjt5@XljLhWHlxd!}N%t))_TViX9>W4VT%vxenw<5<qv
zE9~!|<1&2bggVfUKcFNqNyLwO=jNPXG4i=2RCO1CG^raOPN{jN5wqC2Hnw21F4Pdl
zyhdO}zf~5RfN^?m&p(cS*<kHw*p4lahVM(BtBmJ4P8VBr98Pl3(kOFY^S3u~*`s-Q
zs`)EL@Lg+#Wj=R*36ynyxXz>L734hO9!dbWpAa)>bC1#rF-Mxpa`~k-V#*O-R?=_h
z()<I6rH`Zw%)=U<;j=qF0;(bS*+iSw#*Jq|=}ASI!(`m3u9Kf&2i)?EDXgnef5x(}
zo>Iq|Ktxc~g73cFMPmQ98{=Z=KNyBW&r#Pg8%CiOu{*B9`>(pv%}swuYcrw?%Qxxs
z^o`($Y=QDuZ%0&a;%{MF^+JJ)&<*EiS?Uo00W5A?Eg!BC(dU=+EMVvt^0yklK_PPP
z124~mUp+&0_eDvjgJ*q;0QZ-_7`k-A%zl4W1y`yw<7oTNKJ&DHV!y)Sm<l7xi3)&M
z05emE*fx+)7G4ynQ%|mPiOA{ynA{fZVvYzi_Y1_~h`mZ-xKVIY?&j$1=hY#mXg#U|
z&~_k)S|kbR1Tv`)%LlGgu78P@vp>n`g;CmB{8zQ$e$$0Ry*Iht7uN`1kM451q|oqL
zo27O})@>_-*jSqKTFQ5r5wNClSDKqY@R$rVvv%%;8$9}(RIH8cm`r_=X8jl^CXK<{
z^BkVsa<ykbQr8pH@ToNE5yG1Tgt$-uSj+vsmH-(6Gz=Dz%8?wY)pKkudU;MeOtrs4
z&2-USiihv;xiReVKdKC=^^|=?Sk49De0KV=B=R@?zIE>v-IRCj*xgBW!cL)|bL}PG
zGC!gs9v>U_Z)v~%jCR<Vzl2jDEwF;o6<pyJ;iq#($H%^z4x|1%XnG;l3t_zj_&4u-
zma4cHkS*kfY*)MgLrijN6?GuzRj0{|YQHL$)+UvzBjd8)+kL`xdKnPI>@^6#5T<L5
zz-dvheS)6WHOiHaY=slilS&D9Z)sF}cAn{ZKE@wj{QeEpDo8{Jv`Em=E$<e-h6_b@
z9@L+lzdF^iWl@lDc}|+M0zNCi*jtPtDB5>K$FCwT=g$k~0o%F~k^0~@-cS;@GD~JN
z(xBzWuktLeXwVwG<p%8pcT&Kg{FulWH=lJ6^DkxSt-b3^>h>Mp*Id{sVUd&H*R=}S
zU{+mEIKvNga3o(j@aq9P4;mkGSKLo0f|58wXj=u>Ot0b@n;g*Yml~r$`+69O-Agcg
z7Ml2+Zy*xe_VLV9DC*d#(dCpFd~4(HsvyPQ+;X{P)@BpA%6gcfCyx1s6@*ogQL_jq
z(_*#oE_g93(bb6L=sH}u=7YzWaUkVb?)Gnu@q?&K`3;Wu%96~5JKd4?TK-a!AL6@?
z(7dAoabGg423he|18*a6(|wOYWC^dNA-KaZ7`VAgCxGG{-2Uf0gDHWdeW)dq^u|x4
z1y!o%hTI_>L!<ef@%gY_m)<7Y5qfmc+3XG6S|rO?m1)F+J>e#a100mLlT#@9m9{WC
zs3`e$3F~q^T$c!Q4S0-+YrYa65t@nC2P`}$5ep{dQdmt053&I1b4HS~e>q+$+|aXP
zX!W3(f_x|tYo`LXu%FqQov`%~K*UKjB|IX2(;~{SUSMesfz`GBs4fB0oz7V?e1U$0
zI(`IPNi_*A+r(F>I>k|knT**iF-LN7H98mv_`I@bL?R{d^?@(gx)Sn6IlsI<caG4*
zg|(v*gWO1*jtdB+vN48$n;mGtp77^6h;ujmJ-iQx-It;i+vq~NV46IIj?+}dwddt(
z?rG6wwvqLCuomPjtD~BY`IJm+qd0=iI&?KA*O1I!Z?`9dEGe<ApUgY>d)p;n(EqMS
z3*kH78&Q>AkCv0ZIY6;cNNn>1P8v_-jzu}~;-bfR*c-@dsug}JcbTK{SlC0oLQumy
zYQ0Ts1(tNn9~J*vYoEYKhe4j^?R5pzWZduXnP_2uHPS#;PI$4Cu65Zubd;W;^PZdd
zql5h=3kOdc++;20^Yw*0hftFdgTj?1k&E-N3_7*RX}m18f~vV~u^`q22}hR%_A?ng
zG=GW2pbHR>rbetMR*3x-e6<>IpgDZdX~iUympkfrj3#s*a4&6I&K5~4Z9OH%F5qqb
zQ~i`8Ejq>ICXH^~IBa>BMdir@?2gR&ZlWo>YLF*P)Pe~`DfL6+v92V@`uO?X7mHR!
zCH(b5f>Jr|Sx+NSv{qQu$&@vs9>Cz_Iiuz5Mgb0uRHAvVL=E8CK73DT`*wnDh-;IZ
zE0AE(1kI!L9TJ}>3R|GFs*rk+aZG=MmT)k0xXt;(d5g{?J8`u@-;*}DoAU<O5^Q(8
zJ5ZA4O6uFDRixLk2ueimvcS1iV8f%$aH@q|MQ?2;o0A(XWbIYQL%}#{#me-AqAD?$
zap1bBN`X-Y2YKkf(wmC5fxEM%Uo3h5$kB(@$4`V8WBpK$(PAN(v*k2KE!FVeJMms{
zo7jY}7Mq%M>*#NukqaYjEPCsSM%HEHU?6A@_uI`PAu%@U>}M22szw+DL=H<R^}-pk
zcsA(oi>)f}#tZ_Gf1<|o4?hz%^CRAMzALXI8GHz}c-j!t^?kj>$ljT;H)g50L_@=*
zew?#uTV#wcY1TTzx2MSbOfcoaH-NBs_XiEVGj9>x+L7jxKgaR;|4n<8kg_RqA%uXS
zTnzK|70U>LXy(RLm{C3VYq8kFZc*b)fs4bbRpgX6g)X(Po4Cwu2(0#5`_2c@`<$%$
zXGB{Ca+6PTL>a4~L?U{fy}|F9AThMHAUq?$JB7m%F<rANgj1Fs_AP0!z*RTb{BP6j
zhXPo@V6A<rM#!#YrFTEQO;qEwmI*jQUcS7ryZED!s)ZP$*gCs0N^P?hZ~`Z>ZVsJd
zKNJWAK*TY99W6X~3k`=pDo_w|xM#zci#o|xHqS3a_@zYIrIK1k|DKJTdovP-+1cq>
z8IFovShtP0Mx)>H{*4tn5}*bTIu~f%hxk&|hsBl2c@ON2k8(^c25@5rBR~$z{NIOM
z40OcYp0eCVue{W9+^HgzeDh~chlnqSRI039Ixbq1UtP(X!)B#L4OikM!amhmqLNLs
zB|qLK4@#~vnmpAiuX$&po$d8?%YT-uN*sr8h3=Eah8q`}wle^YdcrtyLN~ok^|)1T
z)4TIUIuQP1I?X~VC#xdZ+7pcXdE^90vZ&6iMR@Ut#+EA0IR>rf2FLd!it26~xrW!O
ztdiP~kvrWm*~V=B`BAhkS2%`_q^fIB6sPDNbvBI0AjGG+Q59DiNg_Rve;ze(WBKQG
zwtR4`0<Y&(=33{$ck}j3UZPx1_vqBr&|tLGbYqDFOutFy?}Nw>F^f=~r#vTsYpGDM
zP0HMdVa`E)q|zD(G`-`aIN=-nD61g#m?V;1i8vG|@DK(eRy8_>yphG>lzEeE>}vEC
z?5DoocA$4H;)uPs)Eqq3Nh0VY8ga7px@=kW^ug&7ss?q}AM@er9ggjEF}6TVHy&<@
zOe&`zMVI;X)tLIoLtMJH+=37IAT)?(o`UO#Riythg#FjMsP$k(I>hSp&GE+6A)?Sj
zF(YX%)9g`ds#V}lC=#c{Q|=p8r~z2SGz?}}I!{03?T^PBwbO*x=BlDoRBp@}Ti_kS
za2m7pSJuNYjq2aNF>x^331c-sE-@@eT;l)W^=ve@w-w(qs?x)}^Cu4iY2Yqoa_caf
zx~IAT7)*o=bWsTr8WYXKqtsx~mQEqPx#O{GampE!2Da((hjwX|D(9>U;hKyI$Y{t~
zxSaj+n(Eed|L)M){RNPHApYw3;vZeR%Fwoll+SDTZ2HSdQ><Bj`<Gm!?R;O!mIjWY
zBRS26*HG{yu2X=u+o=hlw@YTy=g;)0xkpb*E7idfEHe%-)MH9$v9i;`S`z+?GgZ?|
zJ%I~dshz5R@*w+#KkTntlu@n7PAwv(L*=)bsD6*(H&NvQ!-mE6RHD(V*u&QOD2h;j
zNa(n40A=cuW3AY`H$BW15qHl>_>8?=74IYb87aZtcb74fy(4BohTZP@K{KCqu}|v|
z9MyyKYh1%IZZ!l#@;6VT=9?|}eH+TNg&ccem-~V*+HBgAjaO1cj;w@q=-v!*rsuoZ
z_tyciXO`t3RxarIV9c$EWX+!Hv`&k<`Yugn$$)Cs%%RI4F~!-toynWdc(_JAb-c{v
zSaTqX=B-Z(t$v2UmnI1aPomJl1ZBzb56T=BMm(SwIj1xgdstH+E3Pt-iz%PzS<qa<
z{70sU6<k*upecWqY}CIHaok6UJXo|gU`Y2>K!@s@*O?;*6oo>e4ae<82z}7BYVkXX
zcDJ&kjXSV))c#Y4ewnKv45gn*oAby9Ur?l`$X0{8QThS!rG4*&#gcuWE{5Soj(+18
zd<G^O%HNhWWdz*m3`I6^TH=Y<%R{0~rLQDHI#sG-J6g<mqCxKFK0|N_sV+A94BRsi
zHgO$+@IX*yCG-UODQ3>c#Y9*P^aYCciO;2gJ{rb477EoymMIUZAa|n7p*fs;qg<@0
zMFp<uw!%7)1y58x&m^e#6z#H0+TIdE&PM3i?LrIRg+lxYw}&o9GEp`$#Y^_Lfs4q$
zWByWh#k@v=WDr9(jutA<wWG@T8)e88A(TM$Z8*7-S0L*wp?58c!ht|MN2rzEyW5IE
z<LBAHISSB?C#^-$glbX5ZM~SrjoBq>e-ebAs(1|mPt26>++^U2IT(u>5-D}DJacYg
zNY$O+&3BNJ{1=wLIO}<)A5`x(FNRBU8${kemik~Qad<#h#yreFf3`i7H1ole$bCVF
zm=L2L*%C`nE3nXe(+#V+*YmJml2IICd7_>%KY#~qjDB0HNeV~5^LD2XV@5~gp=`gy
z7F`G!7~Noji%t@(y2Z&<j_|Am725^sSm`-xYO-w~d)`qI_r%S2ly>s0sE#c}GpHVR
z@QjYndkIY!ACAAct2MQ-5GwvAmaFS8i_u3~HxvItFk9jZ(P|V%LW89wt^yu^3j)LO
z;=WP;d;@?4PHvp^%W)gtZx$DLL!$Hsp25I-{!Hv>u1tvFd#)pJI%vf(@=)AYx&}K;
zyv7DHA2(FyWTVZ)ReLv711HO*tvAw0E)^Z)%+NblPslZ26^5H$$x*yWxecj&r=0+K
zA%^@lW|3W)x|ch?=asjA)#mMjrGc8~9q|xxP#=R7Ux>uksA%98X5KGj28VsDR|8L1
z>4-AITPsiVLR5867d|$$%{f87TYg6<=!hdV>h~B4#4|rHDf=QHW8UW_GOLks7J_zJ
zc#a7Q7V&@nf?~}Q?Y9!QRd*DjEZ1|nE1%C7h=!DhOIsoTdZ&s46*A;bp6(sIY#5%Q
z@Wl*@17RGL(X08QuuEdp*D2m=fC|tLh)>kjvjv$kcRudCzTqCKrNY$3mXT3$%%|`P
zmYq$@T4|H^!&!qI2#!BIUZA}42N}e0n}&#aMlAi(7LlT@HTSp|zuVX84cuKXLKI-4
zyt+LBp$QABbW1NRD`*jvP(0=Yyl{CoVHLaq+cskjhfp7tWfU8EI@zN=N5I%!&Vr`H
z$kinhfp1D#-A@7M))b$f@7u`^(_m*=ZQD>hipkT#aLSSFF5wVM1mY?eu{%)8^E#r&
zEZCogS3$^|_!QYYw)m!zs8plc9Z`F=;M|K;?zjl&f;&<|^n*x)j1%g1wYF9Qk9DC@
zWg(4Vnu7qnAfl86yXZGU6i|W4+ua+R&{Pmk+NUa)E)?E!g_?C_qvAEhHq>hwDU*^(
zI``?j9#5kDBq5!G<{kMHIou+Z_C5YH-}9m{uYS73Beju%DLQk)fu#c~-PtvR#8zhY
z?8aQY!g)Y{<{8x-e0_FsG6EiS4YU<~<_qc>Bu7^CJ)!TNXFNe4C9s?=G%;4f(Vqj+
z&IYv%3AXnwDq~F2jcoCuL{&vjv=Bdl7GN>aoxrVELTP5SltICSafzl{oknF*#Q`~I
zN*<w>qMZIle&@QJ>bSF;4d#^=l-9kUE>Lr2Mdck8gu(BQ67$pqL1~lK>^swv$DDl+
zYQbtdxz|KoEz+P<0R#|umVaw)-!wdXM441`49~BR+)h)Uv~(1e$DKE$)!_i@b}uGk
zfLNHoRz$JKsil7eePU7AQ<Dn{Y@5gL*#L{(6?GG(n7E&8Cuj0i2XSkPrWnvVo3VP;
zA6<7&m@Z(C@zQkYqrPd601NgrMTn~zh$bhjmq@?qqn*eYV4Rk>T2pzIc9CdN|A$j^
zKRc1+v+&5O&H~a4-=f#lJ8Q%PJH>?|<Yg%P>xWoBwvT;vHiCwrMCV{amkp!U-4JI%
zf+myiTa|wO+mk^lV?EcbS6Z&RT;P{Fk;bFHwNwFtH-@R4Ahv}zm88JLy5DZeO(cR4
z@qew(D~QHdfmVmtEEm*nzF)Ao=}`qc)6OU%a@Z)6p%$6$C~ag91}0@+86%P`o#}qY
zy?;`R-eiUg#1m79@Iy$k*TOpdf_N-?e4?S__2E~gKf99g2+n`DTde->R*FB$?*6$x
z_-=9kM_!kOL!VQFbjFK*)-u~RJ!a2UG)(^O7^TML7VtHKxw|>{Vcng><<ukm5E28*
zGSiwagCheXWX6^3s|4vAQaUwZ|4i5Er(E~Npc^81enGF-Vmnqk42RFTgD;Z@$WeA(
znr!e}fnKZ3y-smlj^}Aya_aQNYVFzkpX4Y0)c6@YcaXITSIAkxTaM+cA3t1ux!02K
z);x!Oh654<&ubLgZM<Uniu(RklwIF-SogXRzFNuiMS^CGYQjnouY(;K%4ALQLI{Ox
z#S(a<Nn9+H6VRswvsGK8!Qpr6>+j_QPx0}?pq1MGq!zoX!Mab?&o)q1y~d+#em;P8
zbk^z@M@${ah)z9gjGhaRQKZXx&TKj~O-Ke}Yk;a;MD-1$-HHH*A*)%@I&4*(NAiw<
z(ZbtYt%UaKxBT{_<&>frTU-P6=Cfepd10<tDnBK5j%~k9RcCMzwB?ty1S8YuD0}V+
z%~~|p9IA({>~mS?6&XTzn!Uzm12qiIjd`+V2gcK8Uln-xf|UFeQi?cM8OenxtjnYN
zCgAbZ^AWV-zrp4}kxrs=6L`i_gCq~xW-v?tpXAnXc1!=^t6rpA<f|LjYq7N8Yd0%@
zI3U#5Gm<rF-Z(utQ8E=Z@Kqst3wc;rfxH^`DWGM2xqL(-1vpZz$eJ2u;+!jRTYB<4
zQEk~{?ns&V?dzP4ZD|dA3oHd}O$)q^05W9MYFX;yLa*@wN~rjM&hi)r{6iMvX@ZPx
zIrBAUMra{hc`TMvA4kmKTVvm_t&a>|zP6UsXInWW#s8700p@BS8+kg5MjD`s6<_`0
zSfyCNjcBswsROIK+@hm2d~NMxlv!H{#cU~K>aF21;bvvXpv&A_&(@(Y<j{!%z*Za_
zz#Q&&7Sy|37Yq+^+zeEiwQ`8g*C?`b%&0Rrd$FlhKfIx}{oFs7tga;d;o}Gdl2oYK
zq>SHRH}Wc-jEjGXYYG1)&7H0b?PUj-eEHMb<Gsx{6sBtYO|;LBYngLI03y&HyW$Wl
zn(`SPf%OVZh~UPH&Xe2L>Ql-E(3}mE95aqYZMf86FgG2Tx`3r4BG8%xsGg*yctzSK
zG5WpxaSuH~u#p?5Wu^+m326@N%m$)Wrd#(sZ@7em`K-|p1$f$R`^9#{BM{!AxF5BJ
zT*6R?4%@O{Q-+J0kB^aW=6UUUF#9n*-&8I?)OD1>^(B^UHqM-!UZk?Xgl3obv)PFG
zO^5Fw(@Hp2yoM3`*0NC!!8__ttvp+zCbE_Sx)~Vs(_F)9gy$v(iIPrr>U7wjF({Sh
zu&lrN`!pw~y2-}wi^sxYZd0mvg#S*e`d7pYc^2Gn>|4RJV9S}WPn!?(b-vu~1+a?M
zouwTX5!(4hxI~)0CJ?#;G{{3Xa@84nG8&-?*$D7TvywmcUegdKK2&n6CS;#$MaY(J
zyX%UqcSW9=vLCYoIIWbbb+F!EL6@9t@afi&ReOG3o6=Od%@+EPSKX0<lq76-IcoOG
zKb%ZezRO7Q6myPjhmkBTAE}!mWtRAz6fe06RSn6Co0S(|u^O8KNC)Ycd5nDEy%QM6
z`By8qC>O%s{uq9JyM!3Gl=wZC&;FxJJ{+G^@X1~I4z6@~x-Wk`k~=mq%wX??p7vlE
z6k*CCUIRw@+qTduC3LtpX>4jszJvzIBzRaxheP41s%vjg?YM628Uh|*^V5sHLAh~6
z?5%AxdPHeEkTeM(nM1slW=EbiV$^T_V)8uJcc&o$%wuKCKS}ySkwNL}<6F*JdOz(p
z64v5N3h0{L6^i>F@@c3Ohf-Hb<>=q$DBr;KW=+B_66%x%ISR0YwF0Usa>Mtd?thdC
zb*}P|)^d*PYt{A^m59vl!+=SUKjUM9Nhxm_MDnG&fB6EL^#}*_Z_|UU_)E1`!~}m6
zP@d6@IAY<W^^5(5Vf|hFYCH2iag#K$vqrKKFPri^k`N|JH=t${qCu*oN=|L*_Y9=I
zS+*}ohJGjeAd(Kr(a`b&Gt+x_3aV&C_tbWw9f{iZ-lRumgf3VAN3TJy+*E%Bibgj%
z<WK2DMan?aT_C<Bq(52cQvFU*n|<ag{rP3rO8WW8BjgtvA&7}JuSBO`rnrz?isD5%
zC3BX>o{?~5^EHS8yLpk2Trc{x23w_kd-UCO;Nj=Ic3w$A@VkCfC?!s;Qcd*xM!Ikh
z*T$j^EYlnV=;wHM7n`~8q!Unkt+zRI=QW3dO9xzpnwhbaXDTXNntG0AVLB5A!gMC#
zLQPJ56%L10O~cm<)U71qqQXyp6B<i$nU*(rG@7y6ADVMAZ2h*2mU8O4=2RO*0uP}j
zypoUCjb<o00?w&u_L+6w>zG^ll=B%BX60y{iJ4E;mS8#X%G#AbTxCl^bE@u;{$U$z
zZ3VDzs_(#!sp$|-WDl59Kwn|06dA2iLZxC!)hF|!Dy3O7U}KW*pr`0>7WA{pY_B`V
zp>!^pH!m9o0|-|-k%%sW&;;-?!YbsUeK8HA8YO2dk5c@D-J4{r8VIdBiQ#ap_nR^L
z<vO0yrQslF7rq+z=%)N|xDCt*Ltk$^J3uGwVfS05lR#w2l1PemcPrN)W@P(;iKe?)
z9Q7K6aYMKY4L>_sDz?xQo!y_i!*gvObexBxIa572>(HQ!;(<$0Uoye`ybtQ?+hI?O
z&p4d_@qs`k-Is?6c7|kj#D}<>do5*mo*8Mtp(qfFH8p9AGM9tK4#!<#JGvguR=LXJ
zP}AA$yB7anlq`H>7Gb&gHW^*T;|LK=A<~k#%;nl4ixxF4bkI^6O>!xRjUA`f<v}8=
zSyYMEmfMd%VIJ!L|FpN9awSd(FzI<3n#Soo3E-E>_7}O)5`l#z*yR8GDd#6MuV5Ch
z_)@ERuHnf&+wY&9JQ6*6H01cj7*2P1#->}$CDh4QKHvzHZw1ped3tc;U8Wx)bz~q!
z;`PI<>NtYfb(Q=GYVEgwbxN{jtINQ-)rXwfen=LF+@};h=Kfr6&U#@1;2`Wi|G2Z&
zCKKg%lV;eESs_Mnr#`Wf=nTi0z$_-VjESD5;ehj=xPA^x$DEZKp_2MH&hLZnS4=!1
zAu)9s*CI6`gctQA(<}x*jkEED=0A9tJq&3PiQ1?TBmzHjA0A6&zPTtYQTR4u{4$@3
zU-3P7#A}u3EfkqN5p%(z{&djniw6S<EMxpbd;iehKeYD`?fpZ0|Ipq)wD%9~{X={I
q(B40^_Ydv;Lwo<w-aoYW5AFR!d;ieh{~Fp8{~x2hW_O2ioc{w|<?xIE

delta 30633
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
Ns3%GXH~h3QrR9pM@RR@m

diff --git a/amd-ucode/microcode_amd_fam19h.bin.asc b/amd-ucode/microcode_amd_fam19h.bin.asc
index 9793fb43..dcd5a235 100644
--- a/amd-ucode/microcode_amd_fam19h.bin.asc
+++ b/amd-ucode/microcode_amd_fam19h.bin.asc
@@ -1,11 +1,11 @@
 -----BEGIN PGP SIGNATURE-----
 
-iQEzBAABCgAdFiEE/HxsUF2vzBRxg1fK5L5TOfMornMFAmWm4Z0ACgkQ5L5TOfMo
-rnOnPAgAl9jY26pXhFO3qVTFhjdZMVU7YxmzX9RQqJz3pNHWo4hIRj6m2i2pY3lr
-zJYNO9jeQj/XeKdq5VikAwmZxverrHAlQQiFg0XLd+BEt4yeuq0QvcQAToCCd3mO
-OvgkfT87ePU2SOZ7/HT+Blz25qEyR4WnJgUonTsJeVPyfWbcOjXynqnDjhMRlp/r
-Fc06bGrnu5dXT0Bom8zJ3WPLTfxwDyf5AW4CxH5dDspfd7skCYM0vXHxtL0Rb0l7
-ycQ8XruNYMXz2zy9lR2COu3+yx/oEB+Skr6Bhsr2zBX7niqb6Zt7Yt1S21+W5Wge
-Vv5LBIfslMGAM3ZphlwuSepDwGvCUA==
-=5Znh
+iQEzBAABCgAdFiEE/HxsUF2vzBRxg1fK5L5TOfMornMFAmX9xsgACgkQ5L5TOfMo
+rnP2aQf/QBOiKUZsrVIbnn0+Ls84yDYovoesYriy1rbK+K5CVRb/0iqoFn5xKIu6
+bvyHN0fnj7Ko+oedNvcRCmlu+jiw08s3WArQb6r3fK4QT/2Wj2f+qX14uoFuCGUd
+QgZTc4hZxNxSZBbQuKVbtDmT0iFtV0jKBp/ajdYD9++rA+VcIemKtwX/sxEZnUFi
+fXg016uAs/Q9LQ5KWvz3VhFz2G77BEXjDIJNAHSVCxmWCvsd05kf1SbXUswlj/T8
+JtuH840zfZicZEk8e3grO4fSywLyrZCjqATSXa+XY63thCIglM9c6V+EBL3jGXxh
+Cs2tZH8/ge+tL/UBBJ8FdOZcVSpkeQ==
+=HHoV
 -----END PGP SIGNATURE-----
-- 
2.34.1

.

From: Jocelyn Falempe <jfalempe@redhat.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Miguel Ojeda <ojeda@kernel.org>,
	Alex Gaynor <alex.gaynor@gmail.com>,
	Wedson Almeida Filho <wedsonaf@gmail.com>,
	Boqun Feng <boqun.feng@gmail.com>,
	Gary Guo <gary@garyguo.net>,
	"Bjorn Roy Baron" <bjorn3_gh@protonmail.com>,
	Benno Lossin <benno.lossin@proton.me>,
	Andreas Hindborg <a.hindborg@samsung.com>,
	Alice Ryhl <aliceryhl@google.com>,
	linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	rust-for-linux@vger.kernel.org,
	Danilo Krummrich <dakr@redhat.com>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Subject: [PATCH v3 0/4] drm/panic: Add a QR code panic screen
Date: Wed, 10 Jul 2024 15:59:26 +0200
Message-ID: <20240710140057.347384-1-jfalempe@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273727
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.rust-for-linux
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series adds a new panic screen, with the kmsg data embedded in a QR code.

The main advantage of QR code, is that you can copy/paste the debug data to a bug report.

The QR code encoder is written in rust, and is very specific to drm panic.
The reason is that it is called in a panic handler, and thus can't allocate memory, or use locking.
The rust code uses a few rust core API, and provides only two C entry points.
There is no particular reason to do it in rust, I just wanted to learn rust, and see if it can work in the kernel.

If you want to see what it looks like, I've put a few screenshots here:
https://github.com/kdj0c/panic_report/issues/1

v2:
 * Rewrite the rust comments with Markdown (Alice Ryhl)
 * Mark drm_panic_qr_generate() as unsafe (Alice Ryhl)
 * Use CStr directly, and remove the call to as_str_unchecked()
   (Alice Ryhl)
 * Add a check for data_len <= data_size (Greg KH)

v3:
 * Fix all rust comments (typo, punctuation) (Miguel Ojeda)
 * Change the wording of safety comments (Alice Ryhl)
 * Add a link to the javascript decoder in the Kconfig (Greg KH)
 * Fix data_size and tmp_size check in drm_panic_qr_generate()

Jocelyn Falempe (4):
  drm/panic: Add integer scaling to blit()
  drm/rect: Add drm_rect_overlap()
  drm/panic: Simplify logo handling
  drm/panic: Add a QR code panic screen

 drivers/gpu/drm/Kconfig         |   31 +
 drivers/gpu/drm/Makefile        |    1 +
 drivers/gpu/drm/drm_drv.c       |    3 +
 drivers/gpu/drm/drm_panic.c     |  338 +++++++++--
 drivers/gpu/drm/drm_panic_qr.rs | 1005 +++++++++++++++++++++++++++++++
 include/drm/drm_panic.h         |    4 +
 include/drm/drm_rect.h          |   15 +
 7 files changed, 1358 insertions(+), 39 deletions(-)
 create mode 100644 drivers/gpu/drm/drm_panic_qr.rs


base-commit: 5a716b06b329bd2108c95a4f04c71bbe491729f2
-- 
2.45.2

.

From: =?UTF-8?q?=E6=9D=8E=E5=93=B2?= <sensor1010@163.com>
To: gregkh@linuxfoundation.org,
	rafael@kernel.org
Cc: linux-kernel@vger.kernel.org,
	=?UTF-8?q?=E6=9D=8E=E5=93=B2?= <sensor1010@163.com>
Subject: [PATCH v4] driver:core: no need to invert the return value of the call_driver_probe()
Date: Wed, 10 Jul 2024 07:00:41 -0700
Message-Id: <20240710140041.4066-1-sensor1010@163.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273732
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In the probe function (either drv->bus->probe() or drv->probe()),
there is no return value of EPROBE_DEFER. the error return from probe
should be -EPROBE_DEFER, hence no negation of call_driver_probe()'s
return is needed, nor should there be an EPROBE_DEFER check in
driver_probe_device()

Signed-off-by: æ�Žå“² <sensor1010@163.com>

---
v4:
	Change the pinyin "Lizhe" to the Chinese name æ�Žå“²
v3:
	Modify commit message and versions go below the ---
v2:
	Delete the judgment with the return value of EPROBEDEFER
	from the _driver_probe.device()
v1:
	Add the judgment with the return value of EPROBEDEFER
	from the _driver_probe.device()
---
 drivers/base/dd.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 83d352394fdf..d047919d1f5e 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -664,11 +664,6 @@ static int really_probe(struct device *dev, struct device_driver *drv)
 		if (link_ret == -EAGAIN)
 			ret = -EPROBE_DEFER;
 
-		/*
-		 * Return probe errors as positive values so that the callers
-		 * can distinguish them from other errors.
-		 */
-		ret = -ret;
 		goto probe_failed;
 	}
 
@@ -826,7 +821,7 @@ static int driver_probe_device(struct device_driver *drv, struct device *dev)
 
 	atomic_inc(&probe_count);
 	ret = __driver_probe_device(drv, dev);
-	if (ret == -EPROBE_DEFER || ret == EPROBE_DEFER) {
+	if (ret == -EPROBE_DEFER) {
 		driver_deferred_probe_add(dev);
 
 		/*
-- 
2.17.1

.

Date: Wed, 10 Jul 2024 16:00:17 +0200
From: Oleg Nesterov <oleg@redhat.com>
To: andrii@kernel.org, mhiramat@kernel.org, peterz@infradead.org
Cc: clm@meta.com, jolsa@kernel.org, mingo@kernel.org, paulmck@kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH 0/2] uprobes: document mmap_lock, don't abuse
 get_user_pages_remote()
Message-ID: <20240710140017.GA1074@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273734
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Peter, these simple cleanups should not conflict with your changes,
but I can resend them later if it causes any inconvenience.

Oleg.

.

From: Konrad Dybcio <konrad.dybcio@linaro.org>
Date: Wed, 10 Jul 2024 16:07:23 +0200
Subject: [PATCH] arm64: dts: qcom: x1e80100: Fix up BAR spaces
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20240710-topic-barman-v1-1-5f63fca8d0fc@linaro.org>
To: Bjorn Andersson <andersson@kernel.org>, Rob Herring <robh@kernel.org>, 
 Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, Sibi Sankar <quic_sibis@quicinc.com>, 
 Abel Vesa <abel.vesa@linaro.org>, Rajendra Nayak <quic_rjendra@quicinc.com>
Cc: Marijn Suijten <marijn.suijten@somainline.org>, 
 linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, 
 linux-kernel@vger.kernel.org, Konrad Dybcio <konrad.dybcio@linaro.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273741
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The 32-bit BAR spaces are reaching outside their assigned register
regions. Shrink them to match their actual sizes.
While at it, unify the style.

Fixes: 5eb83fc10289 ("arm64: dts: qcom: x1e80100: Add PCIe nodes")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 arch/arm64/boot/dts/qcom/x1e80100.dtsi | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
index 7bca5fcd7d52..bc5b4f5ea127 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
@@ -2895,9 +2895,9 @@ pcie6a: pci@1bf8000 {
 				    "mhi";
 			#address-cells = <3>;
 			#size-cells = <2>;
-			ranges = <0x01000000 0 0x00000000 0 0x70200000 0 0x100000>,
-				 <0x02000000 0 0x70300000 0 0x70300000 0 0x3d00000>;
-			bus-range = <0 0xff>;
+			ranges = <0x01000000 0x0 0x00000000 0x0 0x70200000 0x0 0x100000>,
+				 <0x02000000 0x0 0x70300000 0x0 0x70300000 0x0 0x1d00000>;
+			bus-range = <0x00 0xff>;
 
 			dma-coherent;
 
@@ -3016,8 +3016,8 @@ pcie4: pci@1c08000 {
 				    "mhi";
 			#address-cells = <3>;
 			#size-cells = <2>;
-			ranges = <0x01000000 0 0x00000000 0 0x7c200000 0 0x100000>,
-				 <0x02000000 0 0x7c300000 0 0x7c300000 0 0x3d00000>;
+			ranges = <0x01000000 0x0 0x00000000 0x0 0x7c200000 0x0 0x100000>,
+				 <0x02000000 0x0 0x7c300000 0x0 0x7c300000 0x0 0x1d00000>;
 			bus-range = <0x00 0xff>;
 
 			dma-coherent;

---
base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233
change-id: 20240710-topic-barman-57a52f7de103

Best regards,
-- 
Konrad Dybcio <konrad.dybcio@linaro.org>

.

From: Lei Liu <liulei.rjpt@vivo.com>
To: Sumit Semwal <sumit.semwal@linaro.org>,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Brian Starkey <Brian.Starkey@arm.com>,
	John Stultz <jstultz@google.com>,
	"T.J. Mercier" <tjmercier@google.com>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>,
	Muhammad Usama Anjum <usama.anjum@collabora.com>,
	Andrei Vagin <avagin@google.com>,
	Ryan Roberts <ryan.roberts@arm.com>,
	Peter Xu <peterx@redhat.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	linux-media@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linaro-mm-sig@lists.linaro.org,
	linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org
Cc: opensource.kernel@vivo.com,
	Lei Liu <liulei.rjpt@vivo.com>
Subject: [PATCH 0/2] Support direct I/O read and write for memory allocated by dmabuf
Date: Wed, 10 Jul 2024 22:09:42 +0800
Message-Id: <20240710140948.25870-1-liulei.rjpt@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273744 org.kvack.linux-mm:203277
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-media,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use vm_insert_page to establish a mapping for the memory allocated
by dmabuf, thus supporting direct I/O read and write; and fix the
issue of incorrect memory statistics after mapping dmabuf memory.

Lei Liu (2):
  mm: dmabuf_direct_io: Support direct_io for memory allocated by dmabuf
  mm: dmabuf_direct_io: Fix memory statistics error for dmabuf allocated
    memory with direct_io support

 drivers/dma-buf/heaps/system_heap.c |  5 +++--
 fs/proc/task_mmu.c                  |  8 +++++++-
 include/linux/mm.h                  |  1 +
 mm/memory.c                         | 15 ++++++++++-----
 mm/rmap.c                           |  9 +++++----
 5 files changed, 26 insertions(+), 12 deletions(-)

-- 
2.34.1

.

From: Anand Moon <linux.amoon@gmail.com>
To: Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Heiko Stuebner <heiko@sntech.de>
Cc: Anand Moon <linux.amoon@gmail.com>,
	devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v1] arm64: dts: rockchip: Add missing pinctrl for PCIe30x4 node
Date: Wed, 10 Jul 2024 19:49:56 +0530
Message-ID: <20240710142001.7234-1-linux.amoon@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273755
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add missing pinctrl settings for PCIe 3.0 x4 clock request and wake
signals. Rename node from 'pcie3' to 'pcie30x4' to align with schematic
nomenclature.

Signed-off-by: Anand Moon <linux.amoon@gmail.com>
---
 .../boot/dts/rockchip/rk3588-rock-5b.dts      | 20 +++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
index 2e7512676b7e..a9b55b7996cf 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
@@ -301,7 +301,7 @@ &pcie30phy {
 
 &pcie3x4 {
 	pinctrl-names = "default";
-	pinctrl-0 = <&pcie3_rst>;
+	pinctrl-0 = <&pcie30x4_perstn_m1 &pcie30x4_clkreqn_m1 &pcie30x4_waken_m1>;
 	reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
 	vpcie3v3-supply = <&vcc3v3_pcie30>;
 	status = "okay";
@@ -340,14 +340,22 @@ pcie2_2_rst: pcie2-2-rst {
 		};
 	};
 
-	pcie3 {
-		pcie3_rst: pcie3-rst {
-			rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
-		};
-
+	pcie30x4 {
 		pcie3_vcc3v3_en: pcie3-vcc3v3-en {
 			rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
 		};
+
+		pcie30x4_clkreqn_m1: pcie30x4-clkreqn-m1 {
+			rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
+		};
+
+		pcie30x4_waken_m1: pcie30x4-waken-m1 {
+			rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
+		};
+
+		pcie30x4_perstn_m1: pcie30x4-perstn-m1 {
+			rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
+		};
 	};
 
 	usb {

base-commit: 34afb82a3c67f869267a26f593b6f8fc6bf35905
-- 
2.44.0

.

Message-ID: <4f4c8c2a-c7ae-46bc-babb-7c6df4501df5@redhat.com>
Date: Wed, 10 Jul 2024 16:22:55 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: Hans de Goede <hdegoede@redhat.com>
Subject: [GIT PULL] platform-drivers-x86 for 6.10-6
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
 platform-driver-x86@vger.kernel.org,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Armin Wolf <W_Armin@gmx.de>
Content-Language: en-US, nl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273759
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.platform-driver-x86
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Linus,

Obviously I should not have jinxed things by saying that my previous pull-
request would be the last one for 6.10.

So here is one more 6.10 fixes pull-request with a 1 liner fix for
a dmi_system_id array in the toshiba_acpi driver not being terminated
properly. Something which somehow has escaped detection since being
introduced in 2022 until now.

Regards,

Hans


The following changes since commit e527a6127223b644e0a27b44f4b16e16eb6c7f0a:

  platform/x86: toshiba_acpi: Fix quickstart quirk handling (2024-07-02 16:01:45 +0200)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git tags/platform-drivers-x86-v6.10-6

for you to fetch changes up to b6e02c6b0377d4339986e07aeb696c632cd392aa:

  platform/x86: toshiba_acpi: Fix array out-of-bounds access (2024-07-10 16:12:12 +0200)

----------------------------------------------------------------
platform-drivers-x86 for v6.10-6

Highlights:
 -  Fix missing dmi_system_id array termination in toshiba_acpi introduced in 2022

The following is an automated git shortlog grouped by driver:

toshiba_acpi:
 -  Fix array out-of-bounds access

----------------------------------------------------------------
Armin Wolf (1):
      platform/x86: toshiba_acpi: Fix array out-of-bounds access

 drivers/platform/x86/toshiba_acpi.c | 1 +
 1 file changed, 1 insertion(+)

.

From: Chukun Pan <amadeus@jmu.edu.cn>
To: Heiko Stuebner <heiko@sntech.de>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Rob Herring <robh@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org,
	Chukun Pan <amadeus@jmu.edu.cn>
Subject: [PATCH v3 0/3] arm64: dts: rockchip: fixes support for Lunzn Fastrhino R6xS
Date: Wed, 10 Jul 2024 22:30:14 +0800
Message-Id: <20240710143017.685905-1-amadeus@jmu.edu.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273763
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Changes in v3:
  Remove merged patches
  Further explanation of the PHY reset time changes

Changes in v2:
  Separate commits for regulator and supply changes
  Separate commits for R68S Ethernet PHY changes

Chukun Pan (3):
  arm64: dts: rockchip: use generic Ethernet PHY reset bindings for
    Lunzn Fastrhino R68S
  arm64: dts: rockchip: remove useless tx/rx_delay for Lunzn Fastrhino
    R68S
  arm64: dts: rockchip: Enable UHS-I SDR-50 for Lunzn FastRhino R66S

-- 
2.25.1

.

From: Pieterjan Camerlynck via B4 Relay <devnull+pieterjanca.gmail.com@kernel.org>
Subject: [PATCH v2 0/2] leds: leds-pca995x: Add support for NXP PCA9956B
Date: Wed, 10 Jul 2024 16:32:40 +0200
Message-Id: <20240710-pca995x-v2-0-8fafb6e4b7d5@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Pavel Machek <pavel@ucw.cz>, Lee Jones <lee@kernel.org>, 
 Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, 
 Isai Gaspar <isaiezequiel.gaspar@nxp.com>, Marek Vasut <marex@denx.de>
Cc: linux-leds@vger.kernel.org, devicetree@vger.kernel.org, 
 linux-kernel@vger.kernel.org, Pieterjan Camerlynck <pieterjanca@gmail.com>, 
 Conor Dooley <conor.dooley@microchip.com>
X-Original-From: Pieterjan Camerlynck <pieterjanca@gmail.com>
Reply-To: pieterjanca@gmail.com
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273768
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.feeds.b4-sent,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-leds
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series adds support for NXP PCA9956B to the pca995x driver. This
chip is similar to the others but has 24 instead of 16 outputs and a
slightly different register layout. Datasheet available at [1].

[1]: https://www.nxp.com/docs/en/data-sheet/PCA9956B.pdf

Signed-off-by: Pieterjan Camerlynck <pieterjanca@gmail.com>
---
Changes in v2:
- define seperate const struct pca995x_chipdef for each chip
- remove chip enum
- Link to v1: https://lore.kernel.org/r/20240710-pca995x-v1-0-545015603000@gmail.com

---
Pieterjan Camerlynck (2):
      dt-bindings: leds: pca995x: Add new nxp,pca9956b compatible
      leds: leds-pca995x: Add support for NXP PCA9956B

 .../devicetree/bindings/leds/nxp,pca995x.yaml      |  6 +-
 drivers/leds/leds-pca995x.c                        | 82 ++++++++++++----------
 2 files changed, 50 insertions(+), 38 deletions(-)
---
base-commit: 82d01fe6ee52086035b201cfa1410a3b04384257
change-id: 20240709-pca995x-d7c5f97f6ebc

Best regards,
-- 
Pieterjan Camerlynck <pieterjanca@gmail.com>


.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: mturquette@baylibre.com,
	sboyd@kernel.org,
	shawnguo@kernel.org,
	s.hauer@pengutronix.de,
	kernel@pengutronix.de,
	festevam@gmail.com
Cc: linux-clk@vger.kernel.org,
	imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] clk: mxs: Use clamp() in clk_ref_round_rate() and clk_ref_set_rate()
Date: Wed, 10 Jul 2024 16:33:10 +0200
Message-ID: <20240710143309.706135-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273771
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use clamp() instead of duplicating its implementation.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/clk/mxs/clk-ref.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/drivers/clk/mxs/clk-ref.c b/drivers/clk/mxs/clk-ref.c
index 3161a0b021ee..2297259da89a 100644
--- a/drivers/clk/mxs/clk-ref.c
+++ b/drivers/clk/mxs/clk-ref.c
@@ -66,12 +66,7 @@ static long clk_ref_round_rate(struct clk_hw *hw, unsigned long rate,
 
 	tmp = tmp * 18 + rate / 2;
 	do_div(tmp, rate);
-	frac = tmp;
-
-	if (frac < 18)
-		frac = 18;
-	else if (frac > 35)
-		frac = 35;
+	frac = clamp(tmp, 18, 35);
 
 	tmp = parent_rate;
 	tmp *= 18;
@@ -91,12 +86,7 @@ static int clk_ref_set_rate(struct clk_hw *hw, unsigned long rate,
 
 	tmp = tmp * 18 + rate / 2;
 	do_div(tmp, rate);
-	frac = tmp;
-
-	if (frac < 18)
-		frac = 18;
-	else if (frac > 35)
-		frac = 35;
+	frac = clamp(tmp, 18, 35);
 
 	spin_lock_irqsave(&mxs_lock, flags);
 
-- 
2.45.2

.

From: Frank Li <Frank.Li@nxp.com>
To: vkoul@kernel.org
Cc: Frank.Li@nxp.com,
	conor+dt@kernel.org,
	devicetree@vger.kernel.org,
	dmaengine@vger.kernel.org,
	imx@lists.linux.dev,
	krzk+dt@kernel.org,
	linux-kernel@vger.kernel.org,
	robh@kernel.org
Subject: [PATCH v4 1/1] dt-bindings: fsl-qdma: allow compatible string fallback to fsl,ls1021a-qdma
Date: Wed, 10 Jul 2024 10:54:00 -0400
Message-Id: <20240710145400.2257718-1-Frank.Li@nxp.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273788
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.imx,org.kernel.vger.dmaengine,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The IP of QDMA ls1028/ls1043/ls1046/ is same as ls1021. So allow compatible
string fallback to fsl,ls1021a-qdma.

The difference is that ls1021a-qdma have 3 irqs, and other have 5 irqs.

Fix below CHECK_DTB warning.
arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dtb: dma-controller@8380000: compatible: ['fsl,ls1046a-qdma', 'fsl,ls1021a-qdma'] is too long

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Change from v3 to v4
- rebase to dmaengine/next
- Add Kryzy's review tag
Change from v2 to v3
- previous patch missed a dependent change.
 https://lore.kernel.org/imx/20240701195717.1843041-1-Frank.Li@nxp.com/T/#u
- Combine depedent change to one patch.

Change from v1 to v2
- Change  maxItems: 5 to minItems: 5. because maxItems: 5 already restrict
at top

interrupts:
    minItems: 2
    maxItems: 5
---
---
 Documentation/devicetree/bindings/dma/fsl-qdma.yaml | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/dma/fsl-qdma.yaml b/Documentation/devicetree/bindings/dma/fsl-qdma.yaml
index 1b9ebdbe528a1..9401b1f6300d4 100644
--- a/Documentation/devicetree/bindings/dma/fsl-qdma.yaml
+++ b/Documentation/devicetree/bindings/dma/fsl-qdma.yaml
@@ -11,11 +11,14 @@ maintainers:
 
 properties:
   compatible:
-    enum:
-      - fsl,ls1021a-qdma
-      - fsl,ls1028a-qdma
-      - fsl,ls1043a-qdma
-      - fsl,ls1046a-qdma
+    oneOf:
+      - const: fsl,ls1021a-qdma
+      - items:
+          - enum:
+              - fsl,ls1028a-qdma
+              - fsl,ls1043a-qdma
+              - fsl,ls1046a-qdma
+          - const: fsl,ls1021a-qdma
 
   reg:
     items:
-- 
2.34.1

.

Message-ID: <64d01ac5-9a84-44db-be72-ef22e6e5fc07@leemhuis.info>
Date: Wed, 10 Jul 2024 17:15:44 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: Thorsten Leemhuis <regressions@leemhuis.info>
Content-Language: en-US, de-DE
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux kernel regressions list <regressions@lists.linux.dev>,
 LKML <linux-kernel@vger.kernel.org>
Subject: Quick extra regression report listing regression which available
 fixes
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273802
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.regressions
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Linus, as you might release the final on Sunday, here is a quick
"extra" report in case you want to know about a few unfixed regressions
introduced during the 6.10 cycle. By chance this list only contains
issues for which a fix is already available; I track a few more
regression, but they are IMHO not worth mentioning for one reason or
another.

There are two issues that worry me somewhat:

* A btrfs regression that leads to increased execution time of the
kswapd0 process and symptoms as if there is not enough memory; at least
two people are affected by this -- but there are indicators that this is
only the tip of the iceberg. Luckily Filipe Manana a few days ago
submitted a patch-set to fix this. It might or might not be picked up by
David and sent to you this week:
https://lore.kernel.org/lkml/CABXGCsMmmb36ym8hVNGTiU8yfUS_cGvoUmGCcBrGWq9OxTrs%2BA@mail.gmail.com/
https://lore.kernel.org/linux-btrfs/cover.1720448663.git.fdmanana@suse.com/

* bpf: build error with CONFIG_WERROR and CONFIG_BPF. Known for 8 weeks
now since a patch to fix this was posted; my recent prodding was
ignored; luckily two -mm developers yesterday convinced Alexei that it
might be worth fixing for 6.10 with a updated patch from Vlastimil Babka:
https://lore.kernel.org/bpf/20240516072411.42016-1-sheharyaar48@gmail.com/
https://lore.kernel.org/all/20240710100521.15061-2-vbabka@suse.cz/


There are a few regressions with available fixes, which seem to be
unlikely to be submitted for mainline inclusion during this week afaics:

* net: dsa: mt7530-mdio: mt7531 switch on Bananapi-R64 not detected
(known for 8 weeks already):
https://lore.kernel.org/lkml/20240516204847.171029-1-linux@fw-web.de/
https://lore.kernel.org/lkml/f485d1d4f7b34cc2ebf3d60030d1c67b4016af3c.1720107535.git.daniel@makrotopia.org/

* drm/qxl: VM graphics often malfunction after boot and sometimes
shutdowns occur (known for 5 weeks already):
https://lore.kernel.org/regressions/DS7PR12MB57665F9F4BDF0598D7CC53DD94FF2@DS7PR12MB5766.namprd12.prod.outlook.com/
https://lore.kernel.org/dri-devel/20240708142208.194361-1-tzimmermann@suse.de/


There are a few regressions for which fixes are available, but those
might or might not will be submitted for mainline inclusion during this
week:

* ASoC: SOF: Intel: Lenovo Thinkpad X1 Carbon Gen 10 first S2idle fails,
S0ix not even tried to enter from there on:
https://github.com/thesofproject/linux/issues/5072
https://bugzilla.kernel.org/show_bug.cgi?id=218961#c10

* of/irq: identification of ATA drives with P.A. Semi Nemo boards broke:
https://lore.kernel.org/lkml/3ab66fab-c3f2-4bed-a04d-a10c57dcdd9b@xenosoft.de/
https://lore.kernel.org/lkml/c8010a06-9d8d-466a-9a83-ee25950f1885@xenosoft.de/

* e1000e: s2idle and S3 broken. That's the issue I highlighted a few
days ago in a separate mail, but I never got a reply. Anyway, looks like
a patch finally is submitted for inclusion into net (five weeks after
the issue was reported, which is related to another issue that is in 6.9
and 6.6.y kernels):
https://bugzilla.kernel.org/show_bug.cgi?id=218936
https://bugzilla.kernel.org/show_bug.cgi?id=218940
https://lore.kernel.org/all/0b96edcc-6b5f-447f-8023-440427a9fff2@leemhuis.info/
https://lore.kernel.org/all/20240709203123.2103296-1-anthony.l.nguyen@intel.com/

* pinctrl: rockchip: boot broke on RK3328 / Rock64
https://lore.kernel.org/all/705544af-d615-4ff0-a54c-72a69140ce6d@eh5.me/
https://lore.kernel.org/lkml/20240709105428.1176375-1-i@eh5.me/


There furthermore are a few regressions with available fixes in next
through -fixes branches, which thus will likely be submitted for
mainline inclusion during this week:

* drm/bridge: adv7511: Intermittent EDID failures; the fix after six
weeks finally made it to a branch that likely will be submitted for
mainline inclusion later this week.
https://lore.kernel.org/lkml/20240521011614.496421-1-aford173@gmail.com/
https://lore.kernel.org/lkml/20240630221931.1650565-1-aford173@gmail.com/

* spi: omap2-mcpsi: boot hangs with ocelot_mfd driver and spi:
omap2-mcspi: omap2-mcspi broke, Oops after a timeout.
https://lore.kernel.org/lkml/Zl%2FV0dU6SjAMkpLG@colin-ia-desktop/
https://lore.kernel.org/lkml/20240612170030.3qatttsgrwjg2m5s@joaog-nb/
https://lore.kernel.org/lkml/20240704-spi-revert-omap2-multi-v1-1-69357ef13fdc@kernel.org/

Ciao, Thorsten
.

From: Pei Li <peili.dev@gmail.com>
Date: Wed, 10 Jul 2024 08:33:24 -0700
Subject: [PATCH] Fix WARNING: suspicious RCU usage in
 bch2_bucket_ref_update
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20240710-bug10-v1-1-f1f8cf98f7c0@gmail.com>
To: Kent Overstreet <kent.overstreet@linux.dev>, 
 Brian Foster <bfoster@redhat.com>
Cc: linux-bcachefs@vger.kernel.org, linux-kernel@vger.kernel.org, 
 skhan@linuxfoundation.org, syzkaller-bugs@googlegroups.com, 
 linux-kernel-mentees@lists.linuxfoundation.org, 
 syzbot+e74fea078710bbca6f4b@syzkaller.appspotmail.com, 
 Pei Li <peili.dev@gmail.com>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273810
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.linux-kernel-mentees,org.kernel.vger.linux-bcachefs
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

When dereference ca->bucket_gens, we are expecting one of the three
locks to be hold if ca->fs is not NULL.

This patch acquires mark_lock before entering __mark_pointer()

Note: testing is done by a robot and is best-effort only.

To: Kent Overstreet <kent.overstreet@linux.dev>
To: Brian Foster <bfoster@redhat.com>
Cc: linux-bcachefs@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: skhan@linuxfoundation.org
Cc: syzkaller-bugs@googlegroups.com
Cc: linux-kernel-mentees@lists.linuxfoundation.org
Reported-by: syzbot+e74fea078710bbca6f4b@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=e74fea078710bbca6f4b
Tested-by: syzbot+e74fea078710bbca6f4b@syzkaller.appspotmail.com
Signed-off-by: Pei Li <peili.dev@gmail.com>
---
Syzbot reported the following warning:

fs/bcachefs/buckets.h:107 suspicious rcu_dereference_check() usage!

When dereference ca->bucket_gens, we are expecting one of the three
locks to be hold if ca->fs is not NULL.

This patch acquires mark_lock before entering __mark_pointer()

Tested on:

commit:         34afb82a Merge tag '6.10-rc6-smb3-server-fixes' of git..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=1492e87e980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=42a432cfd0e579e0
dashboard link: https://syzkaller.appspot.com/bug?extid=e74fea078710bbca6f4b
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
patch:          https://syzkaller.appspot.com/x/patch.diff?x=15e2e87e980000

Note: testing is done by a robot and is best-effort only.
---
 fs/bcachefs/buckets.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c
index 743d57eba760..03147e46dc47 100644
--- a/fs/bcachefs/buckets.c
+++ b/fs/bcachefs/buckets.c
@@ -1033,8 +1033,14 @@ static int bch2_trigger_pointer(struct btree_trans *trans,
 
 	if (flags & BTREE_TRIGGER_transactional) {
 		struct bkey_i_alloc_v4 *a = bch2_trans_start_alloc_update(trans, bucket);
+
+		percpu_down_read(&c->mark_lock);
+
 		ret = PTR_ERR_OR_ZERO(a) ?:
 			__mark_pointer(trans, ca, k, &p.ptr, *sectors, bp.data_type, &a->v);
+
+		percpu_up_read(&c->mark_lock);
+
 		if (ret)
 			goto err;
 

---
base-commit: 256abd8e550ce977b728be79a74e1729438b4948
change-id: 20240709-bug10-6b354d193f20

Best regards,
-- 
Pei Li <peili.dev@gmail.com>

.

From: Andrew Halaney <ahalaney@redhat.com>
Subject: [PATCH 0/2] arm64: dts: ti: k3-j784s4-evm: SERDES0 lane cleanup
Date: Wed, 10 Jul 2024 10:36:12 -0500
Message-Id: <20240710-k3-j784s4-evm-serdes0-cleanup-v1-0-03850fe33922@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Nishanth Menon <nm@ti.com>, Vignesh Raghavendra <vigneshr@ti.com>, 
 Tero Kristo <kristo@kernel.org>, Rob Herring <robh@kernel.org>, 
 Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, Philipp Zabel <p.zabel@pengutronix.de>, 
 Siddharth Vadapalli <s-vadapalli@ti.com>, mranostay@ti.com
Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, 
 linux-kernel@vger.kernel.org, Andrew Halaney <ahalaney@redhat.com>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273816
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This fixes a splat caused due to overlapping lane usage of SERDES0 by
PCIe1 and USB0. It also cleans up the dts a hair to be more readable.

Link: https://lore.kernel.org/all/yhtb4clns57t7qo5yxil3oofisdlzfubyiwrvjo2ufw2ngv67m@g6p7ktxfgfv3/
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
---
Andrew Halaney (2):
      arm64: dts: ti: k3-j784s4-evm: Assign only lanes 0 and 1 to PCIe1
      arm64: dts: ti: k3-j784s4-evm: Consolidate serdes0 references

 arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 25 ++++++++-----------------
 1 file changed, 8 insertions(+), 17 deletions(-)
---
base-commit: 523b23f0bee3014a7a752c9bb9f5c54f0eddae88
change-id: 20240710-k3-j784s4-evm-serdes0-cleanup-871401b860b8

Best regards,
-- 
Andrew Halaney <ahalaney@redhat.com>

.

From: Rayyan Ansari <rayyan.ansari@linaro.org>
To: devicetree@vger.kernel.org
Cc: Rayyan Ansari <rayyan.ansari@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Christian Marangi <ansuelsmth@gmail.com>,
	linux-arm-msm@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] dt-bindings: power: qcom,kpss-acc-v2: add qcom,msm8916-acc compatible
Date: Wed, 10 Jul 2024 16:52:23 +0100
Message-ID: <20240710155226.130086-1-rayyan.ansari@linaro.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273836
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add compatible for "qcom,msm8916-acc", used in msm8916.dtsi, to the dt
schema.

Signed-off-by: Rayyan Ansari <rayyan.ansari@linaro.org>
---
 Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml b/Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml
index 202a5d51ee88..3fa77fe14c87 100644
--- a/Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml
+++ b/Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml
@@ -18,7 +18,9 @@ description:
 
 properties:
   compatible:
-    const: qcom,kpss-acc-v2
+    enum:
+      - qcom,kpss-acc-v2
+      - qcom,msm8916-acc
 
   reg:
     items:
-- 
2.45.2

.

From: Alexander Shishkin <alexander.shishkin@linux.intel.com>
To: Andy Lutomirski <luto@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org,
	"H. Peter Anvin" <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ard Biesheuvel <ardb@kernel.org>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	Josh Poimboeuf <jpoimboe@kernel.org>,
	Xiongwei Song <xiongwei.song@windriver.com>,
	Xin Li <xin3.li@intel.com>,
	"Mike Rapoport (IBM)" <rppt@kernel.org>,
	Brijesh Singh <brijesh.singh@amd.com>,
	Michael Roth <michael.roth@amd.com>,
	Tony Luck <tony.luck@intel.com>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Alexey Kardashevskiy <aik@amd.com>
Cc: Jonathan Corbet <corbet@lwn.net>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Sohil Mehta <sohil.mehta@intel.com>,
	Ingo Molnar <mingo@kernel.org>,
	Pawan Gupta <pawan.kumar.gupta@linux.intel.com>,
	Daniel Sneddon <daniel.sneddon@linux.intel.com>,
	Kai Huang <kai.huang@intel.com>,
	Sandipan Das <sandipan.das@amd.com>,
	Breno Leitao <leitao@debian.org>,
	Rick Edgecombe <rick.p.edgecombe@intel.com>,
	Yian Chen <yian.chen@intel.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Hou Tao <houtao1@huawei.com>,
	Juergen Gross <jgross@suse.com>,
	Vegard Nossum <vegard.nossum@oracle.com>,
	Kees Cook <kees@kernel.org>,
	Eric Biggers <ebiggers@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Yuntao Wang <ytcoode@gmail.com>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Tejun Heo <tj@kernel.org>,
	Changbin Du <changbin.du@huawei.com>,
	Huang Shijie <shijie@os.amperecomputing.com>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Namhyung Kim <namhyung@kernel.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>,
	linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-efi@vger.kernel.org
Subject: [PATCH v4 00/16] Enable Linear Address Space Separation support
Date: Wed, 10 Jul 2024 19:06:36 +0300
Message-ID: <20240710160655.3402786-1-alexander.shishkin@linux.intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273855
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.kernel.vger.linux-efi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Changes from v3[6]:
- Made LAM dependent on LASS
- Moved EFI runtime initialization to x86 side of things
- Suspended LASS validation around EFI set_virtual_address_map call
- Added a message for the case of kernel side LASS violation
- Moved inline memset/memcpy versions to the common string.h

Changes from v2[5]:
- Added myself to the SoB chain

Changes from v1[1]:
- Emulate vsyscall violations in execute mode in the #GP fault handler
- Use inline memcpy and memset while patching alternatives
- Remove CONFIG_X86_LASS
- Make LASS depend on SMAP
- Dropped the minimal KVM enabling patch

Linear Address Space Separation (LASS) is a security feature that intends to
prevent malicious virtual address space accesses across user/kernel mode.

Such mode based access protection already exists today with paging and features
such as SMEP and SMAP. However, to enforce these protections, the processor
must traverse the paging structures in memory.  Malicious software can use
timing information resulting from this traversal to determine details about the
paging structures, and these details may also be used to determine the layout
of the kernel memory.

The LASS mechanism provides the same mode-based protections as paging but
without traversing the paging structures. Because the protections enforced by
LASS are applied before paging, software will not be able to derive
paging-based timing information from the various caching structures such as the
TLBs, mid-level caches, page walker, data caches, etc. LASS can avoid probing
using double page faults, TLB flush and reload, and SW prefetch instructions.
See [2], [3] and [4] for some research on the related attack vectors.

In addition, LASS prevents an attack vector described in a Spectre LAM (SLAM)
whitepaper [7].

LASS enforcement relies on the typical kernel implemetation to divide the
64-bit virtual address space into two halves:
  Addr[63]=0 -> User address space
  Addr[63]=1 -> Kernel address space
Any data access or code execution across address spaces typically results in a
#GP fault.

Kernel accesses usually only happen to the kernel address space. However, there
are valid reasons for kernel to access memory in the user half. For these cases
(such as text poking and EFI runtime accesses), the kernel can temporarily
suspend the enforcement of LASS by toggling SMAP (Supervisor Mode Access
Prevention) using the stac()/clac() instructions and in one instance a downright
disabling LASS for an EFI runtime call.

User space cannot access any kernel address while LASS is enabled.
Unfortunately, legacy vsyscall functions are located in the address range
0xffffffffff600000 - 0xffffffffff601000 and emulated in kernel.  To avoid
breaking user applications when LASS is enabled, extend the vsyscall emulation
in execute (XONLY) mode to the #GP fault handler.

In contrast, the vsyscall EMULATE mode is deprecated and not expected to be
used by anyone.  Supporting EMULATE mode with LASS would need complex
intruction decoding in the #GP fault handler and is probably not worth the
hassle. Disable LASS in this rare case when someone absolutely needs and
enables vsyscall=emulate via the command line.

[1] https://lore.kernel.org/lkml/20230110055204.3227669-1-yian.chen@intel.com/
[2] â€œPractical Timing Side Channel Attacks against Kernel Space ASLRâ€�,
https://www.ieee-security.org/TC/SP2013/papers/4977a191.pdf
[3] â€œPrefetch Side-Channel Attacks: Bypassing SMAP and Kernel ASLRâ€�, http://doi.acm.org/10.1145/2976749.2978356
[4] â€œHarmful prefetch on Intelâ€�, https://ioactive.com/harmful-prefetch-on-intel/ (H/T Anders)
[5] https://lore.kernel.org/all/20230530114247.21821-1-alexander.shishkin@linux.intel.com/
[6] https://lore.kernel.org/all/20230609183632.48706-1-alexander.shishkin@linux.intel.com/
[7] https://download.vusec.net/papers/slam_sp24.pdf


Alexander Shishkin (6):
  init/main.c: Move EFI runtime service initialization to x86/cpu
  x86/cpu: Defer CR pinning setup until after EFI initialization
  x86/vsyscall: Document the fact that vsyscall=emulate disables LASS
  x86/traps: Communicate a LASS violation in #GP message
  efi: Disable LASS around set_virtual_address_map call
  x86/cpu: Make LAM depend on LASS

Peter Zijlstra (1):
  x86/asm: Introduce inline memcpy and memset

Sohil Mehta (8):
  x86/cpu: Enumerate the LASS feature bits
  x86/alternatives: Disable LASS when patching kernel alternatives
  x86/cpu: Enable LASS during CPU initialization
  x86/cpu: Remove redundant comment during feature setup
  x86/vsyscall: Reorganize the #PF emulation code
  x86/traps: Consolidate user fixups in exc_general_protection()
  x86/vsyscall: Add vsyscall emulation for #GP
  x86/vsyscall: Disable LASS if vsyscall mode is set to EMULATE

Yian Chen (1):
  x86/cpu: Set LASS CR4 bit as pinning sensitive

 .../admin-guide/kernel-parameters.txt         |  4 +-
 arch/x86/entry/vsyscall/vsyscall_64.c         | 61 +++++++++++++------
 arch/x86/include/asm/cpufeatures.h            |  1 +
 arch/x86/include/asm/disabled-features.h      |  4 +-
 arch/x86/include/asm/smap.h                   |  4 ++
 arch/x86/include/asm/string.h                 | 26 ++++++++
 arch/x86/include/asm/vsyscall.h               | 14 +++--
 arch/x86/include/uapi/asm/processor-flags.h   |  2 +
 arch/x86/kernel/alternative.c                 | 12 +++-
 arch/x86/kernel/cpu/common.c                  | 25 +++++++-
 arch/x86/kernel/cpu/cpuid-deps.c              |  2 +
 arch/x86/kernel/traps.c                       | 26 +++++---
 arch/x86/mm/fault.c                           |  2 +-
 arch/x86/platform/efi/efi.c                   | 13 ++++
 init/main.c                                   |  5 --
 tools/arch/x86/include/asm/cpufeatures.h      |  1 +
 16 files changed, 157 insertions(+), 45 deletions(-)

-- 
2.43.0

.

From: Robin Murphy <robin.murphy@arm.com>
To: will@kernel.org
Cc: mark.rutland@arm.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	jialong.yang@shingroup.cn
Subject: [PATCH v2 0/3] perf: Add Arm Network-on-Chip PMU driver
Date: Wed, 10 Jul 2024 17:09:32 +0100
Message-Id: <cover.1720625639.git.robin.murphy@arm.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273861
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

v1: https://lore.kernel.org/linux-arm-kernel/cover.1713972897.git.robin.murphy@arm.com/

Hi all,

Probably a bit late now, but here's a v2 addressing Will's review
comments, and hoping to attract the DT maintainers' attention properly
this time...

Thanks,
Robin.


Robin Murphy (3):
  dt-bindings/perf: Add Arm NI-700 PMU
  perf: Add driver for Arm NI-700 interconnect PMU
  MAINTAINERS: List Arm interconnect PMUs as supported

 Documentation/admin-guide/perf/arm-ni.rst     |  17 +
 Documentation/admin-guide/perf/index.rst      |   1 +
 .../devicetree/bindings/perf/arm,ni.yaml      |  30 +
 MAINTAINERS                                   |  11 +
 drivers/perf/Kconfig                          |   7 +
 drivers/perf/Makefile                         |   1 +
 drivers/perf/arm-ni.c                         | 778 ++++++++++++++++++
 7 files changed, 845 insertions(+)
 create mode 100644 Documentation/admin-guide/perf/arm-ni.rst
 create mode 100644 Documentation/devicetree/bindings/perf/arm,ni.yaml
 create mode 100644 drivers/perf/arm-ni.c

-- 
2.39.2.101.g768bb238c484.dirty

.

Date: Wed, 10 Jul 2024 18:12:05 +0200
From: Johan Hovold <johan@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] USB-serial fixes for 6.10-rc8
Message-ID: <Zo6y1Y8IkNDlgqBf@hovoldconsulting.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273879
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Greg,

I noticed that you still have some fixes queued for 6.10-rc8/final so figured
I'd send this now even if this addresses a really old bug. I've verified that
the issue is real and have tested the fix here myself. Feel free to queue it up
for 6.11-rc1 if you prefer.

Johan


The following changes since commit 4298e400dbdbf259549d69c349e060652ad53611:

  USB: serial: option: add Telit generic core-dump composition (2024-06-27 12:04:33 +0200)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git tags/usb-serial-6.10-rc8

for you to fetch changes up to c15a688e49987385baa8804bf65d570e362f8576:

  USB: serial: mos7840: fix crash on resume (2024-07-09 18:10:04 +0200)

----------------------------------------------------------------
USB-serial fixes for 6.10-rc8

Here's a fix for a long-standing issue in the mos7840 driver that can trigger
a crash when resuming from system suspend.

Included are also some new modem device ids.

All have been in linux-next with no reported issues.

----------------------------------------------------------------
Dmitry Smirnov (1):
      USB: serial: mos7840: fix crash on resume

Mank Wang (1):
      USB: serial: option: add Netprisma LCUK54 series modules

Slark Xiao (1):
      USB: serial: option: add support for Foxconn T99W651

Vanillan Wang (1):
      USB: serial: option: add Rolling RW350-GL variants

 drivers/usb/serial/mos7840.c | 45 ++++++++++++++++++++++++++++++++++++++++++++
 drivers/usb/serial/option.c  | 28 +++++++++++++++++++++++++++
 2 files changed, 73 insertions(+)
.

From: Jerome Brunet <jbrunet@baylibre.com>
To: Philipp Zabel <p.zabel@pengutronix.de>,
	Stephen Boyd <sboyd@kernel.org>,
	Neil Armstrong <neil.armstrong@linaro.org>
Cc: Jerome Brunet <jbrunet@baylibre.com>,
	Jan Dakinevich <jan.dakinevich@salutedevices.com>,
	linux-kernel@vger.kernel.org,
	linux-amlogic@lists.infradead.org,
	linux-clk@vger.kernel.org
Subject: [PATCH 0/8] reset: amlogic: move audio reset drivers out of CCF
Date: Wed, 10 Jul 2024 18:25:09 +0200
Message-ID: <20240710162526.2341399-1-jbrunet@baylibre.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
X-Patchwork-Bot: notify
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273896
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-amlogic,org.kernel.vger.linux-clk
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patchset follows the discussion about having reset driver in the
clock tree [1]. Ideally those should reside in the reset part of tree.

Also the code of the amlogic reset driver is very similar between the 2
trees and could use the same driver code.

This patchset moves the reset driver of audio clock controller of the
g12 and sm1 SoC family to the reset tree, using the auxiliary bus.

The infrastructure put in place is meant to be generic enough so we may
eventually also move the reset drivers in the meson8b and aoclk clock
controllers.

Change since RFC [2]:
 * Move the aux registration helper out of clock too.

[1] https://lore.kernel.org/linux-clk/e3a85852b911fdf16dd9ae158f42b3ef.sboyd@kernel.org
[2] https://lore.kernel.org/linux-clk/20240516150842.705844-1-jbrunet@baylibre.com

Jerome Brunet (8):
  reset: amlogic: convert driver to regmap
  reset: amlogic: add driver parameters
  reset: amlogic: split the device and platform probe
  reset: amlogic: use reset number instead of register count
  reset: amlogic: add reset status support
  reset: amlogic: add toggle reset support
  reset: amlogic: add auxiliary reset driver support
  clk: amlogic: axg-audio: use the auxiliary reset driver

 drivers/clk/meson/Kconfig                   |   1 +
 drivers/clk/meson/axg-audio.c               | 109 +-------
 drivers/reset/Kconfig                       |   1 +
 drivers/reset/reset-meson.c                 | 285 ++++++++++++++++----
 include/soc/amlogic/meson-auxiliary-reset.h |  23 ++
 5 files changed, 271 insertions(+), 148 deletions(-)
 create mode 100644 include/soc/amlogic/meson-auxiliary-reset.h

-- 
2.43.0

.

From: <nicolas.ferre@microchip.com>
To: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, Conor Dooley
	<conor.dooley@microchip.com>, Andi Shyti <andi.shyti@kernel.org>, Rob Herring
	<robh@kernel.org>, <devicetree@vger.kernel.org>
CC: Claudiu Beznea <claudiu.beznea@tuxon.dev>, Alexandre Belloni
	<alexandre.belloni@bootlin.com>, <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <linux-i2c@vger.kernel.org>, "Nicolas
 Ferre" <nicolas.ferre@microchip.com>
Subject: [PATCH] dt-bindings: i2c: at91: Add sama7d65 compatible string
Date: Wed, 10 Jul 2024 18:26:15 +0200
Message-ID: <20240710162615.332888-1-nicolas.ferre@microchip.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273922
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-i2c
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Nicolas Ferre <nicolas.ferre@microchip.com>

Add compatible string for sama7d65. Like sama7g5, it currently binds to
"microchip,sam9x60-i2c" compatible string for this driver.

Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
---
 Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml b/Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml
index 588478862bd1..e61cdb5b16ef 100644
--- a/Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml
+++ b/Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml
@@ -26,6 +26,7 @@ properties:
               - microchip,sam9x60-i2c
       - items:
           - enum:
+              - microchip,sama7d65-i2c
               - microchip,sama7g5-i2c
               - microchip,sam9x7-i2c
           - const: microchip,sam9x60-i2c
@@ -78,6 +79,7 @@ allOf:
               - atmel,sama5d4-i2c
               - atmel,sama5d2-i2c
               - microchip,sam9x60-i2c
+              - microchip,sama7d65-i2c
               - microchip,sama7g5-i2c
     then:
       properties:
-- 
2.39.2

.

From: Nathan Chancellor <nathan@kernel.org>
Date: Wed, 10 Jul 2024 09:29:57 -0700
Subject: [PATCH] ACPI: HMAT: Mark hmat_set_default_dram_perf() as __init
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20240710-fix-modpost-warning-default_dram_nodes-v1-1-8961453cc82d@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>, 
 "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Len Brown <lenb@kernel.org>, Ho-Ren Chuang <horen.chuang@linux.dev>, 
 "Huang, Ying" <ying.huang@intel.com>, 
 Jonathan Cameron <Jonathan.Cameron@Huawei.com>, linux-acpi@vger.kernel.org, 
 linux-kernel@vger.kernel.org, kernel test robot <lkp@intel.com>, 
 Nathan Chancellor <nathan@kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273925
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-acpi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

After commit 4dc70b711dbc ("memory tier: consolidate the initialization
of memory tiers"), there is a modpost warning when
hmat_set_default_dram_perf() is not inlined into its callsite, as it
appears that default_dram_nodes may be accessed after its memory has
been freed.

  WARNING: modpost: vmlinux: section mismatch in reference: hmat_set_default_dram_perf+0x18 (section: .text) -> default_dram_nodes (section: .init.data)

The single callsite, hmat_init(), is __init, so this warning is not a
problem in reality but it is easily solvable by marking
hmat_set_default_dram_perf() as __init, which should have been done when
this function was added in commit 3718c02dbd4c ("acpi, hmat: calculate
abstract distance with HMAT").

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202406292310.hlRATeZJ-lkp@intel.com/
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
I left off a fixes tag as I assume this is going to be squashed into the
former change mentioned above, as it is still in mm-unstable, but feel
free to add one if the patch is going to be standalone.
---
 drivers/acpi/numa/hmat.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/acpi/numa/hmat.c b/drivers/acpi/numa/hmat.c
index a2f9e7a4b479..ca0c0ea3e1ef 100644
--- a/drivers/acpi/numa/hmat.c
+++ b/drivers/acpi/numa/hmat.c
@@ -933,7 +933,7 @@ static int hmat_callback(struct notifier_block *self,
 	return NOTIFY_OK;
 }
 
-static int hmat_set_default_dram_perf(void)
+static __init int hmat_set_default_dram_perf(void)
 {
 	int rc;
 	int nid, pxm;

---
base-commit: 17bcc624e67da6383060ee24483db77aa17276aa
change-id: 20240710-fix-modpost-warning-default_dram_nodes-38b6faffe3da

Best regards,
-- 
Nathan Chancellor <nathan@kernel.org>

.

Date: Wed, 10 Jul 2024 09:36:02 -0700
From: Joe Damato <jdamato@fastly.com>
To: me@kylehuey.com
Cc: acme@kernel.org, andrii.nakryiko@gmail.com, bpf@vger.kernel.org,
	elver@google.com, jolsa@kernel.org, khuey@kylehuey.com,
	linux-kernel@vger.kernel.org, mingo@kernel.org, namhyung@kernel.org,
	peterz@infradead.org, robert@ocallahan.org, yonghong.song@linux.dev,
	mkarsten@uwaterloo.ca
Subject: possible bpf overflow/output bug introduced in 6.10?
Message-ID: <Zo64cpho2cFQiOeE@LQ3V64L9R2>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273937
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Greetings:

While testing some unrelated networking code with Martin Karsten (cc'd on
this email) we discovered what appears to be some sort of overflow bug in
bpf.

git bisect suggests that commit f11f10bfa1ca ("perf/bpf: Call BPF handler
directly, not through overflow machinery") is the first commit where the
(I assume) buggy behavior appears.

Running the following on my machine as of the commit mentioned above:

  bpftrace -e 'tracepoint:napi:napi_poll { @[args->work] = count(); }'

while simultaneously transferring data to the target machine (in my case, I
scp'd a 100MiB file of zeros in a loop) results in very strange output
(snipped):

  @[11]: 5
  @[18]: 5
  @[-30590]: 6
  @[10]: 7
  @[14]: 9

It does not seem that the driver I am using on my test system (mlx5) would
ever return a negative value from its napi poll function and likewise for
the driver Martin is using (mlx4).

As such, I don't think it is possible for args->work to ever be a large
negative number, but perhaps I am misunderstanding something?

I would like to note that commit 14e40a9578b7 ("perf/bpf: Remove #ifdef
CONFIG_BPF_SYSCALL from struct perf_event members") does not exhibit this
behavior and the output seems reasonable on my test system. Martin confirms
the same for both commits on his test system, which uses different hardware
than mine.

Is this an expected side effect of this change? I would expect it is not
and that the output is a bug of some sort. My apologies in that I am not
particularly familiar with the bpf code and cannot suggest what the root
cause might be.

If it is not a bug, can anyone suggest what this output might mean or
how the script run above should be modified?

Thanks,
Joe
.

From: <nicolas.ferre@microchip.com>
To: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, Conor Dooley
	<conor.dooley@microchip.com>, Rob Herring <robh@kernel.org>,
	<devicetree@vger.kernel.org>, <ukleinek@kernel.org>
CC: Claudiu Beznea <claudiu.beznea@tuxon.dev>, Alexandre Belloni
	<alexandre.belloni@bootlin.com>, <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <linux-pwm@vger.kernel.org>, "Nicolas
 Ferre" <nicolas.ferre@microchip.com>
Subject: [PATCH] dt-bindings: pwm: at91: Add sama7d65 compatible string
Date: Wed, 10 Jul 2024 18:36:51 +0200
Message-ID: <20240710163651.343751-1-nicolas.ferre@microchip.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273941
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pwm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Nicolas Ferre <nicolas.ferre@microchip.com>

Add compatible string for sama7d65. Like sama7g5, it currently binds to
"atmel,sama5d2-pwm" compatibility string for this driver, so add an
"enum" to reflect that.

Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
---
 Documentation/devicetree/bindings/pwm/atmel,at91sam-pwm.yaml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/pwm/atmel,at91sam-pwm.yaml b/Documentation/devicetree/bindings/pwm/atmel,at91sam-pwm.yaml
index 96cd6f3c3546..d20ad27657aa 100644
--- a/Documentation/devicetree/bindings/pwm/atmel,at91sam-pwm.yaml
+++ b/Documentation/devicetree/bindings/pwm/atmel,at91sam-pwm.yaml
@@ -23,7 +23,9 @@ properties:
               - atmel,sama5d2-pwm
               - microchip,sam9x60-pwm
       - items:
-          - const: microchip,sama7g5-pwm
+          - enum:
+              - microchip,sama7d65-pwm
+              - microchip,sama7g5-pwm
           - const: atmel,sama5d2-pwm
       - items:
           - const: microchip,sam9x7-pwm
-- 
2.39.2

.

Date: Wed, 10 Jul 2024 12:44:31 -0400
From: Kent Overstreet <kent.overstreet@linux.dev>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-bcachefs@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-kernel@vger.kernel.org
Subject: [GIT PULL] bcachefs fixes for 6.10-rc8
Message-ID: <lmdvnow3yfejsiqgoxg5yxcs4patibvllsc533skksxpoykzcr@fstcszxequbj>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273944
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bcachefs,org.kernel.vger.linux-fsdevel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Linus, fresh batch of bcachefs fixes for you.

Cheers,
Kent

The following changes since commit 64cd7de998f393e73981e2aa4ee13e4e887f01ea:

  bcachefs: Fix kmalloc bug in __snapshot_t_mut (2024-06-25 20:51:14 -0400)

are available in the Git repository at:

  https://evilpiepirate.org/git/bcachefs.git tags/bcachefs-2024-07-10

for you to fetch changes up to 7d7f71cd8763a296d02dff9514447aa3de199c47:

  bcachefs: Add missing bch2_trans_begin() (2024-07-10 09:53:39 -0400)

----------------------------------------------------------------
bcachefs fixes for 6.10-rc8

- Switch some asserts to WARN()
- Fix a few "transaction not locked" asserts in the data read retry
  paths and backpointers gc
- Fix a race that would cause the journal to get stuck on a flush commit
- Add missing fsck checks for the fragmentation LRU
- The usual assorted ssorted syzbot fixes

----------------------------------------------------------------
Kent Overstreet (21):
      bcachefs: Switch online_reserved shutdown assert to WARN()
      bcachefs: Delete old faulty bch2_trans_unlock() call
      bcachefs: Change bch2_fs_journal_stop() BUG_ON() to warning
      bcachefs: Fix shift greater than integer size
      bcachefs: Don't use the new_fs() bucket alloc path on an initialized fs
      bcachefs: Fix bch2_read_retry_nodecode()
      bcachefs: Fix loop restart in bch2_btree_transactions_read()
      bcachefs: Add missing printbuf_tabstops_reset() calls
      bcachefs: bch2_btree_write_buffer_maybe_flush()
      bcachefs: add check for missing fragmentation in check_alloc_to_lru_ref()
      bcachefs: Repair fragmentation_lru in alloc_write_key()
      bcachefs: io clock: run timer fns under clock lock
      bcachefs: Fix journal getting stuck on a flush commit
      closures: fix closure_sync + closure debugging
      bcachefs: Fix bch2_inode_insert() race path for tmpfiles
      bcachefs: Fix undefined behaviour in eytzinger1_first()
      bcachefs: Log mount failure error code
      bcachefs: bch2_data_update_to_text()
      bcachefs: Warn on attempting a move with no replicas
      bcachefs: Fix missing error check in journal_entry_btree_keys_validate()
      bcachefs: Add missing bch2_trans_begin()

Youling Tang (1):
      bcachefs: Mark bch_inode_info as SLAB_ACCOUNT

 fs/bcachefs/alloc_background.c   | 48 +++++++++++++--------------
 fs/bcachefs/alloc_foreground.c   |  2 ++
 fs/bcachefs/backpointers.c       | 70 +++++++++++++++-------------------------
 fs/bcachefs/bkey.c               |  5 +--
 fs/bcachefs/bkey.h               |  7 ++++
 fs/bcachefs/btree_gc.c           | 24 +++++++-------
 fs/bcachefs/btree_write_buffer.c | 37 +++++++++++++++++++++
 fs/bcachefs/btree_write_buffer.h |  3 ++
 fs/bcachefs/clock.c              |  7 ++--
 fs/bcachefs/data_update.c        | 44 +++++++++++++++++++++++++
 fs/bcachefs/data_update.h        |  5 +++
 fs/bcachefs/debug.c              | 12 +++----
 fs/bcachefs/eytzinger.h          |  6 ++--
 fs/bcachefs/fs.c                 | 11 ++++++-
 fs/bcachefs/io_read.c            |  4 ++-
 fs/bcachefs/journal.c            | 18 ++++++-----
 fs/bcachefs/journal.h            |  2 +-
 fs/bcachefs/journal_io.c         | 12 ++++---
 fs/bcachefs/lru.c                | 39 ++++++++++++++++++++++
 fs/bcachefs/lru.h                |  3 ++
 fs/bcachefs/move.c               | 25 --------------
 fs/bcachefs/sb-errors_format.h   |  3 +-
 fs/bcachefs/super.c              | 11 ++++---
 include/linux/closure.h          |  7 ++++
 lib/closure.c                    |  3 ++
 25 files changed, 266 insertions(+), 142 deletions(-)
.

From: Neil Armstrong <neil.armstrong@linaro.org>
Date: Wed, 10 Jul 2024 19:02:52 +0200
Subject: [PATCH] dt-bindings: trivial-devices: document the Sierra Wireless
 mangOH Green SPI IoT interface
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20240710-topic-mdm9615-mangoh-iotport-spi-bindings-v1-1-3efe20cfea8a@linaro.org>
To: Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>
Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, 
 Neil Armstrong <neil.armstrong@linaro.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273956
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Document the Sierra Wireless mangOH Green SPI IoT interface as a trivial
device.

This fixes the following check:
qcom-mdm9615-wp8548-mangoh-green.dtb: /soc/gsbi@16200000/spi@16280000/spi@0: failed to match any schema with compatible: ['swir,mangoh-iotport-spi']

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
 Documentation/devicetree/bindings/trivial-devices.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
index 5e58ebfab758..1451a9f68427 100644
--- a/Documentation/devicetree/bindings/trivial-devices.yaml
+++ b/Documentation/devicetree/bindings/trivial-devices.yaml
@@ -362,6 +362,8 @@ properties:
           - sparkfun,qwiic-joystick
             # i2c serial eeprom (24cxx)
           - st,24c256
+            # Sierra Wireless mangOH Green SPI IoT interface
+          - swir,mangoh-iotport-spi
             # Ambient Light Sensor with SMBUS/Two Wire Serial Interface
           - taos,tsl2550
             # Temperature Monitoring and Fan Control

---
base-commit: 82e4255305c554b0bb18b7ccf2db86041b4c8b6e
change-id: 20240710-topic-mdm9615-mangoh-iotport-spi-bindings-1bbd641e4068

Best regards,
-- 
Neil Armstrong <neil.armstrong@linaro.org>

.

Date: Wed, 10 Jul 2024 17:04:48 +0000
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Mime-Version: 1.0
Message-ID: <20240710170448.1399967-1-ericchancf@google.com>
Subject: [PATCH 0/3] kunit: Improve the readability and functionality of macro.
From: Eric Chan <ericchancf@google.com>
To: brendan.higgins@linux.dev, davidgow@google.com, rmoar@google.com
Cc: linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, 
	linux-kernel@vger.kernel.org, ericchancf@google.com
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273958
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series let kunit macro more neat and clear.
Fix comment and rename the macro.
Also introduce new type of assertion marco for functionality.

Eric Chan (3):
  kunit: Fix the comment of KUNIT_ASSERT_STRNEQ as assertion
  kunit: Rename KUNIT_ASSERT_FAILURE to KUNIT_ASSERT for readability
  kunit: Introduce KUNIT_ASSERT_MEMEQ and KUNIT_ASSERT_MEMNEQ macros

 drivers/input/tests/input_test.c |  2 +-
 include/kunit/assert.h           |  2 +-
 include/kunit/test.h             | 71 ++++++++++++++++++++++++++++++--
 3 files changed, 70 insertions(+), 5 deletions(-)

-- 
2.45.2.803.g4e1b14247a-goog
.

From: Stephan Gerhold <stephan.gerhold@linaro.org>
Subject: [PATCH 0/5] drm/panel: atna33xc20: Fix the Samsung ATNA45AF01
 panel
Date: Wed, 10 Jul 2024 19:04:56 +0200
Message-Id: <20240710-x1e80100-crd-backlight-v1-0-eb242311a23e@linaro.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Neil Armstrong <neil.armstrong@linaro.org>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konrad.dybcio@linaro.org>
Cc: Jessica Zhang <quic_jesszhan@quicinc.com>, 
 Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, 
 Conor Dooley <conor+dt@kernel.org>, 
 Douglas Anderson <dianders@chromium.org>, dri-devel@lists.freedesktop.org, 
 devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-arm-msm@vger.kernel.org, Abel Vesa <abel.vesa@linaro.org>, 
 Johan Hovold <johan@kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273959
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The backlight of the Samsung ATNA45AF01 panel used in the Qualcomm X1E80100
CRD does not work correctly with the current display panel configuration
and drivers: It works after boot, but once the display gets disabled it is
not possible to get it back on. It turns out that the ATNA45AF01 panel
needs exactly the same non-standard power sequence as implemented for
ATNA33XC20 in the panel-samsung-atna33xc20 driver.

Move the ATNA45AF01 panel from the generic panel-edp driver to the
panel-samsung-atna33xc20 driver and fix the panel configuration in the
x1e80100-crd device tree to make the panel work correctly.

The DT changes are included here for reference and easier testing, I assume
Bjorn or Konrad will pick them up after the DRM panel changes were applied.

Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
---
Stephan Gerhold (5):
      dt-bindings: display: panel: samsung,atna33xc20: Document ATNA45AF01
      drm/panel: samsung-atna33xc20: Add compatible for ATNA45AF01
      Revert "drm/panel-edp: Add SDC ATNA45AF01"
      arm64: dts: qcom: x1e80100-crd: Fix backlight
      arm64: defconfig: Add CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20

 .../bindings/display/panel/samsung,atna33xc20.yaml      |  6 +++++-
 arch/arm64/boot/dts/qcom/x1e80100-crd.dts               | 17 +++++++++++++++--
 arch/arm64/configs/defconfig                            |  1 +
 drivers/gpu/drm/panel/panel-edp.c                       |  2 --
 drivers/gpu/drm/panel/panel-samsung-atna33xc20.c        |  1 +
 5 files changed, 22 insertions(+), 5 deletions(-)
---
base-commit: 523b23f0bee3014a7a752c9bb9f5c54f0eddae88
change-id: 20240710-x1e80100-crd-backlight-632f9bf936ef

Best regards,
-- 
Stephan Gerhold <stephan.gerhold@linaro.org>

.

From: Marc Zyngier <maz@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Masahiro Yamada <masahiroy@kernel.org>,
	Nicolas Schier <nicolas@fjasle.eu>
Subject: [PATCH] kbuild: deb-pkg: Fix build error caused by lack of positionnal argument
Date: Wed, 10 Jul 2024 18:27:17 +0100
Message-Id: <20240710172717.1346194-1-maz@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273978
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Since 8ef052389f7f ("kbuild: package: add -e and -u options to some
shell scripts"), building a debian package on my arm64 box fails:

$ make -j20 bindeb-pkg
  UPD     include/config/kernel.release
  GEN     debian
./scripts/package/mkdebian: 138: 1: parameter not set
make[2]: *** [scripts/Makefile.package:98: debian] Error 2
make[1]: *** [/home/maz/hot-poop/arm-platforms/Makefile:1538: bindeb-pkg] Error 2
make: *** [Makefile:224: __sub-make] Error 2

Applying the same pattern for substitution of undefined variables
seems to paper over the issue and brings the script back to life.

Fixes: 8ef052389f7f ("kbuild: package: add -e and -u options to some shell scripts")
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nicolas Schier <nicolas@fjasle.eu>
---
 scripts/package/mkdebian | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
index 196b14e8ad47..de8b460a46b4 100755
--- a/scripts/package/mkdebian
+++ b/scripts/package/mkdebian
@@ -135,7 +135,7 @@ else
 fi
 maintainer="${name} <${email}>"
 
-if [ "$1" = --need-source ]; then
+if [ "${1:+set}" = --need-source ]; then
 	gen_source
 fi
 
-- 
2.39.2

.

Date: Wed, 10 Jul 2024 11:27:51 -0600
From: Alex Williamson <alex.williamson@redhat.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Liu, Yi L" <yi.l.liu@intel.com>, "kvm@vger.kernel.org"
 <kvm@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] VFIO fix for v6.10
Message-ID: <20240710112751.7168972e.alex.williamson@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273979
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kvm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Linus,

This fixes a late breaking regression introduced in the v6.10 cycle and
appearing in recent stable backports.  Thanks,

Alex

The following changes since commit 256abd8e550ce977b728be79a74e1729438b4948:

  Linux 6.10-rc7 (2024-07-07 14:23:46 -0700)

are available in the Git repository at:

  https://github.com/awilliam/linux-vfio.git tags/vfio-v6.10

for you to fetch changes up to 5a88a3f67e37e39f933b38ebb4985ba5822e9eca:

  vfio/pci: Init the count variable in collecting hot-reset devices (2024-07-10 08:47:46 -0600)

----------------------------------------------------------------
VFIO fix for v6.10

 - Recent stable backports are exposing a bug introduced in the v6.10
   development cycle where a counter value is uninitialized.  This leads
   to regressions in userspace drivers like QEMU where where the kernel
   might ask for an arbitrary buffer size or return out of memory itself
   based on a bogus value.  Zero initialize the counter.  (Yi Liu)

----------------------------------------------------------------
Yi Liu (1):
      vfio/pci: Init the count variable in collecting hot-reset devices

 drivers/vfio/pci/vfio_pci_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

.

From: Wei Yang <richard.weiyang@gmail.com>
To: yury.norov@gmail.com,
	linux@rasmusvillemoes.dk,
	willy@infradead.org
Cc: linux-kernel@vger.kernel.org,
	Wei Yang <richard.weiyang@gmail.com>
Subject: [PATCH v2] radix tree test suite: put definition of bitmap_clear() into lib/bitmap.c
Date: Wed, 10 Jul 2024 17:27:01 +0000
Message-Id: <20240710172701.21339-1-richard.weiyang@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273980
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

In tools/ directory, function bitmap_clear() is currently only used in
object file tools/testing/radix-tree/xarray.o.

But instead of keeping a bitmap.c with only bitmap_clear() definition in
radix-tree's own directory, it would be more proper to put it in common
directory lib/.

Sync the kernel definition and link some related libs, no functional
change is expected.

Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
CC: Matthew Wilcox <willy@infradead.org>
CC: Yury Norov <yury.norov@gmail.com>

---
v2:
  * slab.o is also defined in lib/, so put it in LIBS too
  * sync with kernel implementation
  * explain how bitmap_clear() is used in tools/
---
 tools/include/linux/bitmap.h      | 17 ++++++++++++++++-
 tools/lib/bitmap.c                | 20 ++++++++++++++++++++
 tools/testing/radix-tree/Makefile |  4 ++--
 tools/testing/radix-tree/bitmap.c | 23 -----------------------
 4 files changed, 38 insertions(+), 26 deletions(-)
 delete mode 100644 tools/testing/radix-tree/bitmap.c

diff --git a/tools/include/linux/bitmap.h b/tools/include/linux/bitmap.h
index 210c13b1b857..2a7f260ef9dc 100644
--- a/tools/include/linux/bitmap.h
+++ b/tools/include/linux/bitmap.h
@@ -19,7 +19,7 @@ bool __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
 		 const unsigned long *bitmap2, unsigned int bits);
 bool __bitmap_equal(const unsigned long *bitmap1,
 		    const unsigned long *bitmap2, unsigned int bits);
-void bitmap_clear(unsigned long *map, unsigned int start, int len);
+void __bitmap_clear(unsigned long *map, unsigned int start, int len);
 bool __bitmap_intersects(const unsigned long *bitmap1,
 			 const unsigned long *bitmap2, unsigned int bits);
 
@@ -150,4 +150,19 @@ static inline bool bitmap_intersects(const unsigned long *src1,
 		return __bitmap_intersects(src1, src2, nbits);
 }
 
+static inline void bitmap_clear(unsigned long *map, unsigned int start,
+			       unsigned int nbits)
+{
+	if (__builtin_constant_p(nbits) && nbits == 1)
+		__clear_bit(start, map);
+	else if (small_const_nbits(start + nbits))
+		*map &= ~GENMASK(start + nbits - 1, start);
+	else if (__builtin_constant_p(start & BITMAP_MEM_MASK) &&
+		 IS_ALIGNED(start, BITMAP_MEM_ALIGNMENT) &&
+		 __builtin_constant_p(nbits & BITMAP_MEM_MASK) &&
+		 IS_ALIGNED(nbits, BITMAP_MEM_ALIGNMENT))
+		memset((char *)map + start / 8, 0, nbits / 8);
+	else
+		__bitmap_clear(map, start, nbits);
+}
 #endif /* _TOOLS_LINUX_BITMAP_H */
diff --git a/tools/lib/bitmap.c b/tools/lib/bitmap.c
index c3e4871967bc..2178862bb114 100644
--- a/tools/lib/bitmap.c
+++ b/tools/lib/bitmap.c
@@ -100,3 +100,23 @@ bool __bitmap_intersects(const unsigned long *bitmap1,
 			return true;
 	return false;
 }
+
+void __bitmap_clear(unsigned long *map, unsigned int start, int len)
+{
+	unsigned long *p = map + BIT_WORD(start);
+	const unsigned int size = start + len;
+	int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG);
+	unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start);
+
+	while (len - bits_to_clear >= 0) {
+		*p &= ~mask_to_clear;
+		len -= bits_to_clear;
+		bits_to_clear = BITS_PER_LONG;
+		mask_to_clear = ~0UL;
+		p++;
+	}
+	if (len) {
+		mask_to_clear &= BITMAP_LAST_WORD_MASK(size);
+		*p &= ~mask_to_clear;
+	}
+}
diff --git a/tools/testing/radix-tree/Makefile b/tools/testing/radix-tree/Makefile
index 7527f738b4a1..d1acd7d58850 100644
--- a/tools/testing/radix-tree/Makefile
+++ b/tools/testing/radix-tree/Makefile
@@ -5,8 +5,8 @@ CFLAGS += -I. -I../../include -I../../../lib -g -Og -Wall \
 LDFLAGS += -fsanitize=address -fsanitize=undefined
 LDLIBS+= -lpthread -lurcu
 TARGETS = main idr-test multiorder xarray maple
-CORE_OFILES := xarray.o radix-tree.o idr.o linux.o test.o find_bit.o bitmap.o \
-			 slab.o maple.o
+LIBS := slab.o find_bit.o bitmap.o hweight.o vsprintf.o
+CORE_OFILES := xarray.o radix-tree.o idr.o linux.o test.o maple.o $(LIBS)
 OFILES = main.o $(CORE_OFILES) regression1.o regression2.o regression3.o \
 	 regression4.o tag_check.o multiorder.o idr-test.o iteration_check.o \
 	 iteration_check_2.o benchmark.o
diff --git a/tools/testing/radix-tree/bitmap.c b/tools/testing/radix-tree/bitmap.c
deleted file mode 100644
index 66ec4a24a203..000000000000
--- a/tools/testing/radix-tree/bitmap.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* lib/bitmap.c pulls in at least two other files. */
-
-#include <linux/bitmap.h>
-
-void bitmap_clear(unsigned long *map, unsigned int start, int len)
-{
-	unsigned long *p = map + BIT_WORD(start);
-	const unsigned int size = start + len;
-	int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG);
-	unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start);
-
-	while (len - bits_to_clear >= 0) {
-		*p &= ~mask_to_clear;
-		len -= bits_to_clear;
-		bits_to_clear = BITS_PER_LONG;
-		mask_to_clear = ~0UL;
-		p++;
-	}
-	if (len) {
-		mask_to_clear &= BITMAP_LAST_WORD_MASK(size);
-		*p &= ~mask_to_clear;
-	}
-}
-- 
2.34.1

.

Message-ID: <e3cdee98-e2a0-4991-ae6c-4d8ee687a284@gmail.com>
Date: Wed, 10 Jul 2024 19:28:59 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>,
 Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>,
 linux-mtd@lists.infradead.org
From: Mirsad Todorovac <mtodorovac69@gmail.com>
Subject: =?UTF-8?Q?=5BPROBLEM_linux-next=5D_=2E/include/linux/kern=5Flevels?=
 =?UTF-8?B?Lmg6NToyNTogZXJyb3I6IOKAmCVz4oCZIGRpcmVjdGl2ZSBhcmd1bWVudCBpcyBu?=
 =?UTF-8?Q?ull_=5B-Werror=3Dformat-overflow=3D=5D?=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273984
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-mtd
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi all,

On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F
which was known from before to trigger various errors in compile and build process.

Though this might seem as contributing to channel noise, Linux refuses to build this config,
treating warnings as errors, using this build line:

$ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date

As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty
left, there seems to be more tedious work ahead to make the compilers happy.

The compiler output is:

./include/linux/kern_levels.h:5:25: error: â€˜%sâ€™ directive argument is null [-Werror=format-overflow=]
    5 | #define KERN_SOH        "\001"          /* ASCII Start Of Header */
      |                         ^~~~~~
./include/linux/printk.h:462:25: note: in definition of macro â€˜printk_index_wrapâ€™
  462 |                 _p_func(_fmt, ##__VA_ARGS__);                           \
      |                         ^~~~
drivers/mtd/devices/slram.c:52:25: note: in expansion of macro â€˜printkâ€™
   52 | #define T(fmt, args...) printk(KERN_DEBUG fmt, ## args)
      |                         ^~~~~~
./include/linux/kern_levels.h:15:25: note: in expansion of macro â€˜KERN_SOHâ€™
   15 | #define KERN_DEBUG      KERN_SOH "7"    /* debug-level messages */
      |                         ^~~~~~~~
drivers/mtd/devices/slram.c:52:32: note: in expansion of macro â€˜KERN_DEBUGâ€™
   52 | #define T(fmt, args...) printk(KERN_DEBUG fmt, ## args)
      |                                ^~~~~~~~~~
drivers/mtd/devices/slram.c:304:17: note: in expansion of macro â€˜Tâ€™
  304 |                 T("slram: devlength = %s\n", devlength);
      |                 ^
cc1: all warnings being treated as errors
cc1: all warnings being treated as errors
make[5]: *** [scripts/Makefile.build:244: drivers/mtd/devices/slram.o] Error 1
make[5]: Target 'drivers/mtd/devices/' not remade because of errors.
cc1: all warnings being treated as errors

The problem seems to originate from pre-git era < 2005-04-16 ^1da177e4c3f4 ("Linux-2.6.12-rc2").

----------------------------------------
drivers/mtd/devices/slram.c
----------------------------------------
   277	static int __init init_slram(void)
   278	{
   279		char *devname;
   280	
   281	#ifndef MODULE
   282		char *devstart;
   283		char *devlength;
   284	
   285		if (!map) {
   286			E("slram: not enough parameters.\n");
   287			return(-EINVAL);
   288		}
   289		while (map) {
   290			devname = devstart = devlength = NULL;
   291	
   292			if (!(devname = strsep(&map, ","))) {
   293				E("slram: No devicename specified.\n");
   294				break;
   295			}
   296			T("slram: devname = %s\n", devname);
   297			if ((!map) || (!(devstart = strsep(&map, ",")))) {
   298				E("slram: No devicestart specified.\n");
   299			}
   300			T("slram: devstart = %s\n", devstart);
 â†’ 301			if ((!map) || (!(devlength = strsep(&map, ",")))) {
   302				E("slram: No devicelength / -end specified.\n");
   303			}
 â†’ 304			T("slram: devlength = %s\n", devlength);
   305			if (parse_cmdline(devname, devstart, devlength) != 0) {
   306				return(-EINVAL);
   307			}
   308		}
   309	#else
   310		int count;
   311		int i;
   312	
   313		for (count = 0; count < SLRAM_MAX_DEVICES_PARAMS && map[count];
   314				count++) {
   315		}
   316	
   317		if ((count % 3 != 0) || (count == 0)) {
   318			E("slram: not enough parameters.\n");
   319			return(-EINVAL);
   320		}
   321		for (i = 0; i < (count / 3); i++) {
   322			devname = map[i * 3];
   323	
   324			if (parse_cmdline(devname, map[i * 3 + 1], map[i * 3 + 2])!=0) {
   325				return(-EINVAL);
   326			}
   327	
   328		}
   329	#endif /* !MODULE */
   330	
   331		return(0);
   332	}
----------------------------------------

NOTE, in line 301, in case of lazy evaluation, if (map == NULL, then (!(devlength = strsep(&map, ",")))
will not be evaluated, and devlength will not be assigned.

As a diff speaks more than a thousand words, here is the proposed fix:

----------------------------------><-----------------------------------------------
diff --git a/drivers/mtd/devices/slram.c b/drivers/mtd/devices/slram.c
index 28131a127d06..8297b366a066 100644
--- a/drivers/mtd/devices/slram.c
+++ b/drivers/mtd/devices/slram.c
@@ -296,10 +296,12 @@ static int __init init_slram(void)
                T("slram: devname = %s\n", devname);
                if ((!map) || (!(devstart = strsep(&map, ",")))) {
                        E("slram: No devicestart specified.\n");
+                       break;
                }
                T("slram: devstart = %s\n", devstart);
                if ((!map) || (!(devlength = strsep(&map, ",")))) {
                        E("slram: No devicelength / -end specified.\n");
+                       break;
                }
                T("slram: devlength = %s\n", devlength);
                if (parse_cmdline(devname, devstart, devlength) != 0) {
--

Hope this helps.

Best regards,
Mirsad Todorovac

.

From: Cristian Marussi <cristian.marussi@arm.com>
To: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	arm-scmi@vger.kernel.org
Cc: sudeep.holla@arm.com,
	james.quinlan@broadcom.com,
	f.fainelli@gmail.com,
	vincent.guittot@linaro.org,
	etienne.carriere@st.com,
	peng.fan@oss.nxp.com,
	michal.simek@amd.com,
	quic_sibis@quicinc.com,
	quic_nkela@quicinc.com,
	ptosi@google.com,
	dan.carpenter@linaro.org,
	souvik.chakravarty@arm.com,
	Cristian Marussi <cristian.marussi@arm.com>
Subject: [PATCH 0/8] Make SCMI transport as standalone drivers
Date: Wed, 10 Jul 2024 18:31:45 +0100
Message-ID: <20240710173153.4060457-1-cristian.marussi@arm.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273989
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.arm-scmi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi all,

Till now the SCMI transport layer was being built embedded into in the core
SCMI stack.

Some of these transports, despite being currently part of the main SCMI
module, are indeed also registered with different subsystems like optee or
virtio, and actively probed also by those: this led to a few awkward and
convoluted tricks to properly handle such interactions at boot time in the
SCMI stack.

Moreover some partner expressed the desire to be able to fully modularize
the transports components.

This series aim to make all such transports as standalone drivers that can
be optionally loaded as modules.

In order to do this, at first some new mechanism is introduced to support
this new capability while maintaining, in parallel, the old legacy embedded
transports; then each transport, one by one, is transitioned to be a
standalone driver and finally the old legacy support for embedded transport
is removed.

Patch [1/8] is a mostly unrelated (but much needed) clean-up from Peng,
which I included in this series to avoid conflicts at merge.

Patch [2/8] simply collects the existing datagram manipulation helpers in a
pair of function pointers structures, in preparation for later reworks.

Patch [3/8] adds the bulk of the new logic to the core SCMI stack and then
each existing transport is transitioned to be a standalone driver in
patches 4,5,6,7 while shuffling around the compatibles. (no DT change is
needed of curse for backward compatibility)
While doing this I kept the module authorship in line with the main
author(S) as spitted out by git-blame.

Finally patch [8/8] removes all the legacy dead code from the core SCMI
stack.

No new symbol EXPORT has been added.

The new transport drivers have been tested, as built-in and LKM, as
follows:

- mailbox on JUNO
- virtio on emulation
- optee on QEMU/optee using Linaro setup

Exercised using the regular SCMI drivers stack and the SCMI ACS suite,
testing commands, replies, delayed responses and notification.

Multiple virtual SCMI instances support has been tested too.

SMC has NOT been tested/exercised at run-time, only compile-tested.
(due to lack of hardware)

Note that in this new setup, all the probe deferral and retries between the
SCMI core stack and the transports has been removed, since no more needed.

Moreover the new drivers have been tested also with a fully modularized
SCMI stack, i.e.:

  scmi-core.ko + scmi-module.ko + scmi_transport_*.ko [ + vendor modules ]

ToBeDone:
 - completely remove any dependency at build time at the Kconfig level between
   the SCMI core and the transport drivers: so that the transports will be
   dependent only on the related subsystems (optee/virtio/mailbox/smc)
   (easy to be done but maybe it is not worth...)
 - integrate per-platform transport configuration capabilities
   (max_rx_timeout_ms & friends..)

Based on sudeep/for-next/scmi/updates.

Any feedback, and especially testing (:D) is welcome.

Thanks,
Cristian

---
v1 --> v2
- fixed setup_shmem_iomap to address also SMC needs (QC/nikunj)
  (silencing also warnings by kernel test robot <lkp@intel.com>)
- using __free OF cleanup.h magic in setup_shmme_iomap
- properly handle platform_driver_register() failures (Dan)
- fixed a few commit message style
- added a few missing static in scmi_desc
  (addresses warnings by kernel test robot <lkp@intel.com>)

Cristian Marussi (7):
  firmware: arm_scmi: Introduce packet handling helpers
  firmware: arm_scmi: Add support for standalone transport drivers
  firmware: arm_scmi: Make MBOX transport a standalone driver
  firmware: arm_scmi: Make SMC transport a standalone driver
  firmware: arm_scmi: Make OPTEE transport a standalone driver
  firmware: arm_scmi: Make VirtIO transport a standalone driver
  firmware: arm_scmi: Remove legacy transport-layer code

Peng Fan (1):
  firmware: arm_scmi: Introduce setup_shmem_iomap

 drivers/firmware/arm_scmi/Kconfig             |  20 +-
 drivers/firmware/arm_scmi/Makefile            |   9 +-
 drivers/firmware/arm_scmi/common.h            | 184 +++++++++++++-----
 drivers/firmware/arm_scmi/driver.c            | 140 +++++--------
 drivers/firmware/arm_scmi/msg.c               |  34 +++-
 .../{mailbox.c => scmi_transport_mailbox.c}   |  69 ++++---
 .../{optee.c => scmi_transport_optee.c}       | 124 +++++-------
 .../arm_scmi/{smc.c => scmi_transport_smc.c}  |  58 +++---
 .../{virtio.c => scmi_transport_virtio.c}     | 103 +++++-----
 drivers/firmware/arm_scmi/shmem.c             |  85 ++++++--
 10 files changed, 468 insertions(+), 358 deletions(-)
 rename drivers/firmware/arm_scmi/{mailbox.c => scmi_transport_mailbox.c} (87%)
 rename drivers/firmware/arm_scmi/{optee.c => scmi_transport_optee.c} (89%)
 rename drivers/firmware/arm_scmi/{smc.c => scmi_transport_smc.c} (87%)
 rename drivers/firmware/arm_scmi/{virtio.c => scmi_transport_virtio.c} (94%)

-- 
2.45.2

.

From: Paolo Bonzini <pbonzini@redhat.com>
To: linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org
Cc: isaku.yamahata@intel.com,
	seanjc@google.com,
	binbin.wu@linux.intel.com,
	xiaoyao.li@intel.com
Subject: [PATCH v5 0/7] KVM: Guest Memory Pre-Population API
Date: Wed, 10 Jul 2024 13:40:24 -0400
Message-ID: <20240710174031.312055-1-pbonzini@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274004
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kvm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Pre-population has been requested several times to mitigate KVM page faults
during guest boot or after live migration.  It is also required by TDX
before filling in the initial guest memory with measured contents.
Introduce it as a generic API.

Paolo

v4->v5:
- add EIO as possible error
- do not introduce __kvm_mmu_do_page_fault(), instead update stats in callers
- remove goto
- fix commit message to not mention weak symbol
- return error if range->size is 0
- fix comment to explain TDP restriction
- fix guest_test_phys_mem > guest_test_virt_mem case in test

Isaku Yamahata (3):
  KVM: Document KVM_PRE_FAULT_MEMORY ioctl
  KVM: Add KVM_PRE_FAULT_MEMORY vcpu ioctl to pre-populate guest memory
  KVM: selftests: x86: Add test for KVM_PRE_FAULT_MEMORY

Paolo Bonzini (2):
  KVM: x86/mmu: Make kvm_mmu_do_page_fault() return mapped level
  KVM: x86: Implement kvm_arch_vcpu_pre_fault_memory()

Sean Christopherson (2):
  KVM: x86/mmu: Bump pf_taken stat only in the "real" page fault handler
  KVM: x86/mmu: Account pf_{fixed,emulate,spurious} in callers of "do
    page fault"

 Documentation/virt/kvm/api.rst                |  55 +++++++
 arch/x86/kvm/Kconfig                          |   1 +
 arch/x86/kvm/mmu/mmu.c                        |  96 +++++++++++-
 arch/x86/kvm/mmu/mmu_internal.h               |  26 +---
 arch/x86/kvm/x86.c                            |   3 +
 include/linux/kvm_host.h                      |   5 +
 include/uapi/linux/kvm.h                      |  10 ++
 tools/include/uapi/linux/kvm.h                |  14 +-
 tools/testing/selftests/kvm/Makefile          |   1 +
 .../selftests/kvm/pre_fault_memory_test.c     | 146 ++++++++++++++++++
 virt/kvm/Kconfig                              |   3 +
 virt/kvm/kvm_main.c                           |  60 +++++++
 12 files changed, 394 insertions(+), 26 deletions(-)
 create mode 100644 tools/testing/selftests/kvm/pre_fault_memory_test.c

-- 
2.43.0

.

Message-ID: <ce3dd4dc5924fa3fbc1468a5dca262aed50bb4d7.camel@HansenPartnership.com>
Subject: [GIT PULL] SCSI fixes for 6.10-rc7
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Andrew Morton <akpm@linux-foundation.org>, Linus Torvalds
	 <torvalds@linux-foundation.org>
Cc: linux-scsi <linux-scsi@vger.kernel.org>, linux-kernel
	 <linux-kernel@vger.kernel.org>
Date: Wed, 10 Jul 2024 10:48:56 -0700
Content-Type: text/plain; charset="UTF-8"
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274011
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

One core change that moves a disk start message to a location where it
will only be printed once instead of twice plus a couple of error
handling race fixes in the ufs driver.

The patch is available here:

git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes

The short changelog is:

Damien Le Moal (1):
      scsi: sd: Do not repeat the starting disk message

Peter Wang (2):
      scsi: ufs: core: Fix ufshcd_abort_one racing issue
      scsi: ufs: core: Fix ufshcd_clear_cmd racing issue

And the diffstat:

 drivers/scsi/sd.c          |  5 ++---
 drivers/ufs/core/ufs-mcq.c | 11 ++++++-----
 drivers/ufs/core/ufshcd.c  |  2 ++
 3 files changed, 10 insertions(+), 8 deletions(-)

With full diff below

James

---

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index fe82baa924f8..6203915945a4 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -4117,8 +4117,6 @@ static int sd_resume(struct device *dev)
 {
 	struct scsi_disk *sdkp = dev_get_drvdata(dev);
 
-	sd_printk(KERN_NOTICE, sdkp, "Starting disk\n");
-
 	if (opal_unlock_from_suspend(sdkp->opal_dev)) {
 		sd_printk(KERN_NOTICE, sdkp, "OPAL unlock failed\n");
 		return -EIO;
@@ -4135,12 +4133,13 @@ static int sd_resume_common(struct device *dev, bool runtime)
 	if (!sdkp)	/* E.g.: runtime resume at the start of sd_probe() */
 		return 0;
 
+	sd_printk(KERN_NOTICE, sdkp, "Starting disk\n");
+
 	if (!sd_do_start_stop(sdkp->device, runtime)) {
 		sdkp->suspended = false;
 		return 0;
 	}
 
-	sd_printk(KERN_NOTICE, sdkp, "Starting disk\n");
 	ret = sd_start_stop_device(sdkp, 1);
 	if (!ret) {
 		sd_resume(dev);
diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
index 8944548c30fa..c532416aec22 100644
--- a/drivers/ufs/core/ufs-mcq.c
+++ b/drivers/ufs/core/ufs-mcq.c
@@ -105,16 +105,15 @@ EXPORT_SYMBOL_GPL(ufshcd_mcq_config_mac);
  * @hba: per adapter instance
  * @req: pointer to the request to be issued
  *
- * Return: the hardware queue instance on which the request would
- * be queued.
+ * Return: the hardware queue instance on which the request will be or has
+ * been queued. %NULL if the request has already been freed.
  */
 struct ufs_hw_queue *ufshcd_mcq_req_to_hwq(struct ufs_hba *hba,
 					 struct request *req)
 {
-	u32 utag = blk_mq_unique_tag(req);
-	u32 hwq = blk_mq_unique_tag_to_hwq(utag);
+	struct blk_mq_hw_ctx *hctx = READ_ONCE(req->mq_hctx);
 
-	return &hba->uhq[hwq];
+	return hctx ? &hba->uhq[hctx->queue_num] : NULL;
 }
 
 /**
@@ -515,6 +514,8 @@ int ufshcd_mcq_sq_cleanup(struct ufs_hba *hba, int task_tag)
 		if (!cmd)
 			return -EINVAL;
 		hwq = ufshcd_mcq_req_to_hwq(hba, scsi_cmd_to_rq(cmd));
+		if (!hwq)
+			return 0;
 	} else {
 		hwq = hba->dev_cmd_queue;
 	}
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 1b65e6ae4137..46433ecf0c4d 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -6456,6 +6456,8 @@ static bool ufshcd_abort_one(struct request *rq, void *priv)
 	/* Release cmd in MCQ mode if abort succeeds */
 	if (is_mcq_enabled(hba) && (*ret == 0)) {
 		hwq = ufshcd_mcq_req_to_hwq(hba, scsi_cmd_to_rq(lrbp->cmd));
+		if (!hwq)
+			return 0;
 		spin_lock_irqsave(&hwq->cq_lock, flags);
 		if (ufshcd_cmd_inflight(lrbp->cmd))
 			ufshcd_release_scsi_cmd(hba, lrbp);

.

From: Ian Abbott <abbotti@mev.co.uk>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Ian Abbott <abbotti@mev.co.uk>,
	H Hartley Sweeten <hsweeten@visionengravers.com>,
	Mirsad Todorovac <mtodorovac69@gmail.com>
Subject: [PATCH] staging: comedi: ni_*: do not declare unused variable range_ni_E_ao_ext
Date: Wed, 10 Jul 2024 18:37:19 +0100
Message-ID: <20240710173719.3559437-1-abbotti@mev.co.uk>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Classification-ID: 3d444693-b8ce-4e33-8baf-6beb2feabbf9-1-1
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274019
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Mirsad Todorovac reported a compiler warning in "ni_stc.h" due to the
variable `range_ni_E_ao_ext` being defined but unused when building the
"ni_routes_test" module.

The `range_ni_E_ao_ext` variable is tentatively defined in "ni_stc.h"
(with internal linkage) and fully defined in "ni_mio_common.c".
"ni_stc.h" and/or "ni_mio_common.c" are included by the "ni_atmio",
"ni_pcimio", "ni_mio_cs", and "ni_routes_test" modules, which will each
get their own local `range_ni_E_ao_ext` variable defined.  However, it
is not used by the "ni_mio_cs" or "ni_routes_test" modules.  They should
get optimized out, but there are compiler warnings about the unused
variable when built with the `W=1` option.

Move the full definition of the variable from "ni_mio_common.c" into the
places where it is used, namely "ni_atmio.c" and "ni_pcimio.c", and
remove the tentative definition of the variable from "ni_stc.h".  This
fixes the compiler warnings.

Reported-by: Mirsad Todorovac <mtodorovac69@gmail.com>
Link: https://lore.kernel.org/lkml/3bab8580-c01a-4183-94af-ba3193c94c0e@gmail.com/
Cc: Mirsad Todorovac <mtodorovac69@gmail.com>
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
Note: The linked report also covers similar warnings elsewhere in the
kernel, so is not closed by this patch.
---
 drivers/comedi/drivers/ni_atmio.c      | 9 +++++++++
 drivers/comedi/drivers/ni_mio_common.c | 9 ---------
 drivers/comedi/drivers/ni_pcimio.c     | 9 +++++++++
 drivers/comedi/drivers/ni_stc.h        | 2 --
 4 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/drivers/comedi/drivers/ni_atmio.c b/drivers/comedi/drivers/ni_atmio.c
index 8876a1d24c56..330ae1c58800 100644
--- a/drivers/comedi/drivers/ni_atmio.c
+++ b/drivers/comedi/drivers/ni_atmio.c
@@ -79,6 +79,15 @@
 
 #include "ni_stc.h"
 
+static const struct comedi_lrange range_ni_E_ao_ext = {
+	4, {
+		BIP_RANGE(10),
+		UNI_RANGE(10),
+		RANGE_ext(-1, 1),
+		RANGE_ext(0, 1)
+	}
+};
+
 /* AT specific setup */
 static const struct ni_board_struct ni_boards[] = {
 	{
diff --git a/drivers/comedi/drivers/ni_mio_common.c b/drivers/comedi/drivers/ni_mio_common.c
index 980f309d6de7..3acb449d293c 100644
--- a/drivers/comedi/drivers/ni_mio_common.c
+++ b/drivers/comedi/drivers/ni_mio_common.c
@@ -166,15 +166,6 @@ static const struct comedi_lrange range_ni_M_ai_628x = {
 	}
 };
 
-static const struct comedi_lrange range_ni_E_ao_ext = {
-	4, {
-		BIP_RANGE(10),
-		UNI_RANGE(10),
-		RANGE_ext(-1, 1),
-		RANGE_ext(0, 1)
-	}
-};
-
 static const struct comedi_lrange *const ni_range_lkup[] = {
 	[ai_gain_16] = &range_ni_E_ai,
 	[ai_gain_8] = &range_ni_E_ai_limited,
diff --git a/drivers/comedi/drivers/ni_pcimio.c b/drivers/comedi/drivers/ni_pcimio.c
index 0b055321023d..f63c390314e1 100644
--- a/drivers/comedi/drivers/ni_pcimio.c
+++ b/drivers/comedi/drivers/ni_pcimio.c
@@ -102,6 +102,15 @@
 
 #define PCIDMA
 
+static const struct comedi_lrange range_ni_E_ao_ext = {
+	4, {
+		BIP_RANGE(10),
+		UNI_RANGE(10),
+		RANGE_ext(-1, 1),
+		RANGE_ext(0, 1)
+	}
+};
+
 /*
  * These are not all the possible ao ranges for 628x boards.
  * They can do OFFSET +- REFERENCE where OFFSET can be
diff --git a/drivers/comedi/drivers/ni_stc.h b/drivers/comedi/drivers/ni_stc.h
index fbc0b753a0f5..7837e4683c6d 100644
--- a/drivers/comedi/drivers/ni_stc.h
+++ b/drivers/comedi/drivers/ni_stc.h
@@ -1137,6 +1137,4 @@ struct ni_private {
 	u8 rgout0_usage;
 };
 
-static const struct comedi_lrange range_ni_E_ao_ext;
-
 #endif /* _COMEDI_NI_STC_H */
-- 
2.43.0

.

From: Pavel Begunkov <asml.silence@gmail.com>
To: io-uring@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>,
	asml.silence@gmail.com,
	Oleg Nesterov <oleg@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Christian Brauner <brauner@kernel.org>,
	Tycho Andersen <tandersen@netflix.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-kernel@vger.kernel.org,
	Julian Orth <ju.orth@gmail.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Tejun Heo <tj@kernel.org>
Subject: [PATCH v3 0/2] fix task_work interation with freezing
Date: Wed, 10 Jul 2024 18:58:16 +0100
Message-ID: <cover.1720634146.git.asml.silence@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274021
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.io-uring
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

It's reported [1] that a task_work queued at a wrong time can prevent
freezing and make the tasks to spin in get_signal() taking 100%
of CPU. Patch 1 is a preparation. Patch 2 addresses the issue.

[1] https://github.com/systemd/systemd/issues/33626

v3: Slightly adjust commit messages
v2: Move task_work_run() into do_freezer_trap()
    Correct the Fixes tag is 2/2

Pavel Begunkov (2):
  io_uring/io-wq: limit retrying worker initialisation
  kernel: rerun task_work while freezing in get_signal()

 io_uring/io-wq.c | 10 +++++++---
 kernel/signal.c  |  8 ++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

-- 
2.44.0

.

From: Ian Abbott <abbotti@mev.co.uk>
To: linux-rtc@vger.kernel.org
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>,
	linux-kernel@vger.kernel.org,
	Ian Abbott <abbotti@mev.co.uk>,
	stable@vger.kernel.org,
	Linus Walleij <linus.walleij@linaro.org>,
	Mark Brown <broonie@kernel.org>
Subject: [RESEND PATCH] rtc: ds1343: Force SPI chip select to be active high
Date: Wed, 10 Jul 2024 18:52:07 +0100
Message-ID: <20240710175246.3560207-1-abbotti@mev.co.uk>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Classification-ID: cd498383-a11f-45b4-a4c9-74a0458dea8a-1-1
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274026
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Commit 3b52093dc917 ("rtc: ds1343: Do not hardcode SPI mode flags")
bit-flips (^=) the existing SPI_CS_HIGH setting in the SPI mode during
device probe.  This will set it to the wrong value if the spi-cs-high
property has been set in the devicetree node.  Just force it to be set
active high and get rid of some commentary that attempted to explain why
flipping the bit was the correct choice.

Fixes: 3b52093dc917 ("rtc: ds1343: Do not hardcode SPI mode flags")
Cc: <stable@vger.kernel.org> # 5.6+
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
 drivers/rtc/rtc-ds1343.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/rtc/rtc-ds1343.c b/drivers/rtc/rtc-ds1343.c
index ed5a6ba89a3e..484b5756b55c 100644
--- a/drivers/rtc/rtc-ds1343.c
+++ b/drivers/rtc/rtc-ds1343.c
@@ -361,13 +361,10 @@ static int ds1343_probe(struct spi_device *spi)
 	if (!priv)
 		return -ENOMEM;
 
-	/* RTC DS1347 works in spi mode 3 and
-	 * its chip select is active high. Active high should be defined as
-	 * "inverse polarity" as GPIO-based chip selects can be logically
-	 * active high but inverted by the GPIO library.
+	/*
+	 * RTC DS1347 works in spi mode 3 and its chip select is active high.
 	 */
-	spi->mode |= SPI_MODE_3;
-	spi->mode ^= SPI_CS_HIGH;
+	spi->mode |= SPI_MODE_3 | SPI_CS_HIGH;
 	spi->bits_per_word = 8;
 	res = spi_setup(spi);
 	if (res)
-- 
2.43.0

.

Message-ID: <39591663-9151-42f9-9906-4684acaa685c@gmail.com>
Date: Wed, 10 Jul 2024 20:09:27 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
From: Mirsad Todorovac <mtodorovac69@gmail.com>
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: =?UTF-8?Q?=5BPROBLEM_linux-next=5D_fs/reiserfs/do=5Fbalan=2Ec=3A114?=
 =?UTF-8?B?NzoxMzogZXJyb3I6IHZhcmlhYmxlIOKAmGxlYWZfbWnigJkgc2V0IGJ1dCBub3Qg?=
 =?UTF-8?Q?used_=5B-Werror=3Dunused-but-set-variable=5D?=
Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>, Kees Cook
 <kees@kernel.org>, Christian Brauner <brauner@kernel.org>,
 Jan Kara <jack@suse.cz>, "Matthew Wilcox (Oracle)" <willy@infradead.org>,
 Al Viro <viro@zeniv.linux.org.uk>, Jeff Layton <jlayton@kernel.org>,
 reiserfs-devel@vger.kernel.org
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274030
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.reiserfs-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Dear all,

On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F
which was known from before to trigger various errors in compile and build process.

Though this might seem as contributing to channel noise, Linux refuses to build this config,
treating warnings as errors, using this build line:

$ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date

As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty
left, there seems to be more tedious work ahead to make the compilers happy.

The compiler output is:

---------------------------------------------------------------------------------------------------------
fs/reiserfs/do_balan.c: In function â€˜balance_leaf_new_nodes_paste_wholeâ€™:
fs/reiserfs/do_balan.c:1147:13: error: variable â€˜leaf_miâ€™ set but not used [-Werror=unused-but-set-variable]
 1147 |         int leaf_mi;
      |             ^~~~~~~
  CC      fs/reiserfs/lbalance.o
fs/reiserfs/fix_node.c: In function â€˜dc_check_balance_leafâ€™:
fs/reiserfs/fix_node.c:1938:13: error: variable â€˜maxsizeâ€™ set but not used [-Werror=unused-but-set-variable]
 1938 |         int maxsize, ret;
      |             ^~~~~~~
fs/reiserfs/fix_node.c:1935:13: error: variable â€˜levbytesâ€™ set but not used [-Werror=unused-but-set-variable]
 1935 |         int levbytes;
      |             ^~~~~~~~
fs/reiserfs/prints.c: In function â€˜prepare_error_bufâ€™:
fs/reiserfs/prints.c:221:17: error: function â€˜prepare_error_bufâ€™ might be a candidate for â€˜gnu_printfâ€™ format attribute [-Werror=suggest-attribute=format]
  221 |                 p += vscnprintf(p, end - p, fmt1, args);
      |                 ^
fs/reiserfs/prints.c:260:9: error: function â€˜prepare_error_bufâ€™ might be a candidate for â€˜gnu_printfâ€™ format attribute [-Werror=suggest-attribute=format]
  260 |         p += vscnprintf(p, end - p, fmt1, args);
      |         ^
make[4]: Target 'arch/x86/kernel/' not remade because of errors.
make[3]: *** [scripts/Makefile.build:485: arch/x86/kernel] Error 2
make[3]: Target 'arch/x86/' not remade because of errors.
make[2]: *** [scripts/Makefile.build:485: arch/x86] Error 2
fs/reiserfs/lbalance.c: In function â€˜leaf_copy_itemsâ€™:
fs/reiserfs/lbalance.c:524:29: error: variable â€˜destâ€™ set but not used [-Werror=unused-but-set-variable]
  524 |         struct buffer_head *dest;
      |                             ^~~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:244: fs/reiserfs/do_balan.o] Error 1
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:244: fs/reiserfs/prints.o] Error 1
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:244: fs/reiserfs/fix_node.o] Error 1
---------------------------------------------------------------------------------------------------------

In fs/reiserfs/fix_node.c:1938:13, fs/reiserfs/fix_node.c:1935:13, and fs/reiserfs/lbalance.c:524:29,
the problem seem to lie within the construct RFALSE(), like

 521 static int leaf_copy_items(struct buffer_info *dest_bi, struct buffer_head *src,
 522                            int last_first, int cpy_num, int cpy_bytes)
 523 {
 524         struct buffer_head *dest;
 525         int pos, i, src_nr_item, bytes;
 526 
 527         dest = dest_bi->bi_bh;
 528         RFALSE(!dest || !src, "vs-10210: !dest || !src");
 529         RFALSE(last_first != FIRST_TO_LAST && last_first != LAST_TO_FIRST,
 530                "vs-10220:last_first != FIRST_TO_LAST && last_first != LAST_TO_FIRST");
 531         RFALSE(B_NR_ITEMS(src) < cpy_num,
 532                "vs-10230: No enough items: %d, req. %d", B_NR_ITEMS(src),
 533                cpy_num);
 534         RFALSE(cpy_num < 0, "vs-10240: cpy_num < 0 (%d)", cpy_num);

Hope this helps.

Best regards,
Mirsad Todorovac
.

Message-ID: <a8b20c72-6631-4404-9e1f-0410642d7d20@gmail.com>
Date: Wed, 10 Jul 2024 20:14:19 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Martin KaFai Lau <martin.lau@linux.dev>,
 Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>,
 Andrii Nakryiko <andrii@kernel.org>, Eduard Zingerman <eddyz87@gmail.com>,
 Song Liu <song@kernel.org>, Yonghong Song <yonghong.song@linux.dev>,
 John Fastabend <john.fastabend@gmail.com>, KP Singh <kpsingh@kernel.org>,
 Stanislav Fomichev <sdf@fomichev.me>, Hao Luo <haoluo@google.com>,
 Jiri Olsa <jolsa@kernel.org>, bpf@vger.kernel.org
From: Mirsad Todorovac <mtodorovac69@gmail.com>
Subject: =?UTF-8?Q?=5BPROBLEM_linux-next=5D_/kernel/bpf/btf=2Ec=3A7581=3A9?=
 =?UTF-8?B?OiBlcnJvcjogZnVuY3Rpb24g4oCYYnRmX3NucHJpbnRmX3Nob3figJkgbWlnaHQg?=
 =?UTF-8?Q?be_a_candidate_for_=E2=80=98gnu=5Fprintf=E2=80=99_format_attribut?=
 =?UTF-8?Q?e_=5B-Werror=3Dsuggest-attribute=3Dformat=5D?=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274035
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Dear all,

On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F
which was known from before to trigger various errors in compile and build process.

Though this might seem as contributing to channel noise, Linux refuses to build this config,
treating warnings as errors, using this build line:

$ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date

As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty
left, there seems to be more tedious work ahead to make the compilers happy.

The compiler output is:

./kernel/bpf/btf.c: In function â€˜btf_seq_showâ€™:
./kernel/bpf/btf.c:7544:29: error: function â€˜btf_seq_showâ€™ might be a candidate for â€˜gnu_printfâ€™ format attribute [-Werror=suggest-attribute=format]
 7544 |         seq_vprintf((struct seq_file *)show->target, fmt, args);
      |                             ^~~~~~~~
./kernel/bpf/btf.c: In function â€˜btf_snprintf_showâ€™:
./kernel/bpf/btf.c:7581:9: error: function â€˜btf_snprintf_showâ€™ might be a candidate for â€˜gnu_printfâ€™ format attribute [-Werror=suggest-attribute=format]
 7581 |         len = vsnprintf(show->target, ssnprintf->len_left, fmt, args);
      |         ^~~

This doesn't seem alarming, but it prevents build with this config.

7541 static void btf_seq_show(struct btf_show *show, const char *fmt,
7542                          va_list args)
7543 {
7544      â†’ seq_vprintf((struct seq_file *)show->target, fmt, args);
7545 }
7546 

7575 static void btf_snprintf_show(struct btf_show *show, const char *fmt,
7576                               va_list args)
7577 {
7578         struct btf_show_snprintf *ssnprintf = (struct btf_show_snprintf *)show;
7579         int len;
7580 
7581       â†’ len = vsnprintf(show->target, ssnprintf->len_left, fmt, args);
7582 
7583         if (len < 0) {
7584                 ssnprintf->len_left = 0;
7585                 ssnprintf->len = len;
7586         } else if (len >= ssnprintf->len_left) {
7587                 /* no space, drive on to get length we would have written */
7588                 ssnprintf->len_left = 0;
7589                 ssnprintf->len += len;
7590         } else {
7591                 ssnprintf->len_left -= len;
7592                 ssnprintf->len += len;
7593                 show->target += len;
7594         }
7595 }

Hope this helps.

Best regards,
Mirsad Todorovac
.

From: "Rob Herring (Arm)" <robh@kernel.org>
To: Will Deacon <will@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] perf: arm_pmuv3: Fix chained event check for cycle counter
Date: Wed, 10 Jul 2024 12:23:56 -0600
Message-ID: <20240710182357.3701635-1-robh@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274041
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Since commit b7e89b0f5bd7 ("perf: arm_pmu: Remove event index to
counter remapping"), armv8pmu_event_is_chained() is incorrectly
returning that the cycle counter is chained, but the cycle counter has
always been 64-bit. The result is trying to configure counter #30 which
typically doesn't exist.

As ARMV8_PMU_MAX_GENERAL_COUNTERS is the number of counters (31), the
comparison to the counter index needs to be '<' rather than '<='.

Fixes: b7e89b0f5bd7 ("perf: arm_pmu: Remove event index to counter remapping")
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
---
 drivers/perf/arm_pmuv3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/perf/arm_pmuv3.c b/drivers/perf/arm_pmuv3.c
index 3b3a3334cc3f..0e22c68fb804 100644
--- a/drivers/perf/arm_pmuv3.c
+++ b/drivers/perf/arm_pmuv3.c
@@ -482,7 +482,7 @@ static bool armv8pmu_event_is_chained(struct perf_event *event)
 	return !armv8pmu_event_has_user_read(event) &&
 	       armv8pmu_event_is_64bit(event) &&
 	       !armv8pmu_has_long_event(cpu_pmu) &&
-	       (idx <= ARMV8_PMU_MAX_GENERAL_COUNTERS);
+	       (idx < ARMV8_PMU_MAX_GENERAL_COUNTERS);
 }
 
 /*
-- 
2.43.0

.

From: Waiman Long <longman@redhat.com>
To: Tejun Heo <tj@kernel.org>,
	Zefan Li <lizefan.x@bytedance.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Jonathan Corbet <corbet@lwn.net>
Cc: cgroups@vger.kernel.org,
	linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Kamalesh Babulal <kamalesh.babulal@oracle.com>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Waiman Long <longman@redhat.com>
Subject: [PATCH v3 1/2] cgroup: Show # of subsystem CSSes in cgroup.stat
Date: Wed, 10 Jul 2024 14:23:52 -0400
Message-Id: <20240710182353.2312025-1-longman@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274043
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.cgroups,org.kernel.vger.linux-doc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Cgroup subsystem state (CSS) is an abstraction in the cgroup layer to
help manage different structures in various cgroup subsystems by being
an embedded element inside a larger structure like cpuset or mem_cgroup.

The /proc/cgroups file shows the number of cgroups for each of the
subsystems.  With cgroup v1, the number of CSSes is the same as the
number of cgroups.  That is not the case anymore with cgroup v2. The
/proc/cgroups file cannot show the actual number of CSSes for the
subsystems that are bound to cgroup v2.

So if a v2 cgroup subsystem is leaking cgroups (usually memory cgroup),
we can't tell by looking at /proc/cgroups which cgroup subsystems may
be responsible.

As cgroup v2 had deprecated the use of /proc/cgroups, the hierarchical
cgroup.stat file is now being extended to show the number of live and
dying CSSes associated with all the non-inhibited cgroup subsystems
that have been bound to cgroup v2 as long as it is not zero.  The number
includes CSSes in the current cgroup as well as in all the descendants
underneath it.  This will help us pinpoint which subsystems are
responsible for the increasing number of dying (nr_dying_descendants)
cgroups.

The cgroup-v2.rst file is updated to discuss this new behavior.

With this patch applied, a sample output from root cgroup.stat file
was shown below.

	nr_descendants 54
	nr_dying_descendants 44
	nr_cpuset 1
	nr_cpu 40
	nr_io 40
	nr_memory 54
	nr_dying_memory 44
	nr_perf_event 55
	nr_hugetlb 1
	nr_pids 54
	nr_rdma 1
	nr_misc 1

Another sample output from system.slice/cgroup.stat was:

	nr_descendants 32
	nr_dying_descendants 37
	nr_cpu 30
	nr_io 30
	nr_memory 32
	nr_dying_memory 37
	nr_perf_event 33
	nr_pids 32

Signed-off-by: Waiman Long <longman@redhat.com>
---
 Documentation/admin-guide/cgroup-v2.rst | 14 ++++++-
 include/linux/cgroup-defs.h             |  7 ++++
 kernel/cgroup/cgroup.c                  | 50 ++++++++++++++++++++++++-
 3 files changed, 68 insertions(+), 3 deletions(-)

diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst
index 52763d6b2919..9031419271cd 100644
--- a/Documentation/admin-guide/cgroup-v2.rst
+++ b/Documentation/admin-guide/cgroup-v2.rst
@@ -981,6 +981,16 @@ All cgroup core files are prefixed with "cgroup."
 		A dying cgroup can consume system resources not exceeding
 		limits, which were active at the moment of cgroup deletion.
 
+	  nr_<cgroup_subsys>
+		Total number of live cgroups associated with that cgroup
+		subsystem (e.g. memory) at and beneath the current
+		cgroup.  An entry will only be shown if it is not zero.
+
+	  nr_dying_<cgroup_subsys>
+		Total number of dying cgroups associated with that cgroup
+		subsystem (e.g. memory) beneath the current cgroup.
+		An entry will only be shown if it is not zero.
+
   cgroup.freeze
 	A read-write single value file which exists on non-root cgroups.
 	Allowed values are "0" and "1". The default is "0".
@@ -2930,8 +2940,8 @@ Deprecated v1 Core Features
 
 - "cgroup.clone_children" is removed.
 
-- /proc/cgroups is meaningless for v2.  Use "cgroup.controllers" file
-  at the root instead.
+- /proc/cgroups is meaningless for v2.  Use "cgroup.controllers" or
+  "cgroup.stat" files at the root instead.
 
 
 Issues with v1 and Rationales for v2
diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h
index b36690ca0d3f..62de18874508 100644
--- a/include/linux/cgroup-defs.h
+++ b/include/linux/cgroup-defs.h
@@ -210,6 +210,13 @@ struct cgroup_subsys_state {
 	 * fields of the containing structure.
 	 */
 	struct cgroup_subsys_state *parent;
+
+	/*
+	 * Keep track of total numbers of visible and dying descendant CSSes.
+	 * Protected by cgroup_mutex.
+	 */
+	int nr_descendants;
+	int nr_dying_descendants;
 };
 
 /*
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index c8e4b62b436a..18c982a06446 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -3669,12 +3669,34 @@ static int cgroup_events_show(struct seq_file *seq, void *v)
 static int cgroup_stat_show(struct seq_file *seq, void *v)
 {
 	struct cgroup *cgroup = seq_css(seq)->cgroup;
+	struct cgroup_subsys_state *css;
+	int ssid;
 
+	/* cgroup_mutex required for for_each_css() */
+	cgroup_lock();
 	seq_printf(seq, "nr_descendants %d\n",
 		   cgroup->nr_descendants);
 	seq_printf(seq, "nr_dying_descendants %d\n",
 		   cgroup->nr_dying_descendants);
 
+	/*
+	 * Show the number of live and dying csses associated with each of
+	 * non-inhibited cgroup subsystems bound to cgroup v2 if non-zero.
+	 */
+	for_each_css(css, ssid, cgroup) {
+		if ((BIT(ssid) & cgrp_dfl_inhibit_ss_mask) ||
+		    (cgroup_subsys[ssid]->root !=  &cgrp_dfl_root))
+			continue;
+
+		seq_printf(seq, "nr_%s %d\n", cgroup_subsys[ssid]->name,
+			   css->nr_descendants + 1);
+		/* Current css is online */
+		if (css->nr_dying_descendants)
+			seq_printf(seq, "nr_dying_%s %d\n",
+				   cgroup_subsys[ssid]->name,
+				   css->nr_dying_descendants);
+	}
+	cgroup_unlock();
 	return 0;
 }
 
@@ -5424,6 +5446,8 @@ static void css_release_work_fn(struct work_struct *work)
 	list_del_rcu(&css->sibling);
 
 	if (ss) {
+		struct cgroup_subsys_state *parent_css;
+
 		/* css release path */
 		if (!list_empty(&css->rstat_css_node)) {
 			cgroup_rstat_flush(cgrp);
@@ -5433,6 +5457,14 @@ static void css_release_work_fn(struct work_struct *work)
 		cgroup_idr_replace(&ss->css_idr, NULL, css->id);
 		if (ss->css_released)
 			ss->css_released(css);
+
+		WARN_ON_ONCE(css->nr_descendants || css->nr_dying_descendants);
+		parent_css = css->parent;
+		while (parent_css) {
+			parent_css->nr_dying_descendants--;
+			parent_css = parent_css->parent;
+		}
+		css_put(css->parent);	/* Parent can be freed now */
 	} else {
 		struct cgroup *tcgrp;
 
@@ -5517,8 +5549,11 @@ static int online_css(struct cgroup_subsys_state *css)
 		rcu_assign_pointer(css->cgroup->subsys[ss->id], css);
 
 		atomic_inc(&css->online_cnt);
-		if (css->parent)
+		if (css->parent) {
 			atomic_inc(&css->parent->online_cnt);
+			while ((css = css->parent))
+				css->nr_descendants++;
+		}
 	}
 	return ret;
 }
@@ -5540,6 +5575,19 @@ static void offline_css(struct cgroup_subsys_state *css)
 	RCU_INIT_POINTER(css->cgroup->subsys[ss->id], NULL);
 
 	wake_up_all(&css->cgroup->offline_waitq);
+
+	/*
+	 * Get a reference to parent css to ensure reliable access to its
+	 * nr_dying_descendants until after this child css is ready to be
+	 * freed.
+	 */
+	if (css->parent)
+		css_get(css->parent);
+
+	while ((css = css->parent)) {
+		css->nr_descendants--;
+		css->nr_dying_descendants++;
+	}
 }
 
 /**
-- 
2.39.3

.

From: Juntong Deng <juntong.deng@outlook.com>
To: ast@kernel.org,
	daniel@iogearbox.net,
	john.fastabend@gmail.com,
	martin.lau@linux.dev,
	eddyz87@gmail.com,
	song@kernel.org,
	yonghong.song@linux.dev,
	kpsingh@kernel.org,
	sdf@fomichev.me,
	haoluo@google.com,
	jolsa@kernel.org,
	andrii@kernel.org,
	avagin@gmail.com,
	snorcht@gmail.com
Cc: bpf@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [RFC PATCH 00/16] bpf: Checkpoint/Restore In eBPF (CRIB)
Date: Wed, 10 Jul 2024 19:40:44 +0100
Message-ID: <AM6PR03MB58480B81F491E8A34241EB3E99A42@AM6PR03MB5848.eurprd03.prod.outlook.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274055
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Overview
--------

This patch series adds a new bpf program type CRIB (Checkpoint/Restore
In eBPF) for better checkpoint/restore of processes. CRIB provides a new
way to dump/restore process information for better performance, more
flexibility, more extensibility (easier support for dumping/restoring
more information), and more elegant implementation.

Motivation
----------

The original goal of the CRIU (Checkpoint/Restore In Userspace) project
was to implement most of the checkpoint/restore functionality in
userspace [0], avoiding placing most of the implementation in the kernel.
The CRIU project achieves this goal and is currently widely used for
live migration in the cloud and works well in most scenarios. However,
the current technology that CRIU relies on is not optimal and has
some problems.

[0]: https://lwn.net/Articles/451916/

1. CRIU relies heavily on procfs to get process information (checkpoint)

Procfs is not really a good place to use for checkpointing processes
(same for sysfs).

- Lots of system calls, lots of context switches (each file needs to
open, read, close)

- Variety of formats (each file format is different and parsers need to
be implemented for each format)

- Fixed return information (if the information needed is not currently
supported by procfs, even if it is just a struct member, the upstream
kernel code still needs to be modified to add it)

- Non-extensible formats (the format of some files in the procfs cannot
be extended without breaking backward compatibility)

- Lots of extra information, slow to read (not all information in some
files is useful for checkpoint, and text parsing is inefficient)

More detailed summary of why procfs is not suitable for checkpointing
can be found in [1].

[1]: https://criu.org/Task-diag

Andrey has tried to replace insufficient procfs by using netlink 
(task_diag) [2], but it was not accepted by upstream for reasons
[3][4][5][6]:

- netlink is unable to elegantly obtain the pidns and userns
of processes

- Since the namespace issue cannot be resolved elegantly,
obtaining process information via netlink can lead to credential
security issues.

[2]: https://lwn.net/Articles/650243/
[3]: https://lore.kernel.org/linux-kernel//CALCETrVg5AyeXW_AGguFoGCPK9_2zeobEgT9JJFsakH6PyQf_A@mail.gmail.com/
[4]: https://lore.kernel.org/linux-kernel//CALCETrVSRkMSAVPz9JW4XCV7DmrgkyGK54HRUrue2R756f5C=Q@mail.gmail.com/
[5]: https://lore.kernel.org/linux-kernel//CALCETrW4LU3M2OAWjnckFR-rqenBjV+ROBi8B3eOo=Y_mCWfGQ@mail.gmail.com/
[6]: https://lore.kernel.org/linux-kernel//CALCETrUzOBybH0-rcgvzMNazjadZpuxkBZLkoUDY30X_-cqBzg@mail.gmail.com/

2. Some process status information is difficult to dump/restore through
normal interfaces

One example is checkpoint/restore for TCP sockets, where we are unable
to get the underlying protocol information for TCP sockets through
procfs (or sysfs), or through the normal socket API. Here we need to
add TCP repair mode [7][8], which works but is not an elegant approach. 

In TCP repair mode, we need to change (hijack) the behaviour of the
system calls, including recvmsg and sendmsg, used to dump/restore
packets in the socket write/receive queue. In TCP repair mode,
additional getsockopt/setsockopt optnames need to be introduced to
dump/restore the underlying TCP socket information such as sequence
number, send window, receive window, max window.

[7]: https://lwn.net/Articles/495304/
[8]: https://criu.org/TCP_connection

The above approach to extending system calls may be feasible, but not
good practice:

- The structure of the data returned by each system call API is roughly
fixed at the moment it is added. If we need to add new members, then we
may need data structures V1 and V2. If we want to remove members we no
longer need, it would be painful because we need to maintain backward
compatibility. More often we need new extensions to system calls,
such as the new getsockopt optnames.

- We need case-by-case extensions to system calls. As more and more
features are added to the kernel (e.g. io uring, bpf),
checkpointing/restoring these features via the normal API will become
more and more difficult (or even impossible). We have had to continue
to add (extend) lots of single-purpose (perhaps only for
checkpoint/restore) interfaces for various kernel features ,
more xxx repair modes, ioctl commands, getxxxopt/setxxxopt optnames.
Obviously, these interfaces are not elegant and may even be
considered cumbersome.

CRIB introduction
-----------------

CRIB is a new bpf program type that is not attached to any hooks
(similar to BPF_PROG_TYPE_SYSCALL), runs through BPF_PROG_RUN, and is
called by userspace programs as eBPF API for dumping/restoring
process information.

The entire CRIB consists of three parts, CRIB kfuncs, CRIB ebpf programs,
and CRIB user space program.

- CRIB kfuncs provides low-level APIs. Each kfuncs low-level API is only
responsible for one small task, such as getting a specific file object
based on the file descriptor of a process.

- CRIB ebpf program provides high-level APIs. Each CRIB ebpf program
obtains process information in the kernel by calling the CRIB kfuncs
API and returns the data to the userspace program through ringbuf.
Each CRIB ebpf API is responsible for some relatively complex tasks,
such as getting all the socket information of a process.

- The CRIB userspace program is responsible for loading the CRIB ebpf
program and calling the CRIB ebpf API, deciding what needs to be dumped
and what needs to be restored, and saving the dumped information so that
it can be read during restoration.

With the above CRIB design, the CRIB kfunc API in the kernel can be kept
simple enough that it does not require much modification even in the
future. Each kfuncs can be easily kept reliable without a lot of
complicated code.

Complex ebpf programs and userspace programs are maintained outside
the kernel, and CRIB ebpf programs are maintained with
CRIB userspace programs.

My current positioning of CRIB is that CRIU as CRIB userspace program
and CRIB ebpf program can be used as a new engine for CRIU, a new
and better way to dump/restore processes which has higher performance
and can dump/restore more information.

Why CRIB is better?
-------------------

1. More elegant way to get process information

If xxx repair mode, ioctl, getxxxopt, setxxxopt are like using
gastroscope, colonoscope, nasal endoscope, and we need to keep looking
for (add) more "holes" in the kernel for physical examination
(dump/restore information), then using CRIB is like putting an
intelligent micro physical examination robot (ebpf) into the kernel
and letting it work inside the kernel to collect all the information
and return.

We no longer need to open more inelegant "holes" in the kernel, and we
no longer need to add more interfaces that are only used for
checkpoint/restore.

2. More flexible and extensible

CRIB ebpf programs are maintained with CRIB userspace programs,
which means that CRIB ebpf programs do not need to provide stable APIs,
do not need stable structures, and can continue to change flexibly with
the needs of CRIB userspace programs.

Most of the information in kernel data structures can be obtained
through BPF_CORE_READ, so there is no need to add trivial CRIB kfuncs,
and the trivial code for obtaining the structure members can be kept
outside the kernel in the CRIB ebpf program. This means that this part of
the code can be added or removed flexibly.

CRIB kfuncs focuses on implementing dump/restore that cannot be done by
simple data structure operations.

3. Higher performance

- Since CRIB is very flexible (CRIB ebpf programs are changeable), we
can dump/restore just enough information and no additional information
is needed. 

- CRIB ebpf programs can return binary data (not text) via ringbuf,
which means no additional conversion or parsing is required.

- With BPF ringbuf, we avoid lots of system calls, lots of context
switches, and lots of memory copying (between kernel space and
user space).

4. Better support for namespaces and credentials

Since CRIB ebpf programs can access the task_struct of a process,
it is simple for CRIB ebpf programs to know the current namespace
(e.g., pidns, userns) and credentials of a process, and there is no
situation where CRIB cannot know that a process has dropped privileges.

The problems in the netlink method mentioned earlier do not exist
in CRIB.

Proof of Concept
----------------

I have currently added three selftest programs to demonstrate the
functionality of CRIB.

- dump_task shows the performance comparison between CRIB and procfs.
CRIB takes only 20-30% of the time of the procfs to obtain the same
process information.

- dump_all_socket shows that CRIB does not need to rely on procfs to
get all the socket information of a process, and can get the
underlying protocol information (e.g., sequence number, send window)
of TCP sockets without using getsockopt.

- restore_udp_socket shows that CRIB can dump/restore packets from
the write queue and receive queue of UDP sockets without adding
additional system call interfaces and without UDP repair mode.

Shortcoming?
------------

Yes, obviously, loading the ebpf programs takes time.

However, in most scenarios, CRIU runs as a service and is integrated
into other software (via RPC or C API) such as OpenVZ , docker, k8s,
rather than as a standalone tool.

This means that in most scenarios CRIU will handle multiple
checkpoints/restores, but in this case CRIB ebpf programs only need
to be loaded once, and can be subsequently used like normal APIs.

Overall, it is worth it.

More?
-----

In restore_udp_socket I had to add a struct bpf_crib_skb_info for
restoring packets, this is because there is currently no BPF_CORE_WRITE.

I am not sure what the current attitude of the kernel community
towards BPF_CORE_WRITE is, personally I think it is well worth adding,
as we need a portable way to change the value in the kernel.

This not only allows more complexity in the CRIB restoring part to
be transferred from CRIB kfuncs to CRIB ebpf programs, but also allows
ebpf to unlock more possible application scenarios. 

At the end
----------

This patch series is not the final patch series, this is still a
proof of concept, incomplete in functionality and probably buggy,
but I think it is enough to show the power of CRIB, which is a
meaningful innovation.

(I know I did not pay attention to the coding style of the test cases
in selftest, as these are only for proof of concept, not real testing)

This is not only a new checkpoint/restore method, but also allows us
to think about what more eBPF might be able to do, and what more we
can unlock with eBPF.

I would like to get some feedback, welcome to discuss!

Signed-off-by: Juntong Deng <juntong.deng@outlook.com>

Juntong Deng (16):
  bpf: Introduce BPF_PROG_TYPE_CRIB
  bpf: Add KF_ITER_GETTER and KF_ITER_SETTER flags
  bpf: Improve bpf kfuncs pointer arguments chain of trust
  bpf: Add bpf_task_from_vpid() kfunc
  bpf/crib: Add struct file related CRIB kfuncs
  bpf/crib: Introduce task_file open-coded iterator kfuncs
  bpf/crib: Add struct sock related CRIB kfuncs
  bpf/crib: Add CRIB kfuncs for getting pointer to often-used
    socket-related structures
  bpf/crib: Add CRIB kfuncs for getting socket source/destination
    addresses
  bpf/crib: Add struct sk_buff related CRIB kfuncs
  bpf/crib: Introduce skb open-coded iterator kfuncs
  bpf/crib: Introduce skb_data open-coded iterator kfuncs
  bpf/crib: Add CRIB kfuncs for restoring data in skb
  selftests/crib: Add test for getting basic information of the process
  selftests/crib: Add test for getting all socket information of the
    process
  selftests/crib: Add test for dumping/restoring UDP socket packets

 include/linux/bpf_crib.h                      |  62 +++
 include/linux/bpf_types.h                     |   4 +
 include/linux/btf.h                           |   5 +-
 include/uapi/linux/bpf.h                      |   1 +
 kernel/bpf/Kconfig                            |   2 +
 kernel/bpf/Makefile                           |   2 +
 kernel/bpf/btf.c                              |  34 +-
 kernel/bpf/crib/Kconfig                       |  14 +
 kernel/bpf/crib/Makefile                      |   3 +
 kernel/bpf/crib/bpf_checkpoint.c              | 360 ++++++++++++++++
 kernel/bpf/crib/bpf_crib.c                    | 397 ++++++++++++++++++
 kernel/bpf/crib/bpf_restore.c                 |  80 ++++
 kernel/bpf/helpers.c                          |  21 +
 kernel/bpf/syscall.c                          |   1 +
 kernel/bpf/verifier.c                         |  15 +-
 tools/include/uapi/linux/bpf.h                |   1 +
 tools/lib/bpf/libbpf.c                        |   2 +
 tools/lib/bpf/libbpf_probes.c                 |   1 +
 tools/testing/selftests/crib/.gitignore       |   1 +
 tools/testing/selftests/crib/Makefile         | 136 ++++++
 tools/testing/selftests/crib/config           |   7 +
 .../selftests/crib/test_dump_all_socket.bpf.c | 252 +++++++++++
 .../selftests/crib/test_dump_all_socket.c     | 375 +++++++++++++++++
 .../selftests/crib/test_dump_all_socket.h     |  69 +++
 .../selftests/crib/test_dump_task.bpf.c       | 125 ++++++
 tools/testing/selftests/crib/test_dump_task.c | 337 +++++++++++++++
 tools/testing/selftests/crib/test_dump_task.h |  90 ++++
 .../crib/test_restore_udp_socket.bpf.c        | 311 ++++++++++++++
 .../selftests/crib/test_restore_udp_socket.c  | 333 +++++++++++++++
 .../selftests/crib/test_restore_udp_socket.h  |  51 +++
 30 files changed, 3080 insertions(+), 12 deletions(-)
 create mode 100644 include/linux/bpf_crib.h
 create mode 100644 kernel/bpf/crib/Kconfig
 create mode 100644 kernel/bpf/crib/Makefile
 create mode 100644 kernel/bpf/crib/bpf_checkpoint.c
 create mode 100644 kernel/bpf/crib/bpf_crib.c
 create mode 100644 kernel/bpf/crib/bpf_restore.c
 create mode 100644 tools/testing/selftests/crib/.gitignore
 create mode 100644 tools/testing/selftests/crib/Makefile
 create mode 100644 tools/testing/selftests/crib/config
 create mode 100644 tools/testing/selftests/crib/test_dump_all_socket.bpf.c
 create mode 100644 tools/testing/selftests/crib/test_dump_all_socket.c
 create mode 100644 tools/testing/selftests/crib/test_dump_all_socket.h
 create mode 100644 tools/testing/selftests/crib/test_dump_task.bpf.c
 create mode 100644 tools/testing/selftests/crib/test_dump_task.c
 create mode 100644 tools/testing/selftests/crib/test_dump_task.h
 create mode 100644 tools/testing/selftests/crib/test_restore_udp_socket.bpf.c
 create mode 100644 tools/testing/selftests/crib/test_restore_udp_socket.c
 create mode 100644 tools/testing/selftests/crib/test_restore_udp_socket.h

-- 
2.39.2

.

From: Nikita Kiryushin <kiryushin@ancud.ru>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Nikita Kiryushin <kiryushin@ancud.ru>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org,
	"H. Peter Anvin" <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ricardo Neri <ricardo.neri-calderon@linux.intel.com>,
	Waiman Long <longman@redhat.com>,
	linux-kernel@vger.kernel.org,
	lvc-project@linuxtesting.org
Subject: [PATCH] x86/smpboot: Mark memory allocations in smp_prepare_cpus_common __GFP_NOFAIL
Date: Wed, 10 Jul 2024 21:42:40 +0300
Message-Id: <20240710184240.389395-1-kiryushin@ancud.ru>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-MS-Exchange-Organization-SCL: -1
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274066
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

As of now, zalloc_cpumask_var_node for various maps in
smp_prepare_cpus_common is not checked.

As memory allocations here are critical and there is no reasonable
allocation failure policy, the allocations should never fail.

Use __GFP_NOFAIL flag, as suggested in
https://lore.kernel.org/all/ZhaUZFY5MUyy6hWK@gmail.com/

Signed-off-by: Nikita Kiryushin <kiryushin@ancud.ru>
---
 arch/x86/kernel/smpboot.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 0c35207320cb..76fabb74b8ea 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1044,11 +1044,11 @@ void __init smp_prepare_cpus_common(void)
 	for_each_possible_cpu(cpu) {
 		node = cpu_to_node(cpu);
 
-		zalloc_cpumask_var_node(&per_cpu(cpu_sibling_map,    cpu), GFP_KERNEL, node);
-		zalloc_cpumask_var_node(&per_cpu(cpu_core_map,       cpu), GFP_KERNEL, node);
-		zalloc_cpumask_var_node(&per_cpu(cpu_die_map,        cpu), GFP_KERNEL, node);
-		zalloc_cpumask_var_node(&per_cpu(cpu_llc_shared_map, cpu), GFP_KERNEL, node);
-		zalloc_cpumask_var_node(&per_cpu(cpu_l2c_shared_map, cpu), GFP_KERNEL, node);
+		zalloc_cpumask_var_node(&per_cpu(cpu_sibling_map,    cpu), GFP_KERNEL | __GFP_NOFAIL, node);
+		zalloc_cpumask_var_node(&per_cpu(cpu_core_map,       cpu), GFP_KERNEL | __GFP_NOFAIL, node);
+		zalloc_cpumask_var_node(&per_cpu(cpu_die_map,        cpu), GFP_KERNEL | __GFP_NOFAIL, node);
+		zalloc_cpumask_var_node(&per_cpu(cpu_llc_shared_map, cpu), GFP_KERNEL | __GFP_NOFAIL, node);
+		zalloc_cpumask_var_node(&per_cpu(cpu_l2c_shared_map, cpu), GFP_KERNEL | __GFP_NOFAIL, node);
 	}
 
 	set_cpu_sibling_map(0);
-- 
2.34.1

.

From: Joseph Strauss <jstrauss@mailbox.org>
To: lee@kernel.org
Cc: pavel@ucw.cz,
	jansimon.moeller@gmx.de,
	conor@kernel.org,
	christophe.jaillet@wanadoo.fr,
	linux-leds@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Joseph Strauss <jstrauss@mailbox.org>
Subject: [PATCH v8] Add multicolor support to BlinkM LED driver
Date: Wed, 10 Jul 2024 13:48:44 -0500
Message-Id: <20240710184844.108006-1-jstrauss@mailbox.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-MBO-RS-META: 7uk774tk9bduedmz7uz8wgqeo6tthr4y
X-MBO-RS-ID: 51825e8eda8fc8a5208
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274078
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-leds
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add multicolor support to the BlinkM driver, making it easier to control
from userspace. The BlinkM LED is a programmable RGB LED. The driver
currently supports only the regular LED sysfs class, resulting in the
creation of three distinct classes, one for red, green, and blue. The
user then has to input three values into the three seperate brightness
files within those classes. The multicolor LED framework makes the
device easier to control with the multi_intensity file: the user can
input three values at once to form a color, while still controlling the
lightness with the brightness file.

The main struct blinkm_led has changed slightly. The struct led_classdev
for the regular sysfs classes remain. The blinkm_probe function checks
CONFIG_LEDS_BLINKM_MULTICOLOR to decide whether to load the seperate
sysfs classes or the single multicolor one, but never both. The
blinkm_set_mc_brightness() function had to be added to calculate the
three color components and then set the fields of the blinkm_data
structure accordingly.

Signed-off-by: Joseph Strauss <jstrauss@mailbox.org>
---
Changes in v2:
- Replaced instances of the constant 3 with NUM_LEDS, where applicable
- Fixed formatting errors
- Replaced loop inside of blinkm_set_mc_brightness() with equivalent
  statements
- Changed id of multicolor class from 4 to 3
- Replaced call to devm_kmalloc_array() with devm_kcalloc()
Changes in v3:
- Add CONFIG_LEDS_BLINKM_MULTICOLOR to check whether to use multicolor
  funcitonality
- Extend well-known-leds.txt to include standard names for RGB and indicator
  LEDS
- Change name of Blinkm sysfs class according to well-known-leds.txt
- Simplify struct blinkm_led and struct blinkm_data
- Remove magic numbers
- Fix formatting errors
- Remove unrelated changes
Changes in v4:
- Fix indentation
- Add default case to switch statement
Changes in v5:
- Fix warnings related to snprintf on s390 architecture, reported by
  0-DAY CI Kernel Test Service
Changes in v6:
- Refactored struct blinkm_led to use a union
- Refactored blinkm_probe()
- Clarified documentation
Changes in v7:
- Fix formatting and spelling errors
Changes in v8:
- Make compatible with Linux -next

 Documentation/leds/leds-blinkm.rst     |  29 +++-
 Documentation/leds/well-known-leds.txt |   8 +
 drivers/leds/Kconfig                   |   8 +
 drivers/leds/leds-blinkm.c             | 220 +++++++++++++++++--------
 4 files changed, 196 insertions(+), 69 deletions(-)

diff --git a/Documentation/leds/leds-blinkm.rst b/Documentation/leds/leds-blinkm.rst
index 2d3c226a371a..647be1c6c552 100644
--- a/Documentation/leds/leds-blinkm.rst
+++ b/Documentation/leds/leds-blinkm.rst
@@ -13,9 +13,31 @@ The device accepts RGB and HSB color values through separate commands.
 Also you can store blinking sequences as "scripts" in
 the controller and run them. Also fading is an option.
 
-The interface this driver provides is 2-fold:
+The interface this driver provides is 3-fold:
 
-a) LED class interface for use with triggers
+a) LED multicolor class interface for use with triggers
+#######################################################
+
+The registration follows the scheme::
+
+  blinkm-<i2c-bus-nr>-<i2c-device-nr>:rgb:indicator
+
+  $ ls -h /sys/class/leds/blinkm-1-9:rgb:indicator
+  brightness  device  max_brightness  multi_index  multi_intensity  power  subsystem  trigger  uevent
+
+Hue is controlled by the multi_intensity file and lightness is controlled by
+the brightness file.
+
+The order in which to write the intensity values can be found in multi_index.
+Exactly three values between 0 and 255 must be written to multi_intensity to
+change the color::
+
+  $ echo 255 100 50 > multi_intensity
+
+The overall lightness be changed by writing a value between 0 and 255 to the
+brightness file.
+
+b) LED class interface for use with triggers
 ############################################
 
 The registration follows the scheme::
@@ -79,6 +101,7 @@ E.g.::
 
 
 
-as of 6/2012
+as of 07/2024
 
 dl9pf <at> gmx <dot> de
+jstrauss <at> mailbox <dot> org
diff --git a/Documentation/leds/well-known-leds.txt b/Documentation/leds/well-known-leds.txt
index 67b44704801f..17ef78faf1f3 100644
--- a/Documentation/leds/well-known-leds.txt
+++ b/Documentation/leds/well-known-leds.txt
@@ -72,6 +72,14 @@ Good: "platform:*:charging" (allwinner sun50i, leds-cht-wcove)
 
 Good: ":backlight" (Motorola Droid 4)
 
+* Indicators
+
+Good: ":indicator" (Blinkm)
+
+* RGB
+
+Good: ":rgb" (Blinkm)
+
 * Ethernet LEDs
 
 Currently two types of Network LEDs are support, those controlled by
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index 8d9d8da376e4..2e7831867315 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -825,6 +825,14 @@ config LEDS_BLINKM
 	  This option enables support for the BlinkM RGB LED connected
 	  through I2C. Say Y to enable support for the BlinkM LED.
 
+config LEDS_BLINKM_MULTICOLOR
+	bool "Enable multicolor support for BlinkM I2C RGB LED"
+	depends on LEDS_BLINKM
+	depends on LEDS_CLASS_MULTICOLOR
+	help
+	  This option enables multicolor sysfs class support for BlinkM LED and
+	  disables the older, separated sysfs interface
+
 config LEDS_POWERNV
 	tristate "LED support for PowerNV Platform"
 	depends on LEDS_CLASS
diff --git a/drivers/leds/leds-blinkm.c b/drivers/leds/leds-blinkm.c
index e40b87aead2d..577497b9d426 100644
--- a/drivers/leds/leds-blinkm.c
+++ b/drivers/leds/leds-blinkm.c
@@ -2,6 +2,7 @@
 /*
  *  leds-blinkm.c
  *  (c) Jan-Simon MÃ¶ller (dl9pf@gmx.de)
+ *  (c) Joseph Strauss (jstrauss@mailbox.org)
  */
 
 #include <linux/module.h>
@@ -15,6 +16,10 @@
 #include <linux/pm_runtime.h>
 #include <linux/leds.h>
 #include <linux/delay.h>
+#include <linux/led-class-multicolor.h>
+#include <linux/kconfig.h>
+
+#define NUM_LEDS 3
 
 /* Addresses to scan - BlinkM is on 0x09 by default*/
 static const unsigned short normal_i2c[] = { 0x09, I2C_CLIENT_END };
@@ -22,19 +27,25 @@ static const unsigned short normal_i2c[] = { 0x09, I2C_CLIENT_END };
 static int blinkm_transfer_hw(struct i2c_client *client, int cmd);
 static int blinkm_test_run(struct i2c_client *client);
 
+/* Contains structs for both the color-separated sysfs classes, and the new multicolor class */
 struct blinkm_led {
 	struct i2c_client *i2c_client;
-	struct led_classdev led_cdev;
+	union {
+		/* used when multicolor support is disabled */
+		struct led_classdev led_cdev;
+		struct led_classdev_mc mcled_cdev;
+	} cdev;
 	int id;
 };
 
-#define cdev_to_blmled(c)          container_of(c, struct blinkm_led, led_cdev)
+#define led_cdev_to_blmled(c)			container_of(c, struct blinkm_led, cdev.led_cdev)
+#define mcled_cdev_to_led(c)			container_of(c, struct blinkm_led, cdev.mcled_cdev)
 
 struct blinkm_data {
 	struct i2c_client *i2c_client;
 	struct mutex update_lock;
 	/* used for led class interface */
-	struct blinkm_led blinkm_leds[3];
+	struct blinkm_led blinkm_leds[NUM_LEDS];
 	/* used for "blinkm" sysfs interface */
 	u8 red;			/* color red */
 	u8 green;		/* color green */
@@ -419,11 +430,29 @@ static int blinkm_transfer_hw(struct i2c_client *client, int cmd)
 	return 0;
 }
 
+static int blinkm_set_mc_brightness(struct led_classdev *led_cdev,
+				 enum led_brightness value)
+{
+	struct led_classdev_mc *mcled_cdev = lcdev_to_mccdev(led_cdev);
+	struct blinkm_led *led = mcled_cdev_to_led(mcled_cdev);
+	struct blinkm_data *data = i2c_get_clientdata(led->i2c_client);
+
+	led_mc_calc_color_components(mcled_cdev, value);
+
+	data->next_red = (u8) mcled_cdev->subled_info[RED].brightness;
+	data->next_green = (u8) mcled_cdev->subled_info[GREEN].brightness;
+	data->next_blue = (u8) mcled_cdev->subled_info[BLUE].brightness;
+
+	blinkm_transfer_hw(led->i2c_client, BLM_GO_RGB);
+
+	return 0;
+}
+
 static int blinkm_led_common_set(struct led_classdev *led_cdev,
 				 enum led_brightness value, int color)
 {
 	/* led_brightness is 0, 127 or 255 - we just use it here as-is */
-	struct blinkm_led *led = cdev_to_blmled(led_cdev);
+	struct blinkm_led *led = led_cdev_to_blmled(led_cdev);
 	struct blinkm_data *data = i2c_get_clientdata(led->i2c_client);
 
 	switch (color) {
@@ -565,117 +594,175 @@ static int blinkm_detect(struct i2c_client *client, struct i2c_board_info *info)
 	return 0;
 }
 
-static int blinkm_probe(struct i2c_client *client)
+static int register_separate_colors(struct i2c_client *client, struct blinkm_data *data)
 {
-	struct blinkm_data *data;
-	struct blinkm_led *led[3];
-	int err, i;
+	/* 3 separate classes for red, green, and blue respectively */
+	struct blinkm_led *leds[NUM_LEDS];
+	int err;
 	char blinkm_led_name[28];
-
-	data = devm_kzalloc(&client->dev,
-			sizeof(struct blinkm_data), GFP_KERNEL);
-	if (!data) {
-		err = -ENOMEM;
-		goto exit;
-	}
-
-	data->i2c_addr = 0x08;
-	/* i2c addr  - use fake addr of 0x08 initially (real is 0x09) */
-	data->fw_ver = 0xfe;
-	/* firmware version - use fake until we read real value
-	 * (currently broken - BlinkM confused!) */
-	data->script_id = 0x01;
-	data->i2c_client = client;
-
-	i2c_set_clientdata(client, data);
-	mutex_init(&data->update_lock);
-
-	/* Register sysfs hooks */
-	err = sysfs_create_group(&client->dev.kobj, &blinkm_group);
-	if (err < 0) {
-		dev_err(&client->dev, "couldn't register sysfs group\n");
-		goto exit;
-	}
-
-	for (i = 0; i < 3; i++) {
+	/* Register red, green, and blue sysfs classes */
+	for (int i = 0; i < NUM_LEDS; i++) {
 		/* RED = 0, GREEN = 1, BLUE = 2 */
-		led[i] = &data->blinkm_leds[i];
-		led[i]->i2c_client = client;
-		led[i]->id = i;
-		led[i]->led_cdev.max_brightness = 255;
-		led[i]->led_cdev.flags = LED_CORE_SUSPENDRESUME;
+		leds[i] = &data->blinkm_leds[i];
+		leds[i]->i2c_client = client;
+		leds[i]->id = i;
+		leds[i]->cdev.led_cdev.max_brightness = 255;
+		leds[i]->cdev.led_cdev.flags = LED_CORE_SUSPENDRESUME;
 		switch (i) {
 		case RED:
-			snprintf(blinkm_led_name, sizeof(blinkm_led_name),
+			scnprintf(blinkm_led_name, sizeof(blinkm_led_name),
 					 "blinkm-%d-%d-red",
 					 client->adapter->nr,
 					 client->addr);
-			led[i]->led_cdev.name = blinkm_led_name;
-			led[i]->led_cdev.brightness_set_blocking =
+			leds[i]->cdev.led_cdev.name = blinkm_led_name;
+			leds[i]->cdev.led_cdev.brightness_set_blocking =
 							blinkm_led_red_set;
 			err = led_classdev_register(&client->dev,
-						    &led[i]->led_cdev);
+							&leds[i]->cdev.led_cdev);
 			if (err < 0) {
 				dev_err(&client->dev,
 					"couldn't register LED %s\n",
-					led[i]->led_cdev.name);
+					leds[i]->cdev.led_cdev.name);
 				goto failred;
 			}
 			break;
 		case GREEN:
-			snprintf(blinkm_led_name, sizeof(blinkm_led_name),
+			scnprintf(blinkm_led_name, sizeof(blinkm_led_name),
 					 "blinkm-%d-%d-green",
 					 client->adapter->nr,
 					 client->addr);
-			led[i]->led_cdev.name = blinkm_led_name;
-			led[i]->led_cdev.brightness_set_blocking =
+			leds[i]->cdev.led_cdev.name = blinkm_led_name;
+			leds[i]->cdev.led_cdev.brightness_set_blocking =
 							blinkm_led_green_set;
 			err = led_classdev_register(&client->dev,
-						    &led[i]->led_cdev);
+						&leds[i]->cdev.led_cdev);
 			if (err < 0) {
 				dev_err(&client->dev,
 					"couldn't register LED %s\n",
-					led[i]->led_cdev.name);
+					leds[i]->cdev.led_cdev.name);
 				goto failgreen;
 			}
 			break;
 		case BLUE:
-			snprintf(blinkm_led_name, sizeof(blinkm_led_name),
+			scnprintf(blinkm_led_name, sizeof(blinkm_led_name),
 					 "blinkm-%d-%d-blue",
 					 client->adapter->nr,
 					 client->addr);
-			led[i]->led_cdev.name = blinkm_led_name;
-			led[i]->led_cdev.brightness_set_blocking =
+			leds[i]->cdev.led_cdev.name = blinkm_led_name;
+			leds[i]->cdev.led_cdev.brightness_set_blocking =
 							blinkm_led_blue_set;
 			err = led_classdev_register(&client->dev,
-						    &led[i]->led_cdev);
+							&leds[i]->cdev.led_cdev);
 			if (err < 0) {
 				dev_err(&client->dev,
 					"couldn't register LED %s\n",
-					led[i]->led_cdev.name);
+					leds[i]->cdev.led_cdev.name);
 				goto failblue;
 			}
 			break;
+		default:
+			break;
 		}		/* end switch */
 	}			/* end for */
-
-	/* Initialize the blinkm */
-	blinkm_init_hw(client);
-
 	return 0;
 
 failblue:
-	led_classdev_unregister(&led[GREEN]->led_cdev);
-
+	led_classdev_unregister(&leds[GREEN]->cdev.led_cdev);
 failgreen:
-	led_classdev_unregister(&led[RED]->led_cdev);
-
+	led_classdev_unregister(&leds[RED]->cdev.led_cdev);
 failred:
 	sysfs_remove_group(&client->dev.kobj, &blinkm_group);
-exit:
+
 	return err;
 }
 
+static int register_multicolor(struct i2c_client *client, struct blinkm_data *data)
+{
+	struct blinkm_led *mc_led;
+	struct mc_subled *mc_led_info;
+	char blinkm_led_name[28];
+	int err;
+
+	/* Register multicolor sysfs class */
+	/* The first element of leds is used for multicolor facilities */
+	mc_led = &data->blinkm_leds[RED];
+	mc_led->i2c_client = client;
+
+	mc_led_info = devm_kcalloc(&client->dev, NUM_LEDS, sizeof(*mc_led_info),
+					GFP_KERNEL);
+	if (!mc_led_info)
+		return -ENOMEM;
+
+	mc_led_info[RED].color_index = LED_COLOR_ID_RED;
+	mc_led_info[GREEN].color_index = LED_COLOR_ID_GREEN;
+	mc_led_info[BLUE].color_index = LED_COLOR_ID_BLUE;
+
+	mc_led->cdev.mcled_cdev.subled_info = mc_led_info;
+	mc_led->cdev.mcled_cdev.num_colors = NUM_LEDS;
+	mc_led->cdev.mcled_cdev.led_cdev.brightness = 255;
+	mc_led->cdev.mcled_cdev.led_cdev.max_brightness = 255;
+	mc_led->cdev.mcled_cdev.led_cdev.flags = LED_CORE_SUSPENDRESUME;
+
+	scnprintf(blinkm_led_name, sizeof(blinkm_led_name),
+		 "blinkm-%d-%d:rgb:indicator",
+		 client->adapter->nr,
+		 client->addr);
+	mc_led->cdev.mcled_cdev.led_cdev.name = blinkm_led_name;
+	mc_led->cdev.mcled_cdev.led_cdev.brightness_set_blocking = blinkm_set_mc_brightness;
+
+	err = led_classdev_multicolor_register(&client->dev, &mc_led->cdev.mcled_cdev);
+	if (err < 0) {
+		dev_err(&client->dev, "couldn't register LED %s\n",
+				mc_led->cdev.led_cdev.name);
+		sysfs_remove_group(&client->dev.kobj, &blinkm_group);
+	}
+	return 0;
+}
+
+static int blinkm_probe(struct i2c_client *client)
+{
+	struct blinkm_data *data;
+	int err;
+
+	data = devm_kzalloc(&client->dev,
+			sizeof(struct blinkm_data), GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
+
+	data->i2c_addr = 0x08;
+	/* i2c addr  - use fake addr of 0x08 initially (real is 0x09) */
+	data->fw_ver = 0xfe;
+	/* firmware version - use fake until we read real value
+	 * (currently broken - BlinkM confused!)
+	 */
+	data->script_id = 0x01;
+	data->i2c_client = client;
+
+	i2c_set_clientdata(client, data);
+	mutex_init(&data->update_lock);
+
+	/* Register sysfs hooks */
+	err = sysfs_create_group(&client->dev.kobj, &blinkm_group);
+	if (err < 0) {
+		dev_err(&client->dev, "couldn't register sysfs group\n");
+		return err;
+	}
+
+	if (!IS_ENABLED(CONFIG_LEDS_BLINKM_MULTICOLOR)) {
+		err = register_separate_colors(client, data);
+		if (err < 0)
+			return err;
+	} else {
+		err = register_multicolor(client, data);
+		if (err < 0)
+			return err;
+	}
+
+	blinkm_init_hw(client);
+
+	return 0;
+}
+
 static void blinkm_remove(struct i2c_client *client)
 {
 	struct blinkm_data *data = i2c_get_clientdata(client);
@@ -683,8 +770,8 @@ static void blinkm_remove(struct i2c_client *client)
 	int i;
 
 	/* make sure no workqueue entries are pending */
-	for (i = 0; i < 3; i++)
-		led_classdev_unregister(&data->blinkm_leds[i].led_cdev);
+	for (i = 0; i < NUM_LEDS; i++)
+		led_classdev_unregister(&data->blinkm_leds[i].cdev.led_cdev);
 
 	/* reset rgb */
 	data->next_red = 0x00;
@@ -740,6 +827,7 @@ static struct i2c_driver blinkm_driver = {
 module_i2c_driver(blinkm_driver);
 
 MODULE_AUTHOR("Jan-Simon Moeller <dl9pf@gmx.de>");
+MODULE_AUTHOR("Joseph Strauss <jstrauss@mailbox.org>");
 MODULE_DESCRIPTION("BlinkM RGB LED driver");
 MODULE_LICENSE("GPL");
 
-- 
2.39.2

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: toke@toke.dk,
	kvalo@kernel.org
Cc: linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] wifi: ath9k: Use swap() to improve ath9k_hw_get_nf_hist_mid()
Date: Wed, 10 Jul 2024 20:57:44 +0200
Message-ID: <20240710185743.709742-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274084 org.kernel.vger.linux-wireless:85866
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use the swap() macro to simplify the ath9k_hw_get_nf_hist_mid() function
and improve its readability.

Fixes the following Coccinelle/coccicheck warning reported by
swap.cocci:

  WARNING opportunity for swap()

Compile-tested only.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/net/wireless/ath/ath9k/calib.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/calib.c b/drivers/net/wireless/ath/ath9k/calib.c
index fb270df75eb2..4b331c85509c 100644
--- a/drivers/net/wireless/ath/ath9k/calib.c
+++ b/drivers/net/wireless/ath/ath9k/calib.c
@@ -32,11 +32,8 @@ static int16_t ath9k_hw_get_nf_hist_mid(int16_t *nfCalBuffer)
 
 	for (i = 0; i < ATH9K_NF_CAL_HIST_MAX - 1; i++) {
 		for (j = 1; j < ATH9K_NF_CAL_HIST_MAX - i; j++) {
-			if (sort[j] > sort[j - 1]) {
-				nfval = sort[j];
-				sort[j] = sort[j - 1];
-				sort[j - 1] = nfval;
-			}
+			if (sort[j] > sort[j - 1])
+				swap(sort[j], sort[j - 1]);
 		}
 	}
 	nfval = sort[(ATH9K_NF_CAL_HIST_MAX - 1) >> 1];
-- 
2.45.2

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: Jes.Sorensen@gmail.com,
	kvalo@kernel.org
Cc: linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] wifi: rtl8xxxu: Use swap() to improve rtl8xxxu_switch_ports()
Date: Wed, 10 Jul 2024 21:00:48 +0200
Message-ID: <20240710190047.709843-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274086 org.kernel.vger.linux-wireless:85867
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use the swap() macro to simplify the rtl8xxxu_switch_ports() function
and improve its readability. Remove the local variable vif.

Fixes the following Coccinelle/coccicheck warning reported by
swap.cocci:

  WARNING opportunity for swap()

Compile-tested only.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/core.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/core.c b/drivers/net/wireless/realtek/rtl8xxxu/core.c
index 89a841b4e8d5..489574668772 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/core.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/core.c
@@ -6679,7 +6679,6 @@ static void rtl8xxxu_switch_ports(struct rtl8xxxu_priv *priv)
 	u8 macid[ETH_ALEN], bssid[ETH_ALEN], macid_1[ETH_ALEN], bssid_1[ETH_ALEN];
 	u8 msr, bcn_ctrl, bcn_ctrl_1, atimwnd[2], atimwnd_1[2];
 	struct rtl8xxxu_vif *rtlvif;
-	struct ieee80211_vif *vif;
 	u8 tsftr[8], tsftr_1[8];
 	int i;
 
@@ -6745,9 +6744,7 @@ static void rtl8xxxu_switch_ports(struct rtl8xxxu_priv *priv)
 	rtl8xxxu_write8(priv, REG_BEACON_CTRL, bcn_ctrl_1);
 	rtl8xxxu_write8(priv, REG_BEACON_CTRL_1, bcn_ctrl);
 
-	vif = priv->vifs[0];
-	priv->vifs[0] = priv->vifs[1];
-	priv->vifs[1] = vif;
+	swap(priv->vifs[0], priv->vifs[1]);
 
 	/* priv->vifs[0] is NULL here, based on how this function is currently
 	 * called from rtl8xxxu_add_interface().
-- 
2.45.2

.

From: Hsin-Yi Wang <hsinyi@chromium.org>
To: dri-devel@lists.freedesktop.org
Cc: Douglas Anderson <dianders@chromium.org>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Jessica Zhang <quic_jesszhan@quicinc.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	David Airlie <airlied@gmail.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	linux-kernel@vger.kernel.org
Subject: [PATCH] drm/panel-edp: Add BOE NV140WUM-N41
Date: Wed, 10 Jul 2024 12:02:19 -0700
Message-ID: <20240710190235.1095156-1-hsinyi@chromium.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274088
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The raw edid of the panel is:
00 ff ff ff ff ff ff 00 09 e5 e8 0a 00 00 00 00
2a 1f 01 04 a5 1e 13 78 03 fb f5 96 5d 5a 91 29
1e 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 9c 3e 80 c8 70 b0 3c 40 30 20
36 00 2e bc 10 00 00 1a 00 00 00 fd 00 28 3c 4c
4c 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 42
4f 45 20 43 51 0a 20 20 20 20 20 20 00 00 00 fe
00 4e 56 31 34 30 57 55 4d 2d 4e 34 31 0a 00 26

Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
---
 drivers/gpu/drm/panel/panel-edp.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
index 3a574a9b46e7..f85a6404ba58 100644
--- a/drivers/gpu/drm/panel/panel-edp.c
+++ b/drivers/gpu/drm/panel/panel-edp.c
@@ -1895,6 +1895,7 @@ static const struct edp_panel_entry edp_panels[] = {
 	EDP_PANEL_ENTRY('B', 'O', 'E', 0x0a3e, &delay_200_500_e80, "NV116WHM-N49"),
 	EDP_PANEL_ENTRY('B', 'O', 'E', 0x0a5d, &delay_200_500_e50, "NV116WHM-N45"),
 	EDP_PANEL_ENTRY('B', 'O', 'E', 0x0ac5, &delay_200_500_e50, "NV116WHM-N4C"),
+	EDP_PANEL_ENTRY('B', 'O', 'E', 0x0ae8, &delay_200_500_e50_p2e80, "NV140WUM-N41"),
 	EDP_PANEL_ENTRY('B', 'O', 'E', 0x0b34, &delay_200_500_e80, "NV122WUM-N41"),
 	EDP_PANEL_ENTRY('B', 'O', 'E', 0x0b43, &delay_200_500_e200, "NV140FHM-T09"),
 	EDP_PANEL_ENTRY('B', 'O', 'E', 0x0b56, &delay_200_500_e80, "NT140FHM-N47"),
-- 
2.45.2.803.g4e1b14247a-goog

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: pkshih@realtek.com,
	kvalo@kernel.org
Cc: linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] wifi: rtw89: chan: Use swap() to improve rtw89_swap_sub_entity()
Date: Wed, 10 Jul 2024 21:04:27 +0200
Message-ID: <20240710190426.709964-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274093 org.kernel.vger.linux-wireless:85868
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use the swap() macro to simplify the rtw89_swap_sub_entity() function
and improve its readability. Remove the local variable tmp.

Fixes the following Coccinelle/coccicheck warning reported by
swap.cocci:

  WARNING opportunity for swap()

Compile-tested only.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/net/wireless/realtek/rtw89/chan.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw89/chan.c b/drivers/net/wireless/realtek/rtw89/chan.c
index 051a3cad6101..3b1997223cc5 100644
--- a/drivers/net/wireless/realtek/rtw89/chan.c
+++ b/drivers/net/wireless/realtek/rtw89/chan.c
@@ -2322,7 +2322,6 @@ static void rtw89_swap_sub_entity(struct rtw89_dev *rtwdev,
 				  enum rtw89_sub_entity_idx idx2)
 {
 	struct rtw89_hal *hal = &rtwdev->hal;
-	struct rtw89_sub_entity tmp;
 	struct rtw89_vif *rtwvif;
 	u8 cur;
 
@@ -2332,9 +2331,7 @@ static void rtw89_swap_sub_entity(struct rtw89_dev *rtwdev,
 	hal->sub[idx1].cfg->idx = idx2;
 	hal->sub[idx2].cfg->idx = idx1;
 
-	tmp = hal->sub[idx1];
-	hal->sub[idx1] = hal->sub[idx2];
-	hal->sub[idx2] = tmp;
+	swap(hal->sub[idx1], hal->sub[idx2]);
 
 	rtw89_for_each_rtwvif(rtwdev, rtwvif) {
 		if (!rtwvif->chanctx_assigned)
-- 
2.45.2

.

Date: Wed, 10 Jul 2024 12:06:47 -0700
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
To: Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>
Cc: linux-kernel@vger.kernel.org, x86@kernel.org,
	Robert Gill <rtgill82@gmail.com>,
	Jari Ruusu <jariruusu@protonmail.com>,
	Brian Gerst <brgerst@gmail.com>,
	"Linux regression tracking (Thorsten Leemhuis)" <regressions@leemhuis.info>,
	antonio.gomez.iglesias@linux.intel.com,
	daniel.sneddon@linux.intel.com, stable@vger.kernel.org
Subject: [PATCH v4] x86/entry_32: Use stack segment selector for VERW operand
Message-ID: <20240710-fix-dosemu-vm86-v4-1-aa6464e1de6f@linux.intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274094
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Robert Gill reported below #GP when dosemu software was executing vm86()
system call:

  general protection fault: 0000 [#1] PREEMPT SMP
  CPU: 4 PID: 4610 Comm: dosemu.bin Not tainted 6.6.21-gentoo-x86 #1
  Hardware name: Dell Inc. PowerEdge 1950/0H723K, BIOS 2.7.0 10/30/2010
  EIP: restore_all_switch_stack+0xbe/0xcf
  EAX: 00000000 EBX: 00000000 ECX: 00000000 EDX: 00000000
  ESI: 00000000 EDI: 00000000 EBP: 00000000 ESP: ff8affdc
  DS: 0000 ES: 0000 FS: 0000 GS: 0033 SS: 0068 EFLAGS: 00010046
  CR0: 80050033 CR2: 00c2101c CR3: 04b6d000 CR4: 000406d0
  Call Trace:
   show_regs+0x70/0x78
   die_addr+0x29/0x70
   exc_general_protection+0x13c/0x348
   exc_bounds+0x98/0x98
   handle_exception+0x14d/0x14d
   exc_bounds+0x98/0x98
   restore_all_switch_stack+0xbe/0xcf
   exc_bounds+0x98/0x98
   restore_all_switch_stack+0xbe/0xcf

This only happens when VERW based mitigations like MDS/RFDS are enabled.
This is because segment registers with an arbitrary user value can result
in #GP when executing VERW. Intel SDM vol. 2C documents the following
behavior for VERW instruction:

  #GP(0) - If a memory operand effective address is outside the CS, DS, ES,
	   FS, or GS segment limit.

CLEAR_CPU_BUFFERS macro executes VERW instruction before returning to user
space. Replace CLEAR_CPU_BUFFERS with a safer version that uses %ss to
refer VERW operand mds_verw_sel. This ensures VERW will not #GP for an
arbitrary user %ds. Also, in NMI return path, move VERW to after
RESTORE_ALL_NMI that touches GPRs.

For clarity, below are the locations where the new CLEAR_CPU_BUFFERS_SAFE
version is being used:

* entry_INT80_32(), entry_SYSENTER_32() and interrupts (via
  handle_exception_return) do:

restore_all_switch_stack:
  [...]
   mov    %esi,%esi
   verw   %ss:0xc0fc92c0  <-------------
   iret

* Opportunistic SYSEXIT:

   [...]
   verw   %ss:0xc0fc92c0  <-------------
   btrl   $0x9,(%esp)
   popf
   pop    %eax
   sti
   sysexit

*  nmi_return and nmi_from_espfix:
   mov    %esi,%esi
   verw   %ss:0xc0fc92c0  <-------------
   jmp     .Lirq_return

Fixes: a0e2dab44d22 ("x86/entry_32: Add VERW just before userspace transition")
Cc: stable@vger.kernel.org # 5.10+
Reported-by: Robert Gill <rtgill82@gmail.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218707
Closes: https://lore.kernel.org/all/8c77ccfd-d561-45a1-8ed5-6b75212c7a58@leemhuis.info/
Suggested-by: Dave Hansen <dave.hansen@linux.intel.com>
Suggested-by: Brian Gerst <brgerst@gmail.com> # Use %ss
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
---
v4:
- Further simplify the patch by using %ss for all VERW calls in 32-bit mode (Brian).
- In NMI exit path move VERW after RESTORE_ALL_NMI that touches GPRs (Dave).

v3: https://lore.kernel.org/r/20240701-fix-dosemu-vm86-v3-1-b1969532c75a@linux.intel.com
- Simplify CLEAR_CPU_BUFFERS_SAFE by using %ss instead of %ds (Brian).
- Do verw before popf in SYSEXIT path (Jari).

v2: https://lore.kernel.org/r/20240627-fix-dosemu-vm86-v2-1-d5579f698e77@linux.intel.com
- Safe guard against any other system calls like vm86() that might change %ds (Dave).

v1: https://lore.kernel.org/r/20240426-fix-dosemu-vm86-v1-1-88c826a3f378@linux.intel.com
---

---
 arch/x86/entry/entry_32.S | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index d3a814efbff6..d54f6002e5a0 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -253,6 +253,16 @@
 .Lend_\@:
 .endm
 
+/*
+ * Safer version of CLEAR_CPU_BUFFERS that uses %ss to reference VERW operand
+ * mds_verw_sel. This ensures VERW will not #GP for an arbitrary user %ds.
+ */
+.macro CLEAR_CPU_BUFFERS_SAFE
+	ALTERNATIVE "jmp .Lskip_verw\@", "", X86_FEATURE_CLEAR_CPU_BUF
+	verw	%ss:_ASM_RIP(mds_verw_sel)
+.Lskip_verw\@:
+.endm
+
 .macro RESTORE_INT_REGS
 	popl	%ebx
 	popl	%ecx
@@ -871,6 +881,8 @@ SYM_FUNC_START(entry_SYSENTER_32)
 
 	/* Now ready to switch the cr3 */
 	SWITCH_TO_USER_CR3 scratch_reg=%eax
+	/* Clobbers ZF */
+	CLEAR_CPU_BUFFERS_SAFE
 
 	/*
 	 * Restore all flags except IF. (We restore IF separately because
@@ -881,7 +893,6 @@ SYM_FUNC_START(entry_SYSENTER_32)
 	BUG_IF_WRONG_CR3 no_user_check=1
 	popfl
 	popl	%eax
-	CLEAR_CPU_BUFFERS
 
 	/*
 	 * Return back to the vDSO, which will pop ecx and edx.
@@ -951,7 +962,7 @@ restore_all_switch_stack:
 
 	/* Restore user state */
 	RESTORE_REGS pop=4			# skip orig_eax/error_code
-	CLEAR_CPU_BUFFERS
+	CLEAR_CPU_BUFFERS_SAFE
 .Lirq_return:
 	/*
 	 * ARCH_HAS_MEMBARRIER_SYNC_CORE rely on IRET core serialization
@@ -1144,7 +1155,6 @@ SYM_CODE_START(asm_exc_nmi)
 
 	/* Not on SYSENTER stack. */
 	call	exc_nmi
-	CLEAR_CPU_BUFFERS
 	jmp	.Lnmi_return
 
 .Lnmi_from_sysenter_stack:
@@ -1165,6 +1175,7 @@ SYM_CODE_START(asm_exc_nmi)
 
 	CHECK_AND_APPLY_ESPFIX
 	RESTORE_ALL_NMI cr3_reg=%edi pop=4
+	CLEAR_CPU_BUFFERS_SAFE
 	jmp	.Lirq_return
 
 #ifdef CONFIG_X86_ESPFIX32
@@ -1206,6 +1217,7 @@ SYM_CODE_START(asm_exc_nmi)
 	 *  1 - orig_ax
 	 */
 	lss	(1+5+6)*4(%esp), %esp			# back to espfix stack
+	CLEAR_CPU_BUFFERS_SAFE
 	jmp	.Lirq_return
 #endif
 SYM_CODE_END(asm_exc_nmi)

---
base-commit: f2661062f16b2de5d7b6a5c42a9a5c96326b8454
change-id: 20240426-fix-dosemu-vm86-dd111a01737e

.

From: kovalev@altlinux.org
To: linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	aivazian.tigran@gmail.com,
	stable@vger.kernel.org
Cc: lvc-patches@linuxtesting.org,
	dutyrok@altlinux.org,
	kovalev@altlinux.org
Subject: [PATCH fs/bfs 0/2] bfs: fix null-ptr-deref and possible warning in bfs_move_block() func
Date: Wed, 10 Jul 2024 22:11:16 +0300
Message-Id: <20240710191118.40431-1-kovalev@altlinux.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274095
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-fsdevel,org.kernel.vger.stable
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

https://syzkaller.appspot.com/bug?extid=d98fd19acd08b36ff422

[PATCH fs/bfs 1/2] bfs: fix null-ptr-deref in bfs_move_block
[PATCH fs/bfs 2/2] bfs: add buffer_uptodate check before mark_buffer_dirty

.

From: "Liam R. Howlett" <Liam.Howlett@oracle.com>
To: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>
Cc: Suren Baghdasaryan <surenb@google.com>, Vlastimil Babka <vbabka@suse.cz>,
        Lorenzo Stoakes <lstoakes@gmail.com>,
        Matthew Wilcox <willy@infradead.org>, sidhartha.kumar@oracle.com,
        "Paul E . McKenney" <paulmck@kernel.org>,
        Bert Karwatzki <spasswolf@web.de>, Jiri Olsa <olsajiri@gmail.com>,
        linux-kernel@vger.kernel.org, Kees Cook <kees@kernel.org>,
        "Liam R. Howlett" <Liam.Howlett@oracle.com>
Subject: [PATCH v4 00/21] Avoid MAP_FIXED gap exposure
Date: Wed, 10 Jul 2024 15:22:29 -0400
Message-ID: <20240710192250.4114783-1-Liam.Howlett@oracle.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274122 org.kvack.linux-mm:203331
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

It is now possible to walk the vma tree using the rcu read locks and is
beneficial to do so to reduce lock contention.  Doing so while a
MAP_FIXED mapping is executing means that a reader may see a gap in the
vma tree that should never logically exist - and does not when using the
mmap lock in read mode.  The temporal gap exists because mmap_region()
calls munmap() prior to installing the new mapping.

This patch set stops rcu readers from seeing the temporal gap by
splitting up the munmap() function into two parts.  The first part
prepares the vma tree for modifications by doing the necessary splits
and tracks the vmas marked for removal in a side tree.  The second part
completes the munmapping of the vmas after the vma tree has been
overwritten (either by a MAP_FIXED replacement vma or by a NULL in the
munmap() case).

Please note that rcu walkers will still be able to see a temporary state
of split vmas that may be in the process of being removed, but the
temporal gap will not be exposed.  vma_start_write() are called on both
parts of the split vma, so this state is detectable.

RFC: https://lore.kernel.org/linux-mm/20240531163217.1584450-1-Liam.Howlett@oracle.com/
v1: https://lore.kernel.org/linux-mm/20240611180200.711239-1-Liam.Howlett@oracle.com/
v2: https://lore.kernel.org/all/20240625191145.3382793-1-Liam.Howlett@oracle.com/
v3: https://lore.kernel.org/linux-mm/20240704182718.2653918-1-Liam.Howlett@oracle.com/

Changes since v3:
 - Completely removing arch_unmap() from the kernel.  PPC doesn't need
   it and no one else uses it.
 - Relocated checks for mseal'ed vmas so it is only checked when
   necessary.
 - Remove do_vma_munmap() and use do_vmi_align_munmap() in its place
 - Added inclusive/exclusive comments for start/end of munmap
 - Added comments for unmap_start/unmap_end to specify it is for PTEs
 - Renamed "cleared_ptes" to "clear_ptes" and reversed the logic so that
   it is now a flag to indicate that the ptes need to be cleared vs it
   was done.
 - Set the "clear_ptes" flag after a successful vms_gather_munmap_vmas()
 - Rename vms_complete_pte_clear() to vms_clear_ptes() since it may
   happen before the completion of the vms in the case of a driver
   mmap'ing in mmap_region().
 - Fixed comment around vms_clear_ptes() in mmap_region().
 - Call init_vma_munmap() unconditionally in the mmap_region() case so
   that all defaults are set in the struct, which means
   init_vma_munmap() must support a NULL vma.
 - Use ULONG_MAX as the limit in abort_munmap_vmas() for clarity
 - Added a comment highlighting that the free_pgtables() call may use a
   different start/end based on if there was a prev/next vma
 - Removed incorrect comment about VM_ACCOUNT and mremap's move_vma()
 - Relocated to mas_store_gfp() call in vms_gather_munmap_vmas() so that
   it is clear that the accounting is okay.
 - Skip validate_mm() in do_vmi_align_munmap() on gather failure as
   vms_gather_munmap_vmas() already validates.
 - Added R-b from Lorenzo, Suren, and Kees - Thanks!


Liam R. Howlett (21):
  mm/mmap: Correctly position vma_iterator in __split_vma()
  mm/mmap: Introduce abort_munmap_vmas()
  mm/mmap: Introduce vmi_complete_munmap_vmas()
  mm/mmap: Extract the gathering of vmas from do_vmi_align_munmap()
  mm/mmap: Introduce vma_munmap_struct for use in munmap operations
  mm/mmap: Change munmap to use vma_munmap_struct() for accounting and
    surrounding vmas
  mm/mmap: Extract validate_mm() from vma_complete()
  mm/mmap: Inline munmap operation in mmap_region()
  mm/mmap: Expand mmap_region() munmap call
  mm/mmap: Support vma == NULL in init_vma_munmap()
  mm/mmap: Reposition vma iterator in mmap_region()
  mm/mmap: Track start and end of munmap in vma_munmap_struct
  mm/mmap: Clean up unmap_region() argument list
  mm/mmap: Avoid zeroing vma tree in mmap_region()
  mm/mmap: Use PHYS_PFN in mmap_region()
  mm/mmap: Use vms accounted pages in mmap_region()
  mm/mmap: Drop arch_unmap() call from all archs
  mm/mmap: Move can_modify_mm() check down the stack
  ipc/shm, mm: Drop do_vma_munmap()
  mm/mmap: Move may_expand_vm() check in mmap_region()
  mm/mmap: Drop incorrect comment from vms_gather_munmap_vmas()

 arch/powerpc/include/asm/mmu_context.h |   9 -
 arch/x86/include/asm/mmu_context.h     |   5 -
 include/asm-generic/mm_hooks.h         |  11 +-
 include/linux/mm.h                     |   6 +-
 ipc/shm.c                              |   8 +-
 mm/internal.h                          |  25 ++
 mm/mmap.c                              | 545 ++++++++++++++-----------
 7 files changed, 345 insertions(+), 264 deletions(-)

-- 
2.43.0

.

From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= <linux@weissschuh.net>
Date: Wed, 10 Jul 2024 21:32:28 +0200
Subject: [PATCH v4] kbuild: add script and target to generate pacman
 package
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Message-Id: <20240710-kbuild-pacman-pkg-v4-1-507bb5b79b2a@weissschuh.net>
To: Masahiro Yamada <masahiroy@kernel.org>, 
 Nathan Chancellor <nathan@kernel.org>, Nicolas Schier <nicolas@fjasle.eu>
Cc: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>, 
 linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, 
 =?utf-8?q?Thomas_Wei=C3=9Fschuh?= <linux@weissschuh.net>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274139
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-kbuild
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

pacman is the package manager used by Arch Linux and its derivates.
Creating native packages from the kernel tree has multiple advantages:

* The package triggers the correct hooks for initramfs generation and
  bootloader configuration
* Uninstallation is complete and also invokes the relevant hooks
* New UAPI headers can be installed without any manual bookkeeping

The PKGBUILD file is a simplified version of the one used for the
downstream Arch Linux "linux" package.
Extra steps that should not be necessary for a development kernel have
been removed and an UAPI header package has been added.

Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Thomas WeiÃŸschuh <linux@weissschuh.net>
---
Changes in v4:
- Update MRPROPER_FILES
- Unify shell variable syntax
- Link to v3: https://lore.kernel.org/r/20240708-kbuild-pacman-pkg-v3-1-885df3cbc740@weissschuh.net

Changes in v3:
- Enforce matching architectures for installation
- Add Reviewed-by and Tested-by from Nathan
- Link to v2: https://lore.kernel.org/r/20240706-kbuild-pacman-pkg-v2-1-613422a03a7a@weissschuh.net

Changes in v2:
- Replace ${MAKE} with $MAKE for consistency with other variables
- Use $MAKE for "-s image_name"
- Avoid permission warnings from build directory
- Clarify reason for /build symlink removal
- Install System.map and config
- Install dtbs where available
- Allow cross-build through arch=any
- Sort Contributor/Maintainer chronologically
- Disable some unneeded makepkg options
- Use DEPMOD=true for consistency with rpm-package
- Link to v1: https://lore.kernel.org/r/20240704-kbuild-pacman-pkg-v1-1-ac2f63f5fa7b@weissschuh.net
---
 .gitignore               |  6 ++++
 Makefile                 |  2 +-
 scripts/Makefile.package | 16 ++++++++++
 scripts/package/PKGBUILD | 83 ++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 106 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index c59dc60ba62e..7902adf4f7f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -92,6 +92,12 @@ modules.order
 #
 /tar-install/
 
+#
+# pacman files (make pacman-pkg)
+#
+/PKGBUILD
+/pacman/
+
 #
 # We don't want to ignore the following even if they are dot-files
 #
diff --git a/Makefile b/Makefile
index b25b5b44af10..79e8dcec6be9 100644
--- a/Makefile
+++ b/Makefile
@@ -1497,7 +1497,7 @@ CLEAN_FILES += vmlinux.symvers modules-only.symvers \
 # Directories & files removed with 'make mrproper'
 MRPROPER_FILES += include/config include/generated          \
 		  arch/$(SRCARCH)/include/generated .objdiff \
-		  debian snap tar-install \
+		  debian snap tar-install PKGBUILD pacman \
 		  .config .config.old .version \
 		  Module.symvers \
 		  certs/signing_key.pem \
diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index bf016af8bf8a..a5b5b899d90c 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -141,6 +141,21 @@ snap-pkg:
 	cd $(objtree)/snap && \
 	snapcraft --target-arch=$(UTS_MACHINE)
 
+# pacman-pkg
+# ---------------------------------------------------------------------------
+
+PHONY += pacman-pkg
+pacman-pkg:
+	@ln -srf $(srctree)/scripts/package/PKGBUILD $(objtree)/PKGBUILD
+	cd $(objtree) && \
+		srctree="$(realpath $(srctree))" \
+		objtree="$(realpath $(objtree))" \
+		BUILDDIR="$(realpath $(objtree))/pacman" \
+		CARCH="$(UTS_MACHINE)" \
+		KBUILD_MAKEFLAGS="$(MAKEFLAGS)" \
+		KBUILD_REVISION="$(shell $(srctree)/init/build-version)" \
+		makepkg
+
 # dir-pkg tar*-pkg - tarball targets
 # ---------------------------------------------------------------------------
 
@@ -221,6 +236,7 @@ help:
 	@echo '  bindeb-pkg          - Build only the binary kernel deb package'
 	@echo '  snap-pkg            - Build only the binary kernel snap package'
 	@echo '                        (will connect to external hosts)'
+	@echo '  pacman-pkg          - Build only the binary kernel pacman package'
 	@echo '  dir-pkg             - Build the kernel as a plain directory structure'
 	@echo '  tar-pkg             - Build the kernel as an uncompressed tarball'
 	@echo '  targz-pkg           - Build the kernel as a gzip compressed tarball'
diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
new file mode 100644
index 000000000000..b0b133ac28eb
--- /dev/null
+++ b/scripts/package/PKGBUILD
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: GPL-2.0-only
+# Maintainer: Thomas WeiÃŸschuh <linux@weissschuh.net>
+# Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
+
+pkgbase=linux-upstream
+pkgname=("$pkgbase" "$pkgbase-headers" "$pkgbase-api-headers")
+pkgver="${KERNELRELEASE//-/_}"
+pkgrel="$KBUILD_REVISION"
+pkgdesc='Linux'
+url='https://www.kernel.org/'
+arch=($CARCH)
+options=(!debug !strip !buildflags !makeflags)
+license=(GPL-2.0-only)
+
+build() {
+  export MAKEFLAGS="$KBUILD_MAKEFLAGS"
+  cd "$objtree"
+
+  # makepkg does a "chmod a-srw", triggering warnings during kbuild
+  chmod 0755 "$pkgdirbase" || true
+
+  $MAKE -f "$srctree/Makefile"
+}
+
+package_linux-upstream() {
+  pkgdesc="The $pkgdesc kernel and modules"
+
+  export MAKEFLAGS="$KBUILD_MAKEFLAGS"
+  cd "$objtree"
+  local modulesdir="$pkgdir/usr/$MODLIB"
+
+  echo "Installing boot image..."
+  # systemd expects to find the kernel here to allow hibernation
+  # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
+  install -Dm644 "$($MAKE -s image_name)" "$modulesdir/vmlinuz"
+
+  # Used by mkinitcpio to name the kernel
+  echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
+
+  echo "Installing modules..."
+  $MAKE INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
+    DEPMOD=true modules_install
+
+  if $MAKE run-command KBUILD_RUN_COMMAND='test -d $srctree/arch/$SRCARCH/boot/dts' 2>/dev/null; then
+    echo "Installing dtbs..."
+    $MAKE INSTALL_DTBS_PATH="$modulesdir/dtb" dtbs_install
+  fi
+
+  # remove build link, will be part of -headers package
+  rm -f "$modulesdir/build"
+}
+
+package_linux-upstream-headers() {
+  pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
+
+  export MAKEFLAGS="$KBUILD_MAKEFLAGS"
+  cd "$objtree"
+  local builddir="$pkgdir/usr/$MODLIB/build"
+
+  echo "Installing build files..."
+  "$srctree/scripts/package/install-extmod-build" "$builddir"
+
+  echo "Installing System.map and config..."
+  cp System.map "$builddir/System.map"
+  cp .config "$builddir/.config"
+
+  echo "Adding symlink..."
+  mkdir -p "$pkgdir/usr/src"
+  ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
+}
+
+package_linux-upstream-api-headers() {
+  pkgdesc="Kernel headers sanitized for use in userspace"
+  provides=(linux-api-headers)
+  conflicts=(linux-api-headers)
+
+  export MAKEFLAGS="$KBUILD_MAKEFLAGS"
+  cd "$objtree"
+
+  $MAKE headers_install INSTALL_HDR_PATH="$pkgdir/usr"
+}
+
+# vim:set ts=8 sts=2 sw=2 et:

---
base-commit: d6e1712b78251cf4470b0543bb4a8b491949aa32
change-id: 20240625-kbuild-pacman-pkg-b4f87e19d036

Best regards,
-- 
Thomas WeiÃŸschuh <linux@weissschuh.net>

.

From: Andrii Nakryiko <andrii@kernel.org>
To: linux-trace-kernel@vger.kernel.org,
	peterz@infradead.org,
	rostedt@goodmis.org,
	mhiramat@kernel.org
Cc: x86@kernel.org,
	mingo@redhat.com,
	tglx@linutronix.de,
	jpoimboe@redhat.com,
	linux-kernel@vger.kernel.org,
	bpf@vger.kernel.org,
	rihams@fb.com,
	linux-perf-users@vger.kernel.org,
	Andrii Nakryiko <andrii@kernel.org>
Subject: [PATCH v5] perf,x86: avoid missing caller address in stack traces captured in uprobe
Date: Wed, 10 Jul 2024 12:36:53 -0700
Message-ID: <20240710193653.1175435-1-andrii@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274141
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.linux-perf-users,org.kernel.vger.linux-trace-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

When tracing user functions with uprobe functionality, it's common to
install the probe (e.g., a BPF program) at the first instruction of the
function. This is often going to be `push %rbp` instruction in function
preamble, which means that within that function frame pointer hasn't
been established yet. This leads to consistently missing an actual
caller of the traced function, because perf_callchain_user() only
records current IP (capturing traced function) and then following frame
pointer chain (which would be caller's frame, containing the address of
caller's caller).

So when we have target_1 -> target_2 -> target_3 call chain and we are
tracing an entry to target_3, captured stack trace will report
target_1 -> target_3 call chain, which is wrong and confusing.

This patch proposes a x86-64-specific heuristic to detect `push %rbp`
(`push %ebp` on 32-bit architecture) instruction being traced. Given
entire kernel implementation of user space stack trace capturing works
under assumption that user space code was compiled with frame pointer
register (%rbp/%ebp) preservation, it seems pretty reasonable to use
this instruction as a strong indicator that this is the entry to the
function. In that case, return address is still pointed to by %rsp/%esp,
so we fetch it and add to stack trace before proceeding to unwind the
rest using frame pointer-based logic.

We also check for `endbr64` (for 64-bit modes) as another common pattern
for function entry, as suggested by Josh Poimboeuf. Even if we get this
wrong sometimes for uprobes attached not at the function entry, it's OK
because stack trace will still be overall meaningful, just with one
extra bogus entry. If we don't detect this, we end up with guaranteed to
be missing caller function entry in the stack trace, which is worse
overall.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
---
 arch/x86/events/core.c  | 63 +++++++++++++++++++++++++++++++++++++++++
 include/linux/uprobes.h |  2 ++
 kernel/events/uprobes.c |  2 ++
 3 files changed, 67 insertions(+)

diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index 5b0dd07b1ef1..780b8dc36f05 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -41,6 +41,8 @@
 #include <asm/desc.h>
 #include <asm/ldt.h>
 #include <asm/unwind.h>
+#include <asm/uprobes.h>
+#include <asm/ibt.h>
 
 #include "perf_event.h"
 
@@ -2813,6 +2815,46 @@ static unsigned long get_segment_base(unsigned int segment)
 	return get_desc_base(desc);
 }
 
+#ifdef CONFIG_UPROBES
+/*
+ * Heuristic-based check if uprobe is installed at the function entry.
+ *
+ * Under assumption of user code being compiled with frame pointers,
+ * `push %rbp/%ebp` is a good indicator that we indeed are.
+ *
+ * Similarly, `endbr64` (assuming 64-bit mode) is also a common pattern.
+ * If we get this wrong, captured stack trace might have one extra bogus
+ * entry, but the rest of stack trace will still be meaningful.
+ */
+static bool is_uprobe_at_func_entry(struct pt_regs *regs)
+{
+	struct arch_uprobe *auprobe;
+
+	if (!current->utask)
+		return false;
+
+	auprobe = current->utask->auprobe;
+	if (!auprobe)
+		return false;
+
+	/* push %rbp/%ebp */
+	if (auprobe->insn[0] == 0x55)
+		return true;
+
+	/* endbr64 (64-bit only) */
+	if (user_64bit_mode(regs) && is_endbr(*(u32 *)auprobe->insn))
+		return true;
+
+	return false;
+}
+
+#else
+static bool is_uprobe_at_func_entry(struct pt_regs *regs)
+{
+	return false;
+}
+#endif /* CONFIG_UPROBES */
+
 #ifdef CONFIG_IA32_EMULATION
 
 #include <linux/compat.h>
@@ -2824,6 +2866,7 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *ent
 	unsigned long ss_base, cs_base;
 	struct stack_frame_ia32 frame;
 	const struct stack_frame_ia32 __user *fp;
+	u32 ret_addr;
 
 	if (user_64bit_mode(regs))
 		return 0;
@@ -2833,6 +2876,12 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *ent
 
 	fp = compat_ptr(ss_base + regs->bp);
 	pagefault_disable();
+
+	/* see perf_callchain_user() below for why we do this */
+	if (is_uprobe_at_func_entry(regs) &&
+	    !get_user(ret_addr, (const u32 __user *)regs->sp))
+		perf_callchain_store(entry, ret_addr);
+
 	while (entry->nr < entry->max_stack) {
 		if (!valid_user_frame(fp, sizeof(frame)))
 			break;
@@ -2861,6 +2910,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs
 {
 	struct stack_frame frame;
 	const struct stack_frame __user *fp;
+	unsigned long ret_addr;
 
 	if (perf_guest_state()) {
 		/* TODO: We don't support guest os callchain now */
@@ -2884,6 +2934,19 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs
 		return;
 
 	pagefault_disable();
+
+	/*
+	 * If we are called from uprobe handler, and we are indeed at the very
+	 * entry to user function (which is normally a `push %rbp` instruction,
+	 * under assumption of application being compiled with frame pointers),
+	 * we should read return address from *regs->sp before proceeding
+	 * to follow frame pointers, otherwise we'll skip immediate caller
+	 * as %rbp is not yet setup.
+	 */
+	if (is_uprobe_at_func_entry(regs) &&
+	    !get_user(ret_addr, (const unsigned long __user *)regs->sp))
+		perf_callchain_store(entry, ret_addr);
+
 	while (entry->nr < entry->max_stack) {
 		if (!valid_user_frame(fp, sizeof(frame)))
 			break;
diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h
index b503fafb7fb3..a270a5892ab4 100644
--- a/include/linux/uprobes.h
+++ b/include/linux/uprobes.h
@@ -76,6 +76,8 @@ struct uprobe_task {
 	struct uprobe			*active_uprobe;
 	unsigned long			xol_vaddr;
 
+	struct arch_uprobe              *auprobe;
+
 	struct return_instance		*return_instances;
 	unsigned int			depth;
 };
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 99be2adedbc0..6e22e4d80f1e 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -2082,6 +2082,7 @@ static void handler_chain(struct uprobe *uprobe, struct pt_regs *regs)
 	bool need_prep = false; /* prepare return uprobe, when needed */
 
 	down_read(&uprobe->register_rwsem);
+	current->utask->auprobe = &uprobe->arch;
 	for (uc = uprobe->consumers; uc; uc = uc->next) {
 		int rc = 0;
 
@@ -2096,6 +2097,7 @@ static void handler_chain(struct uprobe *uprobe, struct pt_regs *regs)
 
 		remove &= rc;
 	}
+	current->utask->auprobe = NULL;
 
 	if (need_prep && !remove)
 		prepare_uretprobe(uprobe, regs); /* put bp at return */
-- 
2.43.0

.

Return-Path: <linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org>
From: Thorsten Blum <thorsten.blum@toblux.com>
To: yury.norov@gmail.com,
	linux@rasmusvillemoes.dk,
	paul.walmsley@sifive.com,
	palmer@dabbelt.com,
	aou@eecs.berkeley.edu
Cc: linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] riscv: Remove unnecessary int cast in variable_fls()
Date: Wed, 10 Jul 2024 22:24:18 +0200
Message-ID: <20240710202416.710880-3-thorsten.blum@toblux.com>
MIME-Version: 1.0
X-BeenThere: linux-riscv@lists.infradead.org
X-Mailman-Version: 2.1.34
List-Id: <linux-riscv.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
List-Post: <mailto:linux-riscv@lists.infradead.org>
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79579 org.kernel.vger.linux-kernel:1274150
Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

__builtin_clz() returns an int and casting the whole expression to int
is unnecessary. Remove it.

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 arch/riscv/include/asm/bitops.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/riscv/include/asm/bitops.h b/arch/riscv/include/asm/bitops.h
index 880606b0469a..71af9ecfcfcb 100644
--- a/arch/riscv/include/asm/bitops.h
+++ b/arch/riscv/include/asm/bitops.h
@@ -170,7 +170,7 @@ static __always_inline int variable_fls(unsigned int x)
 ({								\
 	typeof(x) x_ = (x);					\
 	__builtin_constant_p(x_) ?				\
-	 (int)((x_ != 0) ? (32 - __builtin_clz(x_)) : 0)	\
+	 ((x_ != 0) ? (32 - __builtin_clz(x_)) : 0)		\
 	 :							\
 	 variable_fls(x_);					\
 })
-- 
2.45.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: mturquette@baylibre.com,
	sboyd@kernel.org,
	abel.vesa@linaro.org,
	dinguyen@kernel.org,
	angelogioacchino.delregno@collabora.com,
	robh@kernel.org,
	christophe.jaillet@wanadoo.fr,
	erick.archer@gmx.com
Cc: linux-clk@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] clk: hisilicon: Remove unnecessary local variable
Date: Wed, 10 Jul 2024 22:18:45 +0200
Message-ID: <20240710201844.710365-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274159
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-clk
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The local u64 variable refdiv_val has the same value as the local u32
variable val and can be removed. Remove it and use val directly as the
divisor in do_div() to also remove the following Coccinelle/coccicheck
warning reported by do_div.cocci:

  WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/clk/hisilicon/clk-hi3559a.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/hisilicon/clk-hi3559a.c b/drivers/clk/hisilicon/clk-hi3559a.c
index c79a94f6d9d2..30d5a6ba8fa5 100644
--- a/drivers/clk/hisilicon/clk-hi3559a.c
+++ b/drivers/clk/hisilicon/clk-hi3559a.c
@@ -407,7 +407,7 @@ static unsigned long clk_pll_recalc_rate(struct clk_hw *hw,
 		unsigned long parent_rate)
 {
 	struct hi3559av100_clk_pll *clk = to_pll_clk(hw);
-	u64 frac_val, fbdiv_val, refdiv_val;
+	u64 frac_val, fbdiv_val;
 	u32 postdiv1_val, postdiv2_val;
 	u32 val;
 	u64 tmp, rate;
@@ -435,13 +435,12 @@ static unsigned long clk_pll_recalc_rate(struct clk_hw *hw,
 	val = readl_relaxed(clk->ctrl_reg2);
 	val = val >> clk->refdiv_shift;
 	val &= ((1 << clk->refdiv_width) - 1);
-	refdiv_val = val;
 
 	/* rate = 24000000 * (fbdiv + frac / (1<<24) ) / refdiv  */
 	rate = 0;
 	tmp = 24000000 * fbdiv_val + (24000000 * frac_val) / (1 << 24);
 	rate += tmp;
-	do_div(rate, refdiv_val);
+	do_div(rate, val);
 	do_div(rate, postdiv1_val * postdiv2_val);
 
 	return rate;
-- 
2.45.2

.

Date: Wed, 10 Jul 2024 13:23:33 -0700
From: Andrew Morton <akpm@linux-foundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
 mm-commits@vger.kernel.org
Subject: [GIT PULL] hotfixes against 6.10-rc7
Message-Id: <20240710132333.0ef20b0442ffd813429ec240@linux-foundation.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274161 org.kvack.linux-mm:203345
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.mm-commits,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail


Linus, please merge this batch of hotfixes, thanks.



The following changes since commit 93aef9eda1cea9e84ab2453fcceb8addad0e46f1:

  nilfs2: fix incorrect inode allocation from reserved inodes (2024-07-03 12:29:25 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-hotfixes-stable-2024-07-10-13-19

for you to fetch changes up to f708f6970cc9d6bac71da45c129482092e710537:

  mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetlb folio (2024-07-09 15:41:11 -0700)

----------------------------------------------------------------
21 hotfixes, 15 of which are cc:stable.

No identifiable theme here - all are singleton patches, 19 are for MM.

----------------------------------------------------------------
Audra Mitchell (1):
      Fix userfaultfd_api to return EINVAL as expected

Gavin Shan (4):
      mm/filemap: make MAX_PAGECACHE_ORDER acceptable to xarray
      mm/readahead: limit page cache size in page_cache_ra_order()
      mm/filemap: skip to create PMD-sized page cache if needed
      mm/shmem: disable PMD-sized page cache if needed

Hugh Dickins (1):
      mm: fix crashes from deferred split racing folio migration

Lorenzo Stoakes (1):
      MAINTAINERS: mailmap: update Lorenzo Stoakes's email address

Miaohe Lin (2):
      mm/hugetlb: fix potential race in __update_and_free_hugetlb_folio()
      mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetlb folio

Nhat Pham (1):
      cachestat: do not flush stats in recency check

Paul Menzel (1):
      lib/build_OID_registry: avoid non-destructive substitution for Perl < 5.13.2 compat

Ryusuke Konishi (1):
      nilfs2: fix kernel bug on rename operation of broken directory

SeongJae Park (1):
      mm/damon/core: merge regions aggressively when max_nr_regions is unmet

Suren Baghdasaryan (2):
      sched.h: always_inline alloc_tag_{save|restore} to fix modpost warnings
      arch/xtensa: always_inline get_current() and current_thread_info()

Uladzislau Rezki (Sony) (1):
      mm: vmalloc: check if a hash-index is in cpu_possible_mask

Waiman Long (1):
      mm: prevent derefencing NULL ptr in pfn_section_valid()

Yang Shi (2):
      mm: page_ref: remove folio_try_get_rcu()
      mm: gup: stop abusing try_grab_folio

Yu Zhao (1):
      mm/hugetlb_vmemmap: fix race with speculative PFN walkers

ZhangPeng (1):
      filemap: replace pte_offset_map() with pte_offset_map_nolock()

 .mailmap                              |   1 +
 MAINTAINERS                           |   2 +-
 arch/xtensa/include/asm/current.h     |   2 +-
 arch/xtensa/include/asm/thread_info.h |   2 +-
 fs/nilfs2/dir.c                       |  32 +++-
 fs/userfaultfd.c                      |   7 +-
 include/linux/mmzone.h                |   3 +-
 include/linux/page_ref.h              |  57 ++-----
 include/linux/pagemap.h               |  11 +-
 include/linux/sched.h                 |   4 +-
 include/linux/swap.h                  |   3 +-
 lib/build_OID_registry                |   4 +-
 mm/damon/core.c                       |  23 ++-
 mm/filemap.c                          |  20 ++-
 mm/gup.c                              | 291 ++++++++++++++++++----------------
 mm/huge_memory.c                      |   2 +-
 mm/hugetlb.c                          |  70 ++------
 mm/hugetlb_vmemmap.c                  |  16 ++
 mm/internal.h                         |   4 +-
 mm/memcontrol.c                       |  11 --
 mm/migrate.c                          |  13 ++
 mm/readahead.c                        |   8 +-
 mm/shmem.c                            |  15 +-
 mm/vmalloc.c                          |  10 +-
 mm/workingset.c                       |  14 +-
 25 files changed, 339 insertions(+), 286 deletions(-)

.

From: Gatlin Newhouse <gatlin.newhouse@gmail.com>
To: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org,
	"H. Peter Anvin" <hpa@zytor.com>,
	Kees Cook <keescook@chromium.org>,
	Marco Elver <elver@google.com>,
	Andrey Konovalov <andreyknvl@gmail.com>,
	Andrey Ryabinin <ryabinin.a.a@gmail.com>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Bill Wendling <morbo@google.com>,
	Justin Stitt <justinstitt@google.com>,
	Gatlin Newhouse <gatlin.newhouse@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Baoquan He <bhe@redhat.com>,
	Rick Edgecombe <rick.p.edgecombe@intel.com>,
	Pengfei Xu <pengfei.xu@intel.com>,
	Josh Poimboeuf <jpoimboe@kernel.org>,
	Changbin Du <changbin.du@huawei.com>,
	Xin Li <xin3.li@intel.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Arnd Bergmann <arnd@arndb.de>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	linux-kernel@vger.kernel.org,
	kasan-dev@googlegroups.com,
	linux-hardening@vger.kernel.org,
	llvm@lists.linux.dev
Subject: [PATCH v4] x86/traps: Enable UBSAN traps on x86
Date: Wed, 10 Jul 2024 20:32:38 +0000
Message-Id: <20240710203250.238782-1-gatlin.newhouse@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274165
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.llvm,org.kernel.vger.linux-hardening
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Currently ARM architectures extract which specific sanitizer
has caused a trap via encoded data in the trap instruction.
Clang on x86 currently encodes the same data in ud1 instructions
but the x86 handle_bug() and is_valid_bugaddr() functions
currently only look at ud2s.

Bring x86 to parity with arm64, similar to commit 25b84002afb9
("arm64: Support Clang UBSAN trap codes for better reporting").
Enable the reporting of UBSAN sanitizer detail on x86 architectures
compiled with clang when CONFIG_UBSAN_TRAP=y.

Signed-off-by: Gatlin Newhouse <gatlin.newhouse@gmail.com>
---
Changes in v4:
  - Implement Peter's suggestions for decode_bug(), and fix
    inconsistent capitalization in hex values.

Changes in v3:
  - Address Thomas's remarks about: change log structure,
    get_ud_type() instead of is_valid_bugaddr(), handle_bug()
    changes, and handle_ubsan_failure().

Changes in v2:
  - Name the new constants 'LEN_ASOP' and 'INSN_ASOP' instead of
    'LEN_REX' and 'INSN_REX'
  - Change handle_ubsan_failure() from enum bug_trap_type to void
    function

v1: https://lore.kernel.org/linux-hardening/20240529022043.3661757-1-gatlin.newhouse@gmail.com/
v2: https://lore.kernel.org/linux-hardening/20240601031019.3708758-1-gatlin.newhouse@gmail.com/
v3: https://lore.kernel.org/linux-hardening/20240625032509.4155839-1-gatlin.newhouse@gmail.com/
---
 MAINTAINERS                  |  2 ++
 arch/x86/include/asm/bug.h   | 11 +++++++
 arch/x86/include/asm/ubsan.h | 23 +++++++++++++++
 arch/x86/kernel/Makefile     |  1 +
 arch/x86/kernel/traps.c      | 57 ++++++++++++++++++++++++++++++++----
 arch/x86/kernel/ubsan.c      | 21 +++++++++++++
 6 files changed, 110 insertions(+), 5 deletions(-)
 create mode 100644 arch/x86/include/asm/ubsan.h
 create mode 100644 arch/x86/kernel/ubsan.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 28e20975c26f..b8512887ffb1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -22635,6 +22635,8 @@ L:	kasan-dev@googlegroups.com
 L:	linux-hardening@vger.kernel.org
 S:	Supported
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
+F:	arch/x86/include/asm/ubsan.h
+F:	arch/x86/kernel/ubsan.c
 F:	Documentation/dev-tools/ubsan.rst
 F:	include/linux/ubsan.h
 F:	lib/Kconfig.ubsan
diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h
index a3ec87d198ac..ccd573d58edb 100644
--- a/arch/x86/include/asm/bug.h
+++ b/arch/x86/include/asm/bug.h
@@ -13,6 +13,17 @@
 #define INSN_UD2	0x0b0f
 #define LEN_UD2		2
 
+/*
+ * In clang we have UD1s reporting UBSAN failures on X86, 64 and 32bit.
+ */
+#define INSN_ASOP	0x67
+#define OPCODE_PREFIX	0x0f
+#define OPCODE_UD1	0xb9
+#define OPCODE_UD2	0x0b
+#define BUG_NONE	0xffff
+#define BUG_UD1		0xfffe
+#define BUG_UD2		0xfffd
+
 #ifdef CONFIG_GENERIC_BUG
 
 #ifdef CONFIG_X86_32
diff --git a/arch/x86/include/asm/ubsan.h b/arch/x86/include/asm/ubsan.h
new file mode 100644
index 000000000000..ac2080984e83
--- /dev/null
+++ b/arch/x86/include/asm/ubsan.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_X86_UBSAN_H
+#define _ASM_X86_UBSAN_H
+
+/*
+ * Clang Undefined Behavior Sanitizer trap mode support.
+ */
+#include <linux/bug.h>
+#include <linux/ubsan.h>
+#include <asm/ptrace.h>
+
+/*
+ * UBSAN uses the EAX register to encode its type in the ModRM byte.
+ */
+#define UBSAN_REG	0x40
+
+#ifdef CONFIG_UBSAN_TRAP
+void handle_ubsan_failure(struct pt_regs *regs, u16 insn);
+#else
+static inline void handle_ubsan_failure(struct pt_regs *regs, u16 insn) { return; }
+#endif /* CONFIG_UBSAN_TRAP */
+
+#endif /* _ASM_X86_UBSAN_H */
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index 74077694da7d..fe1d9db27500 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -145,6 +145,7 @@ obj-$(CONFIG_UNWINDER_GUESS)		+= unwind_guess.o
 obj-$(CONFIG_AMD_MEM_ENCRYPT)		+= sev.o
 
 obj-$(CONFIG_CFI_CLANG)			+= cfi.o
+obj-$(CONFIG_UBSAN_TRAP)		+= ubsan.o
 
 obj-$(CONFIG_CALL_THUNKS)		+= callthunks.o
 
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 4fa0b17e5043..b6664016622a 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -67,6 +67,7 @@
 #include <asm/vdso.h>
 #include <asm/tdx.h>
 #include <asm/cfi.h>
+#include <asm/ubsan.h>
 
 #ifdef CONFIG_X86_64
 #include <asm/x86_init.h>
@@ -91,6 +92,45 @@ __always_inline int is_valid_bugaddr(unsigned long addr)
 	return *(unsigned short *)addr == INSN_UD2;
 }
 
+/*
+ * Check for UD1 or UD2, accounting for Address Size Override Prefixes.
+ * If it's a UD1, get the ModRM byte to pass along to UBSan.
+ */
+__always_inline int decode_bug(unsigned long addr, u32 *imm)
+{
+	u8 v;
+
+	if (addr < TASK_SIZE_MAX)
+		return BUG_NONE;
+
+	v = *(u8 *)(addr++);
+	if (v == INSN_ASOP)
+		v = *(u8 *)(addr++);
+	if (v != OPCODE_PREFIX)
+		return BUG_NONE;
+
+	v = *(u8 *)(addr++);
+	if (v == OPCODE_UD2)
+		return BUG_UD2;
+	if (v != OPCODE_UD1)
+		return BUG_NONE;
+
+	v = *(u8 *)(addr++);
+	if (X86_MODRM_RM(v) == 4)
+		addr++;
+
+	*imm = 0;
+	if (X86_MODRM_MOD(v) == 1)
+		*imm = *(u8 *)addr;
+	else if (X86_MODRM_MOD(v) == 2)
+		*imm = *(u32 *)addr;
+	else
+		WARN_ONCE(1, "Unexpected MODRM_MOD: %u\n", X86_MODRM_MOD(v));
+
+	return BUG_UD1;
+}
+
+
 static nokprobe_inline int
 do_trap_no_signal(struct task_struct *tsk, int trapnr, const char *str,
 		  struct pt_regs *regs,	long error_code)
@@ -216,6 +256,8 @@ static inline void handle_invalid_op(struct pt_regs *regs)
 static noinstr bool handle_bug(struct pt_regs *regs)
 {
 	bool handled = false;
+	int ud_type;
+	u32 imm;
 
 	/*
 	 * Normally @regs are unpoisoned by irqentry_enter(), but handle_bug()
@@ -223,7 +265,8 @@ static noinstr bool handle_bug(struct pt_regs *regs)
 	 * irqentry_enter().
 	 */
 	kmsan_unpoison_entry_regs(regs);
-	if (!is_valid_bugaddr(regs->ip))
+	ud_type = decode_bug(regs->ip, &imm);
+	if (ud_type == BUG_NONE)
 		return handled;
 
 	/*
@@ -236,10 +279,14 @@ static noinstr bool handle_bug(struct pt_regs *regs)
 	 */
 	if (regs->flags & X86_EFLAGS_IF)
 		raw_local_irq_enable();
-	if (report_bug(regs->ip, regs) == BUG_TRAP_TYPE_WARN ||
-	    handle_cfi_failure(regs) == BUG_TRAP_TYPE_WARN) {
-		regs->ip += LEN_UD2;
-		handled = true;
+	if (ud_type == BUG_UD2) {
+		if (report_bug(regs->ip, regs) == BUG_TRAP_TYPE_WARN ||
+		    handle_cfi_failure(regs) == BUG_TRAP_TYPE_WARN) {
+			regs->ip += LEN_UD2;
+			handled = true;
+		}
+	} else {
+		handle_ubsan_failure(regs, imm);
 	}
 	if (regs->flags & X86_EFLAGS_IF)
 		raw_local_irq_disable();
diff --git a/arch/x86/kernel/ubsan.c b/arch/x86/kernel/ubsan.c
new file mode 100644
index 000000000000..c90e337a1b6a
--- /dev/null
+++ b/arch/x86/kernel/ubsan.c
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Clang Undefined Behavior Sanitizer trap mode support.
+ */
+#include <linux/bug.h>
+#include <linux/string.h>
+#include <linux/printk.h>
+#include <linux/ubsan.h>
+#include <asm/ptrace.h>
+#include <asm/ubsan.h>
+
+/*
+ * Checks for the information embedded in the UD1 trap instruction
+ * for the UB Sanitizer in order to pass along debugging output.
+ */
+void handle_ubsan_failure(struct pt_regs *regs, u16 type)
+{
+	if ((type & 0xFF) == UBSAN_REG)
+		type >>= 8;
+	pr_crit("%s at %pS\n", report_ubsan_failure(regs, type), (void *)regs->ip);
+}
-- 
2.25.1

.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Date: Wed, 10 Jul 2024 13:34:20 -0700
Message-ID: <0000000000002b7de9061cea92b7@google.com>
Subject: [syzbot] [mm?] BUG: corrupted list in __folio_undo_large_rmappable
From: syzbot <syzbot+a2cc273ad0e5a4c15302@syzkaller.appspotmail.com>
To: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, 
	linux-mm@kvack.org, syzkaller-bugs@googlegroups.com
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274166 org.kvack.linux-mm:203346
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,

syzbot found the following issue on:

HEAD commit:    82d01fe6ee52 Add linux-next specific files for 20240709
git tree:       linux-next
console+strace: https://syzkaller.appspot.com/x/log.txt?x=14904441980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=95a20e7acf357998
dashboard link: https://syzkaller.appspot.com/bug?extid=a2cc273ad0e5a4c15302
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=15882a49980000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=172aba49980000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/12dcacb06142/disk-82d01fe6.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/6ef954821378/vmlinux-82d01fe6.xz
kernel image: https://storage.googleapis.com/syzbot-assets/9ebf01d42887/bzImage-82d01fe6.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+a2cc273ad0e5a4c15302@syzkaller.appspotmail.com

list_del corruption, ffffea0001eb8090->next is NULL
------------[ cut here ]------------
kernel BUG at lib/list_debug.c:53!
Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
CPU: 0 UID: 0 PID: 5105 Comm: syz-executor331 Not tainted 6.10.0-rc7-next-20240709-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
RIP: 0010:__list_del_entry_valid_or_report+0xd0/0x140 lib/list_debug.c:52
Code: 06 e2 42 fd 48 8b 13 4c 39 fa 75 6b b0 01 5b 41 5c 41 5e 41 5f c3 cc cc cc cc 48 c7 c7 a0 9b 20 8c 4c 89 fe e8 71 e0 d7 06 90 <0f> 0b 48 c7 c7 00 9c 20 8c 4c 89 fe e8 5f e0 d7 06 90 0f 0b 48 c7
RSP: 0018:ffffc900034df410 EFLAGS: 00010046
RAX: 0000000000000033 RBX: ffff888140e81000 RCX: f885dda17ff31200
RDX: 0000000000000000 RSI: 0000000080000001 RDI: 0000000000000000
RBP: ffffea0001eb8090 R08: ffffffff8173a779 R09: 1ffff9200069be1c
R10: dffffc0000000000 R11: fffff5200069be1d R12: dffffc0000000000
R13: dffffc0000000000 R14: 0000000000000000 R15: ffffea0001eb8090
FS:  00007fe27183f6c0(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000200d1a00 CR3: 0000000021fbe000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 __list_del_entry_valid include/linux/list.h:124 [inline]
 __list_del_entry include/linux/list.h:215 [inline]
 list_del_init include/linux/list.h:287 [inline]
 __folio_undo_large_rmappable+0x104/0x230 mm/huge_memory.c:3289
 __folio_migrate_mapping+0x6c1/0x3490 mm/migrate.c:418
 __migrate_folio mm/migrate.c:693 [inline]
 migrate_folio+0x111/0x260 mm/migrate.c:720
 move_to_new_folio+0x306/0x12e0
 unmap_and_move_huge_page mm/migrate.c:1444 [inline]
 migrate_hugetlbs mm/migrate.c:1563 [inline]
 migrate_pages+0xb74/0x3460 mm/migrate.c:1960
 do_mbind mm/mempolicy.c:1388 [inline]
 kernel_mbind mm/mempolicy.c:1531 [inline]
 __do_sys_mbind mm/mempolicy.c:1605 [inline]
 __se_sys_mbind+0x1490/0x19f0 mm/mempolicy.c:1601
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fe2718a4d39
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 c1 17 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fe27183f208 EFLAGS: 00000246 ORIG_RAX: 00000000000000ed
RAX: ffffffffffffffda RBX: 00007fe27192f338 RCX: 00007fe2718a4d39
RDX: 0000000000000000 RSI: 0000000000004000 RDI: 0000000020199000
RBP: 00007fe27192f330 R08: 0000000000000000 R09: 0000000000000003
R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe2718fc604
R13: 00007fe2718fc008 R14: 7277682f7665642f R15: 00000000ffffff1f
 </TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:__list_del_entry_valid_or_report+0xd0/0x140 lib/list_debug.c:52
Code: 06 e2 42 fd 48 8b 13 4c 39 fa 75 6b b0 01 5b 41 5c 41 5e 41 5f c3 cc cc cc cc 48 c7 c7 a0 9b 20 8c 4c 89 fe e8 71 e0 d7 06 90 <0f> 0b 48 c7 c7 00 9c 20 8c 4c 89 fe e8 5f e0 d7 06 90 0f 0b 48 c7
RSP: 0018:ffffc900034df410 EFLAGS: 00010046
RAX: 0000000000000033 RBX: ffff888140e81000 RCX: f885dda17ff31200
RDX: 0000000000000000 RSI: 0000000080000001 RDI: 0000000000000000
RBP: ffffea0001eb8090 R08: ffffffff8173a779 R09: 1ffff9200069be1c
R10: dffffc0000000000 R11: fffff5200069be1d R12: dffffc0000000000
R13: dffffc0000000000 R14: 0000000000000000 R15: ffffea0001eb8090
FS:  00007fe27183f6c0(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000200d1a00 CR3: 0000000021fbe000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Date: Wed, 10 Jul 2024 13:34:20 -0700
Message-ID: <0000000000002ec51a061cea9292@google.com>
Subject: [syzbot] [bcachefs?] kernel BUG in bch2_bio_compress
From: syzbot <syzbot+cf190b6276e5bd33a108@syzkaller.appspotmail.com>
To: bfoster@redhat.com, kent.overstreet@linux.dev, 
	linux-bcachefs@vger.kernel.org, linux-kernel@vger.kernel.org, 
	syzkaller-bugs@googlegroups.com
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274167
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bcachefs
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,

syzbot found the following issue on:

HEAD commit:    34afb82a3c67 Merge tag '6.10-rc6-smb3-server-fixes' of git..
git tree:       upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=11932b76980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=42a432cfd0e579e0
dashboard link: https://syzkaller.appspot.com/bug?extid=cf190b6276e5bd33a108
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=14109821980000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=1235f47e980000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/5e93dc1544ee/disk-34afb82a.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/005e374613f0/vmlinux-34afb82a.xz
kernel image: https://storage.googleapis.com/syzbot-assets/b6931db81a1a/bzImage-34afb82a.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/d469706bc1c9/mount_0.gz

The issue was bisected to:

commit 03ef80b469d5d83530ce1ce15be78a40e5300f9b
Author: Kent Overstreet <kent.overstreet@linux.dev>
Date:   Sat Sep 23 22:41:51 2023 +0000

    bcachefs: Ignore unknown mount options

bisection log:  https://syzkaller.appspot.com/x/bisect.txt?x=1475d6e1980000
final oops:     https://syzkaller.appspot.com/x/report.txt?x=1675d6e1980000
console output: https://syzkaller.appspot.com/x/log.txt?x=1275d6e1980000

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+cf190b6276e5bd33a108@syzkaller.appspotmail.com
Fixes: 03ef80b469d5 ("bcachefs: Ignore unknown mount options")

------------[ cut here ]------------
kernel BUG at fs/bcachefs/compress.c:398!
Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
CPU: 1 PID: 1036 Comm: kworker/u8:5 Not tainted 6.10.0-rc7-syzkaller-00012-g34afb82a3c67 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
Workqueue: writeback wb_workfn (flush-bcachefs-1)
RIP: 0010:__bio_compress fs/bcachefs/compress.c:398 [inline]
RIP: 0010:bch2_bio_compress+0x13a1/0x13e0 fs/bcachefs/compress.c:498
Code: e1 07 38 c1 0f 8c 77 fb ff ff be 14 00 00 00 4c 89 ef e8 52 6d dc fd e9 65 fb ff ff e8 48 00 7a fd 90 0f 0b e8 40 00 7a fd 90 <0f> 0b e8 38 00 7a fd 90 0f 0b e8 00 0f 61 07 e8 2b 00 7a fd 90 0f
RSP: 0018:ffffc9000403e660 EFLAGS: 00010293
RAX: ffffffff841c2680 RBX: ffff8880769c7e78 RCX: ffff888021ddda00
RDX: 0000000000000000 RSI: 0000000000000003 RDI: 0000000000000004
RBP: ffffc9000403e8f0 R08: ffffffff841c14df R09: 0000000000000003
R10: ffffc9000403ed00 R11: fffff52000807da5 R12: 00000000000002e0
R13: ffff888076845688 R14: dffffc0000000000 R15: 0000000000000004
FS:  0000000000000000(0000) GS:ffff8880b9500000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f1b70de0db8 CR3: 0000000079450000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 bch2_write_extent fs/bcachefs/io_write.c:963 [inline]
 __bch2_write+0x1537/0x5c40 fs/bcachefs/io_write.c:1461
 bch2_write+0x947/0x1670 fs/bcachefs/io_write.c:1634
 closure_queue include/linux/closure.h:269 [inline]
 closure_call include/linux/closure.h:425 [inline]
 bch2_writepage_do_io fs/bcachefs/fs-io-buffered.c:460 [inline]
 bch2_writepages+0x27d/0x380 fs/bcachefs/fs-io-buffered.c:652
 do_writepages+0x359/0x870 mm/page-writeback.c:2656
 __writeback_single_inode+0x165/0x10b0 fs/fs-writeback.c:1651
 writeback_sb_inodes+0x99c/0x1380 fs/fs-writeback.c:1947
 __writeback_inodes_wb+0x11b/0x260 fs/fs-writeback.c:2018
 wb_writeback+0x495/0xd40 fs/fs-writeback.c:2129
 wb_check_background_flush fs/fs-writeback.c:2199 [inline]
 wb_do_writeback fs/fs-writeback.c:2287 [inline]
 wb_workfn+0xc58/0x1090 fs/fs-writeback.c:2314
 process_one_work kernel/workqueue.c:3248 [inline]
 process_scheduled_works+0xa2c/0x1830 kernel/workqueue.c:3329
 worker_thread+0x86d/0xd50 kernel/workqueue.c:3409
 kthread+0x2f0/0x390 kernel/kthread.c:389
 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:__bio_compress fs/bcachefs/compress.c:398 [inline]
RIP: 0010:bch2_bio_compress+0x13a1/0x13e0 fs/bcachefs/compress.c:498
Code: e1 07 38 c1 0f 8c 77 fb ff ff be 14 00 00 00 4c 89 ef e8 52 6d dc fd e9 65 fb ff ff e8 48 00 7a fd 90 0f 0b e8 40 00 7a fd 90 <0f> 0b e8 38 00 7a fd 90 0f 0b e8 00 0f 61 07 e8 2b 00 7a fd 90 0f
RSP: 0018:ffffc9000403e660 EFLAGS: 00010293
RAX: ffffffff841c2680 RBX: ffff8880769c7e78 RCX: ffff888021ddda00
RDX: 0000000000000000 RSI: 0000000000000003 RDI: 0000000000000004
RBP: ffffc9000403e8f0 R08: ffffffff841c14df R09: 0000000000000003
R10: ffffc9000403ed00 R11: fffff52000807da5 R12: 00000000000002e0
R13: ffff888076845688 R14: dffffc0000000000 R15: 0000000000000004
FS:  0000000000000000(0000) GS:ffff8880b9500000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f1b70de0db8 CR3: 000000007d568000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
For information about bisection process see: https://goo.gl/tpsmEJ#bisection

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
.

Date: Thu, 11 Jul 2024 04:54:15 +0800
From: kernel test robot <lkp@intel.com>
To: Krzysztof Kozlowski <krzk@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	Conor Dooley <conor.dooley@microchip.com>,
	Steen Hegelund <Steen.Hegelund@microchip.com>
Subject: arch/arm64/boot/dts/microchip/sparx5_pcb134.dtb: i2c-mux-1:
 idle-state: [8] is not of type 'integer'
Message-ID: <202407110407.bISkgEfS-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274173
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-kbuild-all
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d6e1712b78251cf4470b0543bb4a8b491949aa32
commit: d3dd7bed42102704133b3569a4392f9aab6844ff arm64: dts: microchip: sparx5_pcb134: align I2C mux node name with bindings
date:   3 months ago
config: arm64-randconfig-051-20240711 (https://download.01.org/0day-ci/archive/20240711/202407110407.bISkgEfS-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project a0c6b8aef853eedaa0980f07c0a502a5a8a9740e)
dtschema version: 2024.6.dev4+g23441a4
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240711/202407110407.bISkgEfS-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407110407.bISkgEfS-lkp@intel.com/

dtcheck warnings: (new ones prefixed by >>)
   arch/arm64/boot/dts/microchip/sparx5_pcb134.dtb: spi@600104000: spi@e:reg:0:0: 14 is greater than the maximum of 3
   	from schema $id: http://devicetree.org/schemas/spi/snps,dw-apb-ssi.yaml#
   arch/arm64/boot/dts/microchip/sparx5_pcb134.dtb: spi@600104000: Unevaluated properties are not allowed ('reg-shift' was unexpected)
   	from schema $id: http://devicetree.org/schemas/spi/snps,dw-apb-ssi.yaml#
   arch/arm64/boot/dts/microchip/sparx5_pcb134.dtb: spi@0: 'spi-max-frequency' is a required property
   	from schema $id: http://devicetree.org/schemas/spi/spi-mux.yaml#
   arch/arm64/boot/dts/microchip/sparx5_pcb134.dtb: spi@e: 'spi-max-frequency' is a required property
   	from schema $id: http://devicetree.org/schemas/spi/spi-mux.yaml#
   arch/arm64/boot/dts/microchip/sparx5_pcb134.dtb: switch@600000000: reg-names:1: 'devices' was expected
   	from schema $id: http://devicetree.org/schemas/net/microchip,sparx5-switch.yaml#
>> arch/arm64/boot/dts/microchip/sparx5_pcb134.dtb: i2c-mux-1: idle-state: [8] is not of type 'integer'
   	from schema $id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml#
>> arch/arm64/boot/dts/microchip/sparx5_pcb134.dtb: i2c-mux-1: Unevaluated properties are not allowed ('idle-state' was unexpected)
   	from schema $id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml#
--
   arch/arm64/boot/dts/microchip/sparx5_pcb134_emmc.dtb: mux-controller: #mux-control-cells: 1 was expected
   	from schema $id: http://devicetree.org/schemas/mux/reg-mux.yaml#
   arch/arm64/boot/dts/microchip/sparx5_pcb134_emmc.dtb: spi@600104000: num-cs: 16 is greater than the maximum of 4
   	from schema $id: http://devicetree.org/schemas/spi/snps,dw-apb-ssi.yaml#
   arch/arm64/boot/dts/microchip/sparx5_pcb134_emmc.dtb: spi@600104000: Unevaluated properties are not allowed ('reg-shift' was unexpected)
   	from schema $id: http://devicetree.org/schemas/spi/snps,dw-apb-ssi.yaml#
   arch/arm64/boot/dts/microchip/sparx5_pcb134_emmc.dtb: spi@0: 'spi-max-frequency' is a required property
   	from schema $id: http://devicetree.org/schemas/spi/spi-mux.yaml#
   arch/arm64/boot/dts/microchip/sparx5_pcb134_emmc.dtb: switch@600000000: reg-names:1: 'devices' was expected
   	from schema $id: http://devicetree.org/schemas/net/microchip,sparx5-switch.yaml#
>> arch/arm64/boot/dts/microchip/sparx5_pcb134_emmc.dtb: i2c-mux-1: idle-state: [8] is not of type 'integer'
   	from schema $id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml#
>> arch/arm64/boot/dts/microchip/sparx5_pcb134_emmc.dtb: i2c-mux-1: Unevaluated properties are not allowed ('idle-state' was unexpected)
   	from schema $id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml#

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Date: Wed, 10 Jul 2024 13:55:20 -0700
Message-ID: <0000000000004169f9061ceadd8a@google.com>
Subject: [syzbot] [bcachefs?] kernel BUG in bch2_journal_noflush_seq
From: syzbot <syzbot+85700120f75fc10d4e18@syzkaller.appspotmail.com>
To: bfoster@redhat.com, kent.overstreet@linux.dev, 
	linux-bcachefs@vger.kernel.org, linux-kernel@vger.kernel.org, 
	syzkaller-bugs@googlegroups.com
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274174
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bcachefs
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,

syzbot found the following issue on:

HEAD commit:    1dd28064d416 Merge tag 'integrity-v6.10-fix' of ssh://ra.k..
git tree:       upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=17d3d4a5980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=1ace69f521989b1f
dashboard link: https://syzkaller.appspot.com/bug?extid=85700120f75fc10d4e18
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=120f9c9e980000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=158b8d69980000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/a42549877f5c/disk-1dd28064.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/f2b9c801a744/vmlinux-1dd28064.xz
kernel image: https://storage.googleapis.com/syzbot-assets/c16f617bb3d0/bzImage-1dd28064.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/f0142c51dc8c/mount_0.gz

The issue was bisected to:

commit f7643bc9749f270d487c32dc35b578575bf1adb0
Author: Kent Overstreet <kent.overstreet@linux.dev>
Date:   Wed Apr 17 05:26:02 2024 +0000

    bcachefs: make btree read errors silent during scan

bisection log:  https://syzkaller.appspot.com/x/bisect.txt?x=14e4c7c1980000
final oops:     https://syzkaller.appspot.com/x/report.txt?x=16e4c7c1980000
console output: https://syzkaller.appspot.com/x/log.txt?x=12e4c7c1980000

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+85700120f75fc10d4e18@syzkaller.appspotmail.com
Fixes: f7643bc9749f ("bcachefs: make btree read errors silent during scan")

------------[ cut here ]------------
kernel BUG at fs/bcachefs/journal.c:105!
Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
CPU: 1 PID: 5083 Comm: syz-executor282 Not tainted 6.10.0-rc6-syzkaller-00212-g1dd28064d416 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
RIP: 0010:journal_seq_to_buf fs/bcachefs/journal.c:105 [inline]
RIP: 0010:bch2_journal_noflush_seq+0x320/0x330 fs/bcachefs/journal.c:805
Code: e8 f5 ba 65 fd 48 8b 3c 24 e8 6c a3 57 07 44 89 f0 48 83 c4 30 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc e8 d1 ba 65 fd 90 <0f> 0b e8 c9 ba 65 fd 90 0f 0b 66 0f 1f 44 00 00 90 90 90 90 90 90
RSP: 0018:ffffc90002eeed78 EFLAGS: 00010293
RAX: ffffffff84306bef RBX: 000000000000000e RCX: ffff8880264f0000
RDX: 0000000000000000 RSI: 000000000000000f RDI: 000000000000000e
RBP: ffff888076a4aa80 R08: ffffffff84306a49 R09: 1ffff1100ed4954f
R10: dffffc0000000000 R11: ffffed100ed49550 R12: ffff888076a4a548
R13: dffffc0000000000 R14: 008bf40000000001 R15: 000000000000000f
FS:  0000555572c0e380(0000) GS:ffff8880b9500000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000555572c1f738 CR3: 000000007ab70000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 bch2_trigger_alloc+0xa4a/0x3e10 fs/bcachefs/alloc_background.c:854
 run_one_mem_trigger+0x7e9/0xb90
 bch2_trans_commit_write_locked fs/bcachefs/btree_trans_commit.c:713 [inline]
 do_bch2_trans_commit fs/bcachefs/btree_trans_commit.c:876 [inline]
 __bch2_trans_commit+0x5083/0x88e0 fs/bcachefs/btree_trans_commit.c:1119
 bch2_trans_commit fs/bcachefs/btree_update.h:170 [inline]
 bch2_inode_delete_keys+0xae8/0x1440 fs/bcachefs/inode.c:845
 bch2_inode_rm+0x165/0xd40 fs/bcachefs/inode.c:874
 bch2_evict_inode+0x21c/0x3c0 fs/bcachefs/fs.c:1588
 evict+0x2a8/0x630 fs/inode.c:667
 do_unlinkat+0x512/0x830 fs/namei.c:4420
 __do_sys_unlink fs/namei.c:4461 [inline]
 __se_sys_unlink fs/namei.c:4459 [inline]
 __x64_sys_unlink+0x49/0x60 fs/namei.c:4459
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f8443dc9b17
Code: 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 57 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffc4d875828 EFLAGS: 00000206 ORIG_RAX: 0000000000000057
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f8443dc9b17
RDX: 00007ffc4d875850 RSI: 00007ffc4d8758e0 RDI: 00007ffc4d8758e0
RBP: 00007ffc4d8758e0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000100 R11: 0000000000000206 R12: 00007ffc4d8769d0
R13: 0000555572c17700 R14: 0000000000000001 R15: 431bde82d7b634db
 </TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:journal_seq_to_buf fs/bcachefs/journal.c:105 [inline]
RIP: 0010:bch2_journal_noflush_seq+0x320/0x330 fs/bcachefs/journal.c:805
Code: e8 f5 ba 65 fd 48 8b 3c 24 e8 6c a3 57 07 44 89 f0 48 83 c4 30 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc e8 d1 ba 65 fd 90 <0f> 0b e8 c9 ba 65 fd 90 0f 0b 66 0f 1f 44 00 00 90 90 90 90 90 90
RSP: 0018:ffffc90002eeed78 EFLAGS: 00010293
RAX: ffffffff84306bef RBX: 000000000000000e RCX: ffff8880264f0000
RDX: 0000000000000000 RSI: 000000000000000f RDI: 000000000000000e
RBP: ffff888076a4aa80 R08: ffffffff84306a49 R09: 1ffff1100ed4954f
R10: dffffc0000000000 R11: ffffed100ed49550 R12: ffff888076a4a548
R13: dffffc0000000000 R14: 008bf40000000001 R15: 000000000000000f
FS:  0000555572c0e380(0000) GS:ffff8880b9500000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000555572c1f738 CR3: 000000007ab70000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
For information about bisection process see: https://goo.gl/tpsmEJ#bisection

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
.

From: superm1@kernel.org
To: Bjorn Helgaas <bhelgaas@google.com>,
	Mathias Nyman <mathias.nyman@intel.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: "open list : PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>,
	"open list : USB XHCI DRIVER" <linux-usb@vger.kernel.org>,
	Daniel Drake <drake@endlessos.org>,
	Gary Li <Gary.Li@amd.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Mario Limonciello <mario.limonciello@amd.com>
Subject: [PATCH v2 0/4] Verify devices transition from D3cold to D0
Date: Wed, 10 Jul 2024 15:58:34 -0500
Message-ID: <20240710205838.2413465-1-superm1@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274175 org.kernel.vger.linux-pci:145154
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci,org.kernel.vger.linux-usb
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Mario Limonciello <mario.limonciello@amd.com>


Gary has reported that when a dock is plugged into a system at the same
time the autosuspend delay has tripped that the USB4 stack malfunctions.

Messages show up like this:

```
thunderbolt 0000:e5:00.6: ring_interrupt_active: interrupt for TX ring 0 is already enabled
```

Furthermore the USB4 router is non-functional at this point.

Those messages happen because the device is still in D3cold at the time
that the PCI core handed control back to the USB4 connection manager
(thunderbolt).

The issue is that it takes time for a device to enter D3cold and do a
conventional reset, and then more time for it to exit D3cold.

This appears not to be a new problem; previously there were very similar
reports from Ryzen XHCI controllers.  Quirks were added for those.
Furthermore; adding extra logging it's apparent that other PCI devices
in the system can take more than 10ms to recover from D3cold as well.

This series add a wait into pci_power_up() specifically for D3cold exit and
then drops the quirks that were previously used for the Ryzen XHCI controllers.

v1->v2:
 * Add a fix for a suspend problem

Mario Limonciello (4):
  PCI: Check PCI_PM_CTRL in pci_dev_wait()
  PCI: Verify functions currently in D3cold have entered D0
  PCI: Allow Ryzen XHCI controllers into D3cold and drop delays
  PCI: Drop Radeon quirk for Macbook Pro 8.2

 drivers/pci/pci.c           | 38 ++++++++++++++++++++++++++++++-------
 drivers/pci/quirks.c        | 25 ------------------------
 drivers/usb/host/xhci-pci.c | 11 -----------
 drivers/usb/host/xhci.h     | 11 +++++------
 4 files changed, 36 insertions(+), 49 deletions(-)

-- 
2.43.0

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: thierry.reding@gmail.com,
	mperttunen@nvidia.com,
	airlied@gmail.com,
	daniel@ffwll.ch,
	jonathanh@nvidia.com
Cc: dri-devel@lists.freedesktop.org,
	linux-tegra@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] drm/tegra: hub: Use fn parameter directly to fix Coccinelle warning
Date: Wed, 10 Jul 2024 23:00:35 +0200
Message-ID: <20240710210034.796032-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274184
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-tegra
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The function parameter out can be used directly instead of assigning it
to a temporary u64 variable first.

Remove the local variable tmp2 and use the parameter out directly as the
divisor in do_div() to remove the following Coccinelle/coccicheck
warning reported by do_div.cocci:

  WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/gpu/drm/tegra/hub.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c
index f21e57e8599e..e0c2019a591b 100644
--- a/drivers/gpu/drm/tegra/hub.c
+++ b/drivers/gpu/drm/tegra/hub.c
@@ -521,12 +521,11 @@ static void tegra_shared_plane_atomic_disable(struct drm_plane *plane,
 
 static inline u32 compute_phase_incr(fixed20_12 in, unsigned int out)
 {
-	u64 tmp, tmp1, tmp2;
+	u64 tmp, tmp1;
 
 	tmp = (u64)dfixed_trunc(in);
-	tmp2 = (u64)out;
-	tmp1 = (tmp << NFB) + (tmp2 >> 1);
-	do_div(tmp1, tmp2);
+	tmp1 = (tmp << NFB) + ((u64)out >> 1);
+	do_div(tmp1, out);
 
 	return lower_32_bits(tmp1);
 }
-- 
2.45.2

.

From: David Hildenbrand <david@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org,
	David Hildenbrand <david@redhat.com>,
	Zi Yan <ziy@nvidia.com>,
	Yosry Ahmed <yosryahmed@google.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH v2] mm/rmap: cleanup partially-mapped handling in __folio_remove_rmap()
Date: Wed, 10 Jul 2024 23:43:50 +0200
Message-ID: <20240710214350.147864-1-david@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274201
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Let's simplify and reduce code indentation. In the RMAP_LEVEL_PTE case, we
already check for nr when computing partially_mapped.

For RMAP_LEVEL_PMD, it's a bit more confusing. Likely, we don't need the
"nr" check, but we could have "nr < nr_pmdmapped" also if we stumbled
into the "/* Raced ahead of another remove and an add? */" case. So
let's simply move the nr check in there.

Note that partially_mapped is always false for small folios.

No functional change intended.

Reviewed-by: Zi Yan <ziy@nvidia.com>
Reviewed-by: Yosry Ahmed <yosryahmed@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
---

v1 -> v2:
* Move comment as well; add RB's.
* CC Andrew ;)

---
 mm/rmap.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/mm/rmap.c b/mm/rmap.c
index 8616308610b9..bbf002667e61 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -1549,22 +1549,19 @@ static __always_inline void __folio_remove_rmap(struct folio *folio,
 			}
 		}
 
-		partially_mapped = nr < nr_pmdmapped;
+		partially_mapped = nr && nr < nr_pmdmapped;
 		break;
 	}
 
-	if (nr) {
-		/*
-		 * Queue anon large folio for deferred split if at least one
-		 * page of the folio is unmapped and at least one page
-		 * is still mapped.
-		 *
-		 * Check partially_mapped first to ensure it is a large folio.
-		 */
-		if (folio_test_anon(folio) && partially_mapped &&
-		    list_empty(&folio->_deferred_list))
-			deferred_split_folio(folio);
-	}
+	/*
+	 * Queue anon large folio for deferred split if at least one page of
+	 * the folio is unmapped and at least one page is still mapped.
+	 *
+	 * Check partially_mapped first to ensure it is a large folio.
+	 */
+	if (partially_mapped && folio_test_anon(folio) &&
+	    list_empty(&folio->_deferred_list))
+		deferred_split_folio(folio);
 	__folio_mod_stat(folio, -nr, -nr_pmdmapped);
 
 	/*
-- 
2.45.2

.

From: Thorsten Blum <thorsten.blum@toblux.com>
To: clemens@ladisch.de,
	arnd@arndb.de,
	gregkh@linuxfoundation.org
Cc: linux-kernel@vger.kernel.org,
	Thorsten Blum <thorsten.blum@toblux.com>
Subject: [PATCH] hpet: Optimize local variable data type in hpet_alloc()
Date: Wed, 10 Jul 2024 23:52:39 +0200
Message-ID: <20240710215238.799239-2-thorsten.blum@toblux.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274211
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The local variable period uses at most 32 bits and can be a u32 instead
of unsigned long. The upper 32 bits are all 0 after masking and right
shifting cap by HPET_COUNTER_CLK_PERIOD_SHIFT and can be discarded.

Since do_div() casts the divisor to u32 anyway, changing the data type
of period to u32 also removes the following Coccinelle/coccicheck
warning reported by do_div.cocci:

  WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead

Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
---
 drivers/char/hpet.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
index d51fc8321d41..bd68afa22cff 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -784,7 +784,7 @@ int hpet_alloc(struct hpet_data *hdp)
 	struct hpets *hpetp;
 	struct hpet __iomem *hpet;
 	static struct hpets *last;
-	unsigned long period;
+	u32 period;
 	unsigned long long temp;
 	u32 remainder;
 
-- 
2.45.2

.

Date: Thu, 11 Jul 2024 07:55:15 +1000
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Marcel Holtmann <marcel@holtmann.org>, Johan Hedberg
 <johan.hedberg@gmail.com>
Cc: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>, Linux Kernel Mailing
 List <linux-kernel@vger.kernel.org>, Linux Next Mailing List
 <linux-next@vger.kernel.org>
Subject: linux-next: Signed-off-by missing for commit in the bluetooth tree
Message-ID: <20240711075515.48777bbd@canb.auug.org.au>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/wYZl80dQQ7_Jju0qP8PANeI";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274213 org.kernel.vger.linux-next:62181
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--Sig_/wYZl80dQQ7_Jju0qP8PANeI
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi all,

Commits

  b9a7772aba0c ("power: pwrseq: add a driver for the PMU module on the QCom=
 WCN chipsets")
  4989331f005b ("power: sequencing: implement the pwrseq core")

are missing a Signed-off-by from their committer.

--=20
Cheers,
Stephen Rothwell

--Sig_/wYZl80dQQ7_Jju0qP8PANeI
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaPA0MACgkQAVBC80lX
0GzJxgf8CU7OKg3shBpxz42OGIfkmXy6weGSaIYbItUREnnhs1DMia6zoSTJeq6B
7esdsORZsfzK4bLJ85+kjtxnYcGGTU0o5IM0BSkpyKR1T0zywA4sIYw4jBWGfT2K
CoklitZkpiAZoLyIb0xbAnUibIgGrF11esJZV3BFn84k9E/CHax8Yzsyh6zjOnRL
+9cXhhfJWJcpPALf3ctTYQfKGhf4gRsiHv2jjGPIiS023aMrjQxbE5inBlWnvz4E
ldcgPxPP55o1jj9kc6n7m6yHJkU1ONOpqXE0Nr7w8VVQs/mkuw+wISPblBPqNG5D
GlBzoK7pBTKsMZMGvgIp3xH7BRZZ7g==
=0nUf
-----END PGP SIGNATURE-----

--Sig_/wYZl80dQQ7_Jju0qP8PANeI--
.

