* Re: [PATCH] usb: typec: tcpm: support sink port for debounce
2024-03-12 1:13 20% [PATCH] usb: typec: tcpm: support sink port for debounce Michael Wu
@ 2024-03-12 11:07 0% ` Heikki Krogerus
0 siblings, 0 replies; 200+ results
From: Heikki Krogerus @ 2024-03-12 11:07 UTC (permalink / raw)
To: Michael Wu
Cc: gregkh, linux, badhri, kyletso, frank.wang, rdbabiera, xu.yang_2,
linux-usb, linux-kernel
On Tue, Mar 12, 2024 at 09:13:00AM +0800, Michael Wu wrote:
> When both CC1 and CC2 pins are simultaneously pulled up, it often leads
> to the double Rp to Vbus cable being stuck in the SNK_ATTACH_WAIT state.
> And the state machine fails to transition to the SNK_ATTACHED state.
>
> Therefore, it is recommended to focus on transitioning the sink port to
> the SNK_DEBOUNCED state instead. By doing so, the desired outcome can be
> achieved more effectively.
Recommended by whom (or what)?
> [ 134.525750] VBUS on
> [ 134.713240] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
> [ 134.713249] state change TOGGLING -> SNK_ATTACH_WAIT [rev3 NONE_AMS]
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/usb/typec/tcpm/tcpm.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index 0965972310275..9228dbd78bf2b 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -4197,6 +4197,8 @@ static void run_state_machine(struct tcpm_port *port)
> else if (tcpm_port_is_disconnected(port))
> tcpm_set_state(port, SNK_UNATTACHED,
> PD_T_PD_DEBOUNCE);
> + else if (tcpm_port_is_sink(port))
> + tcpm_set_state(port, SNK_DEBOUNCED, 0);
> break;
> case SNK_DEBOUNCED:
> if (tcpm_port_is_disconnected(port))
> --
> 2.29.0
--
heikki
^ permalink raw reply [relevance 0%]
* [PATCH] usb: typec: tcpm: support sink port for debounce
@ 2024-03-12 1:13 20% Michael Wu
2024-03-12 11:07 0% ` Heikki Krogerus
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2024-03-12 1:13 UTC (permalink / raw)
To: heikki.krogerus, gregkh, linux, badhri, kyletso, frank.wang,
rdbabiera, xu.yang_2
Cc: linux-usb, linux-kernel
When both CC1 and CC2 pins are simultaneously pulled up, it often leads
to the double Rp to Vbus cable being stuck in the SNK_ATTACH_WAIT state.
And the state machine fails to transition to the SNK_ATTACHED state.
Therefore, it is recommended to focus on transitioning the sink port to
the SNK_DEBOUNCED state instead. By doing so, the desired outcome can be
achieved more effectively.
[ 134.525750] VBUS on
[ 134.713240] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
[ 134.713249] state change TOGGLING -> SNK_ATTACH_WAIT [rev3 NONE_AMS]
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/usb/typec/tcpm/tcpm.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index 0965972310275..9228dbd78bf2b 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -4197,6 +4197,8 @@ static void run_state_machine(struct tcpm_port *port)
else if (tcpm_port_is_disconnected(port))
tcpm_set_state(port, SNK_UNATTACHED,
PD_T_PD_DEBOUNCE);
+ else if (tcpm_port_is_sink(port))
+ tcpm_set_state(port, SNK_DEBOUNCED, 0);
break;
case SNK_DEBOUNCED:
if (tcpm_port_is_disconnected(port))
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH] mmc: core: Add new flag to force hardware reset
2023-11-06 14:19 6% ` Ulf Hansson
@ 2024-01-11 6:05 0% ` Wenchao Chen
0 siblings, 0 replies; 200+ results
From: Wenchao Chen @ 2024-01-11 6:05 UTC (permalink / raw)
To: Ulf Hansson
Cc: Michael Wu, adrian.hunter, jinpu.wang, victor.shih, avri.altman,
asuk4.q, f.fainelli, beanhuo, linux-mmc, linux-kernel,
Sarthak Garg
On Mon, 6 Nov 2023 at 22:20, Ulf Hansson <ulf.hansson@linaro.org> wrote:
>
> On Mon, 6 Nov 2023 at 13:26, Michael Wu <michael@allwinnertech.com> wrote:
> >
> > On 9/25/2023 9:59 PM, Ulf Hansson wrote:
> > > - trimmed cc-list, + Sartak Garg
> > >
> > > On Thu, 14 Sept 2023 at 10:00, Wenchao Chen <wenchao.chen666@gmail.com> wrote:
> > >>
> > >> On Thu, 14 Sept 2023 at 08:04, Michael Wu <michael@allwinnertech.com> wrote:
> > >>>
> > >>> Entering the recovery system itself indicates a transmission error.
> > >>> In this situation, we intend to execute the mmc_blk_reset function
> > >>> to clear any anomalies that may be caused by errors. We have previously
> > >>> discussed with several MMC device manufacturers, and they expressed
> > >>> their desire for us to reset the device when errors occur to ensure
> > >>> stable operation. We aim to make this code compatible with all devices
> > >>> and ensure its stable performance, so we would like to add this patch
> > >>>
> > >>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> > >>
> > >> like: https://lore.kernel.org/linux-mmc/20220603051534.22672-1-quic_sartgarg@quicinc.com/
> > >
> > > Looks like this series didn't make it. I was awaiting a rebase from
> > > Sartak to apply it, but apparently something got in his way for a new
> > > submission.
> > >
> > >>
> > >> You should enable it in the vendor host.
> > >
> > > Yes! We don't want unused code in the core. We need a user of it too.
> > >
> > > May I suggest that you pick up Sartak's patch for the core and thus
> > > add another patch for the host driver you care about and then
> > > re-submit it as a small series.
> > >
> > > Kind regards
> > > Uffe
> > >
> > >>
> > >>> ---
> > >>> drivers/mmc/core/block.c | 2 +-
> > >>> include/linux/mmc/host.h | 1 +
> > >>> 2 files changed, 2 insertions(+), 1 deletion(-)
> > >>>
> > >>> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> > >>> index b5b414a71e0b..29fbe0ddeadb 100644
> > >>> --- a/drivers/mmc/core/block.c
> > >>> +++ b/drivers/mmc/core/block.c
> > >>> @@ -1503,7 +1503,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
> > >>> pr_debug("%s: CQE recovery start\n", mmc_hostname(host));
> > >>>
> > >>> err = mmc_cqe_recovery(host);
> > >>> - if (err)
> > >>> + if (err || host->cqe_recovery_reset_always)
> > >>> mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
> > >>> mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
> > >>>
> > >>> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> > >>> index 62a6847a3b6f..f578541a06b5 100644
> > >>> --- a/include/linux/mmc/host.h
> > >>> +++ b/include/linux/mmc/host.h
> > >>> @@ -518,6 +518,7 @@ struct mmc_host {
> > >>> int cqe_qdepth;
> > >>> bool cqe_enabled;
> > >>> bool cqe_on;
> > >>> + bool cqe_recovery_reset_always;
> > >>>
> > >>> /* Inline encryption support */
> > >>> #ifdef CONFIG_MMC_CRYPTO
> > >>> --
> > >>> 2.29.0
> > >>>
> > Dear Ulf,
> > I have tested Sartak's patch and it is also able to resolve the issue we
> > are currently facing. Therefore, I would like to inquire about the
> > expected timeline for merging Sartak's patch.
>
Hi Sartak
Any updates?
> Hi Michael,
>
> There is another series [1] that Adrian is working on that is related
> to the problem in $subject patch. Perhaps you can take a look and try
> it out instead of Sartak's patch, which seems to have gotten stalled.
>
> Kind regards
> Uffe
>
> [1]
> https://lore.kernel.org/all/20231103084720.6886-1-adrian.hunter@intel.com/
^ permalink raw reply [relevance 0%]
* [PATCH RESEND] iio: adc: sun4i-gpadc-iio: adaptation interrupt number
@ 2023-12-20 7:15 6% ` fuyao
1 sibling, 0 replies; 200+ results
From: fuyao @ 2023-12-20 7:15 UTC (permalink / raw)
To: Lee Jones, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland,
linux-arm-kernel, linux-sunxi, linux-kernel
Cc: Maxime Ripard, maijianzhang
__platform_get_irq_byname determinies whether the interrupt
number is 0 and returns EINVAL.
Signed-off-by: fuyao <fuyao1697@cyg.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
include/linux/mfd/sun4i-gpadc.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/mfd/sun4i-gpadc.h b/include/linux/mfd/sun4i-gpadc.h
index ea0ccf33a459..021f820f9d52 100644
--- a/include/linux/mfd/sun4i-gpadc.h
+++ b/include/linux/mfd/sun4i-gpadc.h
@@ -81,8 +81,8 @@
#define SUN4I_GPADC_TEMP_DATA 0x20
#define SUN4I_GPADC_DATA 0x24
-#define SUN4I_GPADC_IRQ_FIFO_DATA 0
-#define SUN4I_GPADC_IRQ_TEMP_DATA 1
+#define SUN4I_GPADC_IRQ_FIFO_DATA 1
+#define SUN4I_GPADC_IRQ_TEMP_DATA 2
/* 10s delay before suspending the IP */
#define SUN4I_GPADC_AUTOSUSPEND_DELAY 10000
--
2.32.0
--
CYG Technology
From mboxrd@z Thu Jan 1 00:00:00 1970
Return-Path: <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
aws-us-west-2-korg-lkml-1.web.codeaurora.org
Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by smtp.lore.kernel.org (Postfix) with ESMTPS id D7BEFC04AA5
for <linux-arm-kernel@archiver.kernel.org>; Thu, 25 Aug 2022 11:54:00 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=lists.infradead.org; s=bombadil.20210309; h=Sender:
Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Subject:Cc:To:
From:Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:
Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:
List-Owner; bh=43HWo/ZUnCasly+ZDH2iZ6YziJoEl7DGgRHVq1AWHGA=; b=N4HqsZY4E2SL6r
coTCsOX2hRzQ7B0a1T00J2VkAPl7AipXosk76WMzyfIWnLKRkW8uqqBXKpQ2sHn25CKHP+ZW5UpiD
6l25/vh+YIPuTKjxd22dXb3QWpmIObDbHRRIOZSAWMBva+k42rsgsfgRyYKOI/+fBRoqDqFZHrjV1
LbiROW7b0SqMq6vAWAjGQvRON+qQDsqqpadEY+j508ViyVZdDIB2TY1zdy6uTAc4QqMRmzUH2NP7W
eSzjr4Kd1dtJMmykNtjjlIm/7IPwpXbHb72IdX1lzo27891mjNCP6V6fToGXw+s5RFS1qHaRuZ+XB
8g9p7pCDPqH/9eUb74/g==;
Received: from localhost ([::1] helo=bombadil.infradead.org)
by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux))
id 1oRBPm-00D1Ka-Ur; Thu, 25 Aug 2022 11:52:51 +0000
Received: from out20-123.mail.aliyun.com ([115.124.20.123])
by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux))
id 1oRBPk-00D1FB-2p
for linux-arm-kernel@lists.infradead.org; Thu, 25 Aug 2022 11:52:49 +0000
X-Alimail-AntiSpam: AC=CONTINUE;BC=0.3045855|-1;BR=01201311R131S89rulernew998_84748_2000303;CH=blue;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.025949-0.00105542-0.972996;FP=0|0|0|0|0|-1|-1|-1;HT=ay29a033018047190;MF=fuyao@sjterm.com;NM=1;PH=DS;RN=9;RT=9;SR=0;TI=SMTPD_---.P.m81RD_1661428046;
Received: from localhost(mailfrom:fuyao@sjterm.com fp:SMTPD_---.P.m81RD_1661428046)
by smtp.aliyun-inc.com;
Thu, 25 Aug 2022 19:47:26 +0800
Date: Thu, 25 Aug 2022 19:47:26 +0800
From: fuyao <fuyao1697@cyg.com>
To: Lee Jones <lee@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev,
linux-kernel@vger.kernel.org
Cc: Maxime Ripard <mripard@kernel.org>,
maijianzhang <maijianzhang@allwinnertech.com>
Subject: [PATCH] iio: adc: sun4i-gpadc-iio: adaptation interrupt number
Message-ID: <YwdhTlk+7h+FMrwm@scg>
Mail-Followup-To: Lee Jones <lee@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev,
linux-kernel@vger.kernel.org, Maxime Ripard <mripard@kernel.org>,
maijianzhang <maijianzhang@allwinnertech.com>
MIME-Version: 1.0
Content-Disposition: inline
Organization: work_work_work
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
X-CRM114-CacheID: sfid-20220825_045248_320501_10DAB7D1
X-CRM114-Status: UNSURE ( 9.15 )
X-CRM114-Notice: Please train this message.
X-BeenThere: linux-arm-kernel@lists.infradead.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: <linux-arm-kernel.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
__platform_get_irq_byname determinies whether the interrupt
number is 0 and returns EINVAL.
Signed-off-by: fuyao <fuyao1697@cyg.com>
---
include/linux/mfd/sun4i-gpadc.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/mfd/sun4i-gpadc.h b/include/linux/mfd/sun4i-gpadc.h
index ea0ccf33a459..021f820f9d52 100644
--- a/include/linux/mfd/sun4i-gpadc.h
+++ b/include/linux/mfd/sun4i-gpadc.h
@@ -81,8 +81,8 @@
#define SUN4I_GPADC_TEMP_DATA 0x20
#define SUN4I_GPADC_DATA 0x24
-#define SUN4I_GPADC_IRQ_FIFO_DATA 0
-#define SUN4I_GPADC_IRQ_TEMP_DATA 1
+#define SUN4I_GPADC_IRQ_FIFO_DATA 1
+#define SUN4I_GPADC_IRQ_TEMP_DATA 2
/* 10s delay before suspending the IP */
#define SUN4I_GPADC_AUTOSUSPEND_DELAY 10000
--
2.32.0
--
Technology is exciting
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
CYG Technology.
^ permalink raw reply related [relevance 6%]
* [PATCH RESEND] iio: adc: sun4i-gpadc-iio: adaptation interrupt number
@ 2023-12-20 7:08 6% ` fuyao
0 siblings, 0 replies; 200+ results
From: fuyao @ 2023-12-20 7:08 UTC (permalink / raw)
To: Lee Jones, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland,
linux-arm-kernel, linux-sunxi, linux-kernel
Cc: Maxime Ripard, maijianzhang
__platform_get_irq_byname determinies whether the interrupt
number is 0 and returns EINVAL.
Signed-off-by: fuyao <fuyao1697@cyg.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
include/linux/mfd/sun4i-gpadc.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/mfd/sun4i-gpadc.h b/include/linux/mfd/sun4i-gpadc.h
index ea0ccf33a459..021f820f9d52 100644
--- a/include/linux/mfd/sun4i-gpadc.h
+++ b/include/linux/mfd/sun4i-gpadc.h
@@ -81,8 +81,8 @@
#define SUN4I_GPADC_TEMP_DATA 0x20
#define SUN4I_GPADC_DATA 0x24
-#define SUN4I_GPADC_IRQ_FIFO_DATA 0
-#define SUN4I_GPADC_IRQ_TEMP_DATA 1
+#define SUN4I_GPADC_IRQ_FIFO_DATA 1
+#define SUN4I_GPADC_IRQ_TEMP_DATA 2
/* 10s delay before suspending the IP */
#define SUN4I_GPADC_AUTOSUSPEND_DELAY 10000
--
2.32.0
--
Technology is exciting
From mboxrd@z Thu Jan 1 00:00:00 1970
Return-Path: <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
aws-us-west-2-korg-lkml-1.web.codeaurora.org
Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by smtp.lore.kernel.org (Postfix) with ESMTPS id D7BEFC04AA5
for <linux-arm-kernel@archiver.kernel.org>; Thu, 25 Aug 2022 11:54:00 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=lists.infradead.org; s=bombadil.20210309; h=Sender:
Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Subject:Cc:To:
From:Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:
Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:
List-Owner; bh=43HWo/ZUnCasly+ZDH2iZ6YziJoEl7DGgRHVq1AWHGA=; b=N4HqsZY4E2SL6r
coTCsOX2hRzQ7B0a1T00J2VkAPl7AipXosk76WMzyfIWnLKRkW8uqqBXKpQ2sHn25CKHP+ZW5UpiD
6l25/vh+YIPuTKjxd22dXb3QWpmIObDbHRRIOZSAWMBva+k42rsgsfgRyYKOI/+fBRoqDqFZHrjV1
LbiROW7b0SqMq6vAWAjGQvRON+qQDsqqpadEY+j508ViyVZdDIB2TY1zdy6uTAc4QqMRmzUH2NP7W
eSzjr4Kd1dtJMmykNtjjlIm/7IPwpXbHb72IdX1lzo27891mjNCP6V6fToGXw+s5RFS1qHaRuZ+XB
8g9p7pCDPqH/9eUb74/g==;
Received: from localhost ([::1] helo=bombadil.infradead.org)
by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux))
id 1oRBPm-00D1Ka-Ur; Thu, 25 Aug 2022 11:52:51 +0000
Received: from out20-123.mail.aliyun.com ([115.124.20.123])
by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux))
id 1oRBPk-00D1FB-2p
for linux-arm-kernel@lists.infradead.org; Thu, 25 Aug 2022 11:52:49 +0000
X-Alimail-AntiSpam: AC=CONTINUE;BC=0.3045855|-1;BR=01201311R131S89rulernew998_84748_2000303;CH=blue;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.025949-0.00105542-0.972996;FP=0|0|0|0|0|-1|-1|-1;HT=ay29a033018047190;MF=fuyao@sjterm.com;NM=1;PH=DS;RN=9;RT=9;SR=0;TI=SMTPD_---.P.m81RD_1661428046;
Received: from localhost(mailfrom:fuyao@sjterm.com fp:SMTPD_---.P.m81RD_1661428046)
by smtp.aliyun-inc.com;
Thu, 25 Aug 2022 19:47:26 +0800
Date: Thu, 25 Aug 2022 19:47:26 +0800
From: fuyao <fuyao1697@cyg.com>
To: Lee Jones <lee@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev,
linux-kernel@vger.kernel.org
Cc: Maxime Ripard <mripard@kernel.org>,
maijianzhang <maijianzhang@allwinnertech.com>
Subject: [PATCH] iio: adc: sun4i-gpadc-iio: adaptation interrupt number
Message-ID: <YwdhTlk+7h+FMrwm@scg>
Mail-Followup-To: Lee Jones <lee@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev,
linux-kernel@vger.kernel.org, Maxime Ripard <mripard@kernel.org>,
maijianzhang <maijianzhang@allwinnertech.com>
MIME-Version: 1.0
Content-Disposition: inline
Organization: work_work_work
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
X-CRM114-CacheID: sfid-20220825_045248_320501_10DAB7D1
X-CRM114-Status: UNSURE ( 9.15 )
X-CRM114-Notice: Please train this message.
X-BeenThere: linux-arm-kernel@lists.infradead.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: <linux-arm-kernel.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
__platform_get_irq_byname determinies whether the interrupt
number is 0 and returns EINVAL.
Signed-off-by: fuyao <fuyao1697@cyg.com>
---
include/linux/mfd/sun4i-gpadc.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/mfd/sun4i-gpadc.h b/include/linux/mfd/sun4i-gpadc.h
index ea0ccf33a459..021f820f9d52 100644
--- a/include/linux/mfd/sun4i-gpadc.h
+++ b/include/linux/mfd/sun4i-gpadc.h
@@ -81,8 +81,8 @@
#define SUN4I_GPADC_TEMP_DATA 0x20
#define SUN4I_GPADC_DATA 0x24
-#define SUN4I_GPADC_IRQ_FIFO_DATA 0
-#define SUN4I_GPADC_IRQ_TEMP_DATA 1
+#define SUN4I_GPADC_IRQ_FIFO_DATA 1
+#define SUN4I_GPADC_IRQ_TEMP_DATA 2
/* 10s delay before suspending the IP */
#define SUN4I_GPADC_AUTOSUSPEND_DELAY 10000
--
2.32.0
--
Technology is exciting
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
CYG Technology.
^ permalink raw reply related [relevance 6%]
* Re: [PATCH] mmc: core: Add new flag to force hardware reset
2023-11-06 12:26 14% ` Michael Wu
@ 2023-11-06 14:19 6% ` Ulf Hansson
2024-01-11 6:05 0% ` Wenchao Chen
0 siblings, 1 reply; 200+ results
From: Ulf Hansson @ 2023-11-06 14:19 UTC (permalink / raw)
To: Michael Wu
Cc: Wenchao Chen, adrian.hunter, jinpu.wang, victor.shih,
avri.altman, asuk4.q, f.fainelli, beanhuo, linux-mmc,
linux-kernel, Sarthak Garg
On Mon, 6 Nov 2023 at 13:26, Michael Wu <michael@allwinnertech.com> wrote:
>
> On 9/25/2023 9:59 PM, Ulf Hansson wrote:
> > - trimmed cc-list, + Sartak Garg
> >
> > On Thu, 14 Sept 2023 at 10:00, Wenchao Chen <wenchao.chen666@gmail.com> wrote:
> >>
> >> On Thu, 14 Sept 2023 at 08:04, Michael Wu <michael@allwinnertech.com> wrote:
> >>>
> >>> Entering the recovery system itself indicates a transmission error.
> >>> In this situation, we intend to execute the mmc_blk_reset function
> >>> to clear any anomalies that may be caused by errors. We have previously
> >>> discussed with several MMC device manufacturers, and they expressed
> >>> their desire for us to reset the device when errors occur to ensure
> >>> stable operation. We aim to make this code compatible with all devices
> >>> and ensure its stable performance, so we would like to add this patch
> >>>
> >>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> >>
> >> like: https://lore.kernel.org/linux-mmc/20220603051534.22672-1-quic_sartgarg@quicinc.com/
> >
> > Looks like this series didn't make it. I was awaiting a rebase from
> > Sartak to apply it, but apparently something got in his way for a new
> > submission.
> >
> >>
> >> You should enable it in the vendor host.
> >
> > Yes! We don't want unused code in the core. We need a user of it too.
> >
> > May I suggest that you pick up Sartak's patch for the core and thus
> > add another patch for the host driver you care about and then
> > re-submit it as a small series.
> >
> > Kind regards
> > Uffe
> >
> >>
> >>> ---
> >>> drivers/mmc/core/block.c | 2 +-
> >>> include/linux/mmc/host.h | 1 +
> >>> 2 files changed, 2 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> >>> index b5b414a71e0b..29fbe0ddeadb 100644
> >>> --- a/drivers/mmc/core/block.c
> >>> +++ b/drivers/mmc/core/block.c
> >>> @@ -1503,7 +1503,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
> >>> pr_debug("%s: CQE recovery start\n", mmc_hostname(host));
> >>>
> >>> err = mmc_cqe_recovery(host);
> >>> - if (err)
> >>> + if (err || host->cqe_recovery_reset_always)
> >>> mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
> >>> mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
> >>>
> >>> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> >>> index 62a6847a3b6f..f578541a06b5 100644
> >>> --- a/include/linux/mmc/host.h
> >>> +++ b/include/linux/mmc/host.h
> >>> @@ -518,6 +518,7 @@ struct mmc_host {
> >>> int cqe_qdepth;
> >>> bool cqe_enabled;
> >>> bool cqe_on;
> >>> + bool cqe_recovery_reset_always;
> >>>
> >>> /* Inline encryption support */
> >>> #ifdef CONFIG_MMC_CRYPTO
> >>> --
> >>> 2.29.0
> >>>
> Dear Ulf,
> I have tested Sartak's patch and it is also able to resolve the issue we
> are currently facing. Therefore, I would like to inquire about the
> expected timeline for merging Sartak's patch.
Hi Michael,
There is another series [1] that Adrian is working on that is related
to the problem in $subject patch. Perhaps you can take a look and try
it out instead of Sartak's patch, which seems to have gotten stalled.
Kind regards
Uffe
[1]
https://lore.kernel.org/all/20231103084720.6886-1-adrian.hunter@intel.com/
^ permalink raw reply [relevance 6%]
* Re: [PATCH] mmc: core: Add new flag to force hardware reset
2023-09-25 13:59 0% ` Ulf Hansson
@ 2023-11-06 12:26 14% ` Michael Wu
2023-11-06 14:19 6% ` Ulf Hansson
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2023-11-06 12:26 UTC (permalink / raw)
To: Ulf Hansson, Wenchao Chen
Cc: adrian.hunter, jinpu.wang, victor.shih, avri.altman, asuk4.q,
f.fainelli, beanhuo, linux-mmc, linux-kernel, Sarthak Garg
On 9/25/2023 9:59 PM, Ulf Hansson wrote:
> - trimmed cc-list, + Sartak Garg
>
> On Thu, 14 Sept 2023 at 10:00, Wenchao Chen <wenchao.chen666@gmail.com> wrote:
>>
>> On Thu, 14 Sept 2023 at 08:04, Michael Wu <michael@allwinnertech.com> wrote:
>>>
>>> Entering the recovery system itself indicates a transmission error.
>>> In this situation, we intend to execute the mmc_blk_reset function
>>> to clear any anomalies that may be caused by errors. We have previously
>>> discussed with several MMC device manufacturers, and they expressed
>>> their desire for us to reset the device when errors occur to ensure
>>> stable operation. We aim to make this code compatible with all devices
>>> and ensure its stable performance, so we would like to add this patch
>>>
>>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>>
>> like: https://lore.kernel.org/linux-mmc/20220603051534.22672-1-quic_sartgarg@quicinc.com/
>
> Looks like this series didn't make it. I was awaiting a rebase from
> Sartak to apply it, but apparently something got in his way for a new
> submission.
>
>>
>> You should enable it in the vendor host.
>
> Yes! We don't want unused code in the core. We need a user of it too.
>
> May I suggest that you pick up Sartak's patch for the core and thus
> add another patch for the host driver you care about and then
> re-submit it as a small series.
>
> Kind regards
> Uffe
>
>>
>>> ---
>>> drivers/mmc/core/block.c | 2 +-
>>> include/linux/mmc/host.h | 1 +
>>> 2 files changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
>>> index b5b414a71e0b..29fbe0ddeadb 100644
>>> --- a/drivers/mmc/core/block.c
>>> +++ b/drivers/mmc/core/block.c
>>> @@ -1503,7 +1503,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
>>> pr_debug("%s: CQE recovery start\n", mmc_hostname(host));
>>>
>>> err = mmc_cqe_recovery(host);
>>> - if (err)
>>> + if (err || host->cqe_recovery_reset_always)
>>> mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
>>> mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
>>>
>>> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
>>> index 62a6847a3b6f..f578541a06b5 100644
>>> --- a/include/linux/mmc/host.h
>>> +++ b/include/linux/mmc/host.h
>>> @@ -518,6 +518,7 @@ struct mmc_host {
>>> int cqe_qdepth;
>>> bool cqe_enabled;
>>> bool cqe_on;
>>> + bool cqe_recovery_reset_always;
>>>
>>> /* Inline encryption support */
>>> #ifdef CONFIG_MMC_CRYPTO
>>> --
>>> 2.29.0
>>>
Dear Ulf,
I have tested Sartak's patch and it is also able to resolve the issue we
are currently facing. Therefore, I would like to inquire about the
expected timeline for merging Sartak's patch.
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] mmc: core: Add new flag to force hardware reset
2023-09-14 8:00 6% ` Wenchao Chen
@ 2023-09-25 13:59 0% ` Ulf Hansson
2023-11-06 12:26 14% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Ulf Hansson @ 2023-09-25 13:59 UTC (permalink / raw)
To: Michael Wu, Wenchao Chen
Cc: adrian.hunter, jinpu.wang, victor.shih, avri.altman, asuk4.q,
f.fainelli, beanhuo, linux-mmc, linux-kernel, Sarthak Garg
- trimmed cc-list, + Sartak Garg
On Thu, 14 Sept 2023 at 10:00, Wenchao Chen <wenchao.chen666@gmail.com> wrote:
>
> On Thu, 14 Sept 2023 at 08:04, Michael Wu <michael@allwinnertech.com> wrote:
> >
> > Entering the recovery system itself indicates a transmission error.
> > In this situation, we intend to execute the mmc_blk_reset function
> > to clear any anomalies that may be caused by errors. We have previously
> > discussed with several MMC device manufacturers, and they expressed
> > their desire for us to reset the device when errors occur to ensure
> > stable operation. We aim to make this code compatible with all devices
> > and ensure its stable performance, so we would like to add this patch
> >
> > Signed-off-by: Michael Wu <michael@allwinnertech.com>
>
> like: https://lore.kernel.org/linux-mmc/20220603051534.22672-1-quic_sartgarg@quicinc.com/
Looks like this series didn't make it. I was awaiting a rebase from
Sartak to apply it, but apparently something got in his way for a new
submission.
>
> You should enable it in the vendor host.
Yes! We don't want unused code in the core. We need a user of it too.
May I suggest that you pick up Sartak's patch for the core and thus
add another patch for the host driver you care about and then
re-submit it as a small series.
Kind regards
Uffe
>
> > ---
> > drivers/mmc/core/block.c | 2 +-
> > include/linux/mmc/host.h | 1 +
> > 2 files changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> > index b5b414a71e0b..29fbe0ddeadb 100644
> > --- a/drivers/mmc/core/block.c
> > +++ b/drivers/mmc/core/block.c
> > @@ -1503,7 +1503,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
> > pr_debug("%s: CQE recovery start\n", mmc_hostname(host));
> >
> > err = mmc_cqe_recovery(host);
> > - if (err)
> > + if (err || host->cqe_recovery_reset_always)
> > mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
> > mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
> >
> > diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> > index 62a6847a3b6f..f578541a06b5 100644
> > --- a/include/linux/mmc/host.h
> > +++ b/include/linux/mmc/host.h
> > @@ -518,6 +518,7 @@ struct mmc_host {
> > int cqe_qdepth;
> > bool cqe_enabled;
> > bool cqe_on;
> > + bool cqe_recovery_reset_always;
> >
> > /* Inline encryption support */
> > #ifdef CONFIG_MMC_CRYPTO
> > --
> > 2.29.0
> >
^ permalink raw reply [relevance 0%]
* Re: [RESEND v2] usb:typec:tcpm:support double Rp to Vbus cable as sink
2023-09-20 6:30 20% [RESEND " Michael Wu
2023-09-21 20:39 0% ` Guenter Roeck
@ 2023-09-22 10:53 0% ` Heikki Krogerus
1 sibling, 0 replies; 200+ results
From: Heikki Krogerus @ 2023-09-22 10:53 UTC (permalink / raw)
To: Michael Wu; +Cc: linux, gregkh, linux-usb, linux-kernel
On Wed, Sep 20, 2023 at 02:30:30PM +0800, Michael Wu wrote:
> The USB Type-C Cable and Connector Specification defines the wire
> connections for the USB Type-C to USB 2.0 Standard-A cable assembly
> (Release 2.2, Chapter 3.5.2).
> The Notes says that Pin A5 (CC) of the USB Type-C plug shall be connected
> to Vbus through a resister Rp.
> However, there is a large amount of such double Rp connected to Vbus
> non-standard cables which produced by UGREEN circulating on the market, and
> it can affects the normal operations of the state machine easily,
> especially to CC1 and CC2 be pulled up at the same time.
> In fact, we can regard those cables as sink to avoid abnormal state.
>
> Message as follow:
> [ 58.900212] VBUS on
> [ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
> [ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0, disconnected]
> [ 62.625006] VBUS off
> [ 62.625012] VBUS VSAFE0V
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
> v1 -> v2: Simplify expression and add a comment to the code.
>
> drivers/usb/typec/tcpm/tcpm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/usb/typec/tcpm/tcpm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index d962f67c95ae6..6e843c511b856 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -517,9 +517,9 @@ static const char * const pd_rev[] = {
> ((cc) == TYPEC_CC_RP_DEF || (cc) == TYPEC_CC_RP_1_5 || \
> (cc) == TYPEC_CC_RP_3_0)
>
> +/* As long as cc is pulled up, we can consider it as sink. */
> #define tcpm_port_is_sink(port) \
> - ((tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) || \
> - (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
> + (tcpm_cc_is_sink((port)->cc1) || tcpm_cc_is_sink((port)->cc2))
>
> #define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
> #define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
> --
> 2.29.0
--
heikki
^ permalink raw reply [relevance 0%]
* Re: [RESEND v2] usb:typec:tcpm:support double Rp to Vbus cable as sink
2023-09-20 6:30 20% [RESEND " Michael Wu
@ 2023-09-21 20:39 0% ` Guenter Roeck
2023-09-22 10:53 0% ` Heikki Krogerus
1 sibling, 0 replies; 200+ results
From: Guenter Roeck @ 2023-09-21 20:39 UTC (permalink / raw)
To: Michael Wu, heikki.krogerus, gregkh; +Cc: linux-usb, linux-kernel
On 9/19/23 23:30, Michael Wu wrote:
> The USB Type-C Cable and Connector Specification defines the wire
> connections for the USB Type-C to USB 2.0 Standard-A cable assembly
> (Release 2.2, Chapter 3.5.2).
> The Notes says that Pin A5 (CC) of the USB Type-C plug shall be connected
> to Vbus through a resister Rp.
> However, there is a large amount of such double Rp connected to Vbus
> non-standard cables which produced by UGREEN circulating on the market, and
> it can affects the normal operations of the state machine easily,
> especially to CC1 and CC2 be pulled up at the same time.
> In fact, we can regard those cables as sink to avoid abnormal state.
>
> Message as follow:
> [ 58.900212] VBUS on
> [ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
> [ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0, disconnected]
> [ 62.625006] VBUS off
> [ 62.625012] VBUS VSAFE0V
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
> ---
> v1 -> v2: Simplify expression and add a comment to the code.
>
> drivers/usb/typec/tcpm/tcpm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/usb/typec/tcpm/tcpm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index d962f67c95ae6..6e843c511b856 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -517,9 +517,9 @@ static const char * const pd_rev[] = {
> ((cc) == TYPEC_CC_RP_DEF || (cc) == TYPEC_CC_RP_1_5 || \
> (cc) == TYPEC_CC_RP_3_0)
>
> +/* As long as cc is pulled up, we can consider it as sink. */
> #define tcpm_port_is_sink(port) \
> - ((tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) || \
> - (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
> + (tcpm_cc_is_sink((port)->cc1) || tcpm_cc_is_sink((port)->cc2))
>
> #define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
> #define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
^ permalink raw reply [relevance 0%]
* Re: [PATCH] usb:typec:tcpm:support double Rp to Vbus cable as sink
2023-09-18 14:22 0% ` Guenter Roeck
@ 2023-09-20 10:45 20% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2023-09-20 10:45 UTC (permalink / raw)
To: Guenter Roeck, Heikki Krogerus; +Cc: gregkh, linux-usb, linux-kernel
On 2023/9/18 22:22, Guenter Roeck wrote:
> On 9/18/23 03:31, Heikki Krogerus wrote:
>> On Thu, Sep 14, 2023 at 08:31:54AM +0800, Michael Wu wrote:
>>> The USB Type-C Cable and Connector Specification defines the wire
>>> connections for the USB Type-C to USB 2.0 Standard-A cable assembly
>>> (Release 2.2, Chapter 3.5.2).
>>> The Notes says that Pin A5 (CC) of the USB Type-C plug shall be
>>> connected
>>> to Vbus through a resister Rp.
>>> However, there is a large amount of such double Rp connected to Vbus
>>> non-standard cables which produced by UGREEN circulating on the
>>> market, and
>>> it can affects the normal operations of the state machine easily,
>>> especially to CC1 and CC2 be pulled up at the same time.
>>> In fact, we can regard those cables as sink to avoid abnormal state.
>>>
>>> Message as follow:
>>> [ 58.900212] VBUS on
>>> [ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0,
>>> connected]
>>> [ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0,
>>> disconnected]
>>> [ 62.625006] VBUS off
>>> [ 62.625012] VBUS VSAFE0V
>>>
>>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>>> ---
>>> drivers/usb/typec/tcpm/tcpm.c | 3 ++-
>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/usb/typec/tcpm/tcpm.c
>>> b/drivers/usb/typec/tcpm/tcpm.c
>>> index d962f67c95ae6..beb7143128667 100644
>>> --- a/drivers/usb/typec/tcpm/tcpm.c
>>> +++ b/drivers/usb/typec/tcpm/tcpm.c
>>> @@ -519,7 +519,8 @@ static const char * const pd_rev[] = {
>>> #define tcpm_port_is_sink(port) \
>>> ((tcpm_cc_is_sink((port)->cc1) &&
>>> !tcpm_cc_is_sink((port)->cc2)) || \
>>> - (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
>>> + (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1))
>>> || \
>>> + (tcpm_cc_is_sink((port)->cc1) && tcpm_cc_is_sink((port)->cc2)))
>>> #define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
>>> #define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
>>
>> This look OK to me, but I would still like to wait for comments from
>> Guenter - just in case.
>>
>
> Look at the conditions. Reordered, we end up with
> (tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) ||
> (tcpm_cc_is_sink((port)->cc1) && tcpm_cc_is_sink((port)->cc2))
> which simplifies to
> tcpm_cc_is_sink((port)->cc1)
> making the complete expression
> tcpm_cc_is_sink((port)->cc1) ||
> (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1))
> which simplifies further to
> tcpm_cc_is_sink((port)->cc1) || tcpm_cc_is_sink((port)->cc2)
>
> The simplified expression doesn't conflict with other detections, so I am
> ok with it. It might be worthwhile adding a comment to the code, though,
> explaining the reason
> Guenter
>
>> thanks,
>>
Dear Guenter,
I have modified it according to your opinion, and resend it as patch
v2[1]. Please review.
[1]
https://lore.kernel.org/all/20230920063030.66312-1-michael@allwinnertech.com/
--
Regards,
Michael Wu
^ permalink raw reply [relevance 20%]
* [RESEND v2] usb:typec:tcpm:support double Rp to Vbus cable as sink
@ 2023-09-20 6:30 20% Michael Wu
2023-09-21 20:39 0% ` Guenter Roeck
2023-09-22 10:53 0% ` Heikki Krogerus
0 siblings, 2 replies; 200+ results
From: Michael Wu @ 2023-09-20 6:30 UTC (permalink / raw)
To: linux, heikki.krogerus, gregkh; +Cc: linux-usb, linux-kernel
The USB Type-C Cable and Connector Specification defines the wire
connections for the USB Type-C to USB 2.0 Standard-A cable assembly
(Release 2.2, Chapter 3.5.2).
The Notes says that Pin A5 (CC) of the USB Type-C plug shall be connected
to Vbus through a resister Rp.
However, there is a large amount of such double Rp connected to Vbus
non-standard cables which produced by UGREEN circulating on the market, and
it can affects the normal operations of the state machine easily,
especially to CC1 and CC2 be pulled up at the same time.
In fact, we can regard those cables as sink to avoid abnormal state.
Message as follow:
[ 58.900212] VBUS on
[ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
[ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0, disconnected]
[ 62.625006] VBUS off
[ 62.625012] VBUS VSAFE0V
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
v1 -> v2: Simplify expression and add a comment to the code.
drivers/usb/typec/tcpm/tcpm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/usb/typec/tcpm/tcpm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index d962f67c95ae6..6e843c511b856 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -517,9 +517,9 @@ static const char * const pd_rev[] = {
((cc) == TYPEC_CC_RP_DEF || (cc) == TYPEC_CC_RP_1_5 || \
(cc) == TYPEC_CC_RP_3_0)
+/* As long as cc is pulled up, we can consider it as sink. */
#define tcpm_port_is_sink(port) \
- ((tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) || \
- (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
+ (tcpm_cc_is_sink((port)->cc1) || tcpm_cc_is_sink((port)->cc2))
#define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
#define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH v2] usb:typec:tcpm:support double Rp to Vbus cable as sink
2023-09-19 9:06 19% [PATCH v2] " Michael Wu
@ 2023-09-19 9:25 0% ` Greg KH
0 siblings, 0 replies; 200+ results
From: Greg KH @ 2023-09-19 9:25 UTC (permalink / raw)
To: Michael Wu; +Cc: linux, heikki.krogerus, linux-usb, linux-kernel
On Tue, Sep 19, 2023 at 05:06:32PM +0800, Michael Wu wrote:
> The USB Type-C Cable and Connector Specification defines the wire
> connections for the USB Type-C to USB 2.0 Standard-A cable assembly
> (Release 2.2, Chapter 3.5.2).
> The Notes says that Pin A5 (CC) of the USB Type-C plug shall be connected
> to Vbus through a resister Rp.
> However, there is a large amount of such double Rp connected to Vbus
> non-standard cables which produced by UGREEN circulating on the market, and
> it can affects the normal operations of the state machine easily,
> especially to CC1 and CC2 be pulled up at the same time.
> In fact, we can regard those cables as sink to avoid abnormal state.
>
> Message as follow:
> [ 58.900212] VBUS on
> [ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
> [ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0, disconnected]
> [ 62.625006] VBUS off
> [ 62.625012] VBUS VSAFE0V
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/usb/typec/tcpm/tcpm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index d962f67c95ae6..6e843c511b856 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -517,9 +517,9 @@ static const char * const pd_rev[] = {
> ((cc) == TYPEC_CC_RP_DEF || (cc) == TYPEC_CC_RP_1_5 || \
> (cc) == TYPEC_CC_RP_3_0)
>
> +/* As long as cc is pulled up, we can consider it as sink. */
> #define tcpm_port_is_sink(port) \
> - ((tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) || \
> - (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
> + (tcpm_cc_is_sink((port)->cc1) || tcpm_cc_is_sink((port)->cc2))
>
> #define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
> #define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
> --
> 2.29.0
>
>
Hi,
This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him
a patch that has triggered this response. He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created. Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.
You are receiving this message because of the following common error(s)
as indicated below:
- This looks like a new version of a previously submitted patch, but you
did not list below the --- line any changes from the previous version.
Please read the section entitled "The canonical patch format" in the
kernel file, Documentation/process/submitting-patches.rst for what
needs to be done here to properly describe this.
If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.
thanks,
greg k-h's patch email bot
^ permalink raw reply [relevance 0%]
* [PATCH v2] usb:typec:tcpm:support double Rp to Vbus cable as sink
@ 2023-09-19 9:06 19% Michael Wu
2023-09-19 9:25 0% ` Greg KH
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2023-09-19 9:06 UTC (permalink / raw)
To: linux, heikki.krogerus, gregkh; +Cc: linux-usb, linux-kernel
The USB Type-C Cable and Connector Specification defines the wire
connections for the USB Type-C to USB 2.0 Standard-A cable assembly
(Release 2.2, Chapter 3.5.2).
The Notes says that Pin A5 (CC) of the USB Type-C plug shall be connected
to Vbus through a resister Rp.
However, there is a large amount of such double Rp connected to Vbus
non-standard cables which produced by UGREEN circulating on the market, and
it can affects the normal operations of the state machine easily,
especially to CC1 and CC2 be pulled up at the same time.
In fact, we can regard those cables as sink to avoid abnormal state.
Message as follow:
[ 58.900212] VBUS on
[ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
[ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0, disconnected]
[ 62.625006] VBUS off
[ 62.625012] VBUS VSAFE0V
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/usb/typec/tcpm/tcpm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index d962f67c95ae6..6e843c511b856 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -517,9 +517,9 @@ static const char * const pd_rev[] = {
((cc) == TYPEC_CC_RP_DEF || (cc) == TYPEC_CC_RP_1_5 || \
(cc) == TYPEC_CC_RP_3_0)
+/* As long as cc is pulled up, we can consider it as sink. */
#define tcpm_port_is_sink(port) \
- ((tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) || \
- (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
+ (tcpm_cc_is_sink((port)->cc1) || tcpm_cc_is_sink((port)->cc2))
#define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
#define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
--
2.29.0
^ permalink raw reply related [relevance 19%]
* Re: [PATCH] usb:typec:tcpm:support double Rp to Vbus cable as sink
2023-09-18 10:31 0% ` Heikki Krogerus
@ 2023-09-18 14:22 0% ` Guenter Roeck
2023-09-20 10:45 20% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Guenter Roeck @ 2023-09-18 14:22 UTC (permalink / raw)
To: Heikki Krogerus, Michael Wu; +Cc: gregkh, linux-usb, linux-kernel
On 9/18/23 03:31, Heikki Krogerus wrote:
> On Thu, Sep 14, 2023 at 08:31:54AM +0800, Michael Wu wrote:
>> The USB Type-C Cable and Connector Specification defines the wire
>> connections for the USB Type-C to USB 2.0 Standard-A cable assembly
>> (Release 2.2, Chapter 3.5.2).
>> The Notes says that Pin A5 (CC) of the USB Type-C plug shall be connected
>> to Vbus through a resister Rp.
>> However, there is a large amount of such double Rp connected to Vbus
>> non-standard cables which produced by UGREEN circulating on the market, and
>> it can affects the normal operations of the state machine easily,
>> especially to CC1 and CC2 be pulled up at the same time.
>> In fact, we can regard those cables as sink to avoid abnormal state.
>>
>> Message as follow:
>> [ 58.900212] VBUS on
>> [ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
>> [ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0, disconnected]
>> [ 62.625006] VBUS off
>> [ 62.625012] VBUS VSAFE0V
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/usb/typec/tcpm/tcpm.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
>> index d962f67c95ae6..beb7143128667 100644
>> --- a/drivers/usb/typec/tcpm/tcpm.c
>> +++ b/drivers/usb/typec/tcpm/tcpm.c
>> @@ -519,7 +519,8 @@ static const char * const pd_rev[] = {
>>
>> #define tcpm_port_is_sink(port) \
>> ((tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) || \
>> - (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
>> + (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)) || \
>> + (tcpm_cc_is_sink((port)->cc1) && tcpm_cc_is_sink((port)->cc2)))
>>
>> #define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
>> #define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
>
> This look OK to me, but I would still like to wait for comments from
> Guenter - just in case.
>
Look at the conditions. Reordered, we end up with
(tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) ||
(tcpm_cc_is_sink((port)->cc1) && tcpm_cc_is_sink((port)->cc2))
which simplifies to
tcpm_cc_is_sink((port)->cc1)
making the complete expression
tcpm_cc_is_sink((port)->cc1) ||
(tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1))
which simplifies further to
tcpm_cc_is_sink((port)->cc1) || tcpm_cc_is_sink((port)->cc2)
The simplified expression doesn't conflict with other detections, so I am
ok with it. It might be worthwhile adding a comment to the code, though,
explaining the reason.
Guenter
> thanks,
>
^ permalink raw reply [relevance 0%]
* Re: [PATCH] usb:typec:tcpm:support double Rp to Vbus cable as sink
2023-09-14 0:31 19% [PATCH] usb:typec:tcpm:support double Rp to Vbus cable as sink Michael Wu
@ 2023-09-18 10:31 0% ` Heikki Krogerus
2023-09-18 14:22 0% ` Guenter Roeck
0 siblings, 1 reply; 200+ results
From: Heikki Krogerus @ 2023-09-18 10:31 UTC (permalink / raw)
To: Michael Wu; +Cc: linux, gregkh, linux-usb, linux-kernel
On Thu, Sep 14, 2023 at 08:31:54AM +0800, Michael Wu wrote:
> The USB Type-C Cable and Connector Specification defines the wire
> connections for the USB Type-C to USB 2.0 Standard-A cable assembly
> (Release 2.2, Chapter 3.5.2).
> The Notes says that Pin A5 (CC) of the USB Type-C plug shall be connected
> to Vbus through a resister Rp.
> However, there is a large amount of such double Rp connected to Vbus
> non-standard cables which produced by UGREEN circulating on the market, and
> it can affects the normal operations of the state machine easily,
> especially to CC1 and CC2 be pulled up at the same time.
> In fact, we can regard those cables as sink to avoid abnormal state.
>
> Message as follow:
> [ 58.900212] VBUS on
> [ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
> [ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0, disconnected]
> [ 62.625006] VBUS off
> [ 62.625012] VBUS VSAFE0V
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/usb/typec/tcpm/tcpm.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
> index d962f67c95ae6..beb7143128667 100644
> --- a/drivers/usb/typec/tcpm/tcpm.c
> +++ b/drivers/usb/typec/tcpm/tcpm.c
> @@ -519,7 +519,8 @@ static const char * const pd_rev[] = {
>
> #define tcpm_port_is_sink(port) \
> ((tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) || \
> - (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
> + (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)) || \
> + (tcpm_cc_is_sink((port)->cc1) && tcpm_cc_is_sink((port)->cc2)))
>
> #define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
> #define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
This look OK to me, but I would still like to wait for comments from
Guenter - just in case.
thanks,
--
heikki
^ permalink raw reply [relevance 0%]
* Re: [PATCH] mmc: core: Add new flag to force hardware reset
2023-09-14 0:03 19% [PATCH] mmc: core: Add new flag to force hardware reset Michael Wu
@ 2023-09-14 8:00 6% ` Wenchao Chen
2023-09-25 13:59 0% ` Ulf Hansson
0 siblings, 1 reply; 200+ results
From: Wenchao Chen @ 2023-09-14 8:00 UTC (permalink / raw)
To: Michael Wu
Cc: ulf.hansson, CLoehle, adrian.hunter, jinpu.wang, hare,
victor.shih, avri.altman, asuk4.q, axboe, brauner, f.fainelli,
beanhuo, linux-mmc, linux-kernel
On Thu, 14 Sept 2023 at 08:04, Michael Wu <michael@allwinnertech.com> wrote:
>
> Entering the recovery system itself indicates a transmission error.
> In this situation, we intend to execute the mmc_blk_reset function
> to clear any anomalies that may be caused by errors. We have previously
> discussed with several MMC device manufacturers, and they expressed
> their desire for us to reset the device when errors occur to ensure
> stable operation. We aim to make this code compatible with all devices
> and ensure its stable performance, so we would like to add this patch
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
like: https://lore.kernel.org/linux-mmc/20220603051534.22672-1-quic_sartgarg@quicinc.com/
You should enable it in the vendor host.
> ---
> drivers/mmc/core/block.c | 2 +-
> include/linux/mmc/host.h | 1 +
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> index b5b414a71e0b..29fbe0ddeadb 100644
> --- a/drivers/mmc/core/block.c
> +++ b/drivers/mmc/core/block.c
> @@ -1503,7 +1503,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
> pr_debug("%s: CQE recovery start\n", mmc_hostname(host));
>
> err = mmc_cqe_recovery(host);
> - if (err)
> + if (err || host->cqe_recovery_reset_always)
> mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
> mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
>
> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> index 62a6847a3b6f..f578541a06b5 100644
> --- a/include/linux/mmc/host.h
> +++ b/include/linux/mmc/host.h
> @@ -518,6 +518,7 @@ struct mmc_host {
> int cqe_qdepth;
> bool cqe_enabled;
> bool cqe_on;
> + bool cqe_recovery_reset_always;
>
> /* Inline encryption support */
> #ifdef CONFIG_MMC_CRYPTO
> --
> 2.29.0
>
^ permalink raw reply [relevance 6%]
* [PATCH] usb:typec:tcpm:support double Rp to Vbus cable as sink
@ 2023-09-14 0:31 19% Michael Wu
2023-09-18 10:31 0% ` Heikki Krogerus
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2023-09-14 0:31 UTC (permalink / raw)
To: linux, heikki.krogerus, gregkh; +Cc: linux-usb, linux-kernel
The USB Type-C Cable and Connector Specification defines the wire
connections for the USB Type-C to USB 2.0 Standard-A cable assembly
(Release 2.2, Chapter 3.5.2).
The Notes says that Pin A5 (CC) of the USB Type-C plug shall be connected
to Vbus through a resister Rp.
However, there is a large amount of such double Rp connected to Vbus
non-standard cables which produced by UGREEN circulating on the market, and
it can affects the normal operations of the state machine easily,
especially to CC1 and CC2 be pulled up at the same time.
In fact, we can regard those cables as sink to avoid abnormal state.
Message as follow:
[ 58.900212] VBUS on
[ 59.265433] CC1: 0 -> 3, CC2: 0 -> 3 [state TOGGLING, polarity 0, connected]
[ 62.623308] CC1: 3 -> 0, CC2: 3 -> 0 [state TOGGLING, polarity 0, disconnected]
[ 62.625006] VBUS off
[ 62.625012] VBUS VSAFE0V
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/usb/typec/tcpm/tcpm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index d962f67c95ae6..beb7143128667 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -519,7 +519,8 @@ static const char * const pd_rev[] = {
#define tcpm_port_is_sink(port) \
((tcpm_cc_is_sink((port)->cc1) && !tcpm_cc_is_sink((port)->cc2)) || \
- (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)))
+ (tcpm_cc_is_sink((port)->cc2) && !tcpm_cc_is_sink((port)->cc1)) || \
+ (tcpm_cc_is_sink((port)->cc1) && tcpm_cc_is_sink((port)->cc2)))
#define tcpm_cc_is_source(cc) ((cc) == TYPEC_CC_RD)
#define tcpm_cc_is_audio(cc) ((cc) == TYPEC_CC_RA)
--
2.29.0
^ permalink raw reply related [relevance 19%]
* [PATCH] mmc: core: Add new flag to force hardware reset
@ 2023-09-14 0:03 19% Michael Wu
2023-09-14 8:00 6% ` Wenchao Chen
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2023-09-14 0:03 UTC (permalink / raw)
To: ulf.hansson, CLoehle, adrian.hunter, jinpu.wang, hare,
victor.shih, avri.altman, asuk4.q
Cc: axboe, brauner, f.fainelli, beanhuo, linux-mmc, linux-kernel
Entering the recovery system itself indicates a transmission error.
In this situation, we intend to execute the mmc_blk_reset function
to clear any anomalies that may be caused by errors. We have previously
discussed with several MMC device manufacturers, and they expressed
their desire for us to reset the device when errors occur to ensure
stable operation. We aim to make this code compatible with all devices
and ensure its stable performance, so we would like to add this patch
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/mmc/core/block.c | 2 +-
include/linux/mmc/host.h | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index b5b414a71e0b..29fbe0ddeadb 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -1503,7 +1503,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
pr_debug("%s: CQE recovery start\n", mmc_hostname(host));
err = mmc_cqe_recovery(host);
- if (err)
+ if (err || host->cqe_recovery_reset_always)
mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 62a6847a3b6f..f578541a06b5 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -518,6 +518,7 @@ struct mmc_host {
int cqe_qdepth;
bool cqe_enabled;
bool cqe_on;
+ bool cqe_recovery_reset_always;
/* Inline encryption support */
#ifdef CONFIG_MMC_CRYPTO
--
2.29.0
^ permalink raw reply related [relevance 19%]
* Re: [PATCH 3/9] phy: qcom: uniphy: Update UNIPHY driver to be a common driver
2023-08-29 14:37 0% ` Dmitry Baryshkov
@ 2023-08-31 12:05 0% ` Praveenkumar I
0 siblings, 0 replies; 200+ results
From: Praveenkumar I @ 2023-08-31 12:05 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: robert.marko, luka.perkov, agross, andersson, konrad.dybcio,
vkoul, kishon, robh+dt, krzysztof.kozlowski+dt, conor+dt, gregkh,
catalin.marinas, will, p.zabel, arnd, geert+renesas, nfraprado,
rafal, peng.fan, quic_wcheng, linux-arm-msm, linux-phy,
devicetree, linux-kernel, linux-usb, linux-arm-kernel,
quic_varada
On 8/29/2023 8:07 PM, Dmitry Baryshkov wrote:
> On Tue, 29 Aug 2023 at 17:00, Praveenkumar I <quic_ipkumar@quicinc.com> wrote:
>> This patch updates the UNIPHY driver to be a common driver to
>> accommodate all UNIPHY / Combo PHY. This driver can be used for
>> both USB and PCIe UNIPHY. Using phy-mul-sel from DTS MUX selection
>> for USB / PCIe can be acheived.
> I'm not sure why you are talking about PCIe here. This patch adds only
> SS PHY support.
>
> Also, I'd like to point out that we had this 'USB and PCIe and
> everything else' design in the QMP driver. We had to split the driver
> into individual pieces to make it manageable again.
This Uniphy 22ull is a combo PHY used between USB GEN3 or PCIe GEN3. Via
mux selection
the one of the controller interface can use it. Hence thought to have a
same PHY driver for
both USB3 and PCIe. Will drop the plan of adding the PCIe support.
>
>> Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
>> ---
>> drivers/phy/qualcomm/phy-qcom-uniphy.c | 401 +++++++++++++++++++++----
>> 1 file changed, 335 insertions(+), 66 deletions(-)
>>
>> diff --git a/drivers/phy/qualcomm/phy-qcom-uniphy.c b/drivers/phy/qualcomm/phy-qcom-uniphy.c
>> index da6f290af722..eb71588f5417 100644
>> --- a/drivers/phy/qualcomm/phy-qcom-uniphy.c
>> +++ b/drivers/phy/qualcomm/phy-qcom-uniphy.c
>> @@ -5,141 +5,410 @@
>> * Based on code from
>> * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
>> *
>> + * Modified the driver to be common for Qualcomm UNIPHYs
>> + * Copyright (c) 2023, The Linux Foundation. All rights reserved.
> I'd not call this 'modified', but rather 'rewritten from scratch.
Sure, will correct.
>
>> */
>>
>> +#include <linux/bitfield.h>
>> +#include <linux/clk.h>
>> +#include <linux/clk-provider.h>
>> #include <linux/delay.h>
>> #include <linux/err.h>
>> #include <linux/io.h>
>> #include <linux/kernel.h>
>> +#include <linux/mfd/syscon.h>
>> #include <linux/module.h>
>> #include <linux/mutex.h>
>> #include <linux/of.h>
>> #include <linux/phy/phy.h>
>> #include <linux/platform_device.h>
>> +#include <linux/regmap.h>
>> +#include <linux/regulator/consumer.h>
>> #include <linux/reset.h>
>>
>> -struct ipq4019_usb_phy {
>> +struct uniphy_init_tbl {
>> + unsigned int offset;
>> + unsigned int val;
>> +};
> unused
>
>> +
>> +#define UNIPHY_INIT_CFG(o, v) \
>> + { \
>> + .offset = o, \
>> + .val = v, \
>> + }
> unused
>
>> +
>> +struct uniphy_cfg {
>> + const struct uniphy_init_tbl *init_seq;
>> + int num_init_seq;
>> + const char * const *clk_list;
>> + int num_clks;
>> + const char * const *reset_list;
>> + int num_resets;
>> + const char * const *vreg_list;
>> + int num_vregs;
>> + unsigned int pipe_clk_rate;
>> + unsigned int reset_udelay;
>> + unsigned int autoload_udelay;
>> +};
>> +
>> +struct qcom_uniphy {
>> struct device *dev;
>> + const struct uniphy_cfg *cfg;
>> struct phy *phy;
>> void __iomem *base;
>> - struct reset_control *por_rst;
>> - struct reset_control *srif_rst;
>> + struct clk_bulk_data *clks;
>> + struct reset_control_bulk_data *resets;
>> + struct regulator_bulk_data *vregs;
>> + struct clk_fixed_rate pipe_clk_fixed;
>> +};
>> +
>> +static const char * const ipq4019_ssphy_reset_l[] = {
>> + "por_rst",
>> +};
>> +
>> +static const struct uniphy_cfg ipq4019_usb_ssphy_cfg = {
>> + .reset_list = ipq4019_ssphy_reset_l,
>> + .num_resets = ARRAY_SIZE(ipq4019_ssphy_reset_l),
>> + .reset_udelay = 10000,
>> +
>> };
>>
>> -static int ipq4019_ss_phy_power_off(struct phy *_phy)
>> +static const char * const ipq4019_hsphy_reset_l[] = {
>> + "por_rst", "srif_rst",
>> +};
> +
>> +static const struct uniphy_cfg ipq4019_usb_hsphy_cfg = {
>> + .reset_list = ipq4019_hsphy_reset_l,
>> + .num_resets = ARRAY_SIZE(ipq4019_hsphy_reset_l),
>> + .reset_udelay = 10000,
>> +};
>> +
>> +static int phy_mux_sel(struct phy *phy)
>> +{
>> + struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
>> + struct device *dev = uniphy->dev;
>> + struct regmap *tcsr;
>> + unsigned int args[2];
>> + int ret;
>> +
>> + tcsr = syscon_regmap_lookup_by_phandle_args(dev->of_node, "qcom,phy-mux-sel",
>> + ARRAY_SIZE(args), args);
> No. mux data should come from match_data rather than polluting DT with it.
>
>> + if (IS_ERR(tcsr)) {
>> + ret = PTR_ERR(tcsr);
>> + if (ret == -ENOENT)
>> + return 0;
>> +
>> + dev_err(dev, "failed to lookup syscon for phy mux %d\n", ret);
>> + return ret;
>> + }
>> +
>> + /* PHY MUX registers only have this BIT0 */
> huh?
>
>> + ret = regmap_write(tcsr, args[0], args[1]);
>> + if (ret < 0) {
>> + dev_err(dev, "PHY Mux selection failed: %d\n", ret);
>> + return ret;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> +static int uniphy_enable(struct phy *phy)
>> {
>> - struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
>> + struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
>> + const struct uniphy_cfg *cfg = uniphy->cfg;
>> + const struct uniphy_init_tbl *tbl;
>> + void __iomem *base = uniphy->base;
>> + int i, ret;
>>
>> - reset_control_assert(phy->por_rst);
>> - msleep(10);
>> + ret = regulator_bulk_enable(cfg->num_vregs, uniphy->vregs);
>> + if (ret) {
>> + dev_err(uniphy->dev, "failed to enable regulators: %d\n", ret);
>> + return ret;
>> + }
>> +
>> + /* Assert all available resets */
>> + for (i = 0; i < cfg->num_resets; i++) {
>> + ret = reset_control_assert(uniphy->resets[i].rstc);
>> + if (ret) {
>> + dev_err(uniphy->dev, "reset assert failed: %d\n", ret);
>> + goto err_assert_reset;
>> + }
>> + if (cfg->reset_udelay)
>> + usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
>> + }
> There is a whole reset_control_bulk_*() set of API. Please use it
> instead of hardcoding reset cycles.
>
>> +
>> + /* Deassert all available resets */
>> + for (i = 0; i < cfg->num_resets; i++) {
>> + ret = reset_control_deassert(uniphy->resets[i].rstc);
>> + if (ret) {
>> + dev_err(uniphy->dev, "reset deassert failed: %d\n", ret);
>> + goto err_assert_reset;
>> + }
>> + if (cfg->reset_udelay)
>> + usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
>> + }
>> +
>> + ret = phy_mux_sel(phy);
>> + if (ret < 0)
>> + goto err_assert_reset;
>> +
>> + ret = clk_bulk_prepare_enable(cfg->num_clks, uniphy->clks);
>> + if (ret) {
>> + dev_err(uniphy->dev, "failed to enable clocks: %d\n", ret);
>> + goto err_assert_reset;
>> + }
>> +
>> + if (cfg->autoload_udelay)
>> + usleep_range(cfg->autoload_udelay, cfg->autoload_udelay + 10);
>> +
>> + if (cfg->num_init_seq) {
>> + tbl = cfg->init_seq;
>> + for (i = 0; i < cfg->num_init_seq; i++, tbl++)
>> + writel(tbl->val, base + tbl->offset);
>> + }
> unused
>
>> return 0;
>> +
>> +err_assert_reset:
>> + /* Assert all available resets */
>> + for (i = 0; i < cfg->num_resets; i++) {
>> + reset_control_assert(uniphy->resets[i].rstc);
>> + if (cfg->reset_udelay)
>> + usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
>> + }
>> +
>> + return ret;
>> }
>>
>> -static int ipq4019_ss_phy_power_on(struct phy *_phy)
>> +static int uniphy_disable(struct phy *phy)
>> {
>> - struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
>> + struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
>> + const struct uniphy_cfg *cfg = uniphy->cfg;
>> + int i;
>>
>> - ipq4019_ss_phy_power_off(_phy);
>> + /* Assert all available resets */
>> + for (i = 0; i < cfg->num_resets; i++) {
>> + reset_control_assert(uniphy->resets[i].rstc);
>> + if (cfg->reset_udelay)
>> + usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
>> + }
>>
>> - reset_control_deassert(phy->por_rst);
>> + clk_bulk_disable_unprepare(cfg->num_clks, uniphy->clks);
>> +
>> + regulator_bulk_disable(cfg->num_vregs, uniphy->vregs);
>>
>> return 0;
>> }
>>
>> -static const struct phy_ops ipq4019_usb_ss_phy_ops = {
>> - .power_on = ipq4019_ss_phy_power_on,
>> - .power_off = ipq4019_ss_phy_power_off,
>> +static const struct phy_ops uniphy_phy_ops = {
>> + .power_on = uniphy_enable,
>> + .power_off = uniphy_disable,
> Using _enable / _disable for power_on() and power_off() isn't logical.
>
>> + .owner = THIS_MODULE,
>> };
>>
>> -static int ipq4019_hs_phy_power_off(struct phy *_phy)
>> +static int qcom_uniphy_vreg_init(struct qcom_uniphy *uniphy)
>> +{
>> + const struct uniphy_cfg *cfg = uniphy->cfg;
>> + struct device *dev = uniphy->dev;
>> + int i, ret;
>> +
>> + uniphy->vregs = devm_kcalloc(dev, cfg->num_vregs,
>> + sizeof(*uniphy->vregs), GFP_KERNEL);
> You know the maximum amount of regulators. Can you use an array
> instead of allocating data?
>
>> + if (!uniphy->vregs)
>> + return -ENOMEM;
>> +
>> + for (i = 0; i < cfg->num_vregs; i++)
>> + uniphy->vregs[i].supply = cfg->vreg_list[i];
>> +
>> + ret = devm_regulator_bulk_get(dev, cfg->num_vregs, uniphy->vregs);
>> +
> Drop empty lines between ret assignment and check.
>
>> + if (ret)
>> + return dev_err_probe(dev, ret, "failed to get regulators\n");
>> +
>> + return 0;
>> +}
>> +
>> +static int qcom_uniphy_reset_init(struct qcom_uniphy *uniphy)
>> {
>> - struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
>> + const struct uniphy_cfg *cfg = uniphy->cfg;
>> + struct device *dev = uniphy->dev;
>> + int i, ret;
>> +
>> + uniphy->resets = devm_kcalloc(dev, cfg->num_resets,
>> + sizeof(*uniphy->resets), GFP_KERNEL);
> Same here, can you use an array?
>
>> + if (!uniphy->resets)
>> + return -ENOMEM;
>>
>> - reset_control_assert(phy->por_rst);
>> - msleep(10);
>> + for (i = 0; i < cfg->num_resets; i++)
>> + uniphy->resets[i].id = cfg->reset_list[i];
> Declare common resets list and use
> devm_reset_control_bulk_get_optional_exclusive().
>
>> - reset_control_assert(phy->srif_rst);
>> - msleep(10);
>> + ret = devm_reset_control_bulk_get_exclusive(dev, cfg->num_resets, uniphy->resets);
>> + if (ret)
>> + return dev_err_probe(dev, ret, "failed to get resets\n");
>>
>> return 0;
>> }
>>
>> -static int ipq4019_hs_phy_power_on(struct phy *_phy)
>> +static int qcom_uniphy_clk_init(struct qcom_uniphy *uniphy)
> I don't see clocks actually being used. Please do not introduce unused features.
>
>> {
>> - struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
>> + const struct uniphy_cfg *cfg = uniphy->cfg;
>> + struct device *dev = uniphy->dev;
>> + int i, ret;
>>
>> - ipq4019_hs_phy_power_off(_phy);
>>
>> - reset_control_deassert(phy->srif_rst);
>> - msleep(10);
>> + uniphy->clks = devm_kcalloc(dev, cfg->num_clks,
>> + sizeof(*uniphy->clks), GFP_KERNEL);
>> + if (!uniphy->clks)
>> + return -ENOMEM;
>> +
>> + for (i = 0; i < cfg->num_clks; i++)
>> + uniphy->clks[i].id = cfg->clk_list[i];
>>
>> - reset_control_deassert(phy->por_rst);
>> + ret = devm_clk_bulk_get(dev, cfg->num_clks, uniphy->clks);
>> + if (ret)
>> + return dev_err_probe(dev, ret, "failed to get clocks\n");
>>
>> return 0;
>> }
>>
>> -static const struct phy_ops ipq4019_usb_hs_phy_ops = {
>> - .power_on = ipq4019_hs_phy_power_on,
>> - .power_off = ipq4019_hs_phy_power_off,
>> -};
>> +static void phy_clk_release_provider(void *res)
>> +{
>> + of_clk_del_provider(res);
>> +}
>>
>> -static const struct of_device_id ipq4019_usb_phy_of_match[] = {
>> - { .compatible = "qcom,usb-hs-ipq4019-phy", .data = &ipq4019_usb_hs_phy_ops},
>> - { .compatible = "qcom,usb-ss-ipq4019-phy", .data = &ipq4019_usb_ss_phy_ops},
>> - { },
>> -};
>> -MODULE_DEVICE_TABLE(of, ipq4019_usb_phy_of_match);
>> +/*
>> + * Register a fixed rate pipe clock.
>> + *
>> + * The <s>_pipe_clksrc generated by PHY goes to the GCC that gate
>> + * controls it. The <s>_pipe_clk coming out of the GCC is requested
>> + * by the PHY driver for its operations.
>> + * We register the <s>_pipe_clksrc here. The gcc driver takes care
>> + * of assigning this <s>_pipe_clksrc as parent to <s>_pipe_clk.
>> + * Below picture shows this relationship.
>> + *
>> + * +---------------+
>> + * | PHY block |<<---------------------------------------+
>> + * | | |
>> + * | +-------+ | +-----+ |
>> + * I/P---^-->| PLL |---^--->pipe_clksrc--->| GCC |--->pipe_clk---+
>> + * clk | +-------+ | +-----+
>> + * +---------------+
>> + */
>> +static int phy_pipe_clk_register(struct qcom_uniphy *uniphy, struct device_node *np)
>> +{
>> + struct clk_fixed_rate *fixed = &uniphy->pipe_clk_fixed;
>> + const struct uniphy_cfg *cfg = uniphy->cfg;
>> + struct device *dev = uniphy->dev;
>> + struct clk_init_data init = { };
>> + int ret;
>> +
>> + ret = of_property_read_string(np, "clock-output-names", &init.name);
>> + if (ret) {
>> + dev_err(dev, "%pOFn: No clock-output-names\n", np);
>> + return ret;
>> + }
>> +
>> + init.ops = &clk_fixed_rate_ops;
>> +
>> + fixed->fixed_rate = cfg->pipe_clk_rate;
>> + fixed->hw.init = &init;
>>
>> -static int ipq4019_usb_phy_probe(struct platform_device *pdev)
>> + ret = devm_clk_hw_register(dev, &fixed->hw);
>> + if (ret)
>> + return ret;
>> +
>> + ret = of_clk_add_hw_provider(np, of_clk_hw_simple_get, &fixed->hw);
>> + if (ret)
>> + return ret;
> When you c&p something, please take care to understand the code you are copying.
> Unlike QMP drivers you can (and should) use devm_of_clk_add_hw_provider() here.
>
> Not to mention that pipe clocks are not in this patch.
>
>> +
>> + /*
>> + * Roll a devm action because the clock provider is the child node, but
>> + * the child node is not actually a device.
>> + */
>> + return devm_add_action_or_reset(dev, phy_clk_release_provider, np);
>> +}
>> +
>> +static int qcom_uniphy_probe(struct platform_device *pdev)
>> {
>> struct device *dev = &pdev->dev;
>> struct phy_provider *phy_provider;
>> - struct ipq4019_usb_phy *phy;
>> + struct qcom_uniphy *uniphy;
>> + struct device_node *np;
>> + int ret;
>>
>> - phy = devm_kzalloc(dev, sizeof(*phy), GFP_KERNEL);
>> - if (!phy)
>> + uniphy = devm_kzalloc(dev, sizeof(*uniphy), GFP_KERNEL);
>> + if (!uniphy)
>> return -ENOMEM;
>>
>> - phy->dev = &pdev->dev;
>> - phy->base = devm_platform_ioremap_resource(pdev, 0);
>> - if (IS_ERR(phy->base)) {
>> - dev_err(dev, "failed to remap register memory\n");
>> - return PTR_ERR(phy->base);
>> - }
>> + uniphy->dev = dev;
>>
>> - phy->por_rst = devm_reset_control_get(phy->dev, "por_rst");
>> - if (IS_ERR(phy->por_rst)) {
>> - if (PTR_ERR(phy->por_rst) != -EPROBE_DEFER)
>> - dev_err(dev, "POR reset is missing\n");
>> - return PTR_ERR(phy->por_rst);
>> + uniphy->cfg = of_device_get_match_data(dev);
>> + if (!uniphy->cfg)
>> + return -EINVAL;
>> +
>> + uniphy->base = devm_platform_ioremap_resource(pdev, 0);
>> + if (IS_ERR(uniphy->base)) {
>> + ret = PTR_ERR(uniphy->base);
>> + dev_err_probe(dev, ret, "failed to remap register memory\n");
>> + return ret;
>> }
>>
>> - phy->srif_rst = devm_reset_control_get_optional(phy->dev, "srif_rst");
>> - if (IS_ERR(phy->srif_rst))
>> - return PTR_ERR(phy->srif_rst);
>> + ret = qcom_uniphy_clk_init(uniphy);
>> + if (ret)
>> + return ret;
>> +
>> + ret = qcom_uniphy_reset_init(uniphy);
>> + if (ret)
>> + return ret;
>> +
>> + ret = qcom_uniphy_vreg_init(uniphy);
>> + if (ret < 0)
>> + return ret;
>> +
>> + if (uniphy->cfg->pipe_clk_rate) {
>> + np = of_node_get(dev->of_node);
> What for? Do you think that the driver can outlive struct device?
>
>> + ret = phy_pipe_clk_register(uniphy, np);
>> + if (ret) {
>> + dev_err_probe(dev, ret, "failed to register pipe clk\n");
>> + goto err;
>> + }
>> + }
>>
>> - phy->phy = devm_phy_create(dev, NULL, of_device_get_match_data(dev));
>> - if (IS_ERR(phy->phy)) {
>> - dev_err(dev, "failed to create PHY\n");
>> - return PTR_ERR(phy->phy);
>> + uniphy->phy = devm_phy_create(dev, NULL, &uniphy_phy_ops);
>> + if (IS_ERR(uniphy->phy)) {
>> + ret = PTR_ERR(uniphy->phy);
>> + dev_err_probe(dev, ret, "failed to create PHY\n");
>> + goto err;
>> }
>> - phy_set_drvdata(phy->phy, phy);
>> +
>> + phy_set_drvdata(uniphy->phy, uniphy);
>>
>> phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
>>
>> - return PTR_ERR_OR_ZERO(phy_provider);
>> + ret = PTR_ERR_OR_ZERO(phy_provider);
>> +
>> +err:
>> + if (uniphy->cfg->pipe_clk_rate)
>> + of_node_put(np);
>> + return ret;
>> }
>>
>> -static struct platform_driver ipq4019_usb_phy_driver = {
>> - .probe = ipq4019_usb_phy_probe,
>> +static const struct of_device_id qcom_uniphy_of_match[] = {
>> + { .compatible = "qcom,usb-hs-ipq4019-phy", .data = &ipq4019_usb_hsphy_cfg},
>> + { .compatible = "qcom,usb-ss-ipq4019-phy", .data = &ipq4019_usb_ssphy_cfg},
>> + { },
>> +};
>> +MODULE_DEVICE_TABLE(of, qcom_uniphy_of_match);
>> +
>> +static struct platform_driver qcom_uniphy_driver = {
>> + .probe = qcom_uniphy_probe,
>> .driver = {
>> - .of_match_table = ipq4019_usb_phy_of_match,
>> - .name = "ipq4019-usb-phy",
>> + .of_match_table = qcom_uniphy_of_match,
>> + .name = "qcom-uniphy",
>> }
>> };
>> -module_platform_driver(ipq4019_usb_phy_driver);
>> +module_platform_driver(qcom_uniphy_driver);
>>
>> -MODULE_DESCRIPTION("QCOM/IPQ4019 USB phy driver");
>> +MODULE_DESCRIPTION("QCOM uniphy driver");
>> MODULE_AUTHOR("John Crispin <john@phrozen.org>");
>> MODULE_LICENSE("GPL v2");
> General comment: please consider dropping this beast and starting from
> scratch, adding only really necessary bits to the existing ipq4019 USB
> PHY driver.
Rewritten the entire driver considering the IPQ5332 as well and because
of it
there are unused code which are utilized in patch [8/9]. I should have
added only the IPQ4019
support alone in this patch and then incrementally update it for
IPQ5332. Will follow that here
onwards. Will address all the review comments.
- Praveenkumar
^ permalink raw reply [relevance 0%]
* Re: [PATCH 3/9] phy: qcom: uniphy: Update UNIPHY driver to be a common driver
2023-08-29 13:58 4% ` [PATCH 3/9] phy: qcom: uniphy: Update UNIPHY driver to be a common driver Praveenkumar I
@ 2023-08-29 14:37 0% ` Dmitry Baryshkov
2023-08-31 12:05 0% ` Praveenkumar I
0 siblings, 1 reply; 200+ results
From: Dmitry Baryshkov @ 2023-08-29 14:37 UTC (permalink / raw)
To: Praveenkumar I
Cc: robert.marko, luka.perkov, agross, andersson, konrad.dybcio,
vkoul, kishon, robh+dt, krzysztof.kozlowski+dt, conor+dt, gregkh,
catalin.marinas, will, p.zabel, arnd, geert+renesas, nfraprado,
rafal, peng.fan, quic_wcheng, linux-arm-msm, linux-phy,
devicetree, linux-kernel, linux-usb, linux-arm-kernel,
quic_varada
On Tue, 29 Aug 2023 at 17:00, Praveenkumar I <quic_ipkumar@quicinc.com> wrote:
>
> This patch updates the UNIPHY driver to be a common driver to
> accommodate all UNIPHY / Combo PHY. This driver can be used for
> both USB and PCIe UNIPHY. Using phy-mul-sel from DTS MUX selection
> for USB / PCIe can be acheived.
I'm not sure why you are talking about PCIe here. This patch adds only
SS PHY support.
Also, I'd like to point out that we had this 'USB and PCIe and
everything else' design in the QMP driver. We had to split the driver
into individual pieces to make it manageable again.
>
> Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
> ---
> drivers/phy/qualcomm/phy-qcom-uniphy.c | 401 +++++++++++++++++++++----
> 1 file changed, 335 insertions(+), 66 deletions(-)
>
> diff --git a/drivers/phy/qualcomm/phy-qcom-uniphy.c b/drivers/phy/qualcomm/phy-qcom-uniphy.c
> index da6f290af722..eb71588f5417 100644
> --- a/drivers/phy/qualcomm/phy-qcom-uniphy.c
> +++ b/drivers/phy/qualcomm/phy-qcom-uniphy.c
> @@ -5,141 +5,410 @@
> * Based on code from
> * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
> *
> + * Modified the driver to be common for Qualcomm UNIPHYs
> + * Copyright (c) 2023, The Linux Foundation. All rights reserved.
I'd not call this 'modified', but rather 'rewritten from scratch.
> */
>
> +#include <linux/bitfield.h>
> +#include <linux/clk.h>
> +#include <linux/clk-provider.h>
> #include <linux/delay.h>
> #include <linux/err.h>
> #include <linux/io.h>
> #include <linux/kernel.h>
> +#include <linux/mfd/syscon.h>
> #include <linux/module.h>
> #include <linux/mutex.h>
> #include <linux/of.h>
> #include <linux/phy/phy.h>
> #include <linux/platform_device.h>
> +#include <linux/regmap.h>
> +#include <linux/regulator/consumer.h>
> #include <linux/reset.h>
>
> -struct ipq4019_usb_phy {
> +struct uniphy_init_tbl {
> + unsigned int offset;
> + unsigned int val;
> +};
unused
> +
> +#define UNIPHY_INIT_CFG(o, v) \
> + { \
> + .offset = o, \
> + .val = v, \
> + }
unused
> +
> +struct uniphy_cfg {
> + const struct uniphy_init_tbl *init_seq;
> + int num_init_seq;
> + const char * const *clk_list;
> + int num_clks;
> + const char * const *reset_list;
> + int num_resets;
> + const char * const *vreg_list;
> + int num_vregs;
> + unsigned int pipe_clk_rate;
> + unsigned int reset_udelay;
> + unsigned int autoload_udelay;
> +};
> +
> +struct qcom_uniphy {
> struct device *dev;
> + const struct uniphy_cfg *cfg;
> struct phy *phy;
> void __iomem *base;
> - struct reset_control *por_rst;
> - struct reset_control *srif_rst;
> + struct clk_bulk_data *clks;
> + struct reset_control_bulk_data *resets;
> + struct regulator_bulk_data *vregs;
> + struct clk_fixed_rate pipe_clk_fixed;
> +};
> +
> +static const char * const ipq4019_ssphy_reset_l[] = {
> + "por_rst",
> +};
> +
> +static const struct uniphy_cfg ipq4019_usb_ssphy_cfg = {
> + .reset_list = ipq4019_ssphy_reset_l,
> + .num_resets = ARRAY_SIZE(ipq4019_ssphy_reset_l),
> + .reset_udelay = 10000,
> +
> };
>
> -static int ipq4019_ss_phy_power_off(struct phy *_phy)
> +static const char * const ipq4019_hsphy_reset_l[] = {
> + "por_rst", "srif_rst",
> +};
+
> +static const struct uniphy_cfg ipq4019_usb_hsphy_cfg = {
> + .reset_list = ipq4019_hsphy_reset_l,
> + .num_resets = ARRAY_SIZE(ipq4019_hsphy_reset_l),
> + .reset_udelay = 10000,
> +};
> +
> +static int phy_mux_sel(struct phy *phy)
> +{
> + struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
> + struct device *dev = uniphy->dev;
> + struct regmap *tcsr;
> + unsigned int args[2];
> + int ret;
> +
> + tcsr = syscon_regmap_lookup_by_phandle_args(dev->of_node, "qcom,phy-mux-sel",
> + ARRAY_SIZE(args), args);
No. mux data should come from match_data rather than polluting DT with it.
> + if (IS_ERR(tcsr)) {
> + ret = PTR_ERR(tcsr);
> + if (ret == -ENOENT)
> + return 0;
> +
> + dev_err(dev, "failed to lookup syscon for phy mux %d\n", ret);
> + return ret;
> + }
> +
> + /* PHY MUX registers only have this BIT0 */
huh?
> + ret = regmap_write(tcsr, args[0], args[1]);
> + if (ret < 0) {
> + dev_err(dev, "PHY Mux selection failed: %d\n", ret);
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> +static int uniphy_enable(struct phy *phy)
> {
> - struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
> + struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
> + const struct uniphy_cfg *cfg = uniphy->cfg;
> + const struct uniphy_init_tbl *tbl;
> + void __iomem *base = uniphy->base;
> + int i, ret;
>
> - reset_control_assert(phy->por_rst);
> - msleep(10);
> + ret = regulator_bulk_enable(cfg->num_vregs, uniphy->vregs);
> + if (ret) {
> + dev_err(uniphy->dev, "failed to enable regulators: %d\n", ret);
> + return ret;
> + }
> +
> + /* Assert all available resets */
> + for (i = 0; i < cfg->num_resets; i++) {
> + ret = reset_control_assert(uniphy->resets[i].rstc);
> + if (ret) {
> + dev_err(uniphy->dev, "reset assert failed: %d\n", ret);
> + goto err_assert_reset;
> + }
> + if (cfg->reset_udelay)
> + usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
> + }
There is a whole reset_control_bulk_*() set of API. Please use it
instead of hardcoding reset cycles.
> +
> + /* Deassert all available resets */
> + for (i = 0; i < cfg->num_resets; i++) {
> + ret = reset_control_deassert(uniphy->resets[i].rstc);
> + if (ret) {
> + dev_err(uniphy->dev, "reset deassert failed: %d\n", ret);
> + goto err_assert_reset;
> + }
> + if (cfg->reset_udelay)
> + usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
> + }
> +
> + ret = phy_mux_sel(phy);
> + if (ret < 0)
> + goto err_assert_reset;
> +
> + ret = clk_bulk_prepare_enable(cfg->num_clks, uniphy->clks);
> + if (ret) {
> + dev_err(uniphy->dev, "failed to enable clocks: %d\n", ret);
> + goto err_assert_reset;
> + }
> +
> + if (cfg->autoload_udelay)
> + usleep_range(cfg->autoload_udelay, cfg->autoload_udelay + 10);
> +
> + if (cfg->num_init_seq) {
> + tbl = cfg->init_seq;
> + for (i = 0; i < cfg->num_init_seq; i++, tbl++)
> + writel(tbl->val, base + tbl->offset);
> + }
unused
>
> return 0;
> +
> +err_assert_reset:
> + /* Assert all available resets */
> + for (i = 0; i < cfg->num_resets; i++) {
> + reset_control_assert(uniphy->resets[i].rstc);
> + if (cfg->reset_udelay)
> + usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
> + }
> +
> + return ret;
> }
>
> -static int ipq4019_ss_phy_power_on(struct phy *_phy)
> +static int uniphy_disable(struct phy *phy)
> {
> - struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
> + struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
> + const struct uniphy_cfg *cfg = uniphy->cfg;
> + int i;
>
> - ipq4019_ss_phy_power_off(_phy);
> + /* Assert all available resets */
> + for (i = 0; i < cfg->num_resets; i++) {
> + reset_control_assert(uniphy->resets[i].rstc);
> + if (cfg->reset_udelay)
> + usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
> + }
>
> - reset_control_deassert(phy->por_rst);
> + clk_bulk_disable_unprepare(cfg->num_clks, uniphy->clks);
> +
> + regulator_bulk_disable(cfg->num_vregs, uniphy->vregs);
>
> return 0;
> }
>
> -static const struct phy_ops ipq4019_usb_ss_phy_ops = {
> - .power_on = ipq4019_ss_phy_power_on,
> - .power_off = ipq4019_ss_phy_power_off,
> +static const struct phy_ops uniphy_phy_ops = {
> + .power_on = uniphy_enable,
> + .power_off = uniphy_disable,
Using _enable / _disable for power_on() and power_off() isn't logical.
> + .owner = THIS_MODULE,
> };
>
> -static int ipq4019_hs_phy_power_off(struct phy *_phy)
> +static int qcom_uniphy_vreg_init(struct qcom_uniphy *uniphy)
> +{
> + const struct uniphy_cfg *cfg = uniphy->cfg;
> + struct device *dev = uniphy->dev;
> + int i, ret;
> +
> + uniphy->vregs = devm_kcalloc(dev, cfg->num_vregs,
> + sizeof(*uniphy->vregs), GFP_KERNEL);
You know the maximum amount of regulators. Can you use an array
instead of allocating data?
> + if (!uniphy->vregs)
> + return -ENOMEM;
> +
> + for (i = 0; i < cfg->num_vregs; i++)
> + uniphy->vregs[i].supply = cfg->vreg_list[i];
> +
> + ret = devm_regulator_bulk_get(dev, cfg->num_vregs, uniphy->vregs);
> +
Drop empty lines between ret assignment and check.
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to get regulators\n");
> +
> + return 0;
> +}
> +
> +static int qcom_uniphy_reset_init(struct qcom_uniphy *uniphy)
> {
> - struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
> + const struct uniphy_cfg *cfg = uniphy->cfg;
> + struct device *dev = uniphy->dev;
> + int i, ret;
> +
> + uniphy->resets = devm_kcalloc(dev, cfg->num_resets,
> + sizeof(*uniphy->resets), GFP_KERNEL);
Same here, can you use an array?
> + if (!uniphy->resets)
> + return -ENOMEM;
>
> - reset_control_assert(phy->por_rst);
> - msleep(10);
> + for (i = 0; i < cfg->num_resets; i++)
> + uniphy->resets[i].id = cfg->reset_list[i];
Declare common resets list and use
devm_reset_control_bulk_get_optional_exclusive().
>
> - reset_control_assert(phy->srif_rst);
> - msleep(10);
> + ret = devm_reset_control_bulk_get_exclusive(dev, cfg->num_resets, uniphy->resets);
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to get resets\n");
>
> return 0;
> }
>
> -static int ipq4019_hs_phy_power_on(struct phy *_phy)
> +static int qcom_uniphy_clk_init(struct qcom_uniphy *uniphy)
I don't see clocks actually being used. Please do not introduce unused features.
> {
> - struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
> + const struct uniphy_cfg *cfg = uniphy->cfg;
> + struct device *dev = uniphy->dev;
> + int i, ret;
>
> - ipq4019_hs_phy_power_off(_phy);
>
> - reset_control_deassert(phy->srif_rst);
> - msleep(10);
> + uniphy->clks = devm_kcalloc(dev, cfg->num_clks,
> + sizeof(*uniphy->clks), GFP_KERNEL);
> + if (!uniphy->clks)
> + return -ENOMEM;
> +
> + for (i = 0; i < cfg->num_clks; i++)
> + uniphy->clks[i].id = cfg->clk_list[i];
>
> - reset_control_deassert(phy->por_rst);
> + ret = devm_clk_bulk_get(dev, cfg->num_clks, uniphy->clks);
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to get clocks\n");
>
> return 0;
> }
>
> -static const struct phy_ops ipq4019_usb_hs_phy_ops = {
> - .power_on = ipq4019_hs_phy_power_on,
> - .power_off = ipq4019_hs_phy_power_off,
> -};
> +static void phy_clk_release_provider(void *res)
> +{
> + of_clk_del_provider(res);
> +}
>
> -static const struct of_device_id ipq4019_usb_phy_of_match[] = {
> - { .compatible = "qcom,usb-hs-ipq4019-phy", .data = &ipq4019_usb_hs_phy_ops},
> - { .compatible = "qcom,usb-ss-ipq4019-phy", .data = &ipq4019_usb_ss_phy_ops},
> - { },
> -};
> -MODULE_DEVICE_TABLE(of, ipq4019_usb_phy_of_match);
> +/*
> + * Register a fixed rate pipe clock.
> + *
> + * The <s>_pipe_clksrc generated by PHY goes to the GCC that gate
> + * controls it. The <s>_pipe_clk coming out of the GCC is requested
> + * by the PHY driver for its operations.
> + * We register the <s>_pipe_clksrc here. The gcc driver takes care
> + * of assigning this <s>_pipe_clksrc as parent to <s>_pipe_clk.
> + * Below picture shows this relationship.
> + *
> + * +---------------+
> + * | PHY block |<<---------------------------------------+
> + * | | |
> + * | +-------+ | +-----+ |
> + * I/P---^-->| PLL |---^--->pipe_clksrc--->| GCC |--->pipe_clk---+
> + * clk | +-------+ | +-----+
> + * +---------------+
> + */
> +static int phy_pipe_clk_register(struct qcom_uniphy *uniphy, struct device_node *np)
> +{
> + struct clk_fixed_rate *fixed = &uniphy->pipe_clk_fixed;
> + const struct uniphy_cfg *cfg = uniphy->cfg;
> + struct device *dev = uniphy->dev;
> + struct clk_init_data init = { };
> + int ret;
> +
> + ret = of_property_read_string(np, "clock-output-names", &init.name);
> + if (ret) {
> + dev_err(dev, "%pOFn: No clock-output-names\n", np);
> + return ret;
> + }
> +
> + init.ops = &clk_fixed_rate_ops;
> +
> + fixed->fixed_rate = cfg->pipe_clk_rate;
> + fixed->hw.init = &init;
>
> -static int ipq4019_usb_phy_probe(struct platform_device *pdev)
> + ret = devm_clk_hw_register(dev, &fixed->hw);
> + if (ret)
> + return ret;
> +
> + ret = of_clk_add_hw_provider(np, of_clk_hw_simple_get, &fixed->hw);
> + if (ret)
> + return ret;
When you c&p something, please take care to understand the code you are copying.
Unlike QMP drivers you can (and should) use devm_of_clk_add_hw_provider() here.
Not to mention that pipe clocks are not in this patch.
> +
> + /*
> + * Roll a devm action because the clock provider is the child node, but
> + * the child node is not actually a device.
> + */
> + return devm_add_action_or_reset(dev, phy_clk_release_provider, np);
> +}
> +
> +static int qcom_uniphy_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct phy_provider *phy_provider;
> - struct ipq4019_usb_phy *phy;
> + struct qcom_uniphy *uniphy;
> + struct device_node *np;
> + int ret;
>
> - phy = devm_kzalloc(dev, sizeof(*phy), GFP_KERNEL);
> - if (!phy)
> + uniphy = devm_kzalloc(dev, sizeof(*uniphy), GFP_KERNEL);
> + if (!uniphy)
> return -ENOMEM;
>
> - phy->dev = &pdev->dev;
> - phy->base = devm_platform_ioremap_resource(pdev, 0);
> - if (IS_ERR(phy->base)) {
> - dev_err(dev, "failed to remap register memory\n");
> - return PTR_ERR(phy->base);
> - }
> + uniphy->dev = dev;
>
> - phy->por_rst = devm_reset_control_get(phy->dev, "por_rst");
> - if (IS_ERR(phy->por_rst)) {
> - if (PTR_ERR(phy->por_rst) != -EPROBE_DEFER)
> - dev_err(dev, "POR reset is missing\n");
> - return PTR_ERR(phy->por_rst);
> + uniphy->cfg = of_device_get_match_data(dev);
> + if (!uniphy->cfg)
> + return -EINVAL;
> +
> + uniphy->base = devm_platform_ioremap_resource(pdev, 0);
> + if (IS_ERR(uniphy->base)) {
> + ret = PTR_ERR(uniphy->base);
> + dev_err_probe(dev, ret, "failed to remap register memory\n");
> + return ret;
> }
>
> - phy->srif_rst = devm_reset_control_get_optional(phy->dev, "srif_rst");
> - if (IS_ERR(phy->srif_rst))
> - return PTR_ERR(phy->srif_rst);
> + ret = qcom_uniphy_clk_init(uniphy);
> + if (ret)
> + return ret;
> +
> + ret = qcom_uniphy_reset_init(uniphy);
> + if (ret)
> + return ret;
> +
> + ret = qcom_uniphy_vreg_init(uniphy);
> + if (ret < 0)
> + return ret;
> +
> + if (uniphy->cfg->pipe_clk_rate) {
> + np = of_node_get(dev->of_node);
What for? Do you think that the driver can outlive struct device?
> + ret = phy_pipe_clk_register(uniphy, np);
> + if (ret) {
> + dev_err_probe(dev, ret, "failed to register pipe clk\n");
> + goto err;
> + }
> + }
>
> - phy->phy = devm_phy_create(dev, NULL, of_device_get_match_data(dev));
> - if (IS_ERR(phy->phy)) {
> - dev_err(dev, "failed to create PHY\n");
> - return PTR_ERR(phy->phy);
> + uniphy->phy = devm_phy_create(dev, NULL, &uniphy_phy_ops);
> + if (IS_ERR(uniphy->phy)) {
> + ret = PTR_ERR(uniphy->phy);
> + dev_err_probe(dev, ret, "failed to create PHY\n");
> + goto err;
> }
> - phy_set_drvdata(phy->phy, phy);
> +
> + phy_set_drvdata(uniphy->phy, uniphy);
>
> phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
>
> - return PTR_ERR_OR_ZERO(phy_provider);
> + ret = PTR_ERR_OR_ZERO(phy_provider);
> +
> +err:
> + if (uniphy->cfg->pipe_clk_rate)
> + of_node_put(np);
> + return ret;
> }
>
> -static struct platform_driver ipq4019_usb_phy_driver = {
> - .probe = ipq4019_usb_phy_probe,
> +static const struct of_device_id qcom_uniphy_of_match[] = {
> + { .compatible = "qcom,usb-hs-ipq4019-phy", .data = &ipq4019_usb_hsphy_cfg},
> + { .compatible = "qcom,usb-ss-ipq4019-phy", .data = &ipq4019_usb_ssphy_cfg},
> + { },
> +};
> +MODULE_DEVICE_TABLE(of, qcom_uniphy_of_match);
> +
> +static struct platform_driver qcom_uniphy_driver = {
> + .probe = qcom_uniphy_probe,
> .driver = {
> - .of_match_table = ipq4019_usb_phy_of_match,
> - .name = "ipq4019-usb-phy",
> + .of_match_table = qcom_uniphy_of_match,
> + .name = "qcom-uniphy",
> }
> };
> -module_platform_driver(ipq4019_usb_phy_driver);
> +module_platform_driver(qcom_uniphy_driver);
>
> -MODULE_DESCRIPTION("QCOM/IPQ4019 USB phy driver");
> +MODULE_DESCRIPTION("QCOM uniphy driver");
> MODULE_AUTHOR("John Crispin <john@phrozen.org>");
> MODULE_LICENSE("GPL v2");
General comment: please consider dropping this beast and starting from
scratch, adding only really necessary bits to the existing ipq4019 USB
PHY driver.
--
With best wishes
Dmitry
^ permalink raw reply [relevance 0%]
* [PATCH 3/9] phy: qcom: uniphy: Update UNIPHY driver to be a common driver
@ 2023-08-29 13:58 4% ` Praveenkumar I
2023-08-29 14:37 0% ` Dmitry Baryshkov
0 siblings, 1 reply; 200+ results
From: Praveenkumar I @ 2023-08-29 13:58 UTC (permalink / raw)
To: robert.marko, luka.perkov, quic_ipkumar, agross, andersson,
konrad.dybcio, vkoul, kishon, robh+dt, krzysztof.kozlowski+dt,
conor+dt, gregkh, catalin.marinas, will, p.zabel, arnd,
geert+renesas, nfraprado, rafal, peng.fan, quic_wcheng,
linux-arm-msm, linux-phy, devicetree, linux-kernel, linux-usb,
linux-arm-kernel
Cc: quic_varada
This patch updates the UNIPHY driver to be a common driver to
accommodate all UNIPHY / Combo PHY. This driver can be used for
both USB and PCIe UNIPHY. Using phy-mul-sel from DTS MUX selection
for USB / PCIe can be acheived.
Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
---
drivers/phy/qualcomm/phy-qcom-uniphy.c | 401 +++++++++++++++++++++----
1 file changed, 335 insertions(+), 66 deletions(-)
diff --git a/drivers/phy/qualcomm/phy-qcom-uniphy.c b/drivers/phy/qualcomm/phy-qcom-uniphy.c
index da6f290af722..eb71588f5417 100644
--- a/drivers/phy/qualcomm/phy-qcom-uniphy.c
+++ b/drivers/phy/qualcomm/phy-qcom-uniphy.c
@@ -5,141 +5,410 @@
* Based on code from
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
*
+ * Modified the driver to be common for Qualcomm UNIPHYs
+ * Copyright (c) 2023, The Linux Foundation. All rights reserved.
*/
+#include <linux/bitfield.h>
+#include <linux/clk.h>
+#include <linux/clk-provider.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/kernel.h>
+#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
#include <linux/reset.h>
-struct ipq4019_usb_phy {
+struct uniphy_init_tbl {
+ unsigned int offset;
+ unsigned int val;
+};
+
+#define UNIPHY_INIT_CFG(o, v) \
+ { \
+ .offset = o, \
+ .val = v, \
+ }
+
+struct uniphy_cfg {
+ const struct uniphy_init_tbl *init_seq;
+ int num_init_seq;
+ const char * const *clk_list;
+ int num_clks;
+ const char * const *reset_list;
+ int num_resets;
+ const char * const *vreg_list;
+ int num_vregs;
+ unsigned int pipe_clk_rate;
+ unsigned int reset_udelay;
+ unsigned int autoload_udelay;
+};
+
+struct qcom_uniphy {
struct device *dev;
+ const struct uniphy_cfg *cfg;
struct phy *phy;
void __iomem *base;
- struct reset_control *por_rst;
- struct reset_control *srif_rst;
+ struct clk_bulk_data *clks;
+ struct reset_control_bulk_data *resets;
+ struct regulator_bulk_data *vregs;
+ struct clk_fixed_rate pipe_clk_fixed;
+};
+
+static const char * const ipq4019_ssphy_reset_l[] = {
+ "por_rst",
+};
+
+static const struct uniphy_cfg ipq4019_usb_ssphy_cfg = {
+ .reset_list = ipq4019_ssphy_reset_l,
+ .num_resets = ARRAY_SIZE(ipq4019_ssphy_reset_l),
+ .reset_udelay = 10000,
+
};
-static int ipq4019_ss_phy_power_off(struct phy *_phy)
+static const char * const ipq4019_hsphy_reset_l[] = {
+ "por_rst", "srif_rst",
+};
+
+static const struct uniphy_cfg ipq4019_usb_hsphy_cfg = {
+ .reset_list = ipq4019_hsphy_reset_l,
+ .num_resets = ARRAY_SIZE(ipq4019_hsphy_reset_l),
+ .reset_udelay = 10000,
+};
+
+static int phy_mux_sel(struct phy *phy)
+{
+ struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
+ struct device *dev = uniphy->dev;
+ struct regmap *tcsr;
+ unsigned int args[2];
+ int ret;
+
+ tcsr = syscon_regmap_lookup_by_phandle_args(dev->of_node, "qcom,phy-mux-sel",
+ ARRAY_SIZE(args), args);
+ if (IS_ERR(tcsr)) {
+ ret = PTR_ERR(tcsr);
+ if (ret == -ENOENT)
+ return 0;
+
+ dev_err(dev, "failed to lookup syscon for phy mux %d\n", ret);
+ return ret;
+ }
+
+ /* PHY MUX registers only have this BIT0 */
+ ret = regmap_write(tcsr, args[0], args[1]);
+ if (ret < 0) {
+ dev_err(dev, "PHY Mux selection failed: %d\n", ret);
+ return ret;
+ }
+
+ return 0;
+}
+
+static int uniphy_enable(struct phy *phy)
{
- struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
+ struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
+ const struct uniphy_cfg *cfg = uniphy->cfg;
+ const struct uniphy_init_tbl *tbl;
+ void __iomem *base = uniphy->base;
+ int i, ret;
- reset_control_assert(phy->por_rst);
- msleep(10);
+ ret = regulator_bulk_enable(cfg->num_vregs, uniphy->vregs);
+ if (ret) {
+ dev_err(uniphy->dev, "failed to enable regulators: %d\n", ret);
+ return ret;
+ }
+
+ /* Assert all available resets */
+ for (i = 0; i < cfg->num_resets; i++) {
+ ret = reset_control_assert(uniphy->resets[i].rstc);
+ if (ret) {
+ dev_err(uniphy->dev, "reset assert failed: %d\n", ret);
+ goto err_assert_reset;
+ }
+ if (cfg->reset_udelay)
+ usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
+ }
+
+ /* Deassert all available resets */
+ for (i = 0; i < cfg->num_resets; i++) {
+ ret = reset_control_deassert(uniphy->resets[i].rstc);
+ if (ret) {
+ dev_err(uniphy->dev, "reset deassert failed: %d\n", ret);
+ goto err_assert_reset;
+ }
+ if (cfg->reset_udelay)
+ usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
+ }
+
+ ret = phy_mux_sel(phy);
+ if (ret < 0)
+ goto err_assert_reset;
+
+ ret = clk_bulk_prepare_enable(cfg->num_clks, uniphy->clks);
+ if (ret) {
+ dev_err(uniphy->dev, "failed to enable clocks: %d\n", ret);
+ goto err_assert_reset;
+ }
+
+ if (cfg->autoload_udelay)
+ usleep_range(cfg->autoload_udelay, cfg->autoload_udelay + 10);
+
+ if (cfg->num_init_seq) {
+ tbl = cfg->init_seq;
+ for (i = 0; i < cfg->num_init_seq; i++, tbl++)
+ writel(tbl->val, base + tbl->offset);
+ }
return 0;
+
+err_assert_reset:
+ /* Assert all available resets */
+ for (i = 0; i < cfg->num_resets; i++) {
+ reset_control_assert(uniphy->resets[i].rstc);
+ if (cfg->reset_udelay)
+ usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
+ }
+
+ return ret;
}
-static int ipq4019_ss_phy_power_on(struct phy *_phy)
+static int uniphy_disable(struct phy *phy)
{
- struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
+ struct qcom_uniphy *uniphy = phy_get_drvdata(phy);
+ const struct uniphy_cfg *cfg = uniphy->cfg;
+ int i;
- ipq4019_ss_phy_power_off(_phy);
+ /* Assert all available resets */
+ for (i = 0; i < cfg->num_resets; i++) {
+ reset_control_assert(uniphy->resets[i].rstc);
+ if (cfg->reset_udelay)
+ usleep_range(cfg->reset_udelay, cfg->reset_udelay + 10);
+ }
- reset_control_deassert(phy->por_rst);
+ clk_bulk_disable_unprepare(cfg->num_clks, uniphy->clks);
+
+ regulator_bulk_disable(cfg->num_vregs, uniphy->vregs);
return 0;
}
-static const struct phy_ops ipq4019_usb_ss_phy_ops = {
- .power_on = ipq4019_ss_phy_power_on,
- .power_off = ipq4019_ss_phy_power_off,
+static const struct phy_ops uniphy_phy_ops = {
+ .power_on = uniphy_enable,
+ .power_off = uniphy_disable,
+ .owner = THIS_MODULE,
};
-static int ipq4019_hs_phy_power_off(struct phy *_phy)
+static int qcom_uniphy_vreg_init(struct qcom_uniphy *uniphy)
+{
+ const struct uniphy_cfg *cfg = uniphy->cfg;
+ struct device *dev = uniphy->dev;
+ int i, ret;
+
+ uniphy->vregs = devm_kcalloc(dev, cfg->num_vregs,
+ sizeof(*uniphy->vregs), GFP_KERNEL);
+ if (!uniphy->vregs)
+ return -ENOMEM;
+
+ for (i = 0; i < cfg->num_vregs; i++)
+ uniphy->vregs[i].supply = cfg->vreg_list[i];
+
+ ret = devm_regulator_bulk_get(dev, cfg->num_vregs, uniphy->vregs);
+
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to get regulators\n");
+
+ return 0;
+}
+
+static int qcom_uniphy_reset_init(struct qcom_uniphy *uniphy)
{
- struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
+ const struct uniphy_cfg *cfg = uniphy->cfg;
+ struct device *dev = uniphy->dev;
+ int i, ret;
+
+ uniphy->resets = devm_kcalloc(dev, cfg->num_resets,
+ sizeof(*uniphy->resets), GFP_KERNEL);
+ if (!uniphy->resets)
+ return -ENOMEM;
- reset_control_assert(phy->por_rst);
- msleep(10);
+ for (i = 0; i < cfg->num_resets; i++)
+ uniphy->resets[i].id = cfg->reset_list[i];
- reset_control_assert(phy->srif_rst);
- msleep(10);
+ ret = devm_reset_control_bulk_get_exclusive(dev, cfg->num_resets, uniphy->resets);
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to get resets\n");
return 0;
}
-static int ipq4019_hs_phy_power_on(struct phy *_phy)
+static int qcom_uniphy_clk_init(struct qcom_uniphy *uniphy)
{
- struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
+ const struct uniphy_cfg *cfg = uniphy->cfg;
+ struct device *dev = uniphy->dev;
+ int i, ret;
- ipq4019_hs_phy_power_off(_phy);
- reset_control_deassert(phy->srif_rst);
- msleep(10);
+ uniphy->clks = devm_kcalloc(dev, cfg->num_clks,
+ sizeof(*uniphy->clks), GFP_KERNEL);
+ if (!uniphy->clks)
+ return -ENOMEM;
+
+ for (i = 0; i < cfg->num_clks; i++)
+ uniphy->clks[i].id = cfg->clk_list[i];
- reset_control_deassert(phy->por_rst);
+ ret = devm_clk_bulk_get(dev, cfg->num_clks, uniphy->clks);
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to get clocks\n");
return 0;
}
-static const struct phy_ops ipq4019_usb_hs_phy_ops = {
- .power_on = ipq4019_hs_phy_power_on,
- .power_off = ipq4019_hs_phy_power_off,
-};
+static void phy_clk_release_provider(void *res)
+{
+ of_clk_del_provider(res);
+}
-static const struct of_device_id ipq4019_usb_phy_of_match[] = {
- { .compatible = "qcom,usb-hs-ipq4019-phy", .data = &ipq4019_usb_hs_phy_ops},
- { .compatible = "qcom,usb-ss-ipq4019-phy", .data = &ipq4019_usb_ss_phy_ops},
- { },
-};
-MODULE_DEVICE_TABLE(of, ipq4019_usb_phy_of_match);
+/*
+ * Register a fixed rate pipe clock.
+ *
+ * The <s>_pipe_clksrc generated by PHY goes to the GCC that gate
+ * controls it. The <s>_pipe_clk coming out of the GCC is requested
+ * by the PHY driver for its operations.
+ * We register the <s>_pipe_clksrc here. The gcc driver takes care
+ * of assigning this <s>_pipe_clksrc as parent to <s>_pipe_clk.
+ * Below picture shows this relationship.
+ *
+ * +---------------+
+ * | PHY block |<<---------------------------------------+
+ * | | |
+ * | +-------+ | +-----+ |
+ * I/P---^-->| PLL |---^--->pipe_clksrc--->| GCC |--->pipe_clk---+
+ * clk | +-------+ | +-----+
+ * +---------------+
+ */
+static int phy_pipe_clk_register(struct qcom_uniphy *uniphy, struct device_node *np)
+{
+ struct clk_fixed_rate *fixed = &uniphy->pipe_clk_fixed;
+ const struct uniphy_cfg *cfg = uniphy->cfg;
+ struct device *dev = uniphy->dev;
+ struct clk_init_data init = { };
+ int ret;
+
+ ret = of_property_read_string(np, "clock-output-names", &init.name);
+ if (ret) {
+ dev_err(dev, "%pOFn: No clock-output-names\n", np);
+ return ret;
+ }
+
+ init.ops = &clk_fixed_rate_ops;
+
+ fixed->fixed_rate = cfg->pipe_clk_rate;
+ fixed->hw.init = &init;
-static int ipq4019_usb_phy_probe(struct platform_device *pdev)
+ ret = devm_clk_hw_register(dev, &fixed->hw);
+ if (ret)
+ return ret;
+
+ ret = of_clk_add_hw_provider(np, of_clk_hw_simple_get, &fixed->hw);
+ if (ret)
+ return ret;
+
+ /*
+ * Roll a devm action because the clock provider is the child node, but
+ * the child node is not actually a device.
+ */
+ return devm_add_action_or_reset(dev, phy_clk_release_provider, np);
+}
+
+static int qcom_uniphy_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct phy_provider *phy_provider;
- struct ipq4019_usb_phy *phy;
+ struct qcom_uniphy *uniphy;
+ struct device_node *np;
+ int ret;
- phy = devm_kzalloc(dev, sizeof(*phy), GFP_KERNEL);
- if (!phy)
+ uniphy = devm_kzalloc(dev, sizeof(*uniphy), GFP_KERNEL);
+ if (!uniphy)
return -ENOMEM;
- phy->dev = &pdev->dev;
- phy->base = devm_platform_ioremap_resource(pdev, 0);
- if (IS_ERR(phy->base)) {
- dev_err(dev, "failed to remap register memory\n");
- return PTR_ERR(phy->base);
- }
+ uniphy->dev = dev;
- phy->por_rst = devm_reset_control_get(phy->dev, "por_rst");
- if (IS_ERR(phy->por_rst)) {
- if (PTR_ERR(phy->por_rst) != -EPROBE_DEFER)
- dev_err(dev, "POR reset is missing\n");
- return PTR_ERR(phy->por_rst);
+ uniphy->cfg = of_device_get_match_data(dev);
+ if (!uniphy->cfg)
+ return -EINVAL;
+
+ uniphy->base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(uniphy->base)) {
+ ret = PTR_ERR(uniphy->base);
+ dev_err_probe(dev, ret, "failed to remap register memory\n");
+ return ret;
}
- phy->srif_rst = devm_reset_control_get_optional(phy->dev, "srif_rst");
- if (IS_ERR(phy->srif_rst))
- return PTR_ERR(phy->srif_rst);
+ ret = qcom_uniphy_clk_init(uniphy);
+ if (ret)
+ return ret;
+
+ ret = qcom_uniphy_reset_init(uniphy);
+ if (ret)
+ return ret;
+
+ ret = qcom_uniphy_vreg_init(uniphy);
+ if (ret < 0)
+ return ret;
+
+ if (uniphy->cfg->pipe_clk_rate) {
+ np = of_node_get(dev->of_node);
+ ret = phy_pipe_clk_register(uniphy, np);
+ if (ret) {
+ dev_err_probe(dev, ret, "failed to register pipe clk\n");
+ goto err;
+ }
+ }
- phy->phy = devm_phy_create(dev, NULL, of_device_get_match_data(dev));
- if (IS_ERR(phy->phy)) {
- dev_err(dev, "failed to create PHY\n");
- return PTR_ERR(phy->phy);
+ uniphy->phy = devm_phy_create(dev, NULL, &uniphy_phy_ops);
+ if (IS_ERR(uniphy->phy)) {
+ ret = PTR_ERR(uniphy->phy);
+ dev_err_probe(dev, ret, "failed to create PHY\n");
+ goto err;
}
- phy_set_drvdata(phy->phy, phy);
+
+ phy_set_drvdata(uniphy->phy, uniphy);
phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
- return PTR_ERR_OR_ZERO(phy_provider);
+ ret = PTR_ERR_OR_ZERO(phy_provider);
+
+err:
+ if (uniphy->cfg->pipe_clk_rate)
+ of_node_put(np);
+ return ret;
}
-static struct platform_driver ipq4019_usb_phy_driver = {
- .probe = ipq4019_usb_phy_probe,
+static const struct of_device_id qcom_uniphy_of_match[] = {
+ { .compatible = "qcom,usb-hs-ipq4019-phy", .data = &ipq4019_usb_hsphy_cfg},
+ { .compatible = "qcom,usb-ss-ipq4019-phy", .data = &ipq4019_usb_ssphy_cfg},
+ { },
+};
+MODULE_DEVICE_TABLE(of, qcom_uniphy_of_match);
+
+static struct platform_driver qcom_uniphy_driver = {
+ .probe = qcom_uniphy_probe,
.driver = {
- .of_match_table = ipq4019_usb_phy_of_match,
- .name = "ipq4019-usb-phy",
+ .of_match_table = qcom_uniphy_of_match,
+ .name = "qcom-uniphy",
}
};
-module_platform_driver(ipq4019_usb_phy_driver);
+module_platform_driver(qcom_uniphy_driver);
-MODULE_DESCRIPTION("QCOM/IPQ4019 USB phy driver");
+MODULE_DESCRIPTION("QCOM uniphy driver");
MODULE_AUTHOR("John Crispin <john@phrozen.org>");
MODULE_LICENSE("GPL v2");
--
2.34.1
^ permalink raw reply related [relevance 4%]
* [PATCH 2/2] arm64: dts: use capital "OR" for multiple licenses in SPDX
@ 2023-08-23 8:51 4% ` Krzysztof Kozlowski
0 siblings, 0 replies; 200+ results
From: Krzysztof Kozlowski @ 2023-08-23 8:51 UTC (permalink / raw)
To: Arnd Bergmann, Olof Johansson, arm, soc, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, NXP Linux Team, Maxime Coquelin, Alexandre Torgue,
Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Ray Jui,
Scott Branden, Broadcom internal kernel review list,
Geert Uytterhoeven, Magnus Damm, devicetree, linux-arm-kernel,
linux-sunxi, linux-kernel, linux-stm32, linux-renesas-soc
Cc: Krzysztof Kozlowski
Documentation/process/license-rules.rst and checkpatch expect the SPDX
identifier syntax for multiple licenses to use capital "OR". Correct it
to keep consistent format and avoid copy-paste issues.
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
Rebased on next-20230822, so might not apply cleanly. What does not
apply, can be skipped and I will fix it after next RC.
---
arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts | 2 +-
arch/arm64/boot/dts/arm/corstone1000-fvp.dts | 2 +-
arch/arm64/boot/dts/arm/corstone1000-mps3.dts | 2 +-
arch/arm64/boot/dts/arm/corstone1000.dtsi | 2 +-
arch/arm64/boot/dts/broadcom/stingray/bcm958802a802x.dts | 2 +-
arch/arm64/boot/dts/broadcom/stingray/stingray-board-base.dtsi | 2 +-
arch/arm64/boot/dts/broadcom/stingray/stingray-pcie.dtsi | 2 +-
arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi | 2 +-
arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dts | 2 +-
arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dtsi | 2 +-
arch/arm64/boot/dts/freescale/imx8mm-emcon.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a77980a.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779f0-spider.dts | 2 +-
arch/arm64/boot/dts/renesas/r8a779f0.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m0.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m1-salvator-xs.dts | 2 +-
arch/arm64/boot/dts/renesas/r8a779m1-ulcb-kf.dts | 2 +-
arch/arm64/boot/dts/renesas/r8a779m1-ulcb.dts | 2 +-
arch/arm64/boot/dts/renesas/r8a779m1.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m2.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m3-salvator-xs.dts | 2 +-
arch/arm64/boot/dts/renesas/r8a779m3-ulcb-kf.dts | 2 +-
arch/arm64/boot/dts/renesas/r8a779m3-ulcb.dts | 2 +-
arch/arm64/boot/dts/renesas/r8a779m3.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m4.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m5-salvator-xs.dts | 2 +-
arch/arm64/boot/dts/renesas/r8a779m5.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m6.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m7.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779m8.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779mb.dtsi | 2 +-
38 files changed, 38 insertions(+), 38 deletions(-)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts b/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts
index d34c2bb1079f..f5c5c1464482 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a100-allwinner-perf1.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>
*/
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
index 97e3e6907acd..a3dccf193765 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>
*/
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts
index 686f58e77004..b710f1a0f53a 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (C) 2019 Corentin LABBE <clabbe@baylibre.com>
*/
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
index 8788c129b288..15290e6892fc 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (C) 2020 Arm Ltd.
*
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
index d6e732b12c52..d83852e72f06 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (C) 2020 Arm Ltd.
*/
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts
index 07424c28b696..959b6fd18483 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (C) 2021 Arm Ltd.
*/
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
index 96a685172811..00fe28caac93 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (C) 2023 Arm Ltd.
*/
diff --git a/arch/arm64/boot/dts/arm/corstone1000-fvp.dts b/arch/arm64/boot/dts/arm/corstone1000-fvp.dts
index 26b0f1b3cea6..901a7fc83307 100644
--- a/arch/arm64/boot/dts/arm/corstone1000-fvp.dts
+++ b/arch/arm64/boot/dts/arm/corstone1000-fvp.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0 or MIT
+// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
* Copyright (c) 2022, Arm Limited. All rights reserved.
* Copyright (c) 2022, Linaro Limited. All rights reserved.
diff --git a/arch/arm64/boot/dts/arm/corstone1000-mps3.dts b/arch/arm64/boot/dts/arm/corstone1000-mps3.dts
index e3146747c2d9..10d265be0c02 100644
--- a/arch/arm64/boot/dts/arm/corstone1000-mps3.dts
+++ b/arch/arm64/boot/dts/arm/corstone1000-mps3.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0 or MIT
+// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
* Copyright (c) 2022, Arm Limited. All rights reserved.
* Copyright (c) 2022, Linaro Limited. All rights reserved.
diff --git a/arch/arm64/boot/dts/arm/corstone1000.dtsi b/arch/arm64/boot/dts/arm/corstone1000.dtsi
index 34bc336ba8d1..6ad7829f9e28 100644
--- a/arch/arm64/boot/dts/arm/corstone1000.dtsi
+++ b/arch/arm64/boot/dts/arm/corstone1000.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0 or MIT
+// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
* Copyright (c) 2022, Arm Limited. All rights reserved.
* Copyright (c) 2022, Linaro Limited. All rights reserved.
diff --git a/arch/arm64/boot/dts/broadcom/stingray/bcm958802a802x.dts b/arch/arm64/boot/dts/broadcom/stingray/bcm958802a802x.dts
index a41facd7d79b..66471a25e4ac 100644
--- a/arch/arm64/boot/dts/broadcom/stingray/bcm958802a802x.dts
+++ b/arch/arm64/boot/dts/broadcom/stingray/bcm958802a802x.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or BSD-3-Clause)
+// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
/*
*Copyright(c) 2018 Broadcom
*/
diff --git a/arch/arm64/boot/dts/broadcom/stingray/stingray-board-base.dtsi b/arch/arm64/boot/dts/broadcom/stingray/stingray-board-base.dtsi
index 82a24711d0d8..cdd709491f01 100644
--- a/arch/arm64/boot/dts/broadcom/stingray/stingray-board-base.dtsi
+++ b/arch/arm64/boot/dts/broadcom/stingray/stingray-board-base.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or BSD-3-Clause)
+// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
/*
* Copyright(c) 2016-2018 Broadcom
*/
diff --git a/arch/arm64/boot/dts/broadcom/stingray/stingray-pcie.dtsi b/arch/arm64/boot/dts/broadcom/stingray/stingray-pcie.dtsi
index 33a472ab17e8..663e51756746 100644
--- a/arch/arm64/boot/dts/broadcom/stingray/stingray-pcie.dtsi
+++ b/arch/arm64/boot/dts/broadcom/stingray/stingray-pcie.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or BSD-3-Clause)
+// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
/*
*Copyright(c) 2018 Broadcom
*/
diff --git a/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi b/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi
index 5401a646c840..ac4f7b8f9273 100644
--- a/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi
+++ b/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or BSD-3-Clause)
+// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
/*
*Copyright(c) 2018 Broadcom
*/
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dts b/arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dts
index b2e8967e9687..c8ff70212602 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
//
// Copyright (c) 2021 emtrion GmbH
// Author: Frank Erdrich <frank.erdrich@emtrion.com>
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dtsi
index 5028f232b6bd..d897a8527335 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-emcon-avari.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
//
// Copyright (C) 2021 emtrion GmbH
// Author: Frank Erdrich <frank.erdrich@emtrion.com>
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-emcon.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-emcon.dtsi
index 40e18edbaadd..af7dc8d1f5f1 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-emcon.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-emcon.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
//
// Copyright 2018 NXP
// Copyright (C) 2021 emtrion GmbH
diff --git a/arch/arm64/boot/dts/renesas/r8a77980a.dtsi b/arch/arm64/boot/dts/renesas/r8a77980a.dtsi
index 25b2d27b6167..83f5e21111c9 100644
--- a/arch/arm64/boot/dts/renesas/r8a77980a.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a77980a.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car V3H2 (R8A77980A) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi b/arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi
index 76a94812875e..5cbde8e8fcd5 100644
--- a/arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the Spider CPU board
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts b/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts
index 7aac3f4d319c..f139cc4feb37 100644
--- a/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the Spider CPU and BreakOut boards
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779f0.dtsi b/arch/arm64/boot/dts/renesas/r8a779f0.dtsi
index 0059c9c580f3..ecdd5a523fa3 100644
--- a/arch/arm64/boot/dts/renesas/r8a779f0.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779f0.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car S4-8 (R8A779F0) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m0.dtsi b/arch/arm64/boot/dts/renesas/r8a779m0.dtsi
index 6fb1979cc041..38978360e722 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m0.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m0.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car H3e (R8A779M0) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m1-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a779m1-salvator-xs.dts
index 084b75b04680..74b0ac04ffe1 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m1-salvator-xs.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779m1-salvator-xs.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the Salvator-X 2nd version board with R-Car H3e-2G
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m1-ulcb-kf.dts b/arch/arm64/boot/dts/renesas/r8a779m1-ulcb-kf.dts
index 0baebc5c58b0..d2089e1d7100 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m1-ulcb-kf.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779m1-ulcb-kf.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the H3ULCB Kingfisher board with R-Car H3e-2G
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m1-ulcb.dts b/arch/arm64/boot/dts/renesas/r8a779m1-ulcb.dts
index e294b6bda28c..705ea047ef62 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m1-ulcb.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779m1-ulcb.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the H3ULCB (R-Car Starter Kit Premier) with R-Car H3e-2G
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m1.dtsi b/arch/arm64/boot/dts/renesas/r8a779m1.dtsi
index 1064a87a0c77..be0219defe3a 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m1.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m1.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car H3e-2G (R8A779M1) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m2.dtsi b/arch/arm64/boot/dts/renesas/r8a779m2.dtsi
index 324627340b86..bced12764c69 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m2.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m2.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car M3e (R8A779M2) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m3-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a779m3-salvator-xs.dts
index 4ab26fd7233d..e53a6e88ccfa 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m3-salvator-xs.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779m3-salvator-xs.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the Salvator-X 2nd version board with R-Car M3e-2G
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m3-ulcb-kf.dts b/arch/arm64/boot/dts/renesas/r8a779m3-ulcb-kf.dts
index 6bacee1d2ef5..587e8764bcd2 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m3-ulcb-kf.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779m3-ulcb-kf.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the M3ULCB Kingfisher board with R-Car M3e-2G
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m3-ulcb.dts b/arch/arm64/boot/dts/renesas/r8a779m3-ulcb.dts
index 8f215a0b771b..413f000b4630 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m3-ulcb.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779m3-ulcb.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the M3ULCB (R-Car Starter Kit Pro) with R-Car M3e-2G
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m3.dtsi b/arch/arm64/boot/dts/renesas/r8a779m3.dtsi
index 7fdbdd97ed4b..ffde141137df 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m3.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m3.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car M3e-2G (R8A779M3) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m4.dtsi b/arch/arm64/boot/dts/renesas/r8a779m4.dtsi
index d7fbb6c05502..ae8486056962 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m4.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m4.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car M3Ne (R8A779M4) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m5-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a779m5-salvator-xs.dts
index c0341a88d641..6efc23171a66 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m5-salvator-xs.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779m5-salvator-xs.dts
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the Salvator-X 2nd version board with R-Car M3Ne-2G
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m5.dtsi b/arch/arm64/boot/dts/renesas/r8a779m5.dtsi
index df51e0ff5986..aded03ad31a1 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m5.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m5.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car M3Ne-2G (R8A779M5) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m6.dtsi b/arch/arm64/boot/dts/renesas/r8a779m6.dtsi
index afe3cabfb898..94d6a6cf503e 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m6.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m6.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car E3e (R8A779M6) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m7.dtsi b/arch/arm64/boot/dts/renesas/r8a779m7.dtsi
index 4958babc52fd..0580fa614034 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m7.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m7.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car D3e (R8A779M7) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779m8.dtsi b/arch/arm64/boot/dts/renesas/r8a779m8.dtsi
index 750bd8ccdb7f..dfccc080fb3e 100644
--- a/arch/arm64/boot/dts/renesas/r8a779m8.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779m8.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car H3Ne (R8A779M8) SoC
*
diff --git a/arch/arm64/boot/dts/renesas/r8a779mb.dtsi b/arch/arm64/boot/dts/renesas/r8a779mb.dtsi
index 40d1dce2f350..181b737c91cd 100644
--- a/arch/arm64/boot/dts/renesas/r8a779mb.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779mb.dtsi
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0 or MIT)
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Device Tree Source for the R-Car H3Ne-1.7G (R8A779MB) SoC
*
--
2.34.1
^ permalink raw reply related [relevance 4%]
* [PATCH] dt-bindings: use capital "OR" for multiple licenses in SPDX
@ 2023-08-23 8:45 4% Krzysztof Kozlowski
0 siblings, 0 replies; 200+ results
From: Krzysztof Kozlowski @ 2023-08-23 8:45 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel,
devicetree, linux-kernel, linux-arm-msm, linux-clk, linux-hwmon,
linux-pm, linux-gpio
Cc: Krzysztof Kozlowski
Documentation/process/license-rules.rst and checkpatch expect the SPDX
identifier syntax for multiple licenses to use capital "OR". Correct it
to keep consistent format and avoid copy-paste issues.
Correct also the format // -> .* in few Allwinner binding headers as
pointed out by checkpatch:
WARNING: Improper SPDX comment style for 'include/dt-bindings/reset/sun50i-h6-ccu.h', please use '/*' instead
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
Rebased on next-20230822, so might not apply cleanly. What does not
apply, can be skipped and I will fix it after next RC.
---
Documentation/devicetree/bindings/arm/arm,coresight-cti.yaml | 2 +-
.../devicetree/bindings/arm/arm,coresight-dummy-sink.yaml | 2 +-
.../devicetree/bindings/arm/arm,coresight-dummy-source.yaml | 2 +-
.../devicetree/bindings/arm/arm,embedded-trace-extension.yaml | 2 +-
.../devicetree/bindings/arm/arm,trace-buffer-extension.yaml | 2 +-
Documentation/devicetree/bindings/arm/arm,versatile-sysreg.yaml | 2 +-
Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml | 2 +-
.../devicetree/bindings/arm/keystone/ti,k3-sci-common.yaml | 2 +-
Documentation/devicetree/bindings/arm/keystone/ti,sci.yaml | 2 +-
Documentation/devicetree/bindings/arm/qcom,coresight-tpda.yaml | 2 +-
Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml | 2 +-
Documentation/devicetree/bindings/clock/ti,cdce925.yaml | 2 +-
Documentation/devicetree/bindings/clock/ti,sci-clk.yaml | 2 +-
Documentation/devicetree/bindings/crypto/ti,sa2ul.yaml | 2 +-
.../devicetree/bindings/display/msm/dsi-controller-main.yaml | 2 +-
Documentation/devicetree/bindings/display/msm/dsi-phy-10nm.yaml | 2 +-
Documentation/devicetree/bindings/display/msm/dsi-phy-14nm.yaml | 2 +-
Documentation/devicetree/bindings/display/msm/dsi-phy-20nm.yaml | 2 +-
Documentation/devicetree/bindings/display/msm/dsi-phy-28nm.yaml | 2 +-
Documentation/devicetree/bindings/display/msm/dsi-phy-7nm.yaml | 2 +-
.../devicetree/bindings/display/msm/dsi-phy-common.yaml | 2 +-
Documentation/devicetree/bindings/display/msm/mdss-common.yaml | 2 +-
Documentation/devicetree/bindings/display/msm/qcom,mdp5.yaml | 2 +-
Documentation/devicetree/bindings/display/msm/qcom,mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,msm8998-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,msm8998-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sc7180-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sc7180-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sc7280-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sc7280-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sc8280xp-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sc8280xp-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sdm845-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sdm845-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm6115-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm6350-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm6375-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8150-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8150-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8250-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8250-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8350-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8350-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8450-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8450-mdss.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8550-dpu.yaml | 2 +-
.../devicetree/bindings/display/msm/qcom,sm8550-mdss.yaml | 2 +-
.../devicetree/bindings/display/panel/himax,hx8394.yaml | 2 +-
.../devicetree/bindings/display/panel/mantix,mlaf057we51-x.yaml | 2 +-
.../devicetree/bindings/display/panel/orisetech,otm8009a.yaml | 2 +-
.../devicetree/bindings/display/panel/panel-dsi-cm.yaml | 2 +-
.../devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml | 2 +-
.../devicetree/bindings/display/panel/panel-simple-dsi.yaml | 2 +-
.../devicetree/bindings/display/panel/raydium,rm68200.yaml | 2 +-
.../devicetree/bindings/display/panel/rocktech,jh057n00900.yaml | 2 +-
.../devicetree/bindings/display/panel/visionox,r66451.yaml | 2 +-
.../devicetree/bindings/display/panel/visionox,rm69299.yaml | 2 +-
.../devicetree/bindings/display/panel/visionox,vtdr6130.yaml | 2 +-
.../devicetree/bindings/display/rockchip/rockchip-vop2.yaml | 2 +-
.../bindings/hwlock/allwinner,sun6i-a31-hwspinlock.yaml | 2 +-
.../devicetree/bindings/hwlock/ti,omap-hwspinlock.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/jedec,jc42.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/lltc,ltc4151.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/lm75.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/microchip,mcp3021.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/national,lm90.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/nxp,mc34vr500.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/sensirion,sht15.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/ti,tmp102.yaml | 2 +-
Documentation/devicetree/bindings/hwmon/ti,tmp108.yaml | 2 +-
Documentation/devicetree/bindings/input/elan,ekth3000.yaml | 2 +-
.../devicetree/bindings/interrupt-controller/ti,pruss-intc.yaml | 2 +-
Documentation/devicetree/bindings/iommu/xen,grant-dma.yaml | 2 +-
Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml | 2 +-
.../devicetree/bindings/phy/mediatek,mt7621-pci-phy.yaml | 2 +-
.../devicetree/bindings/phy/nvidia,tegra210-xusb-padctl.yaml | 2 +-
.../devicetree/bindings/power/reset/gpio-poweroff.yaml | 2 +-
Documentation/devicetree/bindings/power/reset/gpio-restart.yaml | 2 +-
.../devicetree/bindings/power/reset/restart-handler.yaml | 2 +-
Documentation/devicetree/bindings/power/supply/bq256xx.yaml | 2 +-
.../devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml | 2 +-
.../devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml | 2 +-
.../devicetree/bindings/remoteproc/ti,omap-remoteproc.yaml | 2 +-
.../devicetree/bindings/remoteproc/ti,pru-consumer.yaml | 2 +-
Documentation/devicetree/bindings/remoteproc/ti,pru-rproc.yaml | 2 +-
.../devicetree/bindings/remoteproc/xlnx,zynqmp-r5fss.yaml | 2 +-
Documentation/devicetree/bindings/reset/ti,sci-reset.yaml | 2 +-
Documentation/devicetree/bindings/reset/ti,tps380x-reset.yaml | 2 +-
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml | 2 +-
Documentation/devicetree/bindings/usb/cypress,hx3.yaml | 2 +-
Documentation/devicetree/bindings/usb/genesys,gl850g.yaml | 2 +-
Documentation/devicetree/bindings/usb/realtek,rts5411.yaml | 2 +-
Documentation/devicetree/bindings/usb/ti,usb8041.yaml | 2 +-
Documentation/devicetree/bindings/usb/vialab,vl817.yaml | 2 +-
include/dt-bindings/ata/ahci.h | 2 +-
include/dt-bindings/clock/hi3559av100-clock.h | 2 +-
include/dt-bindings/clock/r8a779f0-cpg-mssr.h | 2 +-
include/dt-bindings/clock/rockchip,rk3588-cru.h | 2 +-
include/dt-bindings/clock/stm32mp1-clks.h | 2 +-
include/dt-bindings/clock/sun20i-d1-ccu.h | 2 +-
include/dt-bindings/clock/sun20i-d1-r-ccu.h | 2 +-
include/dt-bindings/clock/sun50i-a100-ccu.h | 2 +-
include/dt-bindings/clock/sun50i-h6-ccu.h | 2 +-
include/dt-bindings/clock/sun50i-h616-ccu.h | 2 +-
include/dt-bindings/clock/sun6i-rtc.h | 2 +-
include/dt-bindings/display/sdtv-standards.h | 2 +-
include/dt-bindings/gpio/meson-g12a-gpio.h | 2 +-
include/dt-bindings/power/amlogic,c3-pwrc.h | 2 +-
include/dt-bindings/power/meson-a1-power.h | 2 +-
include/dt-bindings/power/meson-axg-power.h | 2 +-
include/dt-bindings/power/meson-g12a-power.h | 2 +-
include/dt-bindings/power/meson-gxbb-power.h | 2 +-
include/dt-bindings/power/meson-s4-power.h | 2 +-
include/dt-bindings/power/meson-sm1-power.h | 2 +-
include/dt-bindings/power/meson8-power.h | 2 +-
include/dt-bindings/power/r8a779f0-sysc.h | 2 +-
include/dt-bindings/power/rk3588-power.h | 2 +-
include/dt-bindings/power/summit,smb347-charger.h | 2 +-
include/dt-bindings/reset/rockchip,rk3588-cru.h | 2 +-
include/dt-bindings/reset/stm32mp1-resets.h | 2 +-
include/dt-bindings/reset/sun20i-d1-ccu.h | 2 +-
include/dt-bindings/reset/sun20i-d1-r-ccu.h | 2 +-
include/dt-bindings/reset/sun50i-a100-ccu.h | 2 +-
include/dt-bindings/reset/sun50i-a100-r-ccu.h | 2 +-
include/dt-bindings/reset/sun50i-h6-ccu.h | 2 +-
include/dt-bindings/reset/sun50i-h6-r-ccu.h | 2 +-
include/dt-bindings/reset/sun50i-h616-ccu.h | 2 +-
130 files changed, 130 insertions(+), 130 deletions(-)
diff --git a/Documentation/devicetree/bindings/arm/arm,coresight-cti.yaml b/Documentation/devicetree/bindings/arm/arm,coresight-cti.yaml
index d6c84b6e7fe6..6216cfb0a188 100644
--- a/Documentation/devicetree/bindings/arm/arm,coresight-cti.yaml
+++ b/Documentation/devicetree/bindings/arm/arm,coresight-cti.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
# Copyright 2019 Linaro Ltd.
%YAML 1.2
---
diff --git a/Documentation/devicetree/bindings/arm/arm,coresight-dummy-sink.yaml b/Documentation/devicetree/bindings/arm/arm,coresight-dummy-sink.yaml
index cb78cfa56702..c960c8e0a9a5 100644
--- a/Documentation/devicetree/bindings/arm/arm,coresight-dummy-sink.yaml
+++ b/Documentation/devicetree/bindings/arm/arm,coresight-dummy-sink.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/arm,coresight-dummy-sink.yaml#
diff --git a/Documentation/devicetree/bindings/arm/arm,coresight-dummy-source.yaml b/Documentation/devicetree/bindings/arm/arm,coresight-dummy-source.yaml
index 5fedaed49a1f..6745b4cc8f1c 100644
--- a/Documentation/devicetree/bindings/arm/arm,coresight-dummy-source.yaml
+++ b/Documentation/devicetree/bindings/arm/arm,coresight-dummy-source.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/arm,coresight-dummy-source.yaml#
diff --git a/Documentation/devicetree/bindings/arm/arm,embedded-trace-extension.yaml b/Documentation/devicetree/bindings/arm/arm,embedded-trace-extension.yaml
index 108460627d9a..a88f96b0ca16 100644
--- a/Documentation/devicetree/bindings/arm/arm,embedded-trace-extension.yaml
+++ b/Documentation/devicetree/bindings/arm/arm,embedded-trace-extension.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
# Copyright 2021, Arm Ltd
%YAML 1.2
---
diff --git a/Documentation/devicetree/bindings/arm/arm,trace-buffer-extension.yaml b/Documentation/devicetree/bindings/arm/arm,trace-buffer-extension.yaml
index b1322658063a..bc0c6d8b7fdb 100644
--- a/Documentation/devicetree/bindings/arm/arm,trace-buffer-extension.yaml
+++ b/Documentation/devicetree/bindings/arm/arm,trace-buffer-extension.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
# Copyright 2021, Arm Ltd
%YAML 1.2
---
diff --git a/Documentation/devicetree/bindings/arm/arm,versatile-sysreg.yaml b/Documentation/devicetree/bindings/arm/arm,versatile-sysreg.yaml
index 491eef1e1b10..3b060c36b90c 100644
--- a/Documentation/devicetree/bindings/arm/arm,versatile-sysreg.yaml
+++ b/Documentation/devicetree/bindings/arm/arm,versatile-sysreg.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/arm,versatile-sysreg.yaml#
diff --git a/Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml b/Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml
index e17b3d66d6e5..68f717670f78 100644
--- a/Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml
+++ b/Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/aspeed/aspeed.yaml#
diff --git a/Documentation/devicetree/bindings/arm/keystone/ti,k3-sci-common.yaml b/Documentation/devicetree/bindings/arm/keystone/ti,k3-sci-common.yaml
index ff378d5cbd32..4a323e8c785d 100644
--- a/Documentation/devicetree/bindings/arm/keystone/ti,k3-sci-common.yaml
+++ b/Documentation/devicetree/bindings/arm/keystone/ti,k3-sci-common.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/keystone/ti,k3-sci-common.yaml#
diff --git a/Documentation/devicetree/bindings/arm/keystone/ti,sci.yaml b/Documentation/devicetree/bindings/arm/keystone/ti,sci.yaml
index 86b59de7707e..c24ad0968f3e 100644
--- a/Documentation/devicetree/bindings/arm/keystone/ti,sci.yaml
+++ b/Documentation/devicetree/bindings/arm/keystone/ti,sci.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/keystone/ti,sci.yaml#
diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-tpda.yaml b/Documentation/devicetree/bindings/arm/qcom,coresight-tpda.yaml
index 2ec9b5b24d73..ea3c5db6b52d 100644
--- a/Documentation/devicetree/bindings/arm/qcom,coresight-tpda.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom,coresight-tpda.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
# Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
%YAML 1.2
---
diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml b/Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml
index 5c08342664ea..3bad47b7b02b 100644
--- a/Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
# Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
%YAML 1.2
---
diff --git a/Documentation/devicetree/bindings/clock/ti,cdce925.yaml b/Documentation/devicetree/bindings/clock/ti,cdce925.yaml
index a4ec8dd5ddf1..95c1c6f8b755 100644
--- a/Documentation/devicetree/bindings/clock/ti,cdce925.yaml
+++ b/Documentation/devicetree/bindings/clock/ti,cdce925.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/ti,cdce925.yaml#
diff --git a/Documentation/devicetree/bindings/clock/ti,sci-clk.yaml b/Documentation/devicetree/bindings/clock/ti,sci-clk.yaml
index 63d976341696..0a9d6a4c4b66 100644
--- a/Documentation/devicetree/bindings/clock/ti,sci-clk.yaml
+++ b/Documentation/devicetree/bindings/clock/ti,sci-clk.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/ti,sci-clk.yaml#
diff --git a/Documentation/devicetree/bindings/crypto/ti,sa2ul.yaml b/Documentation/devicetree/bindings/crypto/ti,sa2ul.yaml
index f0ef7685550a..ff10a0838ad6 100644
--- a/Documentation/devicetree/bindings/crypto/ti,sa2ul.yaml
+++ b/Documentation/devicetree/bindings/crypto/ti,sa2ul.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/crypto/ti,sa2ul.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml b/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml
index b8d1f2b7d541..c6dbab65d5f7 100644
--- a/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/dsi-controller-main.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/dsi-phy-10nm.yaml b/Documentation/devicetree/bindings/display/msm/dsi-phy-10nm.yaml
index e6b00d7387ce..69d13867b7cf 100644
--- a/Documentation/devicetree/bindings/display/msm/dsi-phy-10nm.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dsi-phy-10nm.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/dsi-phy-10nm.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/dsi-phy-14nm.yaml b/Documentation/devicetree/bindings/display/msm/dsi-phy-14nm.yaml
index 2361da5f6736..52bbe132e6da 100644
--- a/Documentation/devicetree/bindings/display/msm/dsi-phy-14nm.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dsi-phy-14nm.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/dsi-phy-14nm.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/dsi-phy-20nm.yaml b/Documentation/devicetree/bindings/display/msm/dsi-phy-20nm.yaml
index 9c1f9140c731..7e6687cb002b 100644
--- a/Documentation/devicetree/bindings/display/msm/dsi-phy-20nm.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dsi-phy-20nm.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/dsi-phy-20nm.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/dsi-phy-28nm.yaml b/Documentation/devicetree/bindings/display/msm/dsi-phy-28nm.yaml
index 62fb3e484eb2..288d8babb76a 100644
--- a/Documentation/devicetree/bindings/display/msm/dsi-phy-28nm.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dsi-phy-28nm.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/dsi-phy-28nm.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/dsi-phy-7nm.yaml b/Documentation/devicetree/bindings/display/msm/dsi-phy-7nm.yaml
index 8e9031bbde73..dd6619555a12 100644
--- a/Documentation/devicetree/bindings/display/msm/dsi-phy-7nm.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dsi-phy-7nm.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/dsi-phy-7nm.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/dsi-phy-common.yaml b/Documentation/devicetree/bindings/display/msm/dsi-phy-common.yaml
index 0f6f08890e7e..6b57ce41c95f 100644
--- a/Documentation/devicetree/bindings/display/msm/dsi-phy-common.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dsi-phy-common.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/dsi-phy-common.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/mdss-common.yaml b/Documentation/devicetree/bindings/display/msm/mdss-common.yaml
index a8086ca09d9f..f69196e4cc76 100644
--- a/Documentation/devicetree/bindings/display/msm/mdss-common.yaml
+++ b/Documentation/devicetree/bindings/display/msm/mdss-common.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/mdss-common.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,mdp5.yaml b/Documentation/devicetree/bindings/display/msm/qcom,mdp5.yaml
index 2fe032d0e8f8..91c774f106ce 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,mdp5.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,mdp5.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,mdp5.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,mdss.yaml
index 5854a3a1224b..0999ea07f47b 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,msm8998-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,msm8998-dpu.yaml
index 8d3cd46260fb..d5a64c8a921f 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,msm8998-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,msm8998-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,msm8998-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,msm8998-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,msm8998-mdss.yaml
index 3c2b6ed98a56..e320ab1de6de 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,msm8998-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,msm8998-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,msm8998-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml
index 414f4e7ebdf1..be6cd8adb3b6 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,qcm2290-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml
index 2995b84b2cd4..4184b84d4c21 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,qcm2290-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sc7180-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sc7180-dpu.yaml
index ea75f0f95d5c..8137618237ce 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sc7180-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sc7180-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sc7180-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sc7180-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sc7180-mdss.yaml
index 42ef06edddc4..3b9c103e504a 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sc7180-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sc7180-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sc7180-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sc7280-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sc7280-dpu.yaml
index 26dc073bd19a..b0fbe86219d1 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sc7280-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sc7280-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sc7280-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sc7280-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sc7280-mdss.yaml
index 078e1d1a7d2f..43500dad66e7 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sc7280-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sc7280-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sc7280-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sc8280xp-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sc8280xp-dpu.yaml
index f2c8e16cf067..d19e3bec4600 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sc8280xp-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sc8280xp-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sc8280xp-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sc8280xp-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sc8280xp-mdss.yaml
index c239544bc37f..db680fb12b6a 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sc8280xp-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sc8280xp-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sc8280xp-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sdm845-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sdm845-dpu.yaml
index 0f7765d832e7..b917064bdf33 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sdm845-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sdm845-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sdm845-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sdm845-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sdm845-mdss.yaml
index 6ecb00920d7f..d6d7ac1b2ef8 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sdm845-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sdm845-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sdm845-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm6115-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm6115-dpu.yaml
index bf62c2f5325a..510eb6c19364 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm6115-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm6115-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm6115-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
index b9f83088f370..17221b62a642 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm6115-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm6115-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm6350-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm6350-mdss.yaml
index 63962a8f2faf..db255b1f4c20 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm6350-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm6350-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm6350-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm6375-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm6375-mdss.yaml
index 595a9d56949c..30d36fffaedb 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm6375-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm6375-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm6375-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8150-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8150-dpu.yaml
index 2b3f3fe9bdf7..13146b3f053c 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8150-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8150-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8150-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8150-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8150-mdss.yaml
index 5182e958e069..54cdaa827cd3 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8150-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8150-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8150-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8250-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8250-dpu.yaml
index acd2ed391b2f..ffa5047e901f 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8250-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8250-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8250-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8250-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8250-mdss.yaml
index 5cfb9b917e90..e887f031b8be 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8250-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8250-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8250-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8350-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8350-dpu.yaml
index 1a4e03531a1b..96ef2d9c3512 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8350-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8350-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8350-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8350-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8350-mdss.yaml
index 8c89fb7fc8a3..60d4aae1131b 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8350-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8350-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8350-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8450-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8450-dpu.yaml
index da3fd66c564f..2a5d3daed0e1 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8450-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8450-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8450-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8450-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8450-mdss.yaml
index cfad5049a966..bb22940b9385 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8450-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8450-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8450-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8550-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8550-dpu.yaml
index 99908fbe74f0..16a541fca66f 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8550-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8550-dpu.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8550-dpu.yaml#
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8550-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8550-mdss.yaml
index 5390a8e79ad3..48aea8005c86 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,sm8550-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8550-mdss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/msm/qcom,sm8550-mdss.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml
index 1b2a1baa26f9..ffb35288ffbb 100644
--- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml
+++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/himax,hx8394.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/mantix,mlaf057we51-x.yaml b/Documentation/devicetree/bindings/display/panel/mantix,mlaf057we51-x.yaml
index a4b8569ab81c..74ff772973d6 100644
--- a/Documentation/devicetree/bindings/display/panel/mantix,mlaf057we51-x.yaml
+++ b/Documentation/devicetree/bindings/display/panel/mantix,mlaf057we51-x.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/mantix,mlaf057we51-x.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/orisetech,otm8009a.yaml b/Documentation/devicetree/bindings/display/panel/orisetech,otm8009a.yaml
index ad7d3575190e..1e4f140f48b8 100644
--- a/Documentation/devicetree/bindings/display/panel/orisetech,otm8009a.yaml
+++ b/Documentation/devicetree/bindings/display/panel/orisetech,otm8009a.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/orisetech,otm8009a.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/panel-dsi-cm.yaml b/Documentation/devicetree/bindings/display/panel/panel-dsi-cm.yaml
index 4a36aa64c716..f8dc9929e833 100644
--- a/Documentation/devicetree/bindings/display/panel/panel-dsi-cm.yaml
+++ b/Documentation/devicetree/bindings/display/panel/panel-dsi-cm.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/panel-dsi-cm.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml b/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml
index 2f0238b770eb..2786c0b9b65d 100644
--- a/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml
+++ b/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/panel-mipi-dbi-spi.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple-dsi.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple-dsi.yaml
index 90c04cff8281..73674baea75d 100644
--- a/Documentation/devicetree/bindings/display/panel/panel-simple-dsi.yaml
+++ b/Documentation/devicetree/bindings/display/panel/panel-simple-dsi.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/panel-simple-dsi.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/raydium,rm68200.yaml b/Documentation/devicetree/bindings/display/panel/raydium,rm68200.yaml
index e8ce2315631a..46fe1014ebc4 100644
--- a/Documentation/devicetree/bindings/display/panel/raydium,rm68200.yaml
+++ b/Documentation/devicetree/bindings/display/panel/raydium,rm68200.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/raydium,rm68200.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml b/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml
index 150e81090af2..5ea74426b1d5 100644
--- a/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml
+++ b/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/rocktech,jh057n00900.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/visionox,r66451.yaml b/Documentation/devicetree/bindings/display/panel/visionox,r66451.yaml
index 6ba323683921..187840bb76c7 100644
--- a/Documentation/devicetree/bindings/display/panel/visionox,r66451.yaml
+++ b/Documentation/devicetree/bindings/display/panel/visionox,r66451.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/visionox,r66451.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/visionox,rm69299.yaml b/Documentation/devicetree/bindings/display/panel/visionox,rm69299.yaml
index 444ac2a4772d..fa745a6f4456 100644
--- a/Documentation/devicetree/bindings/display/panel/visionox,rm69299.yaml
+++ b/Documentation/devicetree/bindings/display/panel/visionox,rm69299.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/visionox,rm69299.yaml#
diff --git a/Documentation/devicetree/bindings/display/panel/visionox,vtdr6130.yaml b/Documentation/devicetree/bindings/display/panel/visionox,vtdr6130.yaml
index 84562a5b710a..d5a8295106c1 100644
--- a/Documentation/devicetree/bindings/display/panel/visionox,vtdr6130.yaml
+++ b/Documentation/devicetree/bindings/display/panel/visionox,vtdr6130.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/visionox,vtdr6130.yaml#
diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip-vop2.yaml b/Documentation/devicetree/bindings/display/rockchip/rockchip-vop2.yaml
index fba45091d909..b60b90472d42 100644
--- a/Documentation/devicetree/bindings/display/rockchip/rockchip-vop2.yaml
+++ b/Documentation/devicetree/bindings/display/rockchip/rockchip-vop2.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/rockchip/rockchip-vop2.yaml#
diff --git a/Documentation/devicetree/bindings/hwlock/allwinner,sun6i-a31-hwspinlock.yaml b/Documentation/devicetree/bindings/hwlock/allwinner,sun6i-a31-hwspinlock.yaml
index 38478dad8b25..584cce3211c0 100644
--- a/Documentation/devicetree/bindings/hwlock/allwinner,sun6i-a31-hwspinlock.yaml
+++ b/Documentation/devicetree/bindings/hwlock/allwinner,sun6i-a31-hwspinlock.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwlock/allwinner,sun6i-a31-hwspinlock.yaml#
diff --git a/Documentation/devicetree/bindings/hwlock/ti,omap-hwspinlock.yaml b/Documentation/devicetree/bindings/hwlock/ti,omap-hwspinlock.yaml
index 0a955c7b9706..5ba60d532fcd 100644
--- a/Documentation/devicetree/bindings/hwlock/ti,omap-hwspinlock.yaml
+++ b/Documentation/devicetree/bindings/hwlock/ti,omap-hwspinlock.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwlock/ti,omap-hwspinlock.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/jedec,jc42.yaml b/Documentation/devicetree/bindings/hwmon/jedec,jc42.yaml
index 0e49b3901161..bf3332153ad8 100644
--- a/Documentation/devicetree/bindings/hwmon/jedec,jc42.yaml
+++ b/Documentation/devicetree/bindings/hwmon/jedec,jc42.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/jedec,jc42.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/lltc,ltc4151.yaml b/Documentation/devicetree/bindings/hwmon/lltc,ltc4151.yaml
index b1a4c235376e..e62aff670478 100644
--- a/Documentation/devicetree/bindings/hwmon/lltc,ltc4151.yaml
+++ b/Documentation/devicetree/bindings/hwmon/lltc,ltc4151.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/lltc,ltc4151.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/lm75.yaml b/Documentation/devicetree/bindings/hwmon/lm75.yaml
index 8226e3b5d028..0b69897f0c63 100644
--- a/Documentation/devicetree/bindings/hwmon/lm75.yaml
+++ b/Documentation/devicetree/bindings/hwmon/lm75.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/lm75.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/microchip,mcp3021.yaml b/Documentation/devicetree/bindings/hwmon/microchip,mcp3021.yaml
index 028d6e570131..f5e104c1b0d0 100644
--- a/Documentation/devicetree/bindings/hwmon/microchip,mcp3021.yaml
+++ b/Documentation/devicetree/bindings/hwmon/microchip,mcp3021.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/microchip,mcp3021.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/national,lm90.yaml b/Documentation/devicetree/bindings/hwmon/national,lm90.yaml
index 7b9d48d6d6da..6e59c8fdef30 100644
--- a/Documentation/devicetree/bindings/hwmon/national,lm90.yaml
+++ b/Documentation/devicetree/bindings/hwmon/national,lm90.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/national,lm90.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/nxp,mc34vr500.yaml b/Documentation/devicetree/bindings/hwmon/nxp,mc34vr500.yaml
index 306f67315835..48d654e52114 100644
--- a/Documentation/devicetree/bindings/hwmon/nxp,mc34vr500.yaml
+++ b/Documentation/devicetree/bindings/hwmon/nxp,mc34vr500.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/nxp,mc34vr500.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/sensirion,sht15.yaml b/Documentation/devicetree/bindings/hwmon/sensirion,sht15.yaml
index 80df7182ea28..14ac783c9a5f 100644
--- a/Documentation/devicetree/bindings/hwmon/sensirion,sht15.yaml
+++ b/Documentation/devicetree/bindings/hwmon/sensirion,sht15.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/sensirion,sht15.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/ti,tmp102.yaml b/Documentation/devicetree/bindings/hwmon/ti,tmp102.yaml
index c5a889e3e27b..7e5b62a0215d 100644
--- a/Documentation/devicetree/bindings/hwmon/ti,tmp102.yaml
+++ b/Documentation/devicetree/bindings/hwmon/ti,tmp102.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/ti,tmp102.yaml#
diff --git a/Documentation/devicetree/bindings/hwmon/ti,tmp108.yaml b/Documentation/devicetree/bindings/hwmon/ti,tmp108.yaml
index dcbc6fbc3b48..8b5307c875ff 100644
--- a/Documentation/devicetree/bindings/hwmon/ti,tmp108.yaml
+++ b/Documentation/devicetree/bindings/hwmon/ti,tmp108.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/ti,tmp108.yaml#
diff --git a/Documentation/devicetree/bindings/input/elan,ekth3000.yaml b/Documentation/devicetree/bindings/input/elan,ekth3000.yaml
index 2a9bb6ace021..24dc2d69613f 100644
--- a/Documentation/devicetree/bindings/input/elan,ekth3000.yaml
+++ b/Documentation/devicetree/bindings/input/elan,ekth3000.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/elan,ekth3000.yaml#
diff --git a/Documentation/devicetree/bindings/interrupt-controller/ti,pruss-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/ti,pruss-intc.yaml
index 65523d9459d8..3cd5a1822e14 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/ti,pruss-intc.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/ti,pruss-intc.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interrupt-controller/ti,pruss-intc.yaml#
diff --git a/Documentation/devicetree/bindings/iommu/xen,grant-dma.yaml b/Documentation/devicetree/bindings/iommu/xen,grant-dma.yaml
index be1539d234f9..3528b81daa25 100644
--- a/Documentation/devicetree/bindings/iommu/xen,grant-dma.yaml
+++ b/Documentation/devicetree/bindings/iommu/xen,grant-dma.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iommu/xen,grant-dma.yaml#
diff --git a/Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml b/Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml
index 4943c75e8a60..1a2001e58880 100644
--- a/Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml
+++ b/Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mailbox/ti,omap-mailbox.yaml#
diff --git a/Documentation/devicetree/bindings/phy/mediatek,mt7621-pci-phy.yaml b/Documentation/devicetree/bindings/phy/mediatek,mt7621-pci-phy.yaml
index b35c4d256e40..99eac888ae03 100644
--- a/Documentation/devicetree/bindings/phy/mediatek,mt7621-pci-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/mediatek,mt7621-pci-phy.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/mediatek,mt7621-pci-phy.yaml#
diff --git a/Documentation/devicetree/bindings/phy/nvidia,tegra210-xusb-padctl.yaml b/Documentation/devicetree/bindings/phy/nvidia,tegra210-xusb-padctl.yaml
index d16bd6e47f90..e9237c58ce45 100644
--- a/Documentation/devicetree/bindings/phy/nvidia,tegra210-xusb-padctl.yaml
+++ b/Documentation/devicetree/bindings/phy/nvidia,tegra210-xusb-padctl.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/nvidia,tegra210-xusb-padctl.yaml#
diff --git a/Documentation/devicetree/bindings/power/reset/gpio-poweroff.yaml b/Documentation/devicetree/bindings/power/reset/gpio-poweroff.yaml
index 45d66c775115..b54ec003a1e0 100644
--- a/Documentation/devicetree/bindings/power/reset/gpio-poweroff.yaml
+++ b/Documentation/devicetree/bindings/power/reset/gpio-poweroff.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/power/reset/gpio-poweroff.yaml#
diff --git a/Documentation/devicetree/bindings/power/reset/gpio-restart.yaml b/Documentation/devicetree/bindings/power/reset/gpio-restart.yaml
index d3d18e0f5db3..53535de0d41c 100644
--- a/Documentation/devicetree/bindings/power/reset/gpio-restart.yaml
+++ b/Documentation/devicetree/bindings/power/reset/gpio-restart.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/power/reset/gpio-restart.yaml#
diff --git a/Documentation/devicetree/bindings/power/reset/restart-handler.yaml b/Documentation/devicetree/bindings/power/reset/restart-handler.yaml
index f2ffdd29d52a..965a834a3dbe 100644
--- a/Documentation/devicetree/bindings/power/reset/restart-handler.yaml
+++ b/Documentation/devicetree/bindings/power/reset/restart-handler.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/power/reset/restart-handler.yaml#
diff --git a/Documentation/devicetree/bindings/power/supply/bq256xx.yaml b/Documentation/devicetree/bindings/power/supply/bq256xx.yaml
index 4fe9c3705265..a76afe3ca299 100644
--- a/Documentation/devicetree/bindings/power/supply/bq256xx.yaml
+++ b/Documentation/devicetree/bindings/power/supply/bq256xx.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2020 Texas Instruments Incorporated
%YAML 1.2
---
diff --git a/Documentation/devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml
index f16e90380df1..9768db8663eb 100644
--- a/Documentation/devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/ti,k3-dsp-rproc.yaml#
diff --git a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml
index 54eecc567e0b..a492f74a8608 100644
--- a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/ti,k3-r5f-rproc.yaml#
diff --git a/Documentation/devicetree/bindings/remoteproc/ti,omap-remoteproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,omap-remoteproc.yaml
index 1fdc2741c36e..94eb2033e79c 100644
--- a/Documentation/devicetree/bindings/remoteproc/ti,omap-remoteproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/ti,omap-remoteproc.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/ti,omap-remoteproc.yaml#
diff --git a/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml
index 35f0bb38f7b2..2811334515d1 100644
--- a/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/ti,pru-consumer.yaml#
diff --git a/Documentation/devicetree/bindings/remoteproc/ti,pru-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,pru-rproc.yaml
index cd55d80137f7..baccd98754a9 100644
--- a/Documentation/devicetree/bindings/remoteproc/ti,pru-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/ti,pru-rproc.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/ti,pru-rproc.yaml#
diff --git a/Documentation/devicetree/bindings/remoteproc/xlnx,zynqmp-r5fss.yaml b/Documentation/devicetree/bindings/remoteproc/xlnx,zynqmp-r5fss.yaml
index 9f677367dd9f..78aac69f1060 100644
--- a/Documentation/devicetree/bindings/remoteproc/xlnx,zynqmp-r5fss.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/xlnx,zynqmp-r5fss.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/xlnx,zynqmp-r5fss.yaml#
diff --git a/Documentation/devicetree/bindings/reset/ti,sci-reset.yaml b/Documentation/devicetree/bindings/reset/ti,sci-reset.yaml
index dcf9206e12be..e10eb98eddad 100644
--- a/Documentation/devicetree/bindings/reset/ti,sci-reset.yaml
+++ b/Documentation/devicetree/bindings/reset/ti,sci-reset.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/reset/ti,sci-reset.yaml#
diff --git a/Documentation/devicetree/bindings/reset/ti,tps380x-reset.yaml b/Documentation/devicetree/bindings/reset/ti,tps380x-reset.yaml
index f436f2cf1df7..6063784f0352 100644
--- a/Documentation/devicetree/bindings/reset/ti,tps380x-reset.yaml
+++ b/Documentation/devicetree/bindings/reset/ti,tps380x-reset.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/reset/ti,tps380x-reset.yaml#
diff --git a/Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml b/Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
index 5df7688a1e1c..a750035d6234 100644
--- a/Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
+++ b/Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/ti/sci-pm-domain.yaml#
diff --git a/Documentation/devicetree/bindings/usb/cypress,hx3.yaml b/Documentation/devicetree/bindings/usb/cypress,hx3.yaml
index 47add0d85fb8..28096619a882 100644
--- a/Documentation/devicetree/bindings/usb/cypress,hx3.yaml
+++ b/Documentation/devicetree/bindings/usb/cypress,hx3.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/cypress,hx3.yaml#
diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
index 383625c2ef00..d0927f6768a4 100644
--- a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
+++ b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/genesys,gl850g.yaml#
diff --git a/Documentation/devicetree/bindings/usb/realtek,rts5411.yaml b/Documentation/devicetree/bindings/usb/realtek,rts5411.yaml
index 9309f003cd07..f0784d2e86da 100644
--- a/Documentation/devicetree/bindings/usb/realtek,rts5411.yaml
+++ b/Documentation/devicetree/bindings/usb/realtek,rts5411.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/realtek,rts5411.yaml#
diff --git a/Documentation/devicetree/bindings/usb/ti,usb8041.yaml b/Documentation/devicetree/bindings/usb/ti,usb8041.yaml
index 88ea6c952c66..c2e29bd61e11 100644
--- a/Documentation/devicetree/bindings/usb/ti,usb8041.yaml
+++ b/Documentation/devicetree/bindings/usb/ti,usb8041.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/ti,usb8041.yaml#
diff --git a/Documentation/devicetree/bindings/usb/vialab,vl817.yaml b/Documentation/devicetree/bindings/usb/vialab,vl817.yaml
index 23a13e1d5c7a..76db9071b352 100644
--- a/Documentation/devicetree/bindings/usb/vialab,vl817.yaml
+++ b/Documentation/devicetree/bindings/usb/vialab,vl817.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/vialab,vl817.yaml#
diff --git a/include/dt-bindings/ata/ahci.h b/include/dt-bindings/ata/ahci.h
index 77997b35612c..b3f3b7cf9af8 100644
--- a/include/dt-bindings/ata/ahci.h
+++ b/include/dt-bindings/ata/ahci.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause */
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
/*
* This header provides constants for most AHCI bindings.
*/
diff --git a/include/dt-bindings/clock/hi3559av100-clock.h b/include/dt-bindings/clock/hi3559av100-clock.h
index 5fe7689010a0..a4f0e997546c 100644
--- a/include/dt-bindings/clock/hi3559av100-clock.h
+++ b/include/dt-bindings/clock/hi3559av100-clock.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later or BSD-2-Clause */
+/* SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause */
/*
* Copyright (c) 2019-2020, Huawei Tech. Co., Ltd.
*
diff --git a/include/dt-bindings/clock/r8a779f0-cpg-mssr.h b/include/dt-bindings/clock/r8a779f0-cpg-mssr.h
index f2ae1c6a82dd..c34be5624954 100644
--- a/include/dt-bindings/clock/r8a779f0-cpg-mssr.h
+++ b/include/dt-bindings/clock/r8a779f0-cpg-mssr.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
/*
* Copyright (C) 2021 Renesas Electronics Corp.
*/
diff --git a/include/dt-bindings/clock/rockchip,rk3588-cru.h b/include/dt-bindings/clock/rockchip,rk3588-cru.h
index b5616bca7b44..5790b1391201 100644
--- a/include/dt-bindings/clock/rockchip,rk3588-cru.h
+++ b/include/dt-bindings/clock/rockchip,rk3588-cru.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
/*
* Copyright (c) 2021 Rockchip Electronics Co. Ltd.
* Copyright (c) 2022 Collabora Ltd.
diff --git a/include/dt-bindings/clock/stm32mp1-clks.h b/include/dt-bindings/clock/stm32mp1-clks.h
index 25e8cfd43459..0a5324bcdbda 100644
--- a/include/dt-bindings/clock/stm32mp1-clks.h
+++ b/include/dt-bindings/clock/stm32mp1-clks.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/*
* Copyright (C) STMicroelectronics 2018 - All Rights Reserved
* Author: Gabriel Fernandez <gabriel.fernandez@st.com> for STMicroelectronics.
diff --git a/include/dt-bindings/clock/sun20i-d1-ccu.h b/include/dt-bindings/clock/sun20i-d1-ccu.h
index e143b9929763..fdbfb404f92a 100644
--- a/include/dt-bindings/clock/sun20i-d1-ccu.h
+++ b/include/dt-bindings/clock/sun20i-d1-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (C) 2020 huangzhenwei@allwinnertech.com
* Copyright (C) 2021 Samuel Holland <samuel@sholland.org>
diff --git a/include/dt-bindings/clock/sun20i-d1-r-ccu.h b/include/dt-bindings/clock/sun20i-d1-r-ccu.h
index 4c2697fd32b0..f95c170711e5 100644
--- a/include/dt-bindings/clock/sun20i-d1-r-ccu.h
+++ b/include/dt-bindings/clock/sun20i-d1-r-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (C) 2021 Samuel Holland <samuel@sholland.org>
*/
diff --git a/include/dt-bindings/clock/sun50i-a100-ccu.h b/include/dt-bindings/clock/sun50i-a100-ccu.h
index 28dc36e1a232..06a2031d466b 100644
--- a/include/dt-bindings/clock/sun50i-a100-ccu.h
+++ b/include/dt-bindings/clock/sun50i-a100-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>
*/
diff --git a/include/dt-bindings/clock/sun50i-h6-ccu.h b/include/dt-bindings/clock/sun50i-h6-ccu.h
index a1545cd60e75..ef9123d81937 100644
--- a/include/dt-bindings/clock/sun50i-h6-ccu.h
+++ b/include/dt-bindings/clock/sun50i-h6-ccu.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
*/
diff --git a/include/dt-bindings/clock/sun50i-h616-ccu.h b/include/dt-bindings/clock/sun50i-h616-ccu.h
index 1191aca53ac6..6f8f01e67628 100644
--- a/include/dt-bindings/clock/sun50i-h616-ccu.h
+++ b/include/dt-bindings/clock/sun50i-h616-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (C) 2020 Arm Ltd.
*/
diff --git a/include/dt-bindings/clock/sun6i-rtc.h b/include/dt-bindings/clock/sun6i-rtc.h
index c845493e4d37..3bd3aa3d57ce 100644
--- a/include/dt-bindings/clock/sun6i-rtc.h
+++ b/include/dt-bindings/clock/sun6i-rtc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
#ifndef _DT_BINDINGS_CLK_SUN6I_RTC_H_
#define _DT_BINDINGS_CLK_SUN6I_RTC_H_
diff --git a/include/dt-bindings/display/sdtv-standards.h b/include/dt-bindings/display/sdtv-standards.h
index fbc1a3db2ea7..8249a2b47b79 100644
--- a/include/dt-bindings/display/sdtv-standards.h
+++ b/include/dt-bindings/display/sdtv-standards.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0-only or X11 */
+/* SPDX-License-Identifier: GPL-2.0-only OR X11 */
/*
* Copyright 2019 Pengutronix, Marco Felsch <kernel@pengutronix.de>
*/
diff --git a/include/dt-bindings/gpio/meson-g12a-gpio.h b/include/dt-bindings/gpio/meson-g12a-gpio.h
index f7bd69350d18..fa7bb0bbf010 100644
--- a/include/dt-bindings/gpio/meson-g12a-gpio.h
+++ b/include/dt-bindings/gpio/meson-g12a-gpio.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2018 Amlogic, Inc. All rights reserved.
* Author: Xingyu Chen <xingyu.chen@amlogic.com>
diff --git a/include/dt-bindings/power/amlogic,c3-pwrc.h b/include/dt-bindings/power/amlogic,c3-pwrc.h
index 1d98a25b08a4..61759df4b2e7 100644
--- a/include/dt-bindings/power/amlogic,c3-pwrc.h
+++ b/include/dt-bindings/power/amlogic,c3-pwrc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2023 Amlogic, Inc.
* Author: hongyu chen1 <hongyu.chen1@amlogic.com>
diff --git a/include/dt-bindings/power/meson-a1-power.h b/include/dt-bindings/power/meson-a1-power.h
index 6cf50bfb8ccf..724c370d6853 100644
--- a/include/dt-bindings/power/meson-a1-power.h
+++ b/include/dt-bindings/power/meson-a1-power.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc.
* Author: Jianxin Pan <jianxin.pan@amlogic.com>
diff --git a/include/dt-bindings/power/meson-axg-power.h b/include/dt-bindings/power/meson-axg-power.h
index e5243884b249..ace0e468ce21 100644
--- a/include/dt-bindings/power/meson-axg-power.h
+++ b/include/dt-bindings/power/meson-axg-power.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2020 BayLibre, SAS
* Author: Neil Armstrong <narmstrong@baylibre.com>
diff --git a/include/dt-bindings/power/meson-g12a-power.h b/include/dt-bindings/power/meson-g12a-power.h
index 93b03bdd60b7..44ec0c50e340 100644
--- a/include/dt-bindings/power/meson-g12a-power.h
+++ b/include/dt-bindings/power/meson-g12a-power.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 BayLibre, SAS
* Author: Neil Armstrong <narmstrong@baylibre.com>
diff --git a/include/dt-bindings/power/meson-gxbb-power.h b/include/dt-bindings/power/meson-gxbb-power.h
index 1262dac696c0..8d0b32b6c02c 100644
--- a/include/dt-bindings/power/meson-gxbb-power.h
+++ b/include/dt-bindings/power/meson-gxbb-power.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 BayLibre, SAS
* Author: Neil Armstrong <narmstrong@baylibre.com>
diff --git a/include/dt-bindings/power/meson-s4-power.h b/include/dt-bindings/power/meson-s4-power.h
index 462dd2cb938b..f210a524a592 100644
--- a/include/dt-bindings/power/meson-s4-power.h
+++ b/include/dt-bindings/power/meson-s4-power.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2021 Amlogic, Inc.
* Author: Shunzhou Jiang <shunzhou.jiang@amlogic.com>
diff --git a/include/dt-bindings/power/meson-sm1-power.h b/include/dt-bindings/power/meson-sm1-power.h
index a020ab00c134..d78e710dbfff 100644
--- a/include/dt-bindings/power/meson-sm1-power.h
+++ b/include/dt-bindings/power/meson-sm1-power.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 BayLibre, SAS
* Author: Neil Armstrong <narmstrong@baylibre.com>
diff --git a/include/dt-bindings/power/meson8-power.h b/include/dt-bindings/power/meson8-power.h
index dd8b2ddb82a7..7a55ba2cd22e 100644
--- a/include/dt-bindings/power/meson8-power.h
+++ b/include/dt-bindings/power/meson8-power.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
*/
diff --git a/include/dt-bindings/power/r8a779f0-sysc.h b/include/dt-bindings/power/r8a779f0-sysc.h
index 0ec8ad727ed9..cde1536e9ed0 100644
--- a/include/dt-bindings/power/r8a779f0-sysc.h
+++ b/include/dt-bindings/power/r8a779f0-sysc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
/*
* Copyright (C) 2021 Renesas Electronics Corp.
*/
diff --git a/include/dt-bindings/power/rk3588-power.h b/include/dt-bindings/power/rk3588-power.h
index 1b92fec013cb..6b91a50cc6d6 100644
--- a/include/dt-bindings/power/rk3588-power.h
+++ b/include/dt-bindings/power/rk3588-power.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
#ifndef __DT_BINDINGS_POWER_RK3588_POWER_H__
#define __DT_BINDINGS_POWER_RK3588_POWER_H__
diff --git a/include/dt-bindings/power/summit,smb347-charger.h b/include/dt-bindings/power/summit,smb347-charger.h
index 3205699b5e41..14f2f9cf2020 100644
--- a/include/dt-bindings/power/summit,smb347-charger.h
+++ b/include/dt-bindings/power/summit,smb347-charger.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0-or-later or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) */
/*
* Author: David Heidelberg <david@ixit.cz>
*/
diff --git a/include/dt-bindings/reset/rockchip,rk3588-cru.h b/include/dt-bindings/reset/rockchip,rk3588-cru.h
index 738e56aead93..d4264db2a07f 100644
--- a/include/dt-bindings/reset/rockchip,rk3588-cru.h
+++ b/include/dt-bindings/reset/rockchip,rk3588-cru.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
/*
* Copyright (c) 2021 Rockchip Electronics Co. Ltd.
* Copyright (c) 2022 Collabora Ltd.
diff --git a/include/dt-bindings/reset/stm32mp1-resets.h b/include/dt-bindings/reset/stm32mp1-resets.h
index 4ffa7c3612e6..9071f139649f 100644
--- a/include/dt-bindings/reset/stm32mp1-resets.h
+++ b/include/dt-bindings/reset/stm32mp1-resets.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/*
* Copyright (C) STMicroelectronics 2018 - All Rights Reserved
* Author: Gabriel Fernandez <gabriel.fernandez@st.com> for STMicroelectronics.
diff --git a/include/dt-bindings/reset/sun20i-d1-ccu.h b/include/dt-bindings/reset/sun20i-d1-ccu.h
index f8001cf50bf1..79e52aca5912 100644
--- a/include/dt-bindings/reset/sun20i-d1-ccu.h
+++ b/include/dt-bindings/reset/sun20i-d1-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2020 huangzhenwei@allwinnertech.com
* Copyright (C) 2021 Samuel Holland <samuel@sholland.org>
diff --git a/include/dt-bindings/reset/sun20i-d1-r-ccu.h b/include/dt-bindings/reset/sun20i-d1-r-ccu.h
index d93d6423d283..e20babc990af 100644
--- a/include/dt-bindings/reset/sun20i-d1-r-ccu.h
+++ b/include/dt-bindings/reset/sun20i-d1-r-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (C) 2021 Samuel Holland <samuel@sholland.org>
*/
diff --git a/include/dt-bindings/reset/sun50i-a100-ccu.h b/include/dt-bindings/reset/sun50i-a100-ccu.h
index 55c0ada99885..d13764bc1860 100644
--- a/include/dt-bindings/reset/sun50i-a100-ccu.h
+++ b/include/dt-bindings/reset/sun50i-a100-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>
*/
diff --git a/include/dt-bindings/reset/sun50i-a100-r-ccu.h b/include/dt-bindings/reset/sun50i-a100-r-ccu.h
index 737bf6f66626..1e7c4431f03c 100644
--- a/include/dt-bindings/reset/sun50i-a100-r-ccu.h
+++ b/include/dt-bindings/reset/sun50i-a100-r-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>
*/
diff --git a/include/dt-bindings/reset/sun50i-h6-ccu.h b/include/dt-bindings/reset/sun50i-h6-ccu.h
index 81106f455097..d038ddfa4818 100644
--- a/include/dt-bindings/reset/sun50i-h6-ccu.h
+++ b/include/dt-bindings/reset/sun50i-h6-ccu.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ or MIT)
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
*/
diff --git a/include/dt-bindings/reset/sun50i-h6-r-ccu.h b/include/dt-bindings/reset/sun50i-h6-r-ccu.h
index 7950e799c76d..d541ade884fc 100644
--- a/include/dt-bindings/reset/sun50i-h6-r-ccu.h
+++ b/include/dt-bindings/reset/sun50i-h6-r-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (C) 2016 Icenowy Zheng <icenowy@aosc.xyz>
*/
diff --git a/include/dt-bindings/reset/sun50i-h616-ccu.h b/include/dt-bindings/reset/sun50i-h616-ccu.h
index cb6285a8d128..1bd8bb0a11be 100644
--- a/include/dt-bindings/reset/sun50i-h616-ccu.h
+++ b/include/dt-bindings/reset/sun50i-h616-ccu.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (C) 2020 Arm Ltd.
*/
--
2.34.1
^ permalink raw reply related [relevance 4%]
* [PATCH] mailmap: Update remaining active codeaurora.org email addresses
@ 2023-07-20 21:02 2% Bjorn Andersson
0 siblings, 0 replies; 200+ results
From: Bjorn Andersson @ 2023-07-20 21:02 UTC (permalink / raw)
To: Andrew Morton, Bjorn Andersson, Arnd Bergmann
Cc: Konrad Dybcio, linux-kernel, linux-arm-msm
The lack of mailmap updates for @codeaurora.org addresses reduces the
usefulness of tools such as get_maintainer.pl. Some recent (and
welcome!) additions has been made to improve the situation, this
concludes the effort.
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
---
.mailmap | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 96 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index 89b7f33cd330..9f067df9c306 100644
--- a/.mailmap
+++ b/.mailmap
@@ -13,7 +13,9 @@
Aaron Durbin <adurbin@google.com>
Abel Vesa <abelvesa@kernel.org> <abel.vesa@nxp.com>
Abel Vesa <abelvesa@kernel.org> <abelvesa@gmail.com>
+Abhijeet Dharmapurikar <quic_adharmap@quicinc.com> <adharmap@codeaurora.org>
Abhinav Kumar <quic_abhinavk@quicinc.com> <abhinavk@codeaurora.org>
+Ahmad Masri <quic_amasri@quicinc.com> <amasri@codeaurora.org>
Adam Oldham <oldhamca@gmail.com>
Adam Radford <aradford@gmail.com>
Adriana Reus <adi.reus@gmail.com> <adriana.reus@intel.com>
@@ -30,6 +32,7 @@ Alexander Mikhalitsyn <alexander@mihalicyn.com> <alexander.mikhalitsyn@virtuozzo
Alexander Mikhalitsyn <alexander@mihalicyn.com> <aleksandr.mikhalitsyn@canonical.com>
Alexandre Belloni <alexandre.belloni@bootlin.com> <alexandre.belloni@free-electrons.com>
Alexandre Ghiti <alex@ghiti.fr> <alexandre.ghiti@canonical.com>
+Alexei Avshalom Lazar <quic_ailizaro@quicinc.com> <ailizaro@codeaurora.org>
Alexei Starovoitov <ast@kernel.org> <alexei.starovoitov@gmail.com>
Alexei Starovoitov <ast@kernel.org> <ast@fb.com>
Alexei Starovoitov <ast@kernel.org> <ast@plumgrid.com>
@@ -37,8 +40,11 @@ Alex Hung <alexhung@gmail.com> <alex.hung@canonical.com>
Alex Shi <alexs@kernel.org> <alex.shi@intel.com>
Alex Shi <alexs@kernel.org> <alex.shi@linaro.org>
Alex Shi <alexs@kernel.org> <alex.shi@linux.alibaba.com>
+Aloka Dixit <quic_alokad@quicinc.com> <alokad@codeaurora.org>
Al Viro <viro@ftp.linux.org.uk>
Al Viro <viro@zenIV.linux.org.uk>
+Amit Blay <quic_ablay@quicinc.com> <ablay@codeaurora.org>
+Amit Nischal <quic_anischal@quicinc.com> <anischal@codeaurora.org>
Andi Kleen <ak@linux.intel.com> <ak@suse.de>
Andi Shyti <andi@etezian.org> <andi.shyti@samsung.com>
Andreas Herrmann <aherrman@de.ibm.com>
@@ -54,6 +60,8 @@ Andrey Ryabinin <ryabinin.a.a@gmail.com> <aryabinin@virtuozzo.com>
Andrzej Hajda <andrzej.hajda@intel.com> <a.hajda@samsung.com>
André Almeida <andrealmeid@igalia.com> <andrealmeid@collabora.com>
Andy Adamson <andros@citi.umich.edu>
+Anilkumar Kolli <quic_akolli@quicinc.com> <akolli@codeaurora.org>
+Anirudh Ghayal <quic_aghayal@quicinc.com> <aghayal@codeaurora.org>
Antoine Tenart <atenart@kernel.org> <antoine.tenart@bootlin.com>
Antoine Tenart <atenart@kernel.org> <antoine.tenart@free-electrons.com>
Antonio Ospite <ao2@ao2.it> <ao2@amarulasolutions.com>
@@ -62,9 +70,17 @@ Archit Taneja <archit@ti.com>
Ard Biesheuvel <ardb@kernel.org> <ard.biesheuvel@linaro.org>
Arnaud Patard <arnaud.patard@rtp-net.org>
Arnd Bergmann <arnd@arndb.de>
+Arun Kumar Neelakantam <quic_aneela@quicinc.com> <aneela@codeaurora.org>
+Ashok Raj Nagarajan <quic_arnagara@quicinc.com> <arnagara@codeaurora.org>
+Ashwin Chaugule <quic_ashwinc@quicinc.com> <ashwinc@codeaurora.org>
+Asutosh Das <quic_asutoshd@quicinc.com> <asutoshd@codeaurora.org>
Atish Patra <atishp@atishpatra.org> <atish.patra@wdc.com>
+Avaneesh Kumar Dwivedi <quic_akdwived@quicinc.com> <akdwived@codeaurora.org>
Axel Dyks <xl@xlsigned.net>
Axel Lin <axel.lin@gmail.com>
+Balakrishna Godavarthi <quic_bgodavar@quicinc.com> <bgodavar@codeaurora.org>
+Banajit Goswami <quic_bgoswami@quicinc.com> <bgoswami@codeaurora.org>
+Baochen Qiang <quic_bqiang@quicinc.com> <bqiang@codeaurora.org>
Baolin Wang <baolin.wang@linux.alibaba.com> <baolin.wang@linaro.org>
Baolin Wang <baolin.wang@linux.alibaba.com> <baolin.wang@spreadtrum.com>
Baolin Wang <baolin.wang@linux.alibaba.com> <baolin.wang@unisoc.com>
@@ -93,12 +109,15 @@ Brian Avery <b.avery@hp.com>
Brian King <brking@us.ibm.com>
Brian Silverman <bsilver16384@gmail.com> <brian.silverman@bluerivertech.com>
Cai Huoqing <cai.huoqing@linux.dev> <caihuoqing@baidu.com>
+Can Guo <quic_cang@quicinc.com> <cang@codeaurora.org>
+Carl Huang <quic_cjhuang@quicinc.com> <cjhuang@codeaurora.org>
Changbin Du <changbin.du@intel.com> <changbin.du@gmail.com>
Changbin Du <changbin.du@intel.com> <changbin.du@intel.com>
Chao Yu <chao@kernel.org> <chao2.yu@samsung.com>
Chao Yu <chao@kernel.org> <yuchao0@huawei.com>
Chris Chiu <chris.chiu@canonical.com> <chiu@endlessm.com>
Chris Chiu <chris.chiu@canonical.com> <chiu@endlessos.org>
+Chris Lew <quic_clew@quicinc.com> <clew@codeaurora.org>
Christian Borntraeger <borntraeger@linux.ibm.com> <borntraeger@de.ibm.com>
Christian Borntraeger <borntraeger@linux.ibm.com> <cborntra@de.ibm.com>
Christian Borntraeger <borntraeger@linux.ibm.com> <borntrae@de.ibm.com>
@@ -119,7 +138,10 @@ Daniel Borkmann <daniel@iogearbox.net> <dborkmann@redhat.com>
Daniel Borkmann <daniel@iogearbox.net> <dborkman@redhat.com>
Daniel Borkmann <daniel@iogearbox.net> <dxchgb@gmail.com>
David Brownell <david-b@pacbell.net>
+David Collins <quic_collinsd@quicinc.com> <collinsd@codeaurora.org>
David Woodhouse <dwmw2@shinybook.infradead.org>
+Dedy Lansky <quic_dlansky@quicinc.com> <dlansky@codeaurora.org>
+Deepak Kumar Singh <quic_deesin@quicinc.com> <deesin@codeaurora.org>
Dengcheng Zhu <dzhu@wavecomp.com> <dczhu@mips.com>
Dengcheng Zhu <dzhu@wavecomp.com> <dengcheng.zhu@gmail.com>
Dengcheng Zhu <dzhu@wavecomp.com> <dengcheng.zhu@imgtec.com>
@@ -136,6 +158,7 @@ Dmitry Safonov <0x7f454c46@gmail.com> <dsafonov@virtuozzo.com>
Domen Puncer <domen@coderock.org>
Douglas Gilbert <dougg@torque.net>
Ed L. Cashin <ecashin@coraid.com>
+Elliot Berman <quic_eberman@quicinc.com> <eberman@codeaurora.org>
Enric Balletbo i Serra <eballetbo@kernel.org> <enric.balletbo@collabora.com>
Enric Balletbo i Serra <eballetbo@kernel.org> <eballetbo@iseebcn.com>
Erik Kaneda <erik.kaneda@intel.com> <erik.schmauss@intel.com>
@@ -148,6 +171,7 @@ Faith Ekstrand <faith.ekstrand@collabora.com> <jason.ekstrand@collabora.com>
Felipe W Damasio <felipewd@terra.com.br>
Felix Kuhling <fxkuehl@gmx.de>
Felix Moeller <felix@derklecks.de>
+Fenglin Wu <quic_fenglinw@quicinc.com> <fenglinw@codeaurora.org>
Filipe Lautert <filipe@icewall.org>
Finn Thain <fthain@linux-m68k.org> <fthain@telegraphics.com.au>
Franck Bui-Huu <vagabon.xyz@gmail.com>
@@ -171,8 +195,11 @@ Greg Kurz <groug@kaod.org> <gkurz@linux.vnet.ibm.com>
Gregory CLEMENT <gregory.clement@bootlin.com> <gregory.clement@free-electrons.com>
Guilherme G. Piccoli <kernel@gpiccoli.net> <gpiccoli@linux.vnet.ibm.com>
Guilherme G. Piccoli <kernel@gpiccoli.net> <gpiccoli@canonical.com>
+Gokul Sriram Palanisamy <quic_gokulsri@quicinc.com> <gokulsri@codeaurora.org>
+Govindaraj Saminathan <quic_gsamin@quicinc.com> <gsamin@codeaurora.org>
Guo Ren <guoren@kernel.org> <guoren@linux.alibaba.com>
Guo Ren <guoren@kernel.org> <ren_guo@c-sky.com>
+Guru Das Srinagesh <quic_gurus@quicinc.com> <gurus@codeaurora.org>
Gustavo Padovan <gustavo@las.ic.unicamp.br>
Gustavo Padovan <padovan@profusion.mobi>
Hanjun Guo <guohanjun@huawei.com> <hanjun.guo@linaro.org>
@@ -190,6 +217,7 @@ Huacai Chen <chenhuacai@kernel.org> <chenhuacai@loongson.cn>
J. Bruce Fields <bfields@fieldses.org> <bfields@redhat.com>
J. Bruce Fields <bfields@fieldses.org> <bfields@citi.umich.edu>
Jacob Shin <Jacob.Shin@amd.com>
+Jack Pham <quic_jackp@quicinc.com> <jackp@codeaurora.org>
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk@google.com>
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk.kim@samsung.com>
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk@motorola.com>
@@ -217,10 +245,12 @@ Jayachandran C <c.jayachandran@gmail.com> <jchandra@digeo.com>
Jayachandran C <c.jayachandran@gmail.com> <jnair@caviumnetworks.com>
<jean-philippe@linaro.org> <jean-philippe.brucker@arm.com>
Jean Tourrilhes <jt@hpl.hp.com>
+Jeevan Shriram <quic_jshriram@quicinc.com> <jshriram@codeaurora.org>
Jeff Garzik <jgarzik@pretzel.yyz.us>
Jeff Layton <jlayton@kernel.org> <jlayton@poochiereds.net>
Jeff Layton <jlayton@kernel.org> <jlayton@primarydata.com>
Jeff Layton <jlayton@kernel.org> <jlayton@redhat.com>
+Jeffrey Hugo <quic_jhugo@quicinc.com> <jhugo@codeaurora.org>
Jens Axboe <axboe@kernel.dk> <axboe@suse.de>
Jens Axboe <axboe@kernel.dk> <jens.axboe@oracle.com>
Jens Axboe <axboe@kernel.dk> <axboe@fb.com>
@@ -228,6 +258,7 @@ Jens Axboe <axboe@kernel.dk> <axboe@meta.com>
Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
Jernej Skrabec <jernej.skrabec@gmail.com> <jernej.skrabec@siol.net>
Jessica Zhang <quic_jesszhan@quicinc.com> <jesszhan@codeaurora.org>
+Jilai Wang <quic_jilaiw@quicinc.com> <jilaiw@codeaurora.org>
Jiri Pirko <jiri@resnulli.us> <jiri@nvidia.com>
Jiri Pirko <jiri@resnulli.us> <jiri@mellanox.com>
Jiri Pirko <jiri@resnulli.us> <jpirko@redhat.com>
@@ -238,6 +269,7 @@ Jiri Slaby <jirislaby@kernel.org> <jslaby@suse.cz>
Jiri Slaby <jirislaby@kernel.org> <xslaby@fi.muni.cz>
Jisheng Zhang <jszhang@kernel.org> <jszhang@marvell.com>
Jisheng Zhang <jszhang@kernel.org> <Jisheng.Zhang@synaptics.com>
+Jishnu Prakash <quic_jprakash@quicinc.com> <jprakash@codeaurora.org>
Johan Hovold <johan@kernel.org> <jhovold@gmail.com>
Johan Hovold <johan@kernel.org> <johan@hovoldconsulting.com>
John Crispin <john@phrozen.org> <blogic@openwrt.org>
@@ -255,6 +287,7 @@ Jordan Crouse <jordan@cosmicpenguin.net> <jcrouse@codeaurora.org>
<josh@joshtriplett.org> <josht@vnet.ibm.com>
Josh Poimboeuf <jpoimboe@kernel.org> <jpoimboe@redhat.com>
Josh Poimboeuf <jpoimboe@kernel.org> <jpoimboe@us.ibm.com>
+Jouni Malinen <quic_jouni@quicinc.com> <jouni@codeaurora.org>
Juha Yrjola <at solidboot.com>
Juha Yrjola <juha.yrjola@nokia.com>
Juha Yrjola <juha.yrjola@solidboot.com>
@@ -262,6 +295,8 @@ Julien Thierry <julien.thierry.kdev@gmail.com> <julien.thierry@arm.com>
Iskren Chernev <me@iskren.info> <iskren.chernev@gmail.com>
Kalle Valo <kvalo@kernel.org> <kvalo@codeaurora.org>
Kalyan Thota <quic_kalyant@quicinc.com> <kalyan_t@codeaurora.org>
+Karthikeyan Periyasamy <quic_periyasa@quicinc.com> <periyasa@codeaurora.org>
+Kathiravan T <quic_kathirav@quicinc.com> <kathirav@codeaurora.org>
Kay Sievers <kay.sievers@vrfy.org>
Kees Cook <keescook@chromium.org> <kees.cook@canonical.com>
Kees Cook <keescook@chromium.org> <keescook@google.com>
@@ -270,6 +305,8 @@ Kees Cook <keescook@chromium.org> <kees@ubuntu.com>
Keith Busch <kbusch@kernel.org> <keith.busch@intel.com>
Keith Busch <kbusch@kernel.org> <keith.busch@linux.intel.com>
Kenneth W Chen <kenneth.w.chen@intel.com>
+Kenneth Westfield <quic_kwestfie@quicinc.com> <kwestfie@codeaurora.org>
+Kiran Gunda <quic_kgunda@quicinc.com> <kgunda@codeaurora.org>
Kirill Tkhai <tkhai@ya.ru> <ktkhai@virtuozzo.com>
Konstantin Khlebnikov <koct9i@gmail.com> <khlebnikov@yandex-team.ru>
Konstantin Khlebnikov <koct9i@gmail.com> <k.khlebnikov@samsung.com>
@@ -278,6 +315,7 @@ Krishna Manikandan <quic_mkrishn@quicinc.com> <mkrishn@codeaurora.org>
Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski.k@gmail.com>
Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski@samsung.com>
Krzysztof Kozlowski <krzk@kernel.org> <krzysztof.kozlowski@canonical.com>
+Kshitiz Godara <quic_kgodara@quicinc.com> <kgodara@codeaurora.org>
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Kuogee Hsieh <quic_khsieh@quicinc.com> <khsieh@codeaurora.org>
Lee Jones <lee@kernel.org> <joneslee@google.com>
@@ -291,19 +329,27 @@ Leonid I Ananiev <leonid.i.ananiev@intel.com>
Leon Romanovsky <leon@kernel.org> <leon@leon.nu>
Leon Romanovsky <leon@kernel.org> <leonro@mellanox.com>
Leon Romanovsky <leon@kernel.org> <leonro@nvidia.com>
+Liam Mark <quic_lmark@quicinc.com> <lmark@codeaurora.org>
Linas Vepstas <linas@austin.ibm.com>
Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@ascom.ch>
Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@web.de>
<linux-hardening@vger.kernel.org> <kernel-hardening@lists.openwall.com>
Li Yang <leoyang.li@nxp.com> <leoli@freescale.com>
Li Yang <leoyang.li@nxp.com> <leo@zh-kernel.org>
+Lior David <quic_liord@quicinc.com> <liord@codeaurora.org>
Lorenzo Pieralisi <lpieralisi@kernel.org> <lorenzo.pieralisi@arm.com>
Luca Ceresoli <luca.ceresoli@bootlin.com> <luca@lucaceresoli.net>
Lukasz Luba <lukasz.luba@arm.com> <l.luba@partner.samsung.com>
+Luo Jie <quic_luoj@quicinc.com> <luoj@codeaurora.org>
Maciej W. Rozycki <macro@mips.com> <macro@imgtec.com>
Maciej W. Rozycki <macro@orcam.me.uk> <macro@linux-mips.org>
+Maharaja Kennadyrajan <quic_mkenna@quicinc.com> <mkenna@codeaurora.org>
+Maheshwar Ajja <quic_majja@quicinc.com> <majja@codeaurora.org>
+Malathi Gottam <quic_mgottam@quicinc.com> <mgottam@codeaurora.org>
+Manikanta Pubbisetty <quic_mpubbise@quicinc.com> <mpubbise@codeaurora.org>
Manivannan Sadhasivam <mani@kernel.org> <manivannanece23@gmail.com>
Manivannan Sadhasivam <mani@kernel.org> <manivannan.sadhasivam@linaro.org>
+Manoj Basapathi <quic_manojbm@quicinc.com> <manojbm@codeaurora.org>
Marcin Nowakowski <marcin.nowakowski@mips.com> <marcin.nowakowski@imgtec.com>
Marc Zyngier <maz@kernel.org> <marc.zyngier@arm.com>
Marek Behún <kabel@kernel.org> <marek.behun@nic.cz>
@@ -333,6 +379,7 @@ Matt Ranostay <matt.ranostay@konsulko.com> <matt@ranostay.consulting>
Matt Ranostay <mranostay@gmail.com> Matthew Ranostay <mranostay@embeddedalley.com>
Matt Ranostay <mranostay@gmail.com> <matt.ranostay@intel.com>
Matt Redfearn <matt.redfearn@mips.com> <matt.redfearn@imgtec.com>
+Maulik Shah <quic_mkshah@quicinc.com> <mkshah@codeaurora.org>
Mauro Carvalho Chehab <mchehab@kernel.org> <maurochehab@gmail.com>
Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@brturbo.com.br>
Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@infradead.org>
@@ -345,7 +392,10 @@ Maxim Mikityanskiy <maxtram95@gmail.com> <maximmi@nvidia.com>
Maxime Ripard <mripard@kernel.org> <maxime@cerno.tech>
Maxime Ripard <mripard@kernel.org> <maxime.ripard@bootlin.com>
Maxime Ripard <mripard@kernel.org> <maxime.ripard@free-electrons.com>
+Maya Erez <quic_merez@quicinc.com> <merez@codeaurora.org>
Mayuresh Janorkar <mayur@ti.com>
+Md Sadre Alam <quic_mdalam@quicinc.com> <mdalam@codeaurora.org>
+Miaoqing Pan <quic_miaoqing@quicinc.com> <miaoqing@codeaurora.org>
Michael Buesch <m@bues.ch>
Michal Simek <michal.simek@amd.com> <michal.simek@xilinx.com>
Michel Dänzer <michel@tungstengraphics.com>
@@ -356,6 +406,7 @@ Miguel Ojeda <ojeda@kernel.org> <miguel.ojeda.sandonis@gmail.com>
Mike Rapoport <rppt@kernel.org> <mike@compulab.co.il>
Mike Rapoport <rppt@kernel.org> <mike.rapoport@gmail.com>
Mike Rapoport <rppt@kernel.org> <rppt@linux.ibm.com>
+Mike Tipton <quic_mdtipton@quicinc.com> <mdtipton@codeaurora.org>
Miodrag Dinic <miodrag.dinic@mips.com> <miodrag.dinic@imgtec.com>
Miquel Raynal <miquel.raynal@bootlin.com> <miquel.raynal@free-electrons.com>
Mitesh shah <mshah@teja.com>
@@ -364,9 +415,13 @@ Morten Welinder <terra@gnome.org>
Morten Welinder <welinder@anemone.rentec.com>
Morten Welinder <welinder@darter.rentec.com>
Morten Welinder <welinder@troll.com>
+Mukesh Ojha <quic_mojha@quicinc.com> <mojha@codeaurora.org>
+Muna Sinada <quic_msinada@quicinc.com> <msinada@codeaurora.org>
+Murali Nalajala <quic_mnalajal@quicinc.com> <mnalajal@codeaurora.org>
Mythri P K <mythripk@ti.com>
Nadia Yvette Chambers <nyc@holomorphy.com> William Lee Irwin III <wli@holomorphy.com>
Nathan Chancellor <nathan@kernel.org> <natechancellor@gmail.com>
+Neeraj Upadhyay <quic_neeraju@quicinc.com> <neeraju@codeaurora.org>
Neil Armstrong <neil.armstrong@linaro.org> <narmstrong@baylibre.com>
Nguyen Anh Quynh <aquynh@gmail.com>
Nicholas Piggin <npiggin@gmail.com> <npiggen@suse.de>
@@ -385,6 +440,7 @@ Nikolay Aleksandrov <razor@blackwall.org> <nikolay@redhat.com>
Nikolay Aleksandrov <razor@blackwall.org> <nikolay@cumulusnetworks.com>
Nikolay Aleksandrov <razor@blackwall.org> <nikolay@nvidia.com>
Nikolay Aleksandrov <razor@blackwall.org> <nikolay@isovalent.com>
+Odelu Kukatla <quic_okukatla@quicinc.com> <okukatla@codeaurora.org>
Oleksandr Natalenko <oleksandr@natalenko.name> <oleksandr@redhat.com>
Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net>
Oleksij Rempel <linux@rempel-privat.de> <external.Oleksij.Rempel@de.bosch.com>
@@ -392,6 +448,7 @@ Oleksij Rempel <linux@rempel-privat.de> <fixed-term.Oleksij.Rempel@de.bosch.com>
Oleksij Rempel <linux@rempel-privat.de> <o.rempel@pengutronix.de>
Oleksij Rempel <linux@rempel-privat.de> <ore@pengutronix.de>
Oliver Upton <oliver.upton@linux.dev> <oupton@google.com>
+Oza Pawandeep <quic_poza@quicinc.com> <poza@codeaurora.org>
Pali Rohár <pali@kernel.org> <pali.rohar@gmail.com>
Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Patrick Mochel <mochel@digitalimplant.org>
@@ -403,11 +460,14 @@ Paul E. McKenney <paulmck@kernel.org> <paulmck@linux.vnet.ibm.com>
Paul E. McKenney <paulmck@kernel.org> <paulmck@us.ibm.com>
Paul Mackerras <paulus@ozlabs.org> <paulus@samba.org>
Paul Mackerras <paulus@ozlabs.org> <paulus@au1.ibm.com>
+Pavankumar Kondeti <quic_pkondeti@quicinc.com> <pkondeti@codeaurora.org>
Peter A Jonsson <pj@ludd.ltu.se>
Peter Oruba <peter.oruba@amd.com>
Peter Oruba <peter@oruba.de>
Pratyush Anand <pratyush.anand@gmail.com> <pratyush.anand@st.com>
Praveen BP <praveenbp@ti.com>
+Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com> <pradeepc@codeaurora.org>
+Prasad Sodagudi <quic_psodagud@quicinc.com> <psodagud@codeaurora.org>
Punit Agrawal <punitagrawal@gmail.com> <punit.agrawal@arm.com>
Qais Yousef <qyousef@layalina.io> <qais.yousef@imgtec.com>
Qais Yousef <qyousef@layalina.io> <qais.yousef@arm.com>
@@ -416,10 +476,16 @@ Quentin Perret <qperret@qperret.net> <quentin.perret@arm.com>
Rafael J. Wysocki <rjw@rjwysocki.net> <rjw@sisk.pl>
Rajeev Nandan <quic_rajeevny@quicinc.com> <rajeevny@codeaurora.org>
Rajendra Nayak <quic_rjendra@quicinc.com> <rnayak@codeaurora.org>
+Rajeshwari Ravindra Kamble <quic_rkambl@quicinc.com> <rkambl@codeaurora.org>
+Raju P.L.S.S.S.N <quic_rplsssn@quicinc.com> <rplsssn@codeaurora.org>
Rajesh Shah <rajesh.shah@intel.com>
+Rakesh Pillai <quic_pillair@quicinc.com> <pillair@codeaurora.org>
Ralf Baechle <ralf@linux-mips.org>
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+Ram Chandra Jangir <quic_rjangir@quicinc.com> <rjangir@codeaurora.org>
Randy Dunlap <rdunlap@infradead.org> <rdunlap@xenotime.net>
+Ravi Kumar Bokka <quic_rbokka@quicinc.com> <rbokka@codeaurora.org>
+Ravi Kumar Siddojigari <quic_rsiddoji@quicinc.com> <rsiddoji@codeaurora.org>
Rémi Denis-Courmont <rdenis@simphalempin.com>
Ricardo Ribalda <ribalda@kernel.org> <ricardo@ribalda.com>
Ricardo Ribalda <ribalda@kernel.org> Ricardo Ribalda Delgado <ribalda@kernel.org>
@@ -428,6 +494,7 @@ Richard Leitner <richard.leitner@linux.dev> <dev@g0hl1n.net>
Richard Leitner <richard.leitner@linux.dev> <me@g0hl1n.net>
Richard Leitner <richard.leitner@linux.dev> <richard.leitner@skidata.com>
Robert Foss <rfoss@kernel.org> <robert.foss@linaro.org>
+Rocky Liao <quic_rjliao@quicinc.com> <rjliao@codeaurora.org>
Roman Gushchin <roman.gushchin@linux.dev> <guro@fb.com>
Roman Gushchin <roman.gushchin@linux.dev> <guroan@gmail.com>
Roman Gushchin <roman.gushchin@linux.dev> <klamm@yandex-team.ru>
@@ -445,22 +512,33 @@ Santosh Shilimkar <santosh.shilimkar@oracle.org>
Santosh Shilimkar <ssantosh@kernel.org>
Sarangdhar Joshi <spjoshi@codeaurora.org>
Sascha Hauer <s.hauer@pengutronix.de>
+Sahitya Tummala <quic_stummala@quicinc.com> <stummala@codeaurora.org>
+Sathishkumar Muruganandam <quic_murugana@quicinc.com> <murugana@codeaurora.org>
Satya Priya <quic_c_skakit@quicinc.com> <skakit@codeaurora.org>
S.Çağlar Onur <caglar@pardus.org.tr>
+Sayali Lokhande <quic_sayalil@quicinc.com> <sayalil@codeaurora.org>
Sean Christopherson <seanjc@google.com> <sean.j.christopherson@intel.com>
Sean Nyekjaer <sean@geanix.com> <sean.nyekjaer@prevas.dk>
+Sean Tranchetti <quic_stranche@quicinc.com> <stranche@codeaurora.org>
Sebastian Reichel <sre@kernel.org> <sebastian.reichel@collabora.co.uk>
Sebastian Reichel <sre@kernel.org> <sre@debian.org>
Sedat Dilek <sedat.dilek@gmail.com> <sedat.dilek@credativ.de>
+Senthilkumar N L <quic_snlakshm@quicinc.com> <snlakshm@codeaurora.org>
Seth Forshee <sforshee@kernel.org> <seth.forshee@canonical.com>
Shannon Nelson <shannon.nelson@amd.com> <snelson@pensando.io>
+Sharath Chandra Vurukala <quic_sharathv@quicinc.com> <sharathv@codeaurora.org>
Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
Shuah Khan <shuah@kernel.org> <shuahkhan@gmail.com>
Shuah Khan <shuah@kernel.org> <shuah.khan@hp.com>
Shuah Khan <shuah@kernel.org> <shuahkh@osg.samsung.com>
Shuah Khan <shuah@kernel.org> <shuah.kh@samsung.com>
+Sibi Sankar <quic_sibis@quicinc.com> <sibis@codeaurora.org>
+Sid Manning <quic_sidneym@quicinc.com> <sidneym@codeaurora.org>
Simon Arlott <simon@octiron.net> <simon@fire.lp0.eu>
Simon Kelley <simon@thekelleys.org.uk>
+Sricharan Ramabadhran <quic_srichara@quicinc.com> <sricharan@codeaurora.org>
+Srinivas Ramana <quic_sramana@quicinc.com> <sramana@codeaurora.org>
+Sriram R <quic_srirrama@quicinc.com> <srirrama@codeaurora.org>
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
Stephen Hemminger <stephen@networkplumber.org> <shemminger@linux-foundation.org>
Stephen Hemminger <stephen@networkplumber.org> <shemminger@osdl.org>
@@ -468,22 +546,30 @@ Stephen Hemminger <stephen@networkplumber.org> <sthemmin@microsoft.com>
Stephen Hemminger <stephen@networkplumber.org> <sthemmin@vyatta.com>
Steve Wise <larrystevenwise@gmail.com> <swise@chelsio.com>
Steve Wise <larrystevenwise@gmail.com> <swise@opengridcomputing.com>
-Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
+Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com> <subashab@codeaurora.org>
+Subbaraman Narayanamurthy <quic_subbaram@quicinc.com> <subbaram@codeaurora.org>
Subhash Jadavani <subhashj@codeaurora.org>
+Sudarshan Rajagopalan <quic_sudaraja@quicinc.com> <sudaraja@codeaurora.org>
Sudeep Holla <sudeep.holla@arm.com> Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
Sumit Semwal <sumit.semwal@ti.com>
+Surabhi Vishnoi <quic_svishnoi@quicinc.com> <svishnoi@codeaurora.org>
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
+Tamizh Chelvam Raja <quic_tamizhr@quicinc.com> <tamizhr@codeaurora.org>
+Taniya Das <quic_tdas@quicinc.com> <tdas@codeaurora.org>
Tejun Heo <htejun@gmail.com>
Thomas Graf <tgraf@suug.ch>
Thomas Körper <socketcan@esd.eu> <thomas.koerper@esd.eu>
Thomas Pedersen <twp@codeaurora.org>
Tiezhu Yang <yangtiezhu@loongson.cn> <kernelpatch@126.com>
+Tingwei Zhang <quic_tingwei@quicinc.com> <tingwei@codeaurora.org>
+Tirupathi Reddy <quic_tirupath@quicinc.com> <tirupath@codeaurora.org>
Tobias Klauser <tklauser@distanz.ch> <tobias.klauser@gmail.com>
Tobias Klauser <tklauser@distanz.ch> <klto@zhaw.ch>
Tobias Klauser <tklauser@distanz.ch> <tklauser@nuerscht.ch>
Tobias Klauser <tklauser@distanz.ch> <tklauser@xenon.tklauser.home>
Todor Tomov <todor.too@gmail.com> <todor.tomov@linaro.org>
Tony Luck <tony.luck@intel.com>
+Trilok Soni <quic_tsoni@quicinc.com> <tsoni@codeaurora.org>
TripleX Chung <xxx.phy@gmail.com> <triplex@zh-kernel.org>
TripleX Chung <xxx.phy@gmail.com> <zhongyu@18mail.cn>
Tsuneo Yoshioka <Tsuneo.Yoshioka@f-secure.com>
@@ -496,11 +582,17 @@ Uwe Kleine-König <ukleinek@strlen.de>
Uwe Kleine-König <ukl@pengutronix.de>
Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
+Vara Reddy <quic_varar@quicinc.com> <varar@codeaurora.org>
+Varadarajan Narayanan <quic_varada@quicinc.com> <varada@codeaurora.org>
+Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com> <vthiagar@codeaurora.org>
Vasily Averin <vasily.averin@linux.dev> <vvs@virtuozzo.com>
Vasily Averin <vasily.averin@linux.dev> <vvs@openvz.org>
Vasily Averin <vasily.averin@linux.dev> <vvs@parallels.com>
Vasily Averin <vasily.averin@linux.dev> <vvs@sw.ru>
Valentin Schneider <vschneid@redhat.com> <valentin.schneider@arm.com>
+Veera Sundaram Sankaran <quic_veeras@quicinc.com> <veeras@codeaurora.org>
+Veerabhadrarao Badiganti <quic_vbadigan@quicinc.com> <vbadigan@codeaurora.org>
+Venkateswara Naralasetty <quic_vnaralas@quicinc.com> <vnaralas@codeaurora.org>
Vikash Garodia <quic_vgarodia@quicinc.com> <vgarodia@codeaurora.org>
Vinod Koul <vkoul@kernel.org> <vinod.koul@intel.com>
Vinod Koul <vkoul@kernel.org> <vinod.koul@linux.intel.com>
@@ -510,11 +602,14 @@ Viresh Kumar <vireshk@kernel.org> <viresh.kumar@st.com>
Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
Viresh Kumar <viresh.kumar@linaro.org> <viresh.kumar@linaro.org>
Viresh Kumar <viresh.kumar@linaro.org> <viresh.kumar@linaro.com>
+Vivek Aknurwar <quic_viveka@quicinc.com> <viveka@codeaurora.org>
Vivien Didelot <vivien.didelot@gmail.com> <vivien.didelot@savoirfairelinux.com>
Vlad Dogaru <ddvlad@gmail.com> <vlad.dogaru@intel.com>
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
WeiXiong Liao <gmpy.liaowx@gmail.com> <liaoweixiong@allwinnertech.com>
+Wen Gong <quic_wgong@quicinc.com> <wgong@codeaurora.org>
+Wesley Cheng <quic_wcheng@quicinc.com> <wcheng@codeaurora.org>
Will Deacon <will@kernel.org> <will.deacon@arm.com>
Wolfram Sang <wsa@kernel.org> <w.sang@pengutronix.de>
Wolfram Sang <wsa@kernel.org> <wsa@the-dreams.de>
--
2.25.1
^ permalink raw reply related [relevance 2%]
* [tip: timers/urgent] tick/broadcast: Make broadcast device replacement work correctly
2023-05-06 16:40 3% ` [PATCH v3] tick/broadcast: Make broadcast device replacement work correctly Thomas Gleixner
@ 2023-05-08 21:27 3% ` tip-bot2 for Thomas Gleixner
0 siblings, 0 replies; 200+ results
From: tip-bot2 for Thomas Gleixner @ 2023-05-08 21:27 UTC (permalink / raw)
To: linux-tip-commits
Cc: Victor Hassan, Thomas Gleixner, Frederic Weisbecker, x86, linux-kernel
The following commit has been merged into the timers/urgent branch of tip:
Commit-ID: f9d36cf445ffff0b913ba187a3eff78028f9b1fb
Gitweb: https://git.kernel.org/tip/f9d36cf445ffff0b913ba187a3eff78028f9b1fb
Author: Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Sat, 06 May 2023 18:40:57 +02:00
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Mon, 08 May 2023 23:18:16 +02:00
tick/broadcast: Make broadcast device replacement work correctly
When a tick broadcast clockevent device is initialized for one shot mode
then tick_broadcast_setup_oneshot() OR's the periodic broadcast mode
cpumask into the oneshot broadcast cpumask.
This is required when switching from periodic broadcast mode to oneshot
broadcast mode to ensure that CPUs which are waiting for periodic
broadcast are woken up on the next tick.
But it is subtly broken, when an active broadcast device is replaced and
the system is already in oneshot (NOHZ/HIGHRES) mode. Victor observed
this and debugged the issue.
Then the OR of the periodic broadcast CPU mask is wrong as the periodic
cpumask bits are sticky after tick_broadcast_enable() set it for a CPU
unless explicitly cleared via tick_broadcast_disable().
That means that this sets all other CPUs which have tick broadcasting
enabled at that point unconditionally in the oneshot broadcast mask.
If the affected CPUs were already idle and had their bits set in the
oneshot broadcast mask then this does no harm. But for non idle CPUs
which were not set this corrupts their state.
On their next invocation of tick_broadcast_enable() they observe the bit
set, which indicates that the broadcast for the CPU is already set up.
As a consequence they fail to update the broadcast event even if their
earliest expiring timer is before the actually programmed broadcast
event.
If the programmed broadcast event is far in the future, then this can
cause stalls or trigger the hung task detector.
Avoid this by telling tick_broadcast_setup_oneshot() explicitly whether
this is the initial switch over from periodic to oneshot broadcast which
must take the periodic broadcast mask into account. In the case of
initialization of a replacement device this prevents that the broadcast
oneshot mask is modified.
There is a second problem with broadcast device replacement in this
function. The broadcast device is only armed when the previous state of
the device was periodic.
That is correct for the switch from periodic broadcast mode to oneshot
broadcast mode as the underlying broadcast device could operate in
oneshot state already due to lack of periodic state in hardware. In that
case it is already armed to expire at the next tick.
For the replacement case this is wrong as the device is in shutdown
state. That means that any already pending broadcast event will not be
armed.
This went unnoticed because any CPU which goes idle will observe that
the broadcast device has an expiry time of KTIME_MAX and therefore any
CPUs next timer event will be earlier and cause a reprogramming of the
broadcast device. But that does not guarantee that the events of the
CPUs which were already in idle are delivered on time.
Fix this by arming the newly installed device for an immediate event
which will reevaluate the per CPU expiry times and reprogram the
broadcast device accordingly. This is simpler than caching the last
expiry time in yet another place or saving it before the device exchange
and handing it down to the setup function. Replacement of broadcast
devices is not a frequent operation and usually happens once somewhere
late in the boot process.
Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
Reported-by: Victor Hassan <victor@allwinnertech.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Link: https://lore.kernel.org/r/87pm7d2z1i.ffs@tglx
---
kernel/time/tick-broadcast.c | 120 ++++++++++++++++++++++++----------
1 file changed, 88 insertions(+), 32 deletions(-)
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 93bf2b4..771d1e0 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -35,14 +35,15 @@ static __cacheline_aligned_in_smp DEFINE_RAW_SPINLOCK(tick_broadcast_lock);
#ifdef CONFIG_TICK_ONESHOT
static DEFINE_PER_CPU(struct clock_event_device *, tick_oneshot_wakeup_device);
-static void tick_broadcast_setup_oneshot(struct clock_event_device *bc);
+static void tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic);
static void tick_broadcast_clear_oneshot(int cpu);
static void tick_resume_broadcast_oneshot(struct clock_event_device *bc);
# ifdef CONFIG_HOTPLUG_CPU
static void tick_broadcast_oneshot_offline(unsigned int cpu);
# endif
#else
-static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) { BUG(); }
+static inline void
+tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic) { BUG(); }
static inline void tick_broadcast_clear_oneshot(int cpu) { }
static inline void tick_resume_broadcast_oneshot(struct clock_event_device *bc) { }
# ifdef CONFIG_HOTPLUG_CPU
@@ -264,7 +265,7 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu)
if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
tick_broadcast_start_periodic(bc);
else
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, false);
ret = 1;
} else {
/*
@@ -500,7 +501,7 @@ void tick_broadcast_control(enum tick_broadcast_mode mode)
if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
tick_broadcast_start_periodic(bc);
else
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, false);
}
}
out:
@@ -1020,48 +1021,101 @@ static inline ktime_t tick_get_next_period(void)
/**
* tick_broadcast_setup_oneshot - setup the broadcast device
*/
-static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
+static void tick_broadcast_setup_oneshot(struct clock_event_device *bc,
+ bool from_periodic)
{
int cpu = smp_processor_id();
+ ktime_t nexttick = 0;
if (!bc)
return;
- /* Set it up only once ! */
- if (bc->event_handler != tick_handle_oneshot_broadcast) {
- int was_periodic = clockevent_state_periodic(bc);
-
- bc->event_handler = tick_handle_oneshot_broadcast;
-
+ /*
+ * When the broadcast device was switched to oneshot by the first
+ * CPU handling the NOHZ change, the other CPUs will reach this
+ * code via hrtimer_run_queues() -> tick_check_oneshot_change()
+ * too. Set up the broadcast device only once!
+ */
+ if (bc->event_handler == tick_handle_oneshot_broadcast) {
/*
- * We must be careful here. There might be other CPUs
- * waiting for periodic broadcast. We need to set the
- * oneshot_mask bits for those and program the
- * broadcast device to fire.
+ * The CPU which switched from periodic to oneshot mode
+ * set the broadcast oneshot bit for all other CPUs which
+ * are in the general (periodic) broadcast mask to ensure
+ * that CPUs which wait for the periodic broadcast are
+ * woken up.
+ *
+ * Clear the bit for the local CPU as the set bit would
+ * prevent the first tick_broadcast_enter() after this CPU
+ * switched to oneshot state to program the broadcast
+ * device.
+ *
+ * This code can also be reached via tick_broadcast_control(),
+ * but this cannot avoid the tick_broadcast_clear_oneshot()
+ * as that would break the periodic to oneshot transition of
+ * secondary CPUs. But that's harmless as the below only
+ * clears already cleared bits.
*/
+ tick_broadcast_clear_oneshot(cpu);
+ return;
+ }
+
+
+ bc->event_handler = tick_handle_oneshot_broadcast;
+ bc->next_event = KTIME_MAX;
+
+ /*
+ * When the tick mode is switched from periodic to oneshot it must
+ * be ensured that CPUs which are waiting for periodic broadcast
+ * get their wake-up at the next tick. This is achieved by ORing
+ * tick_broadcast_mask into tick_broadcast_oneshot_mask.
+ *
+ * For other callers, e.g. broadcast device replacement,
+ * tick_broadcast_oneshot_mask must not be touched as this would
+ * set bits for CPUs which are already NOHZ, but not idle. Their
+ * next tick_broadcast_enter() would observe the bit set and fail
+ * to update the expiry time and the broadcast event device.
+ */
+ if (from_periodic) {
cpumask_copy(tmpmask, tick_broadcast_mask);
+ /* Remove the local CPU as it is obviously not idle */
cpumask_clear_cpu(cpu, tmpmask);
- cpumask_or(tick_broadcast_oneshot_mask,
- tick_broadcast_oneshot_mask, tmpmask);
+ cpumask_or(tick_broadcast_oneshot_mask, tick_broadcast_oneshot_mask, tmpmask);
- if (was_periodic && !cpumask_empty(tmpmask)) {
- ktime_t nextevt = tick_get_next_period();
+ /*
+ * Ensure that the oneshot broadcast handler will wake the
+ * CPUs which are still waiting for periodic broadcast.
+ */
+ nexttick = tick_get_next_period();
+ tick_broadcast_init_next_event(tmpmask, nexttick);
- clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
- tick_broadcast_init_next_event(tmpmask, nextevt);
- tick_broadcast_set_event(bc, cpu, nextevt);
- } else
- bc->next_event = KTIME_MAX;
- } else {
/*
- * The first cpu which switches to oneshot mode sets
- * the bit for all other cpus which are in the general
- * (periodic) broadcast mask. So the bit is set and
- * would prevent the first broadcast enter after this
- * to program the bc device.
+ * If the underlying broadcast clock event device is
+ * already in oneshot state, then there is nothing to do.
+ * The device was already armed for the next tick
+ * in tick_handle_broadcast_periodic()
*/
- tick_broadcast_clear_oneshot(cpu);
+ if (clockevent_state_oneshot(bc))
+ return;
}
+
+ /*
+ * When switching from periodic to oneshot mode arm the broadcast
+ * device for the next tick.
+ *
+ * If the broadcast device has been replaced in oneshot mode and
+ * the oneshot broadcast mask is not empty, then arm it to expire
+ * immediately in order to reevaluate the next expiring timer.
+ * @nexttick is 0 and therefore in the past which will cause the
+ * clockevent code to force an event.
+ *
+ * For both cases the programming can be avoided when the oneshot
+ * broadcast mask is empty.
+ *
+ * tick_broadcast_set_event() implicitly switches the broadcast
+ * device to oneshot state.
+ */
+ if (!cpumask_empty(tick_broadcast_oneshot_mask))
+ tick_broadcast_set_event(bc, cpu, nexttick);
}
/*
@@ -1070,14 +1124,16 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
void tick_broadcast_switch_to_oneshot(void)
{
struct clock_event_device *bc;
+ enum tick_device_mode oldmode;
unsigned long flags;
raw_spin_lock_irqsave(&tick_broadcast_lock, flags);
+ oldmode = tick_broadcast_device.mode;
tick_broadcast_device.mode = TICKDEV_MODE_ONESHOT;
bc = tick_broadcast_device.evtdev;
if (bc)
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, oldmode == TICKDEV_MODE_PERIODIC);
raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags);
}
^ permalink raw reply related [relevance 3%]
* [PATCH v3] tick/broadcast: Make broadcast device replacement work correctly
@ 2023-05-06 16:40 3% ` Thomas Gleixner
2023-05-08 21:27 3% ` [tip: timers/urgent] " tip-bot2 for Thomas Gleixner
0 siblings, 1 reply; 200+ results
From: Thomas Gleixner @ 2023-05-06 16:40 UTC (permalink / raw)
To: Frederic Weisbecker
Cc: Victor Hassan, fweisbec, mingo, jindong.yue, linux-kernel
When a tick broadcast clockevent device is initialized for one shot mode
then tick_broadcast_setup_oneshot() OR's the periodic broadcast mode
cpumask into the oneshot broadcast cpumask.
This is required when switching from periodic broadcast mode to oneshot
broadcast mode to ensure that CPUs which are waiting for periodic
broadcast are woken up on the next tick.
But it is subtly broken, when an active broadcast device is replaced and
the system is already in oneshot (NOHZ/HIGHRES) mode. Victor observed
this and debugged the issue.
Then the OR of the periodic broadcast CPU mask is wrong as the periodic
cpumask bits are sticky after tick_broadcast_enable() set it for a CPU
unless explicitly cleared via tick_broadcast_disable().
That means that this sets all other CPUs which have tick broadcasting
enabled at that point unconditionally in the oneshot broadcast mask.
If the affected CPUs were already idle and had their bits set in the
oneshot broadcast mask then this does no harm. But for non idle CPUs
which were not set this corrupts their state.
On their next invocation of tick_broadcast_enable() they observe the bit
set, which indicates that the broadcast for the CPU is already set up.
As a consequence they fail to update the broadcast event even if their
earliest expiring timer is before the actually programmed broadcast
event.
If the programmed broadcast event is far in the future, then this can
cause stalls or trigger the hung task detector.
Avoid this by telling tick_broadcast_setup_oneshot() explicitly whether
this is the initial switch over from periodic to oneshot broadcast which
must take the periodic broadcast mask into account. In the case of
initialization of a replacement device this prevents that the broadcast
oneshot mask is modified.
There is a second problem with broadcast device replacement in this
function. The broadcast device is only armed when the previous state of
the device was periodic.
That is correct for the switch from periodic broadcast mode to oneshot
broadcast mode as the underlying broadcast device could operate in
oneshot state already due to lack of periodic state in hardware. In that
case it is already armed to expire at the next tick.
For the replacement case this is wrong as the device is in shutdown
state. That means that any already pending broadcast event will not be
armed.
This went unnoticed because any CPU which goes idle will observe that
the broadcast device has an expiry time of KTIME_MAX and therefore any
CPUs next timer event will be earlier and cause a reprogramming of the
broadcast device. But that does not guarantee that the events of the
CPUs which were already in idle are delivered on time.
Fix this by arming the newly installed device for an immediate event
which will reevaluate the per CPU expiry times and reprogram the
broadcast device accordingly. This is simpler than caching the last
expiry time in yet another place or saving it before the device exchange
and handing it down to the setup function. Replacement of broadcast
devices is not a frequent operation and usually happens once somewhere
late in the boot process.
Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
Reported-by: Victor Hassan <victor@allwinnertech.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
---
kernel/time/tick-broadcast.c | 114 ++++++++++++++++++++++++++++++-------------
1 file changed, 82 insertions(+), 32 deletions(-)
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -35,14 +35,15 @@ static __cacheline_aligned_in_smp DEFINE
#ifdef CONFIG_TICK_ONESHOT
static DEFINE_PER_CPU(struct clock_event_device *, tick_oneshot_wakeup_device);
-static void tick_broadcast_setup_oneshot(struct clock_event_device *bc);
+static void tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic);
static void tick_broadcast_clear_oneshot(int cpu);
static void tick_resume_broadcast_oneshot(struct clock_event_device *bc);
# ifdef CONFIG_HOTPLUG_CPU
static void tick_broadcast_oneshot_offline(unsigned int cpu);
# endif
#else
-static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) { BUG(); }
+static inline void
+tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic) { BUG(); }
static inline void tick_broadcast_clear_oneshot(int cpu) { }
static inline void tick_resume_broadcast_oneshot(struct clock_event_device *bc) { }
# ifdef CONFIG_HOTPLUG_CPU
@@ -264,7 +265,7 @@ int tick_device_uses_broadcast(struct cl
if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
tick_broadcast_start_periodic(bc);
else
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, false);
ret = 1;
} else {
/*
@@ -500,7 +501,7 @@ void tick_broadcast_control(enum tick_br
if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
tick_broadcast_start_periodic(bc);
else
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, false);
}
}
out:
@@ -1020,48 +1021,95 @@ static inline ktime_t tick_get_next_peri
/**
* tick_broadcast_setup_oneshot - setup the broadcast device
*/
-static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
+static void tick_broadcast_setup_oneshot(struct clock_event_device *bc,
+ bool from_periodic)
{
int cpu = smp_processor_id();
+ ktime_t nexttick = 0;
if (!bc)
return;
- /* Set it up only once ! */
- if (bc->event_handler != tick_handle_oneshot_broadcast) {
- int was_periodic = clockevent_state_periodic(bc);
-
- bc->event_handler = tick_handle_oneshot_broadcast;
-
+ /*
+ * When the broadcast device was switched to oneshot by the first
+ * CPU handling the NOHZ change, the other CPUs will reach this
+ * code via hrtimer_run_queues() -> tick_check_oneshot_change()
+ * too. Set up the broadcast device only once!
+ */
+ if (bc->event_handler == tick_handle_oneshot_broadcast) {
/*
- * We must be careful here. There might be other CPUs
- * waiting for periodic broadcast. We need to set the
- * oneshot_mask bits for those and program the
- * broadcast device to fire.
+ * The CPU which switched from periodic to oneshot mode
+ * set the broadcast oneshot bit for all other CPUs which
+ * are in the general (periodic) broadcast mask to ensure
+ * that CPUs which wait for the periodic broadcast are
+ * woken up.
+ *
+ * Clear the bit for the local CPU as the set bit would
+ * prevent the first tick_broadcast_enter() after this CPU
+ * switched to oneshot state to program the broadcast
+ * device.
*/
+ tick_broadcast_clear_oneshot(cpu);
+ return;
+ }
+
+
+ bc->event_handler = tick_handle_oneshot_broadcast;
+ bc->next_event = KTIME_MAX;
+
+ /*
+ * When the tick mode is switched from periodic to oneshot it must
+ * be ensured that CPUs which are waiting for periodic broadcast
+ * get their wake-up at the next tick. This is achieved by ORing
+ * tick_broadcast_mask into tick_broadcast_oneshot_mask.
+ *
+ * For other callers, e.g. broadcast device replacement,
+ * tick_broadcast_oneshot_mask must not be touched as this would
+ * set bits for CPUs which are already NOHZ, but not idle. Their
+ * next tick_broadcast_enter() would observe the bit set and fail
+ * to update the expiry time and the broadcast event device.
+ */
+ if (from_periodic) {
cpumask_copy(tmpmask, tick_broadcast_mask);
+ /* Remove the local CPU as it is obviously not idle */
cpumask_clear_cpu(cpu, tmpmask);
- cpumask_or(tick_broadcast_oneshot_mask,
- tick_broadcast_oneshot_mask, tmpmask);
+ cpumask_or(tick_broadcast_oneshot_mask, tick_broadcast_oneshot_mask, tmpmask);
- if (was_periodic && !cpumask_empty(tmpmask)) {
- ktime_t nextevt = tick_get_next_period();
+ /*
+ * Ensure that the oneshot broadcast handler will wake the
+ * CPUs which are still waiting for periodic broadcast.
+ */
+ nexttick = tick_get_next_period();
+ tick_broadcast_init_next_event(tmpmask, nexttick);
- clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
- tick_broadcast_init_next_event(tmpmask, nextevt);
- tick_broadcast_set_event(bc, cpu, nextevt);
- } else
- bc->next_event = KTIME_MAX;
- } else {
/*
- * The first cpu which switches to oneshot mode sets
- * the bit for all other cpus which are in the general
- * (periodic) broadcast mask. So the bit is set and
- * would prevent the first broadcast enter after this
- * to program the bc device.
+ * If the underlying broadcast clock event device is
+ * already in oneshot state, then there is nothing to do.
+ * The device was already armed for the next tick
+ * in tick_handle_broadcast_periodic()
*/
- tick_broadcast_clear_oneshot(cpu);
+ if (clockevent_state_oneshot(bc))
+ return;
}
+
+ /*
+ * When switching from periodic to oneshot mode arm the broadcast
+ * device for the next tick.
+ *
+ * If the broadcast device has been replaced in oneshot mode and
+ * the oneshot broadcast mask is not empty, then arm it to expire
+ * immediately in order to reevaluate the next expiring timer.
+ * nexttick is 0 and therefore in the past which will cause the
+ * clockevent code to force an event.
+ *
+ * For both cases the programming can be avoided when the oneshot
+ * broadcast mask is empty.
+ *
+ * tick_broadcast_set_event() implicitly switches the broadcast
+ * device to oneshot state.
+ */
+ if (!cpumask_empty(tick_broadcast_oneshot_mask))
+ tick_broadcast_set_event(bc, cpu, nexttick);
}
/*
@@ -1070,14 +1118,16 @@ static void tick_broadcast_setup_oneshot
void tick_broadcast_switch_to_oneshot(void)
{
struct clock_event_device *bc;
+ enum tick_device_mode oldmode;
unsigned long flags;
raw_spin_lock_irqsave(&tick_broadcast_lock, flags);
+ oldmode = tick_broadcast_device.mode;
tick_broadcast_device.mode = TICKDEV_MODE_ONESHOT;
bc = tick_broadcast_device.evtdev;
if (bc)
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, oldmode == TICKDEV_MODE_PERIODIC);
raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags);
}
^ permalink raw reply [relevance 3%]
* Re: [PATCH v2] tick/broadcast: Do not set oneshot_mask except was_periodic was true
@ 2023-05-06 12:09 14% ` Victor Hassan
1 sibling, 0 replies; 200+ results
From: Victor Hassan @ 2023-05-06 12:09 UTC (permalink / raw)
To: Thomas Gleixner, Frederic Weisbecker
Cc: fweisbec, mingo, jindong.yue, linux-kernel
On 5/2/2023 8:38 PM, Thomas Gleixner wrote:
> On Tue, May 02 2023 at 13:19, Frederic Weisbecker wrote:
>> On Fri, Apr 21, 2023 at 11:32:15PM +0200, Thomas Gleixner wrote:
>> Ok I get the check_clock game. But then, why do we need to reprogram
>> again the broadcast device to fire in one jiffy if the caller is
>> tick_nohz_switch_to_nohz() (that is the (bc->event_handler ==
>> tick_handle_oneshot_broadcast) branch)? In that case the broadcast device
>> should have been programmed already by the CPU that first switched the
>> current broadcast device, right?
>
> That clearly lacks a return in that path.
>
>>> It seems I failed miserably to explain that coherently with the tons of
>>> comments added. Hrmpf :(
>>
>> Don't pay too much attention, confusion is my vehicle to explore any code
>> that I'm not used to. But yes I must confess the
>> (bc->event_handler == tick_handle_oneshot_broadcast) may deserve a comment
>> remaining where we come from (ie: low-res hrtimer softirq).
>
> Updated patch below.
>
> Thanks,
>
> tglx
> ---
> --- a/kernel/time/tick-broadcast.c
> +++ b/kernel/time/tick-broadcast.c
> @@ -35,14 +35,15 @@ static __cacheline_aligned_in_smp DEFINE
> #ifdef CONFIG_TICK_ONESHOT
> static DEFINE_PER_CPU(struct clock_event_device *, tick_oneshot_wakeup_device);
>
> -static void tick_broadcast_setup_oneshot(struct clock_event_device *bc);
> +static void tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic);
> static void tick_broadcast_clear_oneshot(int cpu);
> static void tick_resume_broadcast_oneshot(struct clock_event_device *bc);
> # ifdef CONFIG_HOTPLUG_CPU
> static void tick_broadcast_oneshot_offline(unsigned int cpu);
> # endif
> #else
> -static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) { BUG(); }
> +static inline void
> +tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic) { BUG(); }
> static inline void tick_broadcast_clear_oneshot(int cpu) { }
> static inline void tick_resume_broadcast_oneshot(struct clock_event_device *bc) { }
> # ifdef CONFIG_HOTPLUG_CPU
> @@ -264,7 +265,7 @@ int tick_device_uses_broadcast(struct cl
> if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
> tick_broadcast_start_periodic(bc);
> else
> - tick_broadcast_setup_oneshot(bc);
> + tick_broadcast_setup_oneshot(bc, false);
> ret = 1;
> } else {
> /*
> @@ -500,7 +501,7 @@ void tick_broadcast_control(enum tick_br
> if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
> tick_broadcast_start_periodic(bc);
> else
> - tick_broadcast_setup_oneshot(bc);
> + tick_broadcast_setup_oneshot(bc, false);
> }
> }
> out:
> @@ -1020,48 +1021,95 @@ static inline ktime_t tick_get_next_peri
> /**
> * tick_broadcast_setup_oneshot - setup the broadcast device
> */
> -static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
> +static void tick_broadcast_setup_oneshot(struct clock_event_device *bc,
> + bool from_periodic)
> {
> int cpu = smp_processor_id();
> + ktime_t nexttick = 0;
>
> if (!bc)
> return;
>
> - /* Set it up only once ! */
> - if (bc->event_handler != tick_handle_oneshot_broadcast) {
> - int was_periodic = clockevent_state_periodic(bc);
> -
> - bc->event_handler = tick_handle_oneshot_broadcast;
> -
> + /*
> + * When the broadcast device was switched to oneshot by the first
> + * CPU handling the NOHZ change, the other CPUs will reach this
> + * code via hrtimer_run_queues() -> tick_check_oneshot_change()
> + * too. Set up the broadcast device only once!
> + */
> + if (bc->event_handler == tick_handle_oneshot_broadcast) {
> /*
> - * We must be careful here. There might be other CPUs
> - * waiting for periodic broadcast. We need to set the
> - * oneshot_mask bits for those and program the
> - * broadcast device to fire.
> + * The CPU which switched from periodic to oneshot mode
> + * set the broadcast oneshot bit for all other CPUs which
> + * are in the general (periodic) broadcast mask to ensure
> + * that CPUs which wait for the periodic broadcast are
> + * woken up.
> + *
> + * Clear the bit for the local CPU as the set bit would
> + * prevent the first tick_broadcast_enter() after this CPU
> + * switched to oneshot state to program the broadcast
> + * device.
> */
> + tick_broadcast_clear_oneshot(cpu);
> + return;
> + }
> +
> +
> + bc->event_handler = tick_handle_oneshot_broadcast;
> + bc->next_event = KTIME_MAX;
> +
> + /*
> + * When the tick mode is switched from periodic to oneshot it must
> + * be ensured that CPUs which are waiting for periodic broadcast
> + * get their wake-up at the next tick. This is achieved by ORing
> + * tick_broadcast_mask into tick_broadcast_oneshot_mask.
> + *
> + * For other callers, e.g. broadcast device replacement,
> + * tick_broadcast_oneshot_mask must not be touched as this would
> + * set bits for CPUs which are already NOHZ, but not idle. Their
> + * next tick_broadcast_enter() would observe the bit set and fail
> + * to update the expiry time and the broadcast event device.
> + */
> + if (from_periodic) {
> cpumask_copy(tmpmask, tick_broadcast_mask);
> + /* Remove the local CPU as it is obviously not idle */
> cpumask_clear_cpu(cpu, tmpmask);
> - cpumask_or(tick_broadcast_oneshot_mask,
> - tick_broadcast_oneshot_mask, tmpmask);
> + cpumask_or(tick_broadcast_oneshot_mask, tick_broadcast_oneshot_mask, tmpmask);
>
> - if (was_periodic && !cpumask_empty(tmpmask)) {
> - ktime_t nextevt = tick_get_next_period();
> + /*
> + * Ensure that the oneshot broadcast handler will wake the
> + * CPUs which are still waiting for periodic broadcast.
> + */
> + nexttick = tick_get_next_period();
> + tick_broadcast_init_next_event(tmpmask, nexttick);
>
> - clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
> - tick_broadcast_init_next_event(tmpmask, nextevt);
> - tick_broadcast_set_event(bc, cpu, nextevt);
> - } else
> - bc->next_event = KTIME_MAX;
> - } else {
> /*
> - * The first cpu which switches to oneshot mode sets
> - * the bit for all other cpus which are in the general
> - * (periodic) broadcast mask. So the bit is set and
> - * would prevent the first broadcast enter after this
> - * to program the bc device.
> + * If the underlying broadcast clock event device is
> + * already in oneshot state, then there is nothing to do.
> + * The device was already armed for the next tick
> + * in tick_handle_broadcast_periodic()
> */
> - tick_broadcast_clear_oneshot(cpu);
> + if (clockevent_state_oneshot(bc))
> + return;
> }
> +
> + /*
> + * When switching from periodic to oneshot mode arm the broadcast
> + * device for the next tick.
> + *
> + * If the broadcast device has been replaced in oneshot mode and
> + * the oneshot broadcast mask is not empty, then arm it to expire
> + * immediately in order to reevaluate the next expiring timer.
> + * nexttick is 0 and therefore in the past which will cause the
> + * clockevent code to force an event.
> + *
> + * For both cases the programming can be avoided when the oneshot
> + * broadcast mask is empty.
> + *
> + * tick_broadcast_set_event() implicitly switches the broadcast
> + * device to oneshot state.
> + */
> + if (!cpumask_empty(tick_broadcast_oneshot_mask))
> + tick_broadcast_set_event(bc, cpu, nexttick);
> }
>
> /*
> @@ -1070,14 +1118,16 @@ static void tick_broadcast_setup_oneshot
> void tick_broadcast_switch_to_oneshot(void)
> {
> struct clock_event_device *bc;
> + enum tick_device_mode oldmode;
> unsigned long flags;
>
> raw_spin_lock_irqsave(&tick_broadcast_lock, flags);
>
> + oldmode = tick_broadcast_device.mode;
> tick_broadcast_device.mode = TICKDEV_MODE_ONESHOT;
> bc = tick_broadcast_device.evtdev;
> if (bc)
> - tick_broadcast_setup_oneshot(bc);
> + tick_broadcast_setup_oneshot(bc, oldmode == TICKDEV_MODE_PERIODIC);
>
> raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags);
> }
That looks good to me.
^ permalink raw reply [relevance 14%]
* Re: [PATCH v2] tick/broadcast: Do not set oneshot_mask except was_periodic was true
2023-04-26 2:50 14% ` Victor Hassan
@ 2023-05-05 1:46 14% ` Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2023-05-05 1:46 UTC (permalink / raw)
To: Thomas Gleixner, fweisbec, mingo, jindong.yue; +Cc: linux-kernel
On 4/26/2023 10:50 AM, Victor Hassan wrote:
>
>
> On 4/25/2023 2:31 AM, Thomas Gleixner wrote:
>> On Mon, Apr 24 2023 at 20:28, Thomas Gleixner wrote:
>>
>> Btw, does the patch fix your issue?
> This is a probabilistic problem and I am currently testing it.
I have tested for 7*24 hours and there have been no issues as before.
>
>>
>> Thanks,
>>
>> tglx
^ permalink raw reply [relevance 14%]
* Re: [PATCH v2] tick/broadcast: Do not set oneshot_mask except was_periodic was true
@ 2023-04-26 2:50 14% ` Victor Hassan
2023-05-05 1:46 14% ` Victor Hassan
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2023-04-26 2:50 UTC (permalink / raw)
To: Thomas Gleixner, fweisbec, mingo, jindong.yue; +Cc: linux-kernel
On 4/25/2023 2:31 AM, Thomas Gleixner wrote:
> On Mon, Apr 24 2023 at 20:28, Thomas Gleixner wrote:
>
> Btw, does the patch fix your issue?
This is a probabilistic problem and I am currently testing it.
>
> Thanks,
>
> tglx
^ permalink raw reply [relevance 14%]
* Re: [PATCH v2] tick/broadcast: Do not set oneshot_mask except was_periodic was true
2023-04-15 21:01 2% ` Thomas Gleixner
@ 2023-04-23 14:16 14% ` Victor Hassan
1 sibling, 1 reply; 200+ results
From: Victor Hassan @ 2023-04-23 14:16 UTC (permalink / raw)
To: Thomas Gleixner, fweisbec, mingo, jindong.yue; +Cc: linux-kernel
On 4/16/2023 5:01 AM, Thomas Gleixner wrote:
> Victor!
>
> On Wed, Apr 12 2023 at 08:34, Victor Hassan wrote:
>
> Thanks for tracking this problem down!
>
>> If a broadcast timer is registered after the system switched to oneshot
>> mode, a hang_task err could occur like that:
>>
>> INFO: task kworker/u15:0:7 blocked for more than 120 seconds.
>> Tainted: G E 5.15.41-android13-8-00002-xxx #1
>> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
>> task:kworker/u16:0 state:D stack: 9808 pid: 7 ppid: 2 flags:0x00000008
>> Workqueue: events_unbound deferred_probe_work_func.cfi_jt
>> Call trace:
>> __switch_to+0y240/0x490
>> __schedule+0x620/0xafc
>> schedule+0x110/0x204
>> schedule_hrtimeout_range_clock+0x9c/0x118
>> usleep_range_state+0x150/0x1ac
>> _regulator_do_enable+0x528/0x878
>> set_machine_constraints+0x6a0/0xf2c
>> regulator_register+0x3ac/0x7ac
>> devm_regulator_register+0xbc/0x120
>> pmu_ext_regulator_probe+0xb0/0x1b4 [pmu_ext_regulator]
>> platform_probe+0x70/0x194
>> really_probe+0x320/0x68c
>> __driver_probe_device+0x204/0x260
>> driver_probe_device+0x48/0x1e0
>
> That backtrace is not really helpful to explain the problem. That's just the
> consequence, i.e. the symptom.
>
> Backtraces can help to document the call chain leading to a problem. As
> this is _not_ leading to the problem, the backtrace is just a
> distraction. See:
>
> https://www.kernel.org/doc/html/latest/process/maintainer-tip.html#changelog
>
>> When the new broadcast timer was registered after the system switched
>> to oneshot mode, the broadcast timer was not used as periodic. If the
>> oneshot mask was set incorrectly, all cores which did not enter cpu_idle
>> state can't enter cpu_idle normally, causing the hrtimer mechanism to
>> break.
>
> This is not really a proper problem description. It's obvious that
> things break when a mask is set incorrectly. But that lacks a
> description of the context and the why the mask is incorrect.
>
>> Like:
>>
>> * CPU 1 stop its tick, next event is in one hour. It calls
>> tick_broadcast_enter() and goes to sleep.
>
> So there is already a broadcast device installed, right?
>
>> * CPU 1 gets an interrupt that enqueues a new timer expiring in the next jiffy
>> (note it's not yet actually programmed in the tick device)
>> * CPU 1 call tick_broadcast_exit().
>> * CPU 0 registers new broadcast device and sets CPU 1 in tick_broadcast_oneshot_mask
>
> This lacks an explanation why CPU0 sets CPU1 in that mask. It does not
> _set_ it explicitely, only implicitely by ORing the periodic broadcast
> cpumask over.
>
> Now the question is why is CPU1 set in the periodic broadcast mask when
> the CPU already switched over to NOHZ mode?
>
> That needs to be explained too.
>
>> * CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
>> is in one hour (because the recently enqueued timer for CPU 1 hasn't been programmed
>> yet), so it programs the broadcast to that 1 hour deadline.
>> * CPU 1 runs tick_nohz_idle_stop_tick() which eventually writes and program
>> dev->next_event to next jiffy
>> * CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter() is ignored because
>> the CPU is already in tick_broadcast_oneshot_mask, so the dev->next_event
>> change isn't propagated to broadcast.
>> * CPU 1 goes to sleep for 1 hour.
>
> Also please use tabular style to explain the parallel events as
> explained in the documentation.
>
>> This patch fixes the issue by moving the update action about oneshot
>
> git grep 'This patch' Documentation/process/
>
>> Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
>
> Pointless new line.
>
>> Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
>
> Ditto. And please use the tag ordering from the tip documentation.
>
>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>> ---
>> kernel/time/tick-broadcast.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
>> index 93bf2b4e47e5..fdbbba487978 100644
>> --- a/kernel/time/tick-broadcast.c
>> +++ b/kernel/time/tick-broadcast.c
>> @@ -1041,12 +1041,13 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
>> */
>> cpumask_copy(tmpmask, tick_broadcast_mask);
>> cpumask_clear_cpu(cpu, tmpmask);
>> - cpumask_or(tick_broadcast_oneshot_mask,
>> - tick_broadcast_oneshot_mask, tmpmask);
>
> This breaks the case when the broadcast device was already in use before
> switching to oneshot broadcast mode and the underlying clock event
> device does not support periodic state, i.e. it operates internally in
> one shot state.
>
> The condition avoids reprogramming in that case because the device is
> already armed for the next tick when the periodic broadcast mask is not
> empty, so no further action required.
>
> But with moving the OR operation into the condition the CPUs in the
> periodic broadcast mask are then not woken up.
>
> There is a distinction between the tick/broadcast mode and the
> clockevent device state.
>
> tick/broadcast clockevent
>
> TICK_MODE_PERIODIC CLOCK_EVENT_STATE_PERIODIC (if supported) or _ONESHOT
> TICK_MODE_ONESHOT (NOHZ) CLOCK_EVENT_STATE_ONESHOT
>
> The tick/broadcast mode is a software state. The clockevent state is a
> hardware state.
Yes, you are right.
tick_setup_device
-> td->mode = TICKDEV_MODE_PERIODIC;
-> tick_setup_periodic
-> tick_set_periodic_handler
-> if dev->features & CLOCK_EVT_FEAT_PERIODIC // may not support
-> clockevents_switch_state(dev, CLOCK_EVT_STATE_PERIODIC);
-> else
-> clockevents_switch_state(dev, CLOCK_EVT_STATE_ONESHOT)
>
> After more analysis of that code it turns out that this is even more
> broken because of this:
>
> CPU0 CPU1
>
> idle()
> tick_broadcast_enter()
> test_and_set_cpu(cpu, oneshot_mask);
> shutdown_cpu_local_device();
> tick_broadcast_set_event();
> sleep_deep();
>
> // All good. Broadcast will wake the CPU up
>
> install_new_broadcast_device(newdev)
> tick_broadcast_setup_oneshot(newdev)
> if (was_periodic) <- Path not taken because device is in shutdown state
Are you saying that the "tick_broadcast_enter->broadcast_shutdown_local"
path will turn off the cpu1 tick device(as the broadcast)?
I think this only happens when CPU1's tick device is used as the
broadcast device. However, the "broadcast_needs_cpu" path prevents this
from happening, right?
Nevertheless, there is still an issue here. At this point, the broadcast
will be in oneshot state (was_periodic is still false). The reason why
this has not caused any serious problems may be because other CPUs will
quickly enter idle to help refresh the broadcast.
> ...
> else
> newdev->next_event = KTIME_MAX;
>
> So what switches the new device into oneshot state and what wakes CPU1
> on time?
>
> The switch to oneshot mode happens when the next CPU goes idle and
> invokes tick_broadcast_set_event() because that sets up one shot state
> implicitly.
>
> The wake-up on time for CPU1 happens only when the next CPU goes idle
> before the expiry time and queues a broadcast event which is the same or
> earlier than CPU1s event, but that's far from correct.
>
> It will eventually be delivered, but that might be way too late and even
> cause stalls or hung task events in the worst case.
>
> Duh. What was that Gleixner dude thinking...
>
> Just for the record. I hated that broadcast code from day one.
>
> The irony is that the only architecture which required it back in the
> days (x86) and caused me to write this horror in order to make NOHZ
> possible has by now functional timers which just work even in deeper
> idle states. Therefore x86 does not use that code anymore on any
> halfways contemporary system.
>
> Though all other architectures had to make the same mistake again...
>
> Completely untested patch below.
>
> Thanks,
>
> tglx
> ---
> From: Thomas Gleixner <tglx@linutronix.de>
> Subject: tick/broadcast: Make broadcast device replacement work correctly
> Date: Wed, 12 Apr 2023 08:34:25 +0800
>
> When a tick broadcast clockevent device is initialized for one shot mode
> then tick_broadcast_setup_oneshot() OR's the periodic broadcast mode
> cpumask into the oneshot broadcast cpumask.
>
> This is required when switching from periodic broadcast mode to oneshot
> broadcast mode to ensure that CPUs which are waiting for periodic
> broadcast are woken up on the next tick.
>
> But it is subtly broken, when an active broadcast device is replaced and
> the system is already in oneshot (NOHZ/HIGHRES) mode. Victor observed
> this and debugged the issue.
>
> Then the OR of the periodic broadcast CPU mask is wrong as the periodic
> cpumask bits are sticky after tick_broadcast_enable() set it for a CPU
> unless explicitly cleared via tick_broadcast_disable().
>
> That means that this sets all other CPUs which have tick broadcasting
> enabled at that point unconditionally in the oneshot broadcast mask.
>
> If the affected CPUs were already idle and had their bits set in the
> oneshot broadcast mask then this does no harm. But for non idle CPUs
> which were not set this corrupts their state.
>
> On their next invocation of tick_broadcast_enable() they observe the bit
> set, which indicates that the broadcast for the CPU is already set up.
> As a consequence they fail to update the broadcast event even if their
> earliest expiring timer is before the actually programmed broadcast
> event.
>
> If the programmed broadcast event is far in the future, then this can
> cause stalls or trigger the hung task detector.
>
> Avoid this by telling tick_broadcast_setup_oneshot() explicitly whether
> this is the initial switch over from periodic to oneshot broadcast which
> must take the periodic broadcast mask into account. In the case of
> initialization of a replacement device this prevents that the broadcast
> oneshot mask is modified.
>
> There is a second problem with broadcast device replacement in this
> function. The broadcast device is only armed when the previous state of
> the device was periodic.
>
> That is correct for the switch from periodic broadcast mode to oneshot
> broadcast mode as the underlying broadcast device could operate in
> oneshot state already due to lack of periodic state in hardware. In that
> case it is already armed to expire at the next tick.
>
> For the replacement case this is wrong as the device is in shutdown
> state. That means that any already pending broadcast event will not be
> armed.
>
> This went unnoticed because any CPU which goes idle will observe that
> the broadcast device has an expiry time of KTIME_MAX and therefore any
> CPUs next timer event will be earlier and cause a reprogramming of the
> broadcast device. But that does not guarantee that the events of the
> CPUs which were already in idle are delivered on time.
>
> Fix this by arming the newly installed device for an immediate event
> which will reevaluate the per CPU expiry times and reprogram the
> broadcast device accordingly. This is simpler than caching the last
> expiry time in yet another place or saving it before the device exchange
> and handing it down to the setup function. Replacement of broadcast
> devices is not a frequent operation and usually happens once somewhere
> late in the boot process.
>
> Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
> Reported-by: Victor Hassan <victor@allwinnertech.com>
> Not-Yet-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
> kernel/time/tick-broadcast.c | 106 ++++++++++++++++++++++++++++++-------------
> 1 file changed, 75 insertions(+), 31 deletions(-)
>
> --- a/kernel/time/tick-broadcast.c
> +++ b/kernel/time/tick-broadcast.c
> @@ -35,14 +35,15 @@ static __cacheline_aligned_in_smp DEFINE
> #ifdef CONFIG_TICK_ONESHOT
> static DEFINE_PER_CPU(struct clock_event_device *, tick_oneshot_wakeup_device);
>
> -static void tick_broadcast_setup_oneshot(struct clock_event_device *bc);
> +static void tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic);
> static void tick_broadcast_clear_oneshot(int cpu);
> static void tick_resume_broadcast_oneshot(struct clock_event_device *bc);
> # ifdef CONFIG_HOTPLUG_CPU
> static void tick_broadcast_oneshot_offline(unsigned int cpu);
> # endif
> #else
> -static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) { BUG(); }
> +static inline void
> +tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic) { BUG(); }
> static inline void tick_broadcast_clear_oneshot(int cpu) { }
> static inline void tick_resume_broadcast_oneshot(struct clock_event_device *bc) { }
> # ifdef CONFIG_HOTPLUG_CPU
> @@ -264,7 +265,7 @@ int tick_device_uses_broadcast(struct cl
> if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
> tick_broadcast_start_periodic(bc);
> else
> - tick_broadcast_setup_oneshot(bc);
> + tick_broadcast_setup_oneshot(bc, false);
> ret = 1;
> } else {
> /*
> @@ -500,7 +501,7 @@ void tick_broadcast_control(enum tick_br
> if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
> tick_broadcast_start_periodic(bc);
> else
> - tick_broadcast_setup_oneshot(bc);
> + tick_broadcast_setup_oneshot(bc, false);
> }
> }
> out:
> @@ -1020,48 +1021,89 @@ static inline ktime_t tick_get_next_peri
> /**
> * tick_broadcast_setup_oneshot - setup the broadcast device
> */
> -static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
> +static void tick_broadcast_setup_oneshot(struct clock_event_device *bc,
> + bool from_periodic)
> {
> int cpu = smp_processor_id();
> + ktime_t nexttick = 0;
>
> if (!bc)
> return;
>
> /* Set it up only once ! */
> - if (bc->event_handler != tick_handle_oneshot_broadcast) {
> - int was_periodic = clockevent_state_periodic(bc);
> -
> - bc->event_handler = tick_handle_oneshot_broadcast;
> -
> + if (bc->event_handler == tick_handle_oneshot_broadcast) {
> /*
> - * We must be careful here. There might be other CPUs
> - * waiting for periodic broadcast. We need to set the
> - * oneshot_mask bits for those and program the
> - * broadcast device to fire.
> + * The CPU which switches from periodic to oneshot mode
> + * sets the broadcast oneshot bit for all other CPUs which
> + * are in the general (periodic) broadcast mask to ensure
> + * that CPUs which wait for the periodic broadcast are
> + * woken up.
> + *
> + * Clear the bit for the local CPU as the set bit would
> + * prevent the first tick_broadcast_enter() after this CPU
> + * switched to oneshot state to program the broadcast
> + * device.
> */
> + tick_broadcast_clear_oneshot(cpu);
> + }
> +
> +
> + bc->event_handler = tick_handle_oneshot_broadcast;
> + bc->next_event = KTIME_MAX;
> +
> + /*
> + * When the tick mode is switched from periodic to oneshot it must
> + * be ensured that CPUs which are waiting for periodic broadcast
> + * get their wake-up at the next tick. This is achieved by ORing
> + * tick_broadcast_mask into tick_broadcast_oneshot_mask.
> + *
> + * For other callers, e.g. broadcast device replacement,
> + * tick_broadcast_oneshot_mask must not be touched as this would
> + * set bits for CPUs which are already NOHZ, but not idle. Their
> + * next tick_broadcast_enter() would observe the bit set and fail
> + * to update the expiry time and the broadcast event device.
> + */
> + if (from_periodic) {
> cpumask_copy(tmpmask, tick_broadcast_mask);
> + /* Remove the local CPU as it is obviously not idle */
> cpumask_clear_cpu(cpu, tmpmask);
> - cpumask_or(tick_broadcast_oneshot_mask,
> - tick_broadcast_oneshot_mask, tmpmask);
> + cpumask_or(tick_broadcast_oneshot_mask, tick_broadcast_oneshot_mask, tmpmask);
>
> - if (was_periodic && !cpumask_empty(tmpmask)) {
> - ktime_t nextevt = tick_get_next_period();
> + /*
> + * Ensure that the oneshot broadcast handler will wake the
> + * CPUs which are still waiting for periodic broadcast.
> + */
> + nexttick = tick_get_next_period();
> + tick_broadcast_init_next_event(tmpmask, nexttick);
>
> - clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
> - tick_broadcast_init_next_event(tmpmask, nextevt);
> - tick_broadcast_set_event(bc, cpu, nextevt);
> - } else
> - bc->next_event = KTIME_MAX;
> - } else {
> /*
> - * The first cpu which switches to oneshot mode sets
> - * the bit for all other cpus which are in the general
> - * (periodic) broadcast mask. So the bit is set and
> - * would prevent the first broadcast enter after this
> - * to program the bc device.
> + * If the underlying broadcast clock event device is
> + * already in oneshot state, then there is nothing to do.
> + * The device was already armed for the next tick
> + * in tick_handle_broadcast_periodic()
> */
> - tick_broadcast_clear_oneshot(cpu);
> + if (clockevent_state_oneshot(bc))
> + return;
> }
> +
> + /*
> + * When switching from periodic to oneshot mode arm the broadcast
> + * device for the next tick.
> + *
> + * If the broadcast device has been replaced in oneshot mode and
> + * the oneshot broadcast mask is not empty, then arm it to expire
> + * immediately in order to reevaluate the next expiring timer.
> + * nexttick is 0 and therefore in the past which will cause the
> + * clockevent code to force an event.
> + *
> + * For both cases the programming can be avoided when the oneshot
> + * broadcast mask is empty.
> + *
> + * tick_broadcast_set_event() implicitly switches the broadcast
> + * device to oneshot state.
> + */
> + if (!cpumask_empty(tick_broadcast_oneshot_mask))
> + tick_broadcast_set_event(bc, cpu, nexttick);
> }
>
> /*
> @@ -1070,14 +1112,16 @@ static void tick_broadcast_setup_oneshot
> void tick_broadcast_switch_to_oneshot(void)
> {
> struct clock_event_device *bc;
> + enum tick_device_mode oldmode;
> unsigned long flags;
>
> raw_spin_lock_irqsave(&tick_broadcast_lock, flags);
>
> + oldmode = tick_broadcast_device.mode;
> tick_broadcast_device.mode = TICKDEV_MODE_ONESHOT;
> bc = tick_broadcast_device.evtdev;
> if (bc)
> - tick_broadcast_setup_oneshot(bc);
> + tick_broadcast_setup_oneshot(bc, oldmode == TICKDEV_MODE_PERIODIC);
>
> raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags);
> }
^ permalink raw reply [relevance 14%]
* Re: [PATCH v2] tick/broadcast: Do not set oneshot_mask except was_periodic was true
2023-04-12 0:34 17% [PATCH v2] " Victor Hassan
@ 2023-04-15 21:01 2% ` Thomas Gleixner
2023-04-23 14:16 14% ` Victor Hassan
0 siblings, 2 replies; 200+ results
From: Thomas Gleixner @ 2023-04-15 21:01 UTC (permalink / raw)
To: Victor Hassan, fweisbec, mingo, jindong.yue; +Cc: linux-kernel
Victor!
On Wed, Apr 12 2023 at 08:34, Victor Hassan wrote:
Thanks for tracking this problem down!
> If a broadcast timer is registered after the system switched to oneshot
> mode, a hang_task err could occur like that:
>
> INFO: task kworker/u15:0:7 blocked for more than 120 seconds.
> Tainted: G E 5.15.41-android13-8-00002-xxx #1
> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> task:kworker/u16:0 state:D stack: 9808 pid: 7 ppid: 2 flags:0x00000008
> Workqueue: events_unbound deferred_probe_work_func.cfi_jt
> Call trace:
> __switch_to+0y240/0x490
> __schedule+0x620/0xafc
> schedule+0x110/0x204
> schedule_hrtimeout_range_clock+0x9c/0x118
> usleep_range_state+0x150/0x1ac
> _regulator_do_enable+0x528/0x878
> set_machine_constraints+0x6a0/0xf2c
> regulator_register+0x3ac/0x7ac
> devm_regulator_register+0xbc/0x120
> pmu_ext_regulator_probe+0xb0/0x1b4 [pmu_ext_regulator]
> platform_probe+0x70/0x194
> really_probe+0x320/0x68c
> __driver_probe_device+0x204/0x260
> driver_probe_device+0x48/0x1e0
That backtrace is not really helpful to explain the problem. That's just the
consequence, i.e. the symptom.
Backtraces can help to document the call chain leading to a problem. As
this is _not_ leading to the problem, the backtrace is just a
distraction. See:
https://www.kernel.org/doc/html/latest/process/maintainer-tip.html#changelog
> When the new broadcast timer was registered after the system switched
> to oneshot mode, the broadcast timer was not used as periodic. If the
> oneshot mask was set incorrectly, all cores which did not enter cpu_idle
> state can't enter cpu_idle normally, causing the hrtimer mechanism to
> break.
This is not really a proper problem description. It's obvious that
things break when a mask is set incorrectly. But that lacks a
description of the context and the why the mask is incorrect.
> Like:
>
> * CPU 1 stop its tick, next event is in one hour. It calls
> tick_broadcast_enter() and goes to sleep.
So there is already a broadcast device installed, right?
> * CPU 1 gets an interrupt that enqueues a new timer expiring in the next jiffy
> (note it's not yet actually programmed in the tick device)
> * CPU 1 call tick_broadcast_exit().
> * CPU 0 registers new broadcast device and sets CPU 1 in tick_broadcast_oneshot_mask
This lacks an explanation why CPU0 sets CPU1 in that mask. It does not
_set_ it explicitely, only implicitely by ORing the periodic broadcast
cpumask over.
Now the question is why is CPU1 set in the periodic broadcast mask when
the CPU already switched over to NOHZ mode?
That needs to be explained too.
> * CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
> is in one hour (because the recently enqueued timer for CPU 1 hasn't been programmed
> yet), so it programs the broadcast to that 1 hour deadline.
> * CPU 1 runs tick_nohz_idle_stop_tick() which eventually writes and program
> dev->next_event to next jiffy
> * CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter() is ignored because
> the CPU is already in tick_broadcast_oneshot_mask, so the dev->next_event
> change isn't propagated to broadcast.
> * CPU 1 goes to sleep for 1 hour.
Also please use tabular style to explain the parallel events as
explained in the documentation.
> This patch fixes the issue by moving the update action about oneshot
git grep 'This patch' Documentation/process/
> Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
Pointless new line.
> Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Ditto. And please use the tag ordering from the tip documentation.
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> ---
> kernel/time/tick-broadcast.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
> index 93bf2b4e47e5..fdbbba487978 100644
> --- a/kernel/time/tick-broadcast.c
> +++ b/kernel/time/tick-broadcast.c
> @@ -1041,12 +1041,13 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
> */
> cpumask_copy(tmpmask, tick_broadcast_mask);
> cpumask_clear_cpu(cpu, tmpmask);
> - cpumask_or(tick_broadcast_oneshot_mask,
> - tick_broadcast_oneshot_mask, tmpmask);
This breaks the case when the broadcast device was already in use before
switching to oneshot broadcast mode and the underlying clock event
device does not support periodic state, i.e. it operates internally in
one shot state.
The condition avoids reprogramming in that case because the device is
already armed for the next tick when the periodic broadcast mask is not
empty, so no further action required.
But with moving the OR operation into the condition the CPUs in the
periodic broadcast mask are then not woken up.
There is a distinction between the tick/broadcast mode and the
clockevent device state.
tick/broadcast clockevent
TICK_MODE_PERIODIC CLOCK_EVENT_STATE_PERIODIC (if supported) or _ONESHOT
TICK_MODE_ONESHOT (NOHZ) CLOCK_EVENT_STATE_ONESHOT
The tick/broadcast mode is a software state. The clockevent state is a
hardware state.
After more analysis of that code it turns out that this is even more
broken because of this:
CPU0 CPU1
idle()
tick_broadcast_enter()
test_and_set_cpu(cpu, oneshot_mask);
shutdown_cpu_local_device();
tick_broadcast_set_event();
sleep_deep();
// All good. Broadcast will wake the CPU up
install_new_broadcast_device(newdev)
tick_broadcast_setup_oneshot(newdev)
if (was_periodic) <- Path not taken because device is in shutdown state
...
else
newdev->next_event = KTIME_MAX;
So what switches the new device into oneshot state and what wakes CPU1
on time?
The switch to oneshot mode happens when the next CPU goes idle and
invokes tick_broadcast_set_event() because that sets up one shot state
implicitly.
The wake-up on time for CPU1 happens only when the next CPU goes idle
before the expiry time and queues a broadcast event which is the same or
earlier than CPU1s event, but that's far from correct.
It will eventually be delivered, but that might be way too late and even
cause stalls or hung task events in the worst case.
Duh. What was that Gleixner dude thinking...
Just for the record. I hated that broadcast code from day one.
The irony is that the only architecture which required it back in the
days (x86) and caused me to write this horror in order to make NOHZ
possible has by now functional timers which just work even in deeper
idle states. Therefore x86 does not use that code anymore on any
halfways contemporary system.
Though all other architectures had to make the same mistake again...
Completely untested patch below.
Thanks,
tglx
---
From: Thomas Gleixner <tglx@linutronix.de>
Subject: tick/broadcast: Make broadcast device replacement work correctly
Date: Wed, 12 Apr 2023 08:34:25 +0800
When a tick broadcast clockevent device is initialized for one shot mode
then tick_broadcast_setup_oneshot() OR's the periodic broadcast mode
cpumask into the oneshot broadcast cpumask.
This is required when switching from periodic broadcast mode to oneshot
broadcast mode to ensure that CPUs which are waiting for periodic
broadcast are woken up on the next tick.
But it is subtly broken, when an active broadcast device is replaced and
the system is already in oneshot (NOHZ/HIGHRES) mode. Victor observed
this and debugged the issue.
Then the OR of the periodic broadcast CPU mask is wrong as the periodic
cpumask bits are sticky after tick_broadcast_enable() set it for a CPU
unless explicitly cleared via tick_broadcast_disable().
That means that this sets all other CPUs which have tick broadcasting
enabled at that point unconditionally in the oneshot broadcast mask.
If the affected CPUs were already idle and had their bits set in the
oneshot broadcast mask then this does no harm. But for non idle CPUs
which were not set this corrupts their state.
On their next invocation of tick_broadcast_enable() they observe the bit
set, which indicates that the broadcast for the CPU is already set up.
As a consequence they fail to update the broadcast event even if their
earliest expiring timer is before the actually programmed broadcast
event.
If the programmed broadcast event is far in the future, then this can
cause stalls or trigger the hung task detector.
Avoid this by telling tick_broadcast_setup_oneshot() explicitly whether
this is the initial switch over from periodic to oneshot broadcast which
must take the periodic broadcast mask into account. In the case of
initialization of a replacement device this prevents that the broadcast
oneshot mask is modified.
There is a second problem with broadcast device replacement in this
function. The broadcast device is only armed when the previous state of
the device was periodic.
That is correct for the switch from periodic broadcast mode to oneshot
broadcast mode as the underlying broadcast device could operate in
oneshot state already due to lack of periodic state in hardware. In that
case it is already armed to expire at the next tick.
For the replacement case this is wrong as the device is in shutdown
state. That means that any already pending broadcast event will not be
armed.
This went unnoticed because any CPU which goes idle will observe that
the broadcast device has an expiry time of KTIME_MAX and therefore any
CPUs next timer event will be earlier and cause a reprogramming of the
broadcast device. But that does not guarantee that the events of the
CPUs which were already in idle are delivered on time.
Fix this by arming the newly installed device for an immediate event
which will reevaluate the per CPU expiry times and reprogram the
broadcast device accordingly. This is simpler than caching the last
expiry time in yet another place or saving it before the device exchange
and handing it down to the setup function. Replacement of broadcast
devices is not a frequent operation and usually happens once somewhere
late in the boot process.
Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
Reported-by: Victor Hassan <victor@allwinnertech.com>
Not-Yet-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/time/tick-broadcast.c | 106 ++++++++++++++++++++++++++++++-------------
1 file changed, 75 insertions(+), 31 deletions(-)
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -35,14 +35,15 @@ static __cacheline_aligned_in_smp DEFINE
#ifdef CONFIG_TICK_ONESHOT
static DEFINE_PER_CPU(struct clock_event_device *, tick_oneshot_wakeup_device);
-static void tick_broadcast_setup_oneshot(struct clock_event_device *bc);
+static void tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic);
static void tick_broadcast_clear_oneshot(int cpu);
static void tick_resume_broadcast_oneshot(struct clock_event_device *bc);
# ifdef CONFIG_HOTPLUG_CPU
static void tick_broadcast_oneshot_offline(unsigned int cpu);
# endif
#else
-static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) { BUG(); }
+static inline void
+tick_broadcast_setup_oneshot(struct clock_event_device *bc, bool from_periodic) { BUG(); }
static inline void tick_broadcast_clear_oneshot(int cpu) { }
static inline void tick_resume_broadcast_oneshot(struct clock_event_device *bc) { }
# ifdef CONFIG_HOTPLUG_CPU
@@ -264,7 +265,7 @@ int tick_device_uses_broadcast(struct cl
if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
tick_broadcast_start_periodic(bc);
else
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, false);
ret = 1;
} else {
/*
@@ -500,7 +501,7 @@ void tick_broadcast_control(enum tick_br
if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
tick_broadcast_start_periodic(bc);
else
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, false);
}
}
out:
@@ -1020,48 +1021,89 @@ static inline ktime_t tick_get_next_peri
/**
* tick_broadcast_setup_oneshot - setup the broadcast device
*/
-static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
+static void tick_broadcast_setup_oneshot(struct clock_event_device *bc,
+ bool from_periodic)
{
int cpu = smp_processor_id();
+ ktime_t nexttick = 0;
if (!bc)
return;
/* Set it up only once ! */
- if (bc->event_handler != tick_handle_oneshot_broadcast) {
- int was_periodic = clockevent_state_periodic(bc);
-
- bc->event_handler = tick_handle_oneshot_broadcast;
-
+ if (bc->event_handler == tick_handle_oneshot_broadcast) {
/*
- * We must be careful here. There might be other CPUs
- * waiting for periodic broadcast. We need to set the
- * oneshot_mask bits for those and program the
- * broadcast device to fire.
+ * The CPU which switches from periodic to oneshot mode
+ * sets the broadcast oneshot bit for all other CPUs which
+ * are in the general (periodic) broadcast mask to ensure
+ * that CPUs which wait for the periodic broadcast are
+ * woken up.
+ *
+ * Clear the bit for the local CPU as the set bit would
+ * prevent the first tick_broadcast_enter() after this CPU
+ * switched to oneshot state to program the broadcast
+ * device.
*/
+ tick_broadcast_clear_oneshot(cpu);
+ }
+
+
+ bc->event_handler = tick_handle_oneshot_broadcast;
+ bc->next_event = KTIME_MAX;
+
+ /*
+ * When the tick mode is switched from periodic to oneshot it must
+ * be ensured that CPUs which are waiting for periodic broadcast
+ * get their wake-up at the next tick. This is achieved by ORing
+ * tick_broadcast_mask into tick_broadcast_oneshot_mask.
+ *
+ * For other callers, e.g. broadcast device replacement,
+ * tick_broadcast_oneshot_mask must not be touched as this would
+ * set bits for CPUs which are already NOHZ, but not idle. Their
+ * next tick_broadcast_enter() would observe the bit set and fail
+ * to update the expiry time and the broadcast event device.
+ */
+ if (from_periodic) {
cpumask_copy(tmpmask, tick_broadcast_mask);
+ /* Remove the local CPU as it is obviously not idle */
cpumask_clear_cpu(cpu, tmpmask);
- cpumask_or(tick_broadcast_oneshot_mask,
- tick_broadcast_oneshot_mask, tmpmask);
+ cpumask_or(tick_broadcast_oneshot_mask, tick_broadcast_oneshot_mask, tmpmask);
- if (was_periodic && !cpumask_empty(tmpmask)) {
- ktime_t nextevt = tick_get_next_period();
+ /*
+ * Ensure that the oneshot broadcast handler will wake the
+ * CPUs which are still waiting for periodic broadcast.
+ */
+ nexttick = tick_get_next_period();
+ tick_broadcast_init_next_event(tmpmask, nexttick);
- clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
- tick_broadcast_init_next_event(tmpmask, nextevt);
- tick_broadcast_set_event(bc, cpu, nextevt);
- } else
- bc->next_event = KTIME_MAX;
- } else {
/*
- * The first cpu which switches to oneshot mode sets
- * the bit for all other cpus which are in the general
- * (periodic) broadcast mask. So the bit is set and
- * would prevent the first broadcast enter after this
- * to program the bc device.
+ * If the underlying broadcast clock event device is
+ * already in oneshot state, then there is nothing to do.
+ * The device was already armed for the next tick
+ * in tick_handle_broadcast_periodic()
*/
- tick_broadcast_clear_oneshot(cpu);
+ if (clockevent_state_oneshot(bc))
+ return;
}
+
+ /*
+ * When switching from periodic to oneshot mode arm the broadcast
+ * device for the next tick.
+ *
+ * If the broadcast device has been replaced in oneshot mode and
+ * the oneshot broadcast mask is not empty, then arm it to expire
+ * immediately in order to reevaluate the next expiring timer.
+ * nexttick is 0 and therefore in the past which will cause the
+ * clockevent code to force an event.
+ *
+ * For both cases the programming can be avoided when the oneshot
+ * broadcast mask is empty.
+ *
+ * tick_broadcast_set_event() implicitly switches the broadcast
+ * device to oneshot state.
+ */
+ if (!cpumask_empty(tick_broadcast_oneshot_mask))
+ tick_broadcast_set_event(bc, cpu, nexttick);
}
/*
@@ -1070,14 +1112,16 @@ static void tick_broadcast_setup_oneshot
void tick_broadcast_switch_to_oneshot(void)
{
struct clock_event_device *bc;
+ enum tick_device_mode oldmode;
unsigned long flags;
raw_spin_lock_irqsave(&tick_broadcast_lock, flags);
+ oldmode = tick_broadcast_device.mode;
tick_broadcast_device.mode = TICKDEV_MODE_ONESHOT;
bc = tick_broadcast_device.evtdev;
if (bc)
- tick_broadcast_setup_oneshot(bc);
+ tick_broadcast_setup_oneshot(bc, oldmode == TICKDEV_MODE_PERIODIC);
raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags);
}
^ permalink raw reply [relevance 2%]
* [PATCH v2] tick/broadcast: Do not set oneshot_mask except was_periodic was true
@ 2023-04-12 0:34 17% Victor Hassan
2023-04-15 21:01 2% ` Thomas Gleixner
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2023-04-12 0:34 UTC (permalink / raw)
To: fweisbec, tglx, mingo, jindong.yue; +Cc: linux-kernel
If a broadcast timer is registered after the system switched to oneshot
mode, a hang_task err could occur like that:
INFO: task kworker/u15:0:7 blocked for more than 120 seconds.
Tainted: G E 5.15.41-android13-8-00002-xxx #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kworker/u16:0 state:D stack: 9808 pid: 7 ppid: 2 flags:0x00000008
Workqueue: events_unbound deferred_probe_work_func.cfi_jt
Call trace:
__switch_to+0y240/0x490
__schedule+0x620/0xafc
schedule+0x110/0x204
schedule_hrtimeout_range_clock+0x9c/0x118
usleep_range_state+0x150/0x1ac
_regulator_do_enable+0x528/0x878
set_machine_constraints+0x6a0/0xf2c
regulator_register+0x3ac/0x7ac
devm_regulator_register+0xbc/0x120
pmu_ext_regulator_probe+0xb0/0x1b4 [pmu_ext_regulator]
platform_probe+0x70/0x194
really_probe+0x320/0x68c
__driver_probe_device+0x204/0x260
driver_probe_device+0x48/0x1e0
When the new broadcast timer was registered after the system switched
to oneshot mode, the broadcast timer was not used as periodic. If the
oneshot mask was set incorrectly, all cores which did not enter cpu_idle
state can't enter cpu_idle normally, causing the hrtimer mechanism to
break. Like:
* CPU 1 stop its tick, next event is in one hour. It calls
tick_broadcast_enter() and goes to sleep.
* CPU 1 gets an interrupt that enqueues a new timer expiring in the next jiffy
(note it's not yet actually programmed in the tick device)
* CPU 1 call tick_broadcast_exit().
* CPU 0 registers new broadcast device and sets CPU 1 in tick_broadcast_oneshot_mask
* CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
is in one hour (because the recently enqueued timer for CPU 1 hasn't been programmed
yet), so it programs the broadcast to that 1 hour deadline.
* CPU 1 runs tick_nohz_idle_stop_tick() which eventually writes and program
dev->next_event to next jiffy
* CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter() is ignored because
the CPU is already in tick_broadcast_oneshot_mask, so the dev->next_event
change isn't propagated to broadcast.
* CPU 1 goes to sleep for 1 hour.
This patch fixes the issue by moving the update action about oneshot
mask to a more strict conditions. The tick_broadcast_setup_oneshot would
be called in two typical condition, and they all will work.
1. tick_handle_periodic -> tick_broadcast_setup_oneshot
The origin broadcast was periodic, so it can set the oneshot_mask bits
for those waiting for periodic broadcast and program the broadcast timer
to fire.
2. tick_install_broadcast_device -> tick_broadcast_setup_oneshot
The origin broadcast was oneshot, so the cores which enter the cpu_idle
already used the oneshot_mask bits. It is unnecessary to update the
oneshot_mask.
Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
kernel/time/tick-broadcast.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 93bf2b4e47e5..fdbbba487978 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -1041,12 +1041,13 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
*/
cpumask_copy(tmpmask, tick_broadcast_mask);
cpumask_clear_cpu(cpu, tmpmask);
- cpumask_or(tick_broadcast_oneshot_mask,
- tick_broadcast_oneshot_mask, tmpmask);
if (was_periodic && !cpumask_empty(tmpmask)) {
ktime_t nextevt = tick_get_next_period();
+ cpumask_or(tick_broadcast_oneshot_mask,
+ tick_broadcast_oneshot_mask, tmpmask);
+
clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
tick_broadcast_init_next_event(tmpmask, nextevt);
tick_broadcast_set_event(bc, cpu, nextevt);
--
2.29.0
^ permalink raw reply related [relevance 17%]
* Re: [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true
2023-04-07 6:51 14% ` Victor Hassan
@ 2023-04-10 7:06 14% ` Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2023-04-10 7:06 UTC (permalink / raw)
To: Frederic Weisbecker; +Cc: fweisbec, tglx, mingo, jindong.yue, linux-kernel
On 4/7/2023 2:51 PM, Victor Hassan wrote:
>
>
> On 4/4/2023 8:21 PM, Frederic Weisbecker wrote:
>> On Tue, Apr 04, 2023 at 07:37:06PM +0800, Victor Hassan wrote:
>>>>
>>>> Leading to such race:
>>>>
>>>> * CPU 1 stop its tick, next event is in one hour
>>>> * CPU 0 registers new broadcast and sets CPU 1 in
>>>> tick_broadcast_oneshot_mask
>>>> * CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter()
>>>> is ignored because
>>>> the CPU is already in tick_broadcast_oneshot_mask
>>>
>>> Yes.
>>>
>>>> * CPU 1 goes to sleep
>>>> * CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
>>>> is in one hour, program the broadcast to that deadline
>>>> * CPU 1 gets an interrupt that enqueues a new timer expiring in the
>>>> next jiffy
>>>> * CPU 1 don't call tick_broadcast_exit and thus don't remove itself
>>>> from
>>>> tick_broadcast_oneshot_mask
>>>
>>> I'm not sure about this... Actually, I believe CPU 1 *will* call
>>> tick_broadcast_exit in this condition because I cannot find a
>>> limitation on
>>> this execution path.
>>
>> You're right, what I wrote doesn't make sense. Let me try again:
>>
>> * CPU 1 stop its tick, next event is in one hour. It calls
>> tick_broadcast_enter() and goes to sleep.
>> * CPU 1 gets an interrupt that enqueues a new timer expiring in the
>> next jiffy
>> (note it's not yet actually programmed in the tick device)
>> * CPU 1 call tick_broadcast_exit().
>>
>> * CPU 0 registers new broadcast device and sets CPU 1 in
>> tick_broadcast_oneshot_mask
>>
>> * CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
>> is in one hour (because the recently enqueued timer for CPU 1
>> hasn't been programmed
>> yet), so it programs the broadcast to that 1 hour deadline.
>>
>> * CPU 1 runs tick_nohz_idle_stop_tick() which eventually writes and
>> program
>> dev->next_event to next jiffy
>> * CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter() is
>> ignored because
>> the CPU is already in tick_broadcast_oneshot_mask, so the
>> dev->next_event
>> change isn't propagated to broadcast.
>>
>> * CPU 1 goes to sleep for 1 hour.
>
> Hi Frederic,
> Yes, I think that make sense :)
Hi Frederic,
If we have reached a consensus, may I add "Reviewed-by: Frederic"
in the next patch?
>
>
>>
>> Does it make more sense? There might be more simple scenario of course.
>>
>> Thanks.
>
^ permalink raw reply [relevance 14%]
* Re: [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true
@ 2023-04-07 6:51 14% ` Victor Hassan
2023-04-10 7:06 14% ` Victor Hassan
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2023-04-07 6:51 UTC (permalink / raw)
To: Frederic Weisbecker; +Cc: fweisbec, tglx, mingo, jindong.yue, linux-kernel
On 4/4/2023 8:21 PM, Frederic Weisbecker wrote:
> On Tue, Apr 04, 2023 at 07:37:06PM +0800, Victor Hassan wrote:
>>>
>>> Leading to such race:
>>>
>>> * CPU 1 stop its tick, next event is in one hour
>>> * CPU 0 registers new broadcast and sets CPU 1 in tick_broadcast_oneshot_mask
>>> * CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter() is ignored because
>>> the CPU is already in tick_broadcast_oneshot_mask
>>
>> Yes.
>>
>>> * CPU 1 goes to sleep
>>> * CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
>>> is in one hour, program the broadcast to that deadline
>>> * CPU 1 gets an interrupt that enqueues a new timer expiring in the next jiffy
>>> * CPU 1 don't call tick_broadcast_exit and thus don't remove itself from
>>> tick_broadcast_oneshot_mask
>>
>> I'm not sure about this... Actually, I believe CPU 1 *will* call
>> tick_broadcast_exit in this condition because I cannot find a limitation on
>> this execution path.
>
> You're right, what I wrote doesn't make sense. Let me try again:
>
> * CPU 1 stop its tick, next event is in one hour. It calls
> tick_broadcast_enter() and goes to sleep.
>
> * CPU 1 gets an interrupt that enqueues a new timer expiring in the next jiffy
> (note it's not yet actually programmed in the tick device)
>
> * CPU 1 call tick_broadcast_exit().
>
> * CPU 0 registers new broadcast device and sets CPU 1 in tick_broadcast_oneshot_mask
>
> * CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
> is in one hour (because the recently enqueued timer for CPU 1 hasn't been programmed
> yet), so it programs the broadcast to that 1 hour deadline.
>
> * CPU 1 runs tick_nohz_idle_stop_tick() which eventually writes and program
> dev->next_event to next jiffy
>
> * CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter() is ignored because
> the CPU is already in tick_broadcast_oneshot_mask, so the dev->next_event
> change isn't propagated to broadcast.
>
> * CPU 1 goes to sleep for 1 hour.
Hi Frederic,
Yes, I think that make sense :)
>
> Does it make more sense? There might be more simple scenario of course.
>
> Thanks.
^ permalink raw reply [relevance 14%]
* Re: [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true
2023-04-03 10:26 0% ` Frederic Weisbecker
@ 2023-04-04 11:37 14% ` Victor Hassan
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2023-04-04 11:37 UTC (permalink / raw)
To: Frederic Weisbecker; +Cc: fweisbec, tglx, mingo, jindong.yue, linux-kernel
On 4/3/2023 6:26 PM, Frederic Weisbecker wrote:
> On Tue, Mar 28, 2023 at 02:36:29PM +0800, Victor Hassan wrote:
>> If a broadcast timer is registered after the system switched to oneshot
>> mode, a hang_task err could occur like that:
>>
>> INFO: task kworker/u15:0:7 blocked for more than 120 seconds.
>> Tainted: G E 5.15.41-android13-8-00002-xxx #1
>> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
>> task:kworker/u16:0 state:D stack: 9808 pid: 7 ppid: 2 flags:0x00000008
>> Workqueue: events_unbound deferred_probe_work_func.cfi_jt
>> Call trace:
>> __switch_to+0y240/0x490
>> __schedule+0x620/0xafc
>> schedule+0x110/0x204
>> schedule_hrtimeout_range_clock+0x9c/0x118
>> usleep_range_state+0x150/0x1ac
>> _regulator_do_enable+0x528/0x878
>> set_machine_constraints+0x6a0/0xf2c
>> regulator_register+0x3ac/0x7ac
>> devm_regulator_register+0xbc/0x120
>> pmu_ext_regulator_probe+0xb0/0x1b4 [pmu_ext_regulator]
>> platform_probe+0x70/0x194
>> really_proe+0x320/0x68c
>> __driver_probe_device+0x204/0x260
>> driver_probe_device+0x48/0x1e0
>>
>> When the new broadcast timer was registered after the system switched
>> to oneshot mode, the broadcast timer was not used as periodic. If the
>> oneshot mask was set incorrectly, all cores which did not enter cpu_idle
>> state can't enter cpu_idle normally, causing the hrtimer mechanism to
>> break.
>>
>> This patch fixes the issue by moving the update action about oneshot
>> mask to a more strict conditions. The tick_broadcast_setup_oneshot would
>> be called in two typical condition, and they all will work.
>>
>> 1. tick_handle_periodic -> tick_broadcast_setup_oneshot
>>
>> The origin broadcast was periodic, so it can set the oneshot_mask bits
>> for those waiting for periodic broadcast and program the broadcast timer
>> to fire.
>>
>> 2. tick_install_broadcast_device -> tick_broadcast_setup_oneshot
>>
>> The origin broadcast was oneshot, so the cores which enter the cpu_idle
>> already used the oneshot_mask bits. It is unnecessary to update the
>> oneshot_mask.
>>
>> Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
>>
>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>> ---
>> kernel/time/tick-broadcast.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
>> index 93bf2b4e47e5..fdbbba487978 100644
>> --- a/kernel/time/tick-broadcast.c
>> +++ b/kernel/time/tick-broadcast.c
>> @@ -1041,12 +1041,13 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
>> */
>> cpumask_copy(tmpmask, tick_broadcast_mask);
>> cpumask_clear_cpu(cpu, tmpmask);
>> - cpumask_or(tick_broadcast_oneshot_mask,
>> - tick_broadcast_oneshot_mask, tmpmask);
>>
>> if (was_periodic && !cpumask_empty(tmpmask)) {
>> ktime_t nextevt = tick_get_next_period();
>>
>> + cpumask_or(tick_broadcast_oneshot_mask,
>> + tick_broadcast_oneshot_mask, tmpmask);
>> +
>
> Good catch, it looks like one issue that can trigger is due to the resulting
> ignored calls to tick_broadcast_exit(). Indeed if the cpu is already in
> tick_broadcast_oneshot_mask then cpuidle won't call the exit
Hi Frederic,
Thanks for the review. Still I have a few questions and would like to
discuss them further.
>
> Leading to such race:
>
> * CPU 1 stop its tick, next event is in one hour
> * CPU 0 registers new broadcast and sets CPU 1 in tick_broadcast_oneshot_mask
> * CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter() is ignored because
> the CPU is already in tick_broadcast_oneshot_mask
Yes.
> * CPU 1 goes to sleep
> * CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
> is in one hour, program the broadcast to that deadline
> * CPU 1 gets an interrupt that enqueues a new timer expiring in the next jiffy
> * CPU 1 don't call tick_broadcast_exit and thus don't remove itself from
> tick_broadcast_oneshot_mask
I'm not sure about this... Actually, I believe CPU 1 *will* call
tick_broadcast_exit in this condition because I cannot find a limitation
on this execution path.
> * CPU 1 re-enters in cpuidle_enter_state(), tick_broadcast_enter() is again
> ignored so the new timer isn't propagated to the broadcast.
> * CPU 1 goes to sleep and won't be woken before one hour.
>
>
> Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
>
>
> Thanks.
>
>
>
>
>> clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
>> tick_broadcast_init_next_event(tmpmask, nextevt);
>> tick_broadcast_set_event(bc, cpu, nextevt);
>> --
>> 2.29.0
>>
^ permalink raw reply [relevance 14%]
* Re: [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true
2023-03-28 6:36 18% [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true Victor Hassan
2023-03-31 1:46 14% ` Victor Hassan
@ 2023-04-03 10:26 0% ` Frederic Weisbecker
2023-04-04 11:37 14% ` Victor Hassan
1 sibling, 1 reply; 200+ results
From: Frederic Weisbecker @ 2023-04-03 10:26 UTC (permalink / raw)
To: Victor Hassan; +Cc: fweisbec, tglx, mingo, jindong.yue, linux-kernel
On Tue, Mar 28, 2023 at 02:36:29PM +0800, Victor Hassan wrote:
> If a broadcast timer is registered after the system switched to oneshot
> mode, a hang_task err could occur like that:
>
> INFO: task kworker/u15:0:7 blocked for more than 120 seconds.
> Tainted: G E 5.15.41-android13-8-00002-xxx #1
> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> task:kworker/u16:0 state:D stack: 9808 pid: 7 ppid: 2 flags:0x00000008
> Workqueue: events_unbound deferred_probe_work_func.cfi_jt
> Call trace:
> __switch_to+0y240/0x490
> __schedule+0x620/0xafc
> schedule+0x110/0x204
> schedule_hrtimeout_range_clock+0x9c/0x118
> usleep_range_state+0x150/0x1ac
> _regulator_do_enable+0x528/0x878
> set_machine_constraints+0x6a0/0xf2c
> regulator_register+0x3ac/0x7ac
> devm_regulator_register+0xbc/0x120
> pmu_ext_regulator_probe+0xb0/0x1b4 [pmu_ext_regulator]
> platform_probe+0x70/0x194
> really_proe+0x320/0x68c
> __driver_probe_device+0x204/0x260
> driver_probe_device+0x48/0x1e0
>
> When the new broadcast timer was registered after the system switched
> to oneshot mode, the broadcast timer was not used as periodic. If the
> oneshot mask was set incorrectly, all cores which did not enter cpu_idle
> state can't enter cpu_idle normally, causing the hrtimer mechanism to
> break.
>
> This patch fixes the issue by moving the update action about oneshot
> mask to a more strict conditions. The tick_broadcast_setup_oneshot would
> be called in two typical condition, and they all will work.
>
> 1. tick_handle_periodic -> tick_broadcast_setup_oneshot
>
> The origin broadcast was periodic, so it can set the oneshot_mask bits
> for those waiting for periodic broadcast and program the broadcast timer
> to fire.
>
> 2. tick_install_broadcast_device -> tick_broadcast_setup_oneshot
>
> The origin broadcast was oneshot, so the cores which enter the cpu_idle
> already used the oneshot_mask bits. It is unnecessary to update the
> oneshot_mask.
>
> Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> ---
> kernel/time/tick-broadcast.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
> index 93bf2b4e47e5..fdbbba487978 100644
> --- a/kernel/time/tick-broadcast.c
> +++ b/kernel/time/tick-broadcast.c
> @@ -1041,12 +1041,13 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
> */
> cpumask_copy(tmpmask, tick_broadcast_mask);
> cpumask_clear_cpu(cpu, tmpmask);
> - cpumask_or(tick_broadcast_oneshot_mask,
> - tick_broadcast_oneshot_mask, tmpmask);
>
> if (was_periodic && !cpumask_empty(tmpmask)) {
> ktime_t nextevt = tick_get_next_period();
>
> + cpumask_or(tick_broadcast_oneshot_mask,
> + tick_broadcast_oneshot_mask, tmpmask);
> +
Good catch, it looks like one issue that can trigger is due to the resulting
ignored calls to tick_broadcast_exit(). Indeed if the cpu is already in
tick_broadcast_oneshot_mask then cpuidle won't call the exit.
Leading to such race:
* CPU 1 stop its tick, next event is in one hour
* CPU 0 registers new broadcast and sets CPU 1 in tick_broadcast_oneshot_mask
* CPU 1 runs into cpuidle_enter_state(), and tick_broadcast_enter() is ignored because
the CPU is already in tick_broadcast_oneshot_mask
* CPU 1 goes to sleep
* CPU 0 runs the broadcast callback, sees that the next timer for CPU 1
is in one hour, program the broadcast to that deadline
* CPU 1 gets an interrupt that enqueues a new timer expiring in the next jiffy
* CPU 1 don't call tick_broadcast_exit and thus don't remove itself from
tick_broadcast_oneshot_mask
* CPU 1 re-enters in cpuidle_enter_state(), tick_broadcast_enter() is again
ignored so the new timer isn't propagated to the broadcast.
* CPU 1 goes to sleep and won't be woken before one hour.
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Thanks.
> clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
> tick_broadcast_init_next_event(tmpmask, nextevt);
> tick_broadcast_set_event(bc, cpu, nextevt);
> --
> 2.29.0
>
^ permalink raw reply [relevance 0%]
* Re: [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true
2023-03-28 6:36 18% [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true Victor Hassan
@ 2023-03-31 1:46 14% ` Victor Hassan
2023-04-03 10:26 0% ` Frederic Weisbecker
1 sibling, 0 replies; 200+ results
From: Victor Hassan @ 2023-03-31 1:46 UTC (permalink / raw)
To: fweisbec, tglx, mingo, jindong.yue; +Cc: linux-kernel
On 3/28/2023 2:36 PM, Victor Hassan wrote:
> If a broadcast timer is registered after the system switched to oneshot
> mode, a hang_task err could occur like that:
>
> INFO: task kworker/u15:0:7 blocked for more than 120 seconds.
> Tainted: G E 5.15.41-android13-8-00002-xxx #1
> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> task:kworker/u16:0 state:D stack: 9808 pid: 7 ppid: 2 flags:0x00000008
> Workqueue: events_unbound deferred_probe_work_func.cfi_jt
> Call trace:
> __switch_to+0y240/0x490
> __schedule+0x620/0xafc
> schedule+0x110/0x204
> schedule_hrtimeout_range_clock+0x9c/0x118
> usleep_range_state+0x150/0x1ac
> _regulator_do_enable+0x528/0x878
> set_machine_constraints+0x6a0/0xf2c
> regulator_register+0x3ac/0x7ac
> devm_regulator_register+0xbc/0x120
> pmu_ext_regulator_probe+0xb0/0x1b4 [pmu_ext_regulator]
> platform_probe+0x70/0x194
> really_proe+0x320/0x68c
> __driver_probe_device+0x204/0x260
> driver_probe_device+0x48/0x1e0
>
> When the new broadcast timer was registered after the system switched
> to oneshot mode, the broadcast timer was not used as periodic. If the
> oneshot mask was set incorrectly, all cores which did not enter cpu_idle
> state can't enter cpu_idle normally, causing the hrtimer mechanism to
> break.
>
> This patch fixes the issue by moving the update action about oneshot
> mask to a more strict conditions. The tick_broadcast_setup_oneshot would
> be called in two typical condition, and they all will work.
>
> 1. tick_handle_periodic -> tick_broadcast_setup_oneshot
>
> The origin broadcast was periodic, so it can set the oneshot_mask bits
> for those waiting for periodic broadcast and program the broadcast timer
> to fire.
>
> 2. tick_install_broadcast_device -> tick_broadcast_setup_oneshot
>
> The origin broadcast was oneshot, so the cores which enter the cpu_idle
> already used the oneshot_mask bits. It is unnecessary to update the
> oneshot_mask.
>
> Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> ---
> kernel/time/tick-broadcast.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
> index 93bf2b4e47e5..fdbbba487978 100644
> --- a/kernel/time/tick-broadcast.c
> +++ b/kernel/time/tick-broadcast.c
> @@ -1041,12 +1041,13 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
> */
> cpumask_copy(tmpmask, tick_broadcast_mask);
> cpumask_clear_cpu(cpu, tmpmask);
> - cpumask_or(tick_broadcast_oneshot_mask,
> - tick_broadcast_oneshot_mask, tmpmask);
>
> if (was_periodic && !cpumask_empty(tmpmask)) {
> ktime_t nextevt = tick_get_next_period();
>
> + cpumask_or(tick_broadcast_oneshot_mask,
> + tick_broadcast_oneshot_mask, tmpmask);
> +
> clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
> tick_broadcast_init_next_event(tmpmask, nextevt);
> tick_broadcast_set_event(bc, cpu, nextevt);
Friendly ping.
^ permalink raw reply [relevance 14%]
* [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true
@ 2023-03-28 6:36 18% Victor Hassan
2023-03-31 1:46 14% ` Victor Hassan
2023-04-03 10:26 0% ` Frederic Weisbecker
0 siblings, 2 replies; 200+ results
From: Victor Hassan @ 2023-03-28 6:36 UTC (permalink / raw)
To: fweisbec, tglx, mingo, jindong.yue; +Cc: linux-kernel
If a broadcast timer is registered after the system switched to oneshot
mode, a hang_task err could occur like that:
INFO: task kworker/u15:0:7 blocked for more than 120 seconds.
Tainted: G E 5.15.41-android13-8-00002-xxx #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kworker/u16:0 state:D stack: 9808 pid: 7 ppid: 2 flags:0x00000008
Workqueue: events_unbound deferred_probe_work_func.cfi_jt
Call trace:
__switch_to+0y240/0x490
__schedule+0x620/0xafc
schedule+0x110/0x204
schedule_hrtimeout_range_clock+0x9c/0x118
usleep_range_state+0x150/0x1ac
_regulator_do_enable+0x528/0x878
set_machine_constraints+0x6a0/0xf2c
regulator_register+0x3ac/0x7ac
devm_regulator_register+0xbc/0x120
pmu_ext_regulator_probe+0xb0/0x1b4 [pmu_ext_regulator]
platform_probe+0x70/0x194
really_proe+0x320/0x68c
__driver_probe_device+0x204/0x260
driver_probe_device+0x48/0x1e0
When the new broadcast timer was registered after the system switched
to oneshot mode, the broadcast timer was not used as periodic. If the
oneshot mask was set incorrectly, all cores which did not enter cpu_idle
state can't enter cpu_idle normally, causing the hrtimer mechanism to
break.
This patch fixes the issue by moving the update action about oneshot
mask to a more strict conditions. The tick_broadcast_setup_oneshot would
be called in two typical condition, and they all will work.
1. tick_handle_periodic -> tick_broadcast_setup_oneshot
The origin broadcast was periodic, so it can set the oneshot_mask bits
for those waiting for periodic broadcast and program the broadcast timer
to fire.
2. tick_install_broadcast_device -> tick_broadcast_setup_oneshot
The origin broadcast was oneshot, so the cores which enter the cpu_idle
already used the oneshot_mask bits. It is unnecessary to update the
oneshot_mask.
Fixes: 9c336c9935cf ("tick/broadcast: Allow late registered device to enter oneshot mode")
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
kernel/time/tick-broadcast.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 93bf2b4e47e5..fdbbba487978 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -1041,12 +1041,13 @@ static void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
*/
cpumask_copy(tmpmask, tick_broadcast_mask);
cpumask_clear_cpu(cpu, tmpmask);
- cpumask_or(tick_broadcast_oneshot_mask,
- tick_broadcast_oneshot_mask, tmpmask);
if (was_periodic && !cpumask_empty(tmpmask)) {
ktime_t nextevt = tick_get_next_period();
+ cpumask_or(tick_broadcast_oneshot_mask,
+ tick_broadcast_oneshot_mask, tmpmask);
+
clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT);
tick_broadcast_init_next_event(tmpmask, nextevt);
tick_broadcast_set_event(bc, cpu, nextevt);
--
2.29.0
^ permalink raw reply related [relevance 18%]
* Re: [PATCH 07/27] iommu/sun50i: remove MODULE_LICENSE in non-modules
2023-02-24 15:07 7% ` [PATCH 07/27] iommu/sun50i: remove MODULE_LICENSE in non-modules Nick Alcock
@ 2023-03-14 20:15 0% ` Jernej Škrabec
0 siblings, 0 replies; 200+ results
From: Jernej Škrabec @ 2023-03-14 20:15 UTC (permalink / raw)
To: mcgrof, Nick Alcock
Cc: linux-modules, linux-kernel, Hitomi Hasegawa, Joerg Roedel,
Will Deacon, Chen-Yu Tsai, Samuel Holland, Philipp Zabel, iommu,
linux-arm-kernel, linux-sunxi
Dne petek, 24. februar 2023 ob 16:07:51 CET je Nick Alcock napisal(a):
> Since commit 8b41fc4454e ("kbuild: create modules.builtin without
> Makefile.modbuiltin or tristate.conf"), MODULE_LICENSE declarations
> are used to identify modules. As a consequence, uses of the macro
> in non-modules will cause modprobe to misidentify their containing
> object file as a module when it is not (false positives), and modprobe
> might succeed rather than failing with a suitable error message.
>
> So remove it in the files in this commit, none of which can be built as
> modules.
>
> Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
> Suggested-by: Luis Chamberlain <mcgrof@kernel.org>
> Cc: Luis Chamberlain <mcgrof@kernel.org>
> Cc: linux-modules@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: Hitomi Hasegawa <hasegawa-hitomi@fujitsu.com>
> Cc: Joerg Roedel <joro@8bytes.org>
> Cc: Will Deacon <will@kernel.org>
> Cc: Chen-Yu Tsai <wens@csie.org>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> Cc: Samuel Holland <samuel@sholland.org>
> Cc: Philipp Zabel <p.zabel@pengutronix.de>
> Cc: iommu@lists.linux.dev
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-sunxi@lists.linux.dev
> ---
> drivers/iommu/sun50i-iommu.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c
> index 5b585eace3d4..63ac9d15b859 100644
> --- a/drivers/iommu/sun50i-iommu.c
> +++ b/drivers/iommu/sun50i-iommu.c
> @@ -1077,4 +1077,3 @@ builtin_platform_driver_probe(sun50i_iommu_driver,
> sun50i_iommu_probe); MODULE_DESCRIPTION("Allwinner H6 IOMMU driver");
> MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>");
> MODULE_AUTHOR("zhuxianbin <zhuxianbin@allwinnertech.com>");
> -MODULE_LICENSE("Dual BSD/GPL");
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Best regards,
Jernej
^ permalink raw reply [relevance 0%]
* [RESEND v2] pstore/blk: Export a method to implemente panic_write()
@ 2023-03-01 9:51 17% Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2023-03-01 9:51 UTC (permalink / raw)
To: keescook; +Cc: tony.luck, gpiccoli, linux-hardening, linux-kernel
The panic_write() is necessary to write the pstore frontend message
to blk devices when panic. Here is a way to register panic_write when
we use "best_effort" way to register the pstore blk-backend.
Usage:
xx_register_pstore_panic_write(pstore_blk_notifier_type type,
struct pstore_device_info *pdi)
{
switch (type) {
case PSTORE_BLK_BACKEND_REGISTER:
case PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER:
...
pid->zone.panic_write = xxx;
...
break;
case PSTORE_BLK_BACKEND_UNREGISTER:
case PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER:
...
pdi->zone.panic_write = NULL;
...
break;
default:
break;
}
}
static struct pstore_blk_notifier pbn = {
.notitifer_call = xx_register_pstore_panic_write;
}
use {un,}register_pstore_blk_panic_notifier() to register/unregister
pstore_blk_notifier
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
fs/pstore/blk.c | 101 +++++++++++++++++++++++++++++++++++--
include/linux/pstore_blk.h | 19 +++++++
2 files changed, 116 insertions(+), 4 deletions(-)
diff --git a/fs/pstore/blk.c b/fs/pstore/blk.c
index 4ae0cfcd15f2..2c70a3bff1ae 100644
--- a/fs/pstore/blk.c
+++ b/fs/pstore/blk.c
@@ -18,6 +18,7 @@
#include <linux/file.h>
#include <linux/init_syscalls.h>
#include <linux/mount.h>
+#include <linux/notifier.h>
static long kmsg_size = CONFIG_PSTORE_BLK_KMSG_SIZE;
module_param(kmsg_size, long, 0400);
@@ -72,6 +73,14 @@ static DEFINE_MUTEX(pstore_blk_lock);
static struct file *psblk_file;
static struct pstore_device_info *pstore_device_info;
+static struct {
+ struct raw_notifier_head chain;
+ struct pstore_blk_notifier *pbn;
+ bool notifier;
+} pstore_blk_panic_notifier = {
+ .chain = RAW_NOTIFIER_INIT(pstore_blk_panic_notifier.chain),
+};
+
#define check_size(name, alignsize) ({ \
long _##name_ = (name); \
_##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \
@@ -94,6 +103,82 @@ static struct pstore_device_info *pstore_device_info;
dev->zone.name = _##name_; \
}
+static int pstore_blk_panic_notifier_call(struct notifier_block *nb,
+ unsigned long action, void *data)
+{
+ int ret = 0;
+ struct pstore_blk_notifier *pbn =
+ container_of(nb, struct pstore_blk_notifier, nb);
+
+ if (pbn)
+ ret = pbn->notifier_call(action, data);
+
+ return ret;
+}
+
+int register_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn)
+{
+ int err = 0;
+ struct notifier_block *nb;
+
+ mutex_lock(&pstore_blk_lock);
+
+ if (pstore_blk_panic_notifier.notifier) {
+ pr_info("had register panic\n");
+ goto unlock;
+ }
+
+ nb = &pbn->nb;
+ nb->notifier_call = pstore_blk_panic_notifier_call;
+
+ err = raw_notifier_chain_register(&pstore_blk_panic_notifier.chain, nb);
+ if (err)
+ goto unlock;
+
+ if (pstore_device_info)
+ err = nb->notifier_call(nb, PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER,
+ pstore_device_info);
+
+ if (!err)
+ pstore_blk_panic_notifier.notifier = true;
+
+unlock:
+ mutex_unlock(&pstore_blk_lock);
+
+ return err;
+}
+EXPORT_SYMBOL_GPL(register_pstore_blk_panic_notifier);
+
+void unregister_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn)
+{
+ struct notifier_block *nb = &pbn->nb;
+
+ mutex_lock(&pstore_blk_lock);
+
+ raw_notifier_chain_unregister(&pstore_blk_panic_notifier.chain, nb);
+
+ if (pstore_device_info)
+ nb->notifier_call(nb, PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER,
+ pstore_device_info);
+
+ pstore_blk_panic_notifier.notifier = false;
+
+ mutex_unlock(&pstore_blk_lock);
+}
+EXPORT_SYMBOL_GPL(unregister_pstore_blk_panic_notifier);
+
+static int pstore_blk_panic_notifier_init_call(struct pstore_device_info *pdi)
+{
+ return raw_notifier_call_chain(&pstore_blk_panic_notifier.chain,
+ PSTORE_BLK_BACKEND_REGISTER, pdi);
+}
+
+static int pstore_blk_panic_notifier_exit_call(struct pstore_device_info *pdi)
+{
+ return raw_notifier_call_chain(&pstore_blk_panic_notifier.chain,
+ PSTORE_BLK_BACKEND_UNREGISTER, pdi);
+}
+
static int __register_pstore_device(struct pstore_device_info *dev)
{
int ret;
@@ -301,16 +386,22 @@ static int __init __best_effort_init(void)
if (!best_effort_dev)
return -ENOMEM;
+ strcpy(best_effort_dev->path, blkdev);
best_effort_dev->zone.read = psblk_generic_blk_read;
best_effort_dev->zone.write = psblk_generic_blk_write;
ret = __register_pstore_blk(best_effort_dev,
early_boot_devpath(blkdev));
- if (ret)
+ if (ret) {
kfree(best_effort_dev);
- else
- pr_info("attached %s (%lu) (no dedicated panic_write!)\n",
- blkdev, best_effort_dev->zone.total_size);
+ } else {
+ if (pstore_blk_panic_notifier_init_call(best_effort_dev) == NOTIFY_OK)
+ pr_info("attached %s (%lu) (dedicated panic_write!)\n",
+ blkdev, best_effort_dev->zone.total_size);
+ else
+ pr_info("attached %s (%lu) (no dedicated panic_write!)\n",
+ blkdev, best_effort_dev->zone.total_size);
+ }
return ret;
}
@@ -326,6 +417,8 @@ static void __exit __best_effort_exit(void)
if (psblk_file) {
struct pstore_device_info *dev = pstore_device_info;
+ pstore_blk_panic_notifier_exit_call(dev);
+
__unregister_pstore_device(dev);
kfree(dev);
fput(psblk_file);
diff --git a/include/linux/pstore_blk.h b/include/linux/pstore_blk.h
index 924ca07aafbd..fd2eb927c2c5 100644
--- a/include/linux/pstore_blk.h
+++ b/include/linux/pstore_blk.h
@@ -17,13 +17,32 @@
*
*/
struct pstore_device_info {
+ char path[80];
unsigned int flags;
struct pstore_zone_info zone;
};
+enum pstore_blk_notifier_type {
+ PSTORE_BLK_BACKEND_REGISTER = 1,
+ PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER,
+ PSTORE_BLK_BACKEND_UNREGISTER,
+ PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER,
+};
+
+typedef int (*pstore_blk_notifier_fn_t)(enum pstore_blk_notifier_type type,
+ struct pstore_device_info *dev);
+
+struct pstore_blk_notifier {
+ struct notifier_block nb;
+ pstore_blk_notifier_fn_t notifier_call;
+};
+
int register_pstore_device(struct pstore_device_info *dev);
void unregister_pstore_device(struct pstore_device_info *dev);
+int register_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn);
+void unregister_pstore_blk_panic_notifier(struct pstore_blk_notifier *nb);
+
/**
* struct pstore_blk_config - the pstore_blk backend configuration
*
--
2.29.0
^ permalink raw reply related [relevance 17%]
* RE: [PATCH] HID: usbhid: enable remote wakeup for mice
@ 2023-02-28 19:07 0% ` Limonciello, Mario
0 siblings, 0 replies; 200+ results
From: Limonciello, Mario @ 2023-02-28 19:07 UTC (permalink / raw)
To: Greg KH
Cc: Oliver Neukum, Michael Wu, jikos, benjamin.tissoires, linux-usb,
linux-input, linux-kernel, Gong, Richard
[AMD Official Use Only - General]
> -----Original Message-----
> From: Greg KH <gregkh@linuxfoundation.org>
> Sent: Tuesday, February 28, 2023 13:05
> To: Limonciello, Mario <Mario.Limonciello@amd.com>
> Cc: Oliver Neukum <oneukum@suse.com>; Michael Wu
> <michael@allwinnertech.com>; jikos@kernel.org;
> benjamin.tissoires@redhat.com; linux-usb@vger.kernel.org; linux-
> input@vger.kernel.org; linux-kernel@vger.kernel.org; Gong, Richard
> <Richard.Gong@amd.com>
> Subject: Re: [PATCH] HID: usbhid: enable remote wakeup for mice
>
> On Tue, Feb 28, 2023 at 06:50:18PM +0000, Limonciello, Mario wrote:
> > I still keep getting inquiries about this where teams that work on the same
> > hardware for Windows and Linux complain about this difference during
> > their testing.
> >
> > I keep educating them to change it in sysfs (or to use a udev rule), but
> > you have to question if you keep getting something asked about policy
> > over and over if it's actually the right policy.
>
> Why not complain to the Windows team to get them to change their policy
> back as they are the ones that changed it over time and are not
> backwards-compatible with older systems?
>
Heh.
I don't think that's actually true though - Modern Standby is relatively new.
Picking new policies tied to that shouldn't break backwards compatibility.
^ permalink raw reply [relevance 0%]
* RE: [PATCH] HID: usbhid: enable remote wakeup for mice
@ 2023-02-28 18:50 0% ` Limonciello, Mario
0 siblings, 1 reply; 200+ results
From: Limonciello, Mario @ 2023-02-28 18:50 UTC (permalink / raw)
To: Oliver Neukum, Greg KH, Michael Wu
Cc: jikos, benjamin.tissoires, linux-usb, linux-input, linux-kernel,
Gong, Richard
[Public]
> -----Original Message-----
> From: Oliver Neukum <oneukum@suse.com>
> Sent: Tuesday, February 28, 2023 03:03
> To: Limonciello, Mario <Mario.Limonciello@amd.com>; Oliver Neukum
> <oneukum@suse.com>; Greg KH <gregkh@linuxfoundation.org>; Michael
> Wu <michael@allwinnertech.com>
> Cc: jikos@kernel.org; benjamin.tissoires@redhat.com; linux-
> usb@vger.kernel.org; linux-input@vger.kernel.org; linux-
> kernel@vger.kernel.org; Gong, Richard <Richard.Gong@amd.com>
> Subject: Re: [PATCH] HID: usbhid: enable remote wakeup for mice
>
> On 23.02.23 20:41, Limonciello, Mario wrote:
>
> Hi,
>
> >> As a system wakeup source a mouse that generates events when
> >> it is moved, however, would make the system unsuspendable, whenever
> >> even
> >> a bit of vibration is acting on the system.
> >> And as S4 is used in many setups to prevent an uncontrolled shutdown
> >> at low power, this must work.
> >
> > At least in my version of the series, this is part of the reason that it was
> > only intended to be used with s2idle.
>
> Yes, that is sensible. If these patches are to be taken at all, that will
> be a necessary condition to meet. But it is not sufficient.
Ack.
>
> > The kernel driver is well aware of what power state you're in the suspend
> > callback (pm_suspend_target_state).
> >
> > What about if we agreed to treat this one special by examining that?
> >
> > If the sysfs is set to "enabled"
>
> If user space needs to manipulate sysfs at all, we can have user space
> tell kernel space exactly what to do. Hence I see no point in
> conditional interpretations values in sysfs at that point.
>
> We are discussing the kernel's default here.
Right, I was meaning if the kernel defaulted to enabled or if userspace
changed it to enabled to follow this behavior.
>
> > * During suspend if your target is s2idle -> program it
> > * During suspend if your target is mem -> disable it
> > * During suspend if your target is hibernate -> disable it
>
> To my mind these defaults make sense.
> However, do they make much more sense than what we are doing now?
If you're talking about purely "policy default", I think it makes more sense.
Userspace can still change it, and it better aligns with what Windows does
out of the box.
>
> > With that type of policy on how to handle the suspend call in place
> > perhaps we could set it to enabled by default?
>
> It pains me to say, but I am afraid in that regard the only
> decision that will not cause ugly surprises is to follow Windows.
> Yet, what is wrong about the current defaults?
I still keep getting inquiries about this where teams that work on the same
hardware for Windows and Linux complain about this difference during
their testing.
I keep educating them to change it in sysfs (or to use a udev rule), but
you have to question if you keep getting something asked about policy
over and over if it's actually the right policy.
^ permalink raw reply [relevance 0%]
* [PATCH 07/27] iommu/sun50i: remove MODULE_LICENSE in non-modules
[not found] <20230224150811.80316-1-nick.alcock@oracle.com>
@ 2023-02-24 15:07 7% ` Nick Alcock
2023-03-14 20:15 0% ` Jernej Škrabec
0 siblings, 1 reply; 200+ results
From: Nick Alcock @ 2023-02-24 15:07 UTC (permalink / raw)
To: mcgrof
Cc: linux-modules, linux-kernel, Hitomi Hasegawa, Joerg Roedel,
Will Deacon, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland,
Philipp Zabel, iommu, linux-arm-kernel, linux-sunxi
Since commit 8b41fc4454e ("kbuild: create modules.builtin without
Makefile.modbuiltin or tristate.conf"), MODULE_LICENSE declarations
are used to identify modules. As a consequence, uses of the macro
in non-modules will cause modprobe to misidentify their containing
object file as a module when it is not (false positives), and modprobe
might succeed rather than failing with a suitable error message.
So remove it in the files in this commit, none of which can be built as
modules.
Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
Suggested-by: Luis Chamberlain <mcgrof@kernel.org>
Cc: Luis Chamberlain <mcgrof@kernel.org>
Cc: linux-modules@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: Hitomi Hasegawa <hasegawa-hitomi@fujitsu.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Will Deacon <will@kernel.org>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Samuel Holland <samuel@sholland.org>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: iommu@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-sunxi@lists.linux.dev
---
drivers/iommu/sun50i-iommu.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c
index 5b585eace3d4..63ac9d15b859 100644
--- a/drivers/iommu/sun50i-iommu.c
+++ b/drivers/iommu/sun50i-iommu.c
@@ -1077,4 +1077,3 @@ builtin_platform_driver_probe(sun50i_iommu_driver, sun50i_iommu_probe);
MODULE_DESCRIPTION("Allwinner H6 IOMMU driver");
MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>");
MODULE_AUTHOR("zhuxianbin <zhuxianbin@allwinnertech.com>");
-MODULE_LICENSE("Dual BSD/GPL");
--
2.39.1.268.g9de2f9a303
^ permalink raw reply related [relevance 7%]
* Re: [PATCH] HID: usbhid: enable remote wakeup for mice
2023-02-23 11:23 0% ` Greg KH
@ 2023-02-24 7:02 14% ` Michael Wu
1 sibling, 0 replies; 200+ results
From: Michael Wu @ 2023-02-24 7:02 UTC (permalink / raw)
To: Greg KH
Cc: jikos, benjamin.tissoires, linux-usb, linux-input, linux-kernel,
mario.limonciello, richard.gong
Dear Greg:
On 2/23/2023 7:23 PM, Greg KH wrote:
> On Thu, Feb 23, 2023 at 07:18:12PM +0800, Michael Wu wrote:
>> Dear Greg,
>>
>> On 2/22/2023 2:04 PM, Greg KH wrote:
>>> On Wed, Feb 22, 2023 at 09:39:44AM +0800, Michael Wu wrote:
>>>> This patch fixes a problem that USB mouse can't wake up the device that
>>>> enters standby.
>>>
>>> This not a problem, it is that way by design.
>>
>> I got it, maybe it's a little problem to say that.
>
> It is.
>
>>>> At present, the kernel only checks whether certain USB manufacturers
>>>> support wake-up, which will easily cause inconvenience to the
>>>> development work of other manufacturers and add unnecessary work to the
>>>> maintenance of kernel.
>>>>
>>>> The USB protocol supports judging whether a usb supports the wake-up
>>>> function, so it should be more reasonable to add a wake-up source by
>>>> directly checking the settings from the USB protocol.
>>>
>>> But you do not do that in this patch, why not?
>>
>> I just want to explain the background of my patch, to prove we could use a
>> similar way to avoid such a "disturbing" situation.
>> To reduce the influence, my patch enables remote wakeup for USB mouse
>> devices refer to what keyboard do.
>
> Keyboards are not mice :)
Sorry, What I wanted to say is that we registered the mouse wake-up
source by referring to the practice of the keyboard.
>
>>>> There was a similar issue on the keyboard before, which was fixed by
>>>> this patch (3d61510f4eca), but now the problem happened on the mouse.
>>>> This patch uses a similar idea to fix this problem.
>>>>
>>>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>>>> ---
>>>> drivers/hid/usbhid/hid-core.c | 8 ++++++++
>>>> drivers/hid/usbhid/usbmouse.c | 1 +
>>>> 2 files changed, 9 insertions(+)
>>>>
>>>> diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
>>>> index be4c731aaa65..d3a6755cca09 100644
>>>> --- a/drivers/hid/usbhid/hid-core.c
>>>> +++ b/drivers/hid/usbhid/hid-core.c
>>>> @@ -1189,6 +1189,14 @@ static int usbhid_start(struct hid_device *hid)
>>>> device_set_wakeup_enable(&dev->dev, 1);
>>>> }
>>>> + /**
>>>> + * NOTE: enable remote wakeup by default for all mouse devices
>>>> + * supporting the boot protocol.
>>>> + */
>>>> + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
>>>> + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
>>>> + device_set_wakeup_enable(&dev->dev, 1);
>>>
>>> Sorry, but we can not take this unless it is proven that this will work
>>> properly for all of these devices. Other operating systems do not do
>>> this last I checked, so there will be problems.
>>
>> As Mario Limonciello says, they has confirmed that the Microsoft Windows
>> does set a similar policy as well. Can we talk about more in this topic: why
>> does Linux not support it?
>> Of course, if you have other great idea, I will appreciate that if we can
>> have some further discussion.
>
> You need to provide some sort of "proof" that this has been heavily
> tested on a huge range of devices before we can change this.
>
> When this was first implemented, Windows did not work this way and many
> devices on the market were broken if this were to be enabled. I'm sure
> the mailing list archives from 20+ years ago have many more details,
> please dig around there for specifics.
>
> If you feel strongly that this is the way forward, why not do it in
> userspace today for your systems as part of testing this out? It should
> not require a kernel change, right?
Thanks for your advises. I'm clear now. I will try it in userspace.
>
> thanks,
>
> greg k-h
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [RESEND v2] Bluetooth: btrtl: Add support for RTL8852BS
2023-02-22 9:47 20% [RESEND v2] Bluetooth: btrtl: Add support for RTL8852BS Victor Hassan
@ 2023-02-23 20:30 0% ` patchwork-bot+bluetooth
0 siblings, 0 replies; 200+ results
From: patchwork-bot+bluetooth @ 2023-02-23 20:30 UTC (permalink / raw)
To: Victor Hassan
Cc: marcel, johan.hedberg, luiz.dentz, linux-bluetooth, linux-kernel
Hello:
This patch was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
On Wed, 22 Feb 2023 17:47:20 +0800 you wrote:
> Add the support for RTL8852BS BT controller on UART interface.
> The necessary firmware file will be submitted to linux-firmware.
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> ---
> drivers/bluetooth/btrtl.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
Here is the summary with links:
- [RESEND,v2] Bluetooth: btrtl: Add support for RTL8852BS
https://git.kernel.org/bluetooth/bluetooth-next/c/1fb7281c62c9
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [relevance 0%]
* RE: [PATCH] HID: usbhid: enable remote wakeup for mice
@ 2023-02-23 19:41 0% ` Limonciello, Mario
0 siblings, 1 reply; 200+ results
From: Limonciello, Mario @ 2023-02-23 19:41 UTC (permalink / raw)
To: Oliver Neukum, Greg KH, Michael Wu
Cc: jikos, benjamin.tissoires, linux-usb, linux-input, linux-kernel,
Gong, Richard
[AMD Official Use Only - General]
> -----Original Message-----
> From: Oliver Neukum <oneukum@suse.com>
> Sent: Thursday, February 23, 2023 06:02
> To: Greg KH <gregkh@linuxfoundation.org>; Michael Wu
> <michael@allwinnertech.com>
> Cc: jikos@kernel.org; benjamin.tissoires@redhat.com; linux-
> usb@vger.kernel.org; linux-input@vger.kernel.org; linux-
> kernel@vger.kernel.org; Limonciello, Mario <Mario.Limonciello@amd.com>;
> Gong, Richard <Richard.Gong@amd.com>
> Subject: Re: [PATCH] HID: usbhid: enable remote wakeup for mice
>
> On 23.02.23 12:23, Greg KH wrote:
>
> >> I just want to explain the background of my patch, to prove we could use
> a
> >> similar way to avoid such a "disturbing" situation.
> >> To reduce the influence, my patch enables remote wakeup for USB
> mouse
> >> devices refer to what keyboard do.
> >
> > Keyboards are not mice :)
> >
>
> OK, let me explain, why I never proposed switching on autosuspend
> for mice or using them as a system wakeup source. The reasons are very
> similar.
>
> Basically the standard gives us no way to ask a device what constitutes
> a wakeup event for it. We just get the blanket statement of support
> or no support.
>
> For runtime PM I would want my mouse to generate a remote wakeup
> whenever a button is pressed or the mouse is moved. Under this
> premise runtime PM with a mouse works wonderfully. Testing that,
> however, is a challenge.
> It turns out that mice that claim that they support remote wakeup
> by and large deactivate their LED/laser when you send them into
> suspension. Hence they react only to buttons being pressed or mouse
> wheels moved.
>
> As a system wakeup source a mouse that generates events when
> it is moved, however, would make the system unsuspendable, whenever
> even
> a bit of vibration is acting on the system.
> And as S4 is used in many setups to prevent an uncontrolled shutdown
> at low power, this must work.
At least in my version of the series, this is part of the reason that it was
only intended to be used with s2idle.
The kernel driver is well aware of what power state you're in the suspend
callback (pm_suspend_target_state).
What about if we agreed to treat this one special by examining that?
If the sysfs is set to "enabled"
* During suspend if your target is s2idle -> program it
* During suspend if your target is mem -> disable it
* During suspend if your target is hibernate -> disable it
With that type of policy on how to handle the suspend call in place
perhaps we could set it to enabled by default?
>
> I suspect that most, but _not_ _all_ mice, are designed for use
> with a system that ties power management to the screen saver.
> That is a mode of operation that due to the lack of coupling
> between GUI and kernel is hard to copy.
>
> Frankly given these constraints the only default safe in every
> case seems to me to leave the kernel's default at off and
> put the work into udev's hwdb. Not that that is a good solution,
> merely the best I can come up with.
>
> Regards
> Oliver
Turning on "autosuspend" for USB mice makes them behave pretty
similarly to how they work when they're marked for remote wakeup.
On some mice the lasers turn off, and they only wakeup when you
press a button or roll a wheel.
^ permalink raw reply [relevance 0%]
* Re: [PATCH] HID: usbhid: enable remote wakeup for mice
2023-02-23 11:18 14% ` Michael Wu
@ 2023-02-23 11:23 0% ` Greg KH
2023-02-24 7:02 14% ` Michael Wu
0 siblings, 2 replies; 200+ results
From: Greg KH @ 2023-02-23 11:23 UTC (permalink / raw)
To: Michael Wu
Cc: jikos, benjamin.tissoires, linux-usb, linux-input, linux-kernel,
mario.limonciello, richard.gong
On Thu, Feb 23, 2023 at 07:18:12PM +0800, Michael Wu wrote:
> Dear Greg,
>
> On 2/22/2023 2:04 PM, Greg KH wrote:
> > On Wed, Feb 22, 2023 at 09:39:44AM +0800, Michael Wu wrote:
> > > This patch fixes a problem that USB mouse can't wake up the device that
> > > enters standby.
> >
> > This not a problem, it is that way by design.
>
> I got it, maybe it's a little problem to say that.
It is.
> > > At present, the kernel only checks whether certain USB manufacturers
> > > support wake-up, which will easily cause inconvenience to the
> > > development work of other manufacturers and add unnecessary work to the
> > > maintenance of kernel.
> > >
> > > The USB protocol supports judging whether a usb supports the wake-up
> > > function, so it should be more reasonable to add a wake-up source by
> > > directly checking the settings from the USB protocol.
> >
> > But you do not do that in this patch, why not?
>
> I just want to explain the background of my patch, to prove we could use a
> similar way to avoid such a "disturbing" situation.
> To reduce the influence, my patch enables remote wakeup for USB mouse
> devices refer to what keyboard do.
Keyboards are not mice :)
> > > There was a similar issue on the keyboard before, which was fixed by
> > > this patch (3d61510f4eca), but now the problem happened on the mouse.
> > > This patch uses a similar idea to fix this problem.
> > >
> > > Signed-off-by: Michael Wu <michael@allwinnertech.com>
> > > ---
> > > drivers/hid/usbhid/hid-core.c | 8 ++++++++
> > > drivers/hid/usbhid/usbmouse.c | 1 +
> > > 2 files changed, 9 insertions(+)
> > >
> > > diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
> > > index be4c731aaa65..d3a6755cca09 100644
> > > --- a/drivers/hid/usbhid/hid-core.c
> > > +++ b/drivers/hid/usbhid/hid-core.c
> > > @@ -1189,6 +1189,14 @@ static int usbhid_start(struct hid_device *hid)
> > > device_set_wakeup_enable(&dev->dev, 1);
> > > }
> > > + /**
> > > + * NOTE: enable remote wakeup by default for all mouse devices
> > > + * supporting the boot protocol.
> > > + */
> > > + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
> > > + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
> > > + device_set_wakeup_enable(&dev->dev, 1);
> >
> > Sorry, but we can not take this unless it is proven that this will work
> > properly for all of these devices. Other operating systems do not do
> > this last I checked, so there will be problems.
>
> As Mario Limonciello says, they has confirmed that the Microsoft Windows
> does set a similar policy as well. Can we talk about more in this topic: why
> does Linux not support it?
> Of course, if you have other great idea, I will appreciate that if we can
> have some further discussion.
You need to provide some sort of "proof" that this has been heavily
tested on a huge range of devices before we can change this.
When this was first implemented, Windows did not work this way and many
devices on the market were broken if this were to be enabled. I'm sure
the mailing list archives from 20+ years ago have many more details,
please dig around there for specifics.
If you feel strongly that this is the way forward, why not do it in
userspace today for your systems as part of testing this out? It should
not require a kernel change, right?
thanks,
greg k-h
^ permalink raw reply [relevance 0%]
* Re: [PATCH] HID: usbhid: enable remote wakeup for mice
@ 2023-02-23 11:22 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2023-02-23 11:22 UTC (permalink / raw)
To: Oliver Neukum, jikos, benjamin.tissoires
Cc: linux-usb, linux-input, linux-kernel, richard.gong, mario.limonciello
Dear Oliver,
On 2/22/2023 5:34 PM, Oliver Neukum wrote:
> On 22.02.23 02:39, Michael Wu wrote:
>> This patch fixes a problem that USB mouse can't wake up the device that
>> enters standby.
>
> Hi,
>
> I am afraid I need to ask you to be a bit more precise here.
> Are you referring to USB mice being unable to wake up a system,
> even if you so request via sysfs, or that they won't by default?
>
> Regards
> Oliver
Yes. I can't use any USB mouse which supports Remote Wakeup to wake up
the system by default.
If I enable the wakeup node in /sys/bus/usb/devices which is disabled by
default, the mouse can wakeup the system successfully.
Clearly, the only thing I can do is to register the wakeup source for
USB Mouse devices.
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] HID: usbhid: enable remote wakeup for mice
2023-02-22 6:04 0% ` Greg KH
2023-02-22 19:50 0% ` Limonciello, Mario
@ 2023-02-23 11:18 14% ` Michael Wu
2023-02-23 11:23 0% ` Greg KH
1 sibling, 1 reply; 200+ results
From: Michael Wu @ 2023-02-23 11:18 UTC (permalink / raw)
To: Greg KH
Cc: jikos, benjamin.tissoires, linux-usb, linux-input, linux-kernel,
mario.limonciello, richard.gong
Dear Greg,
On 2/22/2023 2:04 PM, Greg KH wrote:
> On Wed, Feb 22, 2023 at 09:39:44AM +0800, Michael Wu wrote:
>> This patch fixes a problem that USB mouse can't wake up the device that
>> enters standby.
>
> This not a problem, it is that way by design.
I got it, maybe it's a little problem to say that.
>
>> At present, the kernel only checks whether certain USB manufacturers
>> support wake-up, which will easily cause inconvenience to the
>> development work of other manufacturers and add unnecessary work to the
>> maintenance of kernel.
>>
>> The USB protocol supports judging whether a usb supports the wake-up
>> function, so it should be more reasonable to add a wake-up source by
>> directly checking the settings from the USB protocol.
>
> But you do not do that in this patch, why not?
I just want to explain the background of my patch, to prove we could use
a similar way to avoid such a "disturbing" situation.
To reduce the influence, my patch enables remote wakeup for USB mouse
devices refer to what keyboard do.
>
>> There was a similar issue on the keyboard before, which was fixed by
>> this patch (3d61510f4eca), but now the problem happened on the mouse.
>> This patch uses a similar idea to fix this problem.
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/hid/usbhid/hid-core.c | 8 ++++++++
>> drivers/hid/usbhid/usbmouse.c | 1 +
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
>> index be4c731aaa65..d3a6755cca09 100644
>> --- a/drivers/hid/usbhid/hid-core.c
>> +++ b/drivers/hid/usbhid/hid-core.c
>> @@ -1189,6 +1189,14 @@ static int usbhid_start(struct hid_device *hid)
>> device_set_wakeup_enable(&dev->dev, 1);
>> }
>>
>> + /**
>> + * NOTE: enable remote wakeup by default for all mouse devices
>> + * supporting the boot protocol.
>> + */
>> + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
>> + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
>> + device_set_wakeup_enable(&dev->dev, 1);
>
> Sorry, but we can not take this unless it is proven that this will work
> properly for all of these devices. Other operating systems do not do
> this last I checked, so there will be problems.
As Mario Limonciello says, they has confirmed that the Microsoft Windows
does set a similar policy as well. Can we talk about more in this topic:
why does Linux not support it?
Of course, if you have other great idea, I will appreciate that if we
can have some further discussion.
>
> thanks,
>
> greg k-h
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] HID: usbhid: enable remote wakeup for mice
2023-02-22 8:59 0% ` Sergei Shtylyov
@ 2023-02-23 4:01 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2023-02-23 4:01 UTC (permalink / raw)
To: Sergei Shtylyov, jikos, benjamin.tissoires
Cc: linux-usb, linux-input, linux-kernel
Dear Sergei:
On 2/22/2023 4:59 PM, Sergei Shtylyov wrote:
> Hello!
>
> On 2/22/23 4:39 AM, Michael Wu wrote:
>
>> This patch fixes a problem that USB mouse can't wake up the device that
>> enters standby.
>>
>> At present, the kernel only checks whether certain USB manufacturers
>> support wake-up, which will easily cause inconvenience to the
>> development work of other manufacturers and add unnecessary work to the
>> maintenance of kernel.
>>
>> The USB protocol supports judging whether a usb supports the wake-up
>> function, so it should be more reasonable to add a wake-up source by
>> directly checking the settings from the USB protocol.
>>
>> There was a similar issue on the keyboard before, which was fixed by
>> this patch (3d61510f4eca), but now the problem happened on the mouse.
>> This patch uses a similar idea to fix this problem.
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/hid/usbhid/hid-core.c | 8 ++++++++
>> drivers/hid/usbhid/usbmouse.c | 1 +
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
>> index be4c731aaa65..d3a6755cca09 100644
>> --- a/drivers/hid/usbhid/hid-core.c
>> +++ b/drivers/hid/usbhid/hid-core.c
>> @@ -1189,6 +1189,14 @@ static int usbhid_start(struct hid_device *hid)
>> device_set_wakeup_enable(&dev->dev, 1);
>> }
>>
>> + /**
>
> The kernel-doc comments should not be used here in the function body.
We will remove the NOTE comments.
>
>> + * NOTE: enable remote wakeup by default for all mouse devices
>> + * supporting the boot protocol.
>> + */
>> + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
>> + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
>> + device_set_wakeup_enable(&dev->dev, 1);
>> +
>> mutex_unlock(&usbhid->mutex);
>> return 0;
>>
> [...]
>
> MBR, Sergey
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] HID: usbhid: enable remote wakeup for mice
2023-02-22 6:04 0% ` Greg KH
@ 2023-02-22 19:50 0% ` Limonciello, Mario
2023-02-23 11:18 14% ` Michael Wu
1 sibling, 0 replies; 200+ results
From: Limonciello, Mario @ 2023-02-22 19:50 UTC (permalink / raw)
To: Greg KH, Michael Wu, Richard Gong
Cc: jikos, benjamin.tissoires, linux-usb, linux-input, linux-kernel
+Richard
On 2/22/2023 00:04, Greg KH wrote:
> On Wed, Feb 22, 2023 at 09:39:44AM +0800, Michael Wu wrote:
>> This patch fixes a problem that USB mouse can't wake up the device that
>> enters standby.
>
> This not a problem, it is that way by design.
>
>> At present, the kernel only checks whether certain USB manufacturers
>> support wake-up, which will easily cause inconvenience to the
>> development work of other manufacturers and add unnecessary work to the
>> maintenance of kernel.
>>
>> The USB protocol supports judging whether a usb supports the wake-up
>> function, so it should be more reasonable to add a wake-up source by
>> directly checking the settings from the USB protocol.
>
> But you do not do that in this patch, why not?
>
>> There was a similar issue on the keyboard before, which was fixed by
>> this patch (3d61510f4eca), but now the problem happened on the mouse.
>> This patch uses a similar idea to fix this problem.
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/hid/usbhid/hid-core.c | 8 ++++++++
>> drivers/hid/usbhid/usbmouse.c | 1 +
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
>> index be4c731aaa65..d3a6755cca09 100644
>> --- a/drivers/hid/usbhid/hid-core.c
>> +++ b/drivers/hid/usbhid/hid-core.c
>> @@ -1189,6 +1189,14 @@ static int usbhid_start(struct hid_device *hid)
>> device_set_wakeup_enable(&dev->dev, 1);
>> }
>>
>> + /**
>> + * NOTE: enable remote wakeup by default for all mouse devices
>> + * supporting the boot protocol.
>> + */
>> + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
>> + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
>> + device_set_wakeup_enable(&dev->dev, 1);
>
> Sorry, but we can not take this unless it is proven that this will work
> properly for all of these devices. Other operating systems do not do
> this last I checked, so there will be problems.
>
> thanks,
>
> greg k-h
>
Richard and I both sent out relatively similar patches in the past, but
they never went anywhere.
We did confirm that Windows does set a similar policy as well though,
which is what prompted us to attempt this.
As there is more interest again maybe we can revive that discussion and
merge together some ideas from the sets of patches.
Previous submissions:
v4:
https://lore.kernel.org/linux-usb/20220825045517.16791-1-mario.limonciello@amd.com/
v3:
https://lore.kernel.org/linux-usb/20220701023328.2783-10-mario.limonciello@amd.com/
v2:
https://lore.kernel.org/linux-usb/20220616183142.14472-1-mario.limonciello@amd.com/
v1:
https://lore.kernel.org/linux-usb/20220404214557.3329796-1-richard.gong@amd.com/
^ permalink raw reply [relevance 0%]
* [RESEND v2] Bluetooth: btrtl: Add support for RTL8852BS
@ 2023-02-22 9:47 20% Victor Hassan
2023-02-23 20:30 0% ` patchwork-bot+bluetooth
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2023-02-22 9:47 UTC (permalink / raw)
To: marcel, johan.hedberg, luiz.dentz; +Cc: linux-bluetooth, linux-kernel
Add the support for RTL8852BS BT controller on UART interface.
The necessary firmware file will be submitted to linux-firmware.
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/bluetooth/btrtl.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c
index 69c3fe649ca7..aee75f278e60 100644
--- a/drivers/bluetooth/btrtl.c
+++ b/drivers/bluetooth/btrtl.c
@@ -190,6 +190,14 @@ static const struct id_table ic_id_table[] = {
.fw_name = "rtl_bt/rtl8852au_fw.bin",
.cfg_name = "rtl_bt/rtl8852au_config" },
+ /* 8852B with UART interface */
+ { IC_INFO(RTL_ROM_LMP_8852A, 0xb, 0xb, HCI_UART),
+ .config_needed = true,
+ .has_rom_version = true,
+ .has_msft_ext = true,
+ .fw_name = "rtl_bt/rtl8852bs_fw.bin",
+ .cfg_name = "rtl_bt/rtl8852bs_config" },
+
/* 8852B */
{ IC_INFO(RTL_ROM_LMP_8852A, 0xb, 0xb, HCI_USB),
.config_needed = false,
@@ -963,6 +971,8 @@ MODULE_FIRMWARE("rtl_bt/rtl8822b_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8822b_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852au_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852au_config.bin");
+MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin");
+MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin");
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH] HID: usbhid: enable remote wakeup for mice
2023-02-22 1:39 19% [PATCH] HID: usbhid: enable remote wakeup for mice Michael Wu
2023-02-22 6:04 0% ` Greg KH
@ 2023-02-22 8:59 0% ` Sergei Shtylyov
2023-02-23 4:01 14% ` Michael Wu
2 siblings, 1 reply; 200+ results
From: Sergei Shtylyov @ 2023-02-22 8:59 UTC (permalink / raw)
To: Michael Wu, jikos, benjamin.tissoires
Cc: linux-usb, linux-input, linux-kernel
Hello!
On 2/22/23 4:39 AM, Michael Wu wrote:
> This patch fixes a problem that USB mouse can't wake up the device that
> enters standby.
>
> At present, the kernel only checks whether certain USB manufacturers
> support wake-up, which will easily cause inconvenience to the
> development work of other manufacturers and add unnecessary work to the
> maintenance of kernel.
>
> The USB protocol supports judging whether a usb supports the wake-up
> function, so it should be more reasonable to add a wake-up source by
> directly checking the settings from the USB protocol.
>
> There was a similar issue on the keyboard before, which was fixed by
> this patch (3d61510f4eca), but now the problem happened on the mouse.
> This patch uses a similar idea to fix this problem.
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/hid/usbhid/hid-core.c | 8 ++++++++
> drivers/hid/usbhid/usbmouse.c | 1 +
> 2 files changed, 9 insertions(+)
>
> diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
> index be4c731aaa65..d3a6755cca09 100644
> --- a/drivers/hid/usbhid/hid-core.c
> +++ b/drivers/hid/usbhid/hid-core.c
> @@ -1189,6 +1189,14 @@ static int usbhid_start(struct hid_device *hid)
> device_set_wakeup_enable(&dev->dev, 1);
> }
>
> + /**
The kernel-doc comments should not be used here in the function body.
> + * NOTE: enable remote wakeup by default for all mouse devices
> + * supporting the boot protocol.
> + */
> + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
> + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
> + device_set_wakeup_enable(&dev->dev, 1);
> +
> mutex_unlock(&usbhid->mutex);
> return 0;
>
[...]
MBR, Sergey
^ permalink raw reply [relevance 0%]
* Re: [PATCH] HID: usbhid: enable remote wakeup for mice
2023-02-22 1:39 19% [PATCH] HID: usbhid: enable remote wakeup for mice Michael Wu
@ 2023-02-22 6:04 0% ` Greg KH
2023-02-22 19:50 0% ` Limonciello, Mario
2023-02-23 11:18 14% ` Michael Wu
2023-02-22 8:59 0% ` Sergei Shtylyov
2 siblings, 2 replies; 200+ results
From: Greg KH @ 2023-02-22 6:04 UTC (permalink / raw)
To: Michael Wu
Cc: jikos, benjamin.tissoires, linux-usb, linux-input, linux-kernel
On Wed, Feb 22, 2023 at 09:39:44AM +0800, Michael Wu wrote:
> This patch fixes a problem that USB mouse can't wake up the device that
> enters standby.
This not a problem, it is that way by design.
> At present, the kernel only checks whether certain USB manufacturers
> support wake-up, which will easily cause inconvenience to the
> development work of other manufacturers and add unnecessary work to the
> maintenance of kernel.
>
> The USB protocol supports judging whether a usb supports the wake-up
> function, so it should be more reasonable to add a wake-up source by
> directly checking the settings from the USB protocol.
But you do not do that in this patch, why not?
> There was a similar issue on the keyboard before, which was fixed by
> this patch (3d61510f4eca), but now the problem happened on the mouse.
> This patch uses a similar idea to fix this problem.
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/hid/usbhid/hid-core.c | 8 ++++++++
> drivers/hid/usbhid/usbmouse.c | 1 +
> 2 files changed, 9 insertions(+)
>
> diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
> index be4c731aaa65..d3a6755cca09 100644
> --- a/drivers/hid/usbhid/hid-core.c
> +++ b/drivers/hid/usbhid/hid-core.c
> @@ -1189,6 +1189,14 @@ static int usbhid_start(struct hid_device *hid)
> device_set_wakeup_enable(&dev->dev, 1);
> }
>
> + /**
> + * NOTE: enable remote wakeup by default for all mouse devices
> + * supporting the boot protocol.
> + */
> + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
> + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
> + device_set_wakeup_enable(&dev->dev, 1);
Sorry, but we can not take this unless it is proven that this will work
properly for all of these devices. Other operating systems do not do
this last I checked, so there will be problems.
thanks,
greg k-h
^ permalink raw reply [relevance 0%]
* [PATCH] HID: usbhid: enable remote wakeup for mice
@ 2023-02-22 1:39 19% Michael Wu
2023-02-22 6:04 0% ` Greg KH
` (2 more replies)
0 siblings, 3 replies; 200+ results
From: Michael Wu @ 2023-02-22 1:39 UTC (permalink / raw)
To: jikos, benjamin.tissoires; +Cc: linux-usb, linux-input, linux-kernel
This patch fixes a problem that USB mouse can't wake up the device that
enters standby.
At present, the kernel only checks whether certain USB manufacturers
support wake-up, which will easily cause inconvenience to the
development work of other manufacturers and add unnecessary work to the
maintenance of kernel.
The USB protocol supports judging whether a usb supports the wake-up
function, so it should be more reasonable to add a wake-up source by
directly checking the settings from the USB protocol.
There was a similar issue on the keyboard before, which was fixed by
this patch (3d61510f4eca), but now the problem happened on the mouse.
This patch uses a similar idea to fix this problem.
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/hid/usbhid/hid-core.c | 8 ++++++++
drivers/hid/usbhid/usbmouse.c | 1 +
2 files changed, 9 insertions(+)
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index be4c731aaa65..d3a6755cca09 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -1189,6 +1189,14 @@ static int usbhid_start(struct hid_device *hid)
device_set_wakeup_enable(&dev->dev, 1);
}
+ /**
+ * NOTE: enable remote wakeup by default for all mouse devices
+ * supporting the boot protocol.
+ */
+ if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
+ interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
+ device_set_wakeup_enable(&dev->dev, 1);
+
mutex_unlock(&usbhid->mutex);
return 0;
diff --git a/drivers/hid/usbhid/usbmouse.c b/drivers/hid/usbhid/usbmouse.c
index 3fd93c2e4f4a..2fbc3f49e420 100644
--- a/drivers/hid/usbhid/usbmouse.c
+++ b/drivers/hid/usbhid/usbmouse.c
@@ -188,6 +188,7 @@ static int usb_mouse_probe(struct usb_interface *intf, const struct usb_device_i
goto fail3;
usb_set_intfdata(intf, mouse);
+ device_set_wakeup_enable(&dev->dev, 1);
return 0;
fail3:
--
2.29.0
^ permalink raw reply related [relevance 19%]
* Re: [RESEND] Bluetooth: btrtl: Add support for RTL8852BS
2023-02-06 10:03 0% ` Paul Menzel
@ 2023-02-14 6:23 14% ` Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2023-02-14 6:23 UTC (permalink / raw)
To: Paul Menzel
Cc: marcel, johan.hedberg, luiz.dentz, linux-bluetooth, linux-kernel
Dear Paul:
Thank you for your advises. I had send PATCH-v2 to fix it. Can you
give me more advises?
On 2023/2/6 18:03, Paul Menzel wrote:
> Dear Victor,
>
>
> Thank you for your patch.
>
> Am 06.02.23 um 07:33 schrieb Victor Hassan:
>> Add the support for RTL8852BS BT controller on UART interface.
>> The necessary firmware file will be submitted to linux-firmware.
>>
>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>> ---
>> drivers/bluetooth/btrtl.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c
>> index 69c3fe649ca7..36c3a23324f8 100644
>> --- a/drivers/bluetooth/btrtl.c
>> +++ b/drivers/bluetooth/btrtl.c
>> @@ -198,6 +198,14 @@ static const struct id_table ic_id_table[] = {
>> .fw_name = "rtl_bt/rtl8852bu_fw.bin",
>> .cfg_name = "rtl_bt/rtl8852bu_config" },
>> + /* 8852B with UART interface */
>> + { IC_INFO(RTL_ROM_LMP_8852A, 0xb, 0xb, HCI_UART),
>> + .config_needed = true,
>> + .has_rom_version = true,
>> + .has_msft_ext = true,
>> + .fw_name = "rtl_bt/rtl8852bs_fw.bin",
>> + .cfg_name = "rtl_bt/rtl8852bs_config" },
>> +
>
> I’d sort *bs* before *bu*.
>
>> /* 8852C */
>> { IC_INFO(RTL_ROM_LMP_8852A, 0xc, 0xc, HCI_USB),
>> .config_needed = false,
>> @@ -965,5 +973,7 @@ MODULE_FIRMWARE("rtl_bt/rtl8852au_fw.bin");
>> MODULE_FIRMWARE("rtl_bt/rtl8852au_config.bin");
>> MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin");
>> MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin");
>> +MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin");
>> +MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin");
>> MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin");
>> MODULE_FIRMWARE("rtl_bt/rtl8852cu_config.bin");
>
> Ditto.
>
>
> Kind regards,
>
> Paul
^ permalink raw reply [relevance 14%]
* [PATCH v2] Bluetooth: btrtl: Add support for RTL8852BS
@ 2023-02-09 6:34 20% Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2023-02-09 6:34 UTC (permalink / raw)
To: marcel, johan.hedberg, luiz.dentz; +Cc: linux-bluetooth, linux-kernel
Add the support for RTL8852BS BT controller on UART interface.
The necessary firmware file will be submitted to linux-firmware.
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/bluetooth/btrtl.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c
index 69c3fe649ca7..aee75f278e60 100644
--- a/drivers/bluetooth/btrtl.c
+++ b/drivers/bluetooth/btrtl.c
@@ -190,6 +190,14 @@ static const struct id_table ic_id_table[] = {
.fw_name = "rtl_bt/rtl8852au_fw.bin",
.cfg_name = "rtl_bt/rtl8852au_config" },
+ /* 8852B with UART interface */
+ { IC_INFO(RTL_ROM_LMP_8852A, 0xb, 0xb, HCI_UART),
+ .config_needed = true,
+ .has_rom_version = true,
+ .has_msft_ext = true,
+ .fw_name = "rtl_bt/rtl8852bs_fw.bin",
+ .cfg_name = "rtl_bt/rtl8852bs_config" },
+
/* 8852B */
{ IC_INFO(RTL_ROM_LMP_8852A, 0xb, 0xb, HCI_USB),
.config_needed = false,
@@ -963,6 +971,8 @@ MODULE_FIRMWARE("rtl_bt/rtl8822b_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8822b_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852au_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852au_config.bin");
+MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin");
+MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin");
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [RESEND] Bluetooth: btrtl: Add support for RTL8852BS
2023-02-06 6:33 20% [RESEND] Bluetooth: btrtl: Add support for RTL8852BS Victor Hassan
@ 2023-02-06 10:03 0% ` Paul Menzel
2023-02-14 6:23 14% ` Victor Hassan
0 siblings, 1 reply; 200+ results
From: Paul Menzel @ 2023-02-06 10:03 UTC (permalink / raw)
To: Victor Hassan
Cc: marcel, johan.hedberg, luiz.dentz, linux-bluetooth, linux-kernel
Dear Victor,
Thank you for your patch.
Am 06.02.23 um 07:33 schrieb Victor Hassan:
> Add the support for RTL8852BS BT controller on UART interface.
> The necessary firmware file will be submitted to linux-firmware.
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> ---
> drivers/bluetooth/btrtl.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c
> index 69c3fe649ca7..36c3a23324f8 100644
> --- a/drivers/bluetooth/btrtl.c
> +++ b/drivers/bluetooth/btrtl.c
> @@ -198,6 +198,14 @@ static const struct id_table ic_id_table[] = {
> .fw_name = "rtl_bt/rtl8852bu_fw.bin",
> .cfg_name = "rtl_bt/rtl8852bu_config" },
>
> + /* 8852B with UART interface */
> + { IC_INFO(RTL_ROM_LMP_8852A, 0xb, 0xb, HCI_UART),
> + .config_needed = true,
> + .has_rom_version = true,
> + .has_msft_ext = true,
> + .fw_name = "rtl_bt/rtl8852bs_fw.bin",
> + .cfg_name = "rtl_bt/rtl8852bs_config" },
> +
I’d sort *bs* before *bu*.
> /* 8852C */
> { IC_INFO(RTL_ROM_LMP_8852A, 0xc, 0xc, HCI_USB),
> .config_needed = false,
> @@ -965,5 +973,7 @@ MODULE_FIRMWARE("rtl_bt/rtl8852au_fw.bin");
> MODULE_FIRMWARE("rtl_bt/rtl8852au_config.bin");
> MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin");
> MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin");
> +MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin");
> +MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin");
> MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin");
> MODULE_FIRMWARE("rtl_bt/rtl8852cu_config.bin");
Ditto.
Kind regards,
Paul
^ permalink raw reply [relevance 0%]
* [RESEND] Bluetooth: btrtl: Add support for RTL8852BS
@ 2023-02-06 6:33 20% Victor Hassan
2023-02-06 10:03 0% ` Paul Menzel
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2023-02-06 6:33 UTC (permalink / raw)
To: marcel, johan.hedberg, luiz.dentz; +Cc: linux-bluetooth, linux-kernel
Add the support for RTL8852BS BT controller on UART interface.
The necessary firmware file will be submitted to linux-firmware.
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/bluetooth/btrtl.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c
index 69c3fe649ca7..36c3a23324f8 100644
--- a/drivers/bluetooth/btrtl.c
+++ b/drivers/bluetooth/btrtl.c
@@ -198,6 +198,14 @@ static const struct id_table ic_id_table[] = {
.fw_name = "rtl_bt/rtl8852bu_fw.bin",
.cfg_name = "rtl_bt/rtl8852bu_config" },
+ /* 8852B with UART interface */
+ { IC_INFO(RTL_ROM_LMP_8852A, 0xb, 0xb, HCI_UART),
+ .config_needed = true,
+ .has_rom_version = true,
+ .has_msft_ext = true,
+ .fw_name = "rtl_bt/rtl8852bs_fw.bin",
+ .cfg_name = "rtl_bt/rtl8852bs_config" },
+
/* 8852C */
{ IC_INFO(RTL_ROM_LMP_8852A, 0xc, 0xc, HCI_USB),
.config_needed = false,
@@ -965,5 +973,7 @@ MODULE_FIRMWARE("rtl_bt/rtl8852au_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852au_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin");
+MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin");
+MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852cu_config.bin");
--
2.29.0
^ permalink raw reply related [relevance 20%]
* [PATCH v2] pstore/blk: Export a method to implemente panic_write()
@ 2023-02-06 6:18 17% Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2023-02-06 6:18 UTC (permalink / raw)
To: keescook; +Cc: tony.luck, gpiccoli, linux-hardening, linux-kernel
The panic_write() is necessary to write the pstore frontend message
to blk devices when panic. Here is a way to register panic_write when
we use "best_effort" way to register the pstore blk-backend.
Usage:
xx_register_pstore_panic_write(pstore_blk_notifier_type type,
struct pstore_device_info *pdi)
{
switch (type) {
case PSTORE_BLK_BACKEND_REGISTER:
case PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER:
...
pid->zone.panic_write = xxx;
...
break;
case PSTORE_BLK_BACKEND_UNREGISTER:
case PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER:
...
pdi->zone.panic_write = NULL;
...
break;
default:
break;
}
}
static struct pstore_blk_notifier pbn = {
.notitifer_call = xx_register_pstore_panic_write;
}
use {un,}register_pstore_blk_panic_notifier() to register/unregister
pstore_blk_notifier
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
fs/pstore/blk.c | 101 +++++++++++++++++++++++++++++++++++--
include/linux/pstore_blk.h | 19 +++++++
2 files changed, 116 insertions(+), 4 deletions(-)
diff --git a/fs/pstore/blk.c b/fs/pstore/blk.c
index 4ae0cfcd15f2..2c70a3bff1ae 100644
--- a/fs/pstore/blk.c
+++ b/fs/pstore/blk.c
@@ -18,6 +18,7 @@
#include <linux/file.h>
#include <linux/init_syscalls.h>
#include <linux/mount.h>
+#include <linux/notifier.h>
static long kmsg_size = CONFIG_PSTORE_BLK_KMSG_SIZE;
module_param(kmsg_size, long, 0400);
@@ -72,6 +73,14 @@ static DEFINE_MUTEX(pstore_blk_lock);
static struct file *psblk_file;
static struct pstore_device_info *pstore_device_info;
+static struct {
+ struct raw_notifier_head chain;
+ struct pstore_blk_notifier *pbn;
+ bool notifier;
+} pstore_blk_panic_notifier = {
+ .chain = RAW_NOTIFIER_INIT(pstore_blk_panic_notifier.chain),
+};
+
#define check_size(name, alignsize) ({ \
long _##name_ = (name); \
_##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \
@@ -94,6 +103,82 @@ static struct pstore_device_info *pstore_device_info;
dev->zone.name = _##name_; \
}
+static int pstore_blk_panic_notifier_call(struct notifier_block *nb,
+ unsigned long action, void *data)
+{
+ int ret = 0;
+ struct pstore_blk_notifier *pbn =
+ container_of(nb, struct pstore_blk_notifier, nb);
+
+ if (pbn)
+ ret = pbn->notifier_call(action, data);
+
+ return ret;
+}
+
+int register_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn)
+{
+ int err = 0;
+ struct notifier_block *nb;
+
+ mutex_lock(&pstore_blk_lock);
+
+ if (pstore_blk_panic_notifier.notifier) {
+ pr_info("had register panic\n");
+ goto unlock;
+ }
+
+ nb = &pbn->nb;
+ nb->notifier_call = pstore_blk_panic_notifier_call;
+
+ err = raw_notifier_chain_register(&pstore_blk_panic_notifier.chain, nb);
+ if (err)
+ goto unlock;
+
+ if (pstore_device_info)
+ err = nb->notifier_call(nb, PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER,
+ pstore_device_info);
+
+ if (!err)
+ pstore_blk_panic_notifier.notifier = true;
+
+unlock:
+ mutex_unlock(&pstore_blk_lock);
+
+ return err;
+}
+EXPORT_SYMBOL_GPL(register_pstore_blk_panic_notifier);
+
+void unregister_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn)
+{
+ struct notifier_block *nb = &pbn->nb;
+
+ mutex_lock(&pstore_blk_lock);
+
+ raw_notifier_chain_unregister(&pstore_blk_panic_notifier.chain, nb);
+
+ if (pstore_device_info)
+ nb->notifier_call(nb, PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER,
+ pstore_device_info);
+
+ pstore_blk_panic_notifier.notifier = false;
+
+ mutex_unlock(&pstore_blk_lock);
+}
+EXPORT_SYMBOL_GPL(unregister_pstore_blk_panic_notifier);
+
+static int pstore_blk_panic_notifier_init_call(struct pstore_device_info *pdi)
+{
+ return raw_notifier_call_chain(&pstore_blk_panic_notifier.chain,
+ PSTORE_BLK_BACKEND_REGISTER, pdi);
+}
+
+static int pstore_blk_panic_notifier_exit_call(struct pstore_device_info *pdi)
+{
+ return raw_notifier_call_chain(&pstore_blk_panic_notifier.chain,
+ PSTORE_BLK_BACKEND_UNREGISTER, pdi);
+}
+
static int __register_pstore_device(struct pstore_device_info *dev)
{
int ret;
@@ -301,16 +386,22 @@ static int __init __best_effort_init(void)
if (!best_effort_dev)
return -ENOMEM;
+ strcpy(best_effort_dev->path, blkdev);
best_effort_dev->zone.read = psblk_generic_blk_read;
best_effort_dev->zone.write = psblk_generic_blk_write;
ret = __register_pstore_blk(best_effort_dev,
early_boot_devpath(blkdev));
- if (ret)
+ if (ret) {
kfree(best_effort_dev);
- else
- pr_info("attached %s (%lu) (no dedicated panic_write!)\n",
- blkdev, best_effort_dev->zone.total_size);
+ } else {
+ if (pstore_blk_panic_notifier_init_call(best_effort_dev) == NOTIFY_OK)
+ pr_info("attached %s (%lu) (dedicated panic_write!)\n",
+ blkdev, best_effort_dev->zone.total_size);
+ else
+ pr_info("attached %s (%lu) (no dedicated panic_write!)\n",
+ blkdev, best_effort_dev->zone.total_size);
+ }
return ret;
}
@@ -326,6 +417,8 @@ static void __exit __best_effort_exit(void)
if (psblk_file) {
struct pstore_device_info *dev = pstore_device_info;
+ pstore_blk_panic_notifier_exit_call(dev);
+
__unregister_pstore_device(dev);
kfree(dev);
fput(psblk_file);
diff --git a/include/linux/pstore_blk.h b/include/linux/pstore_blk.h
index 924ca07aafbd..fd2eb927c2c5 100644
--- a/include/linux/pstore_blk.h
+++ b/include/linux/pstore_blk.h
@@ -17,13 +17,32 @@
*
*/
struct pstore_device_info {
+ char path[80];
unsigned int flags;
struct pstore_zone_info zone;
};
+enum pstore_blk_notifier_type {
+ PSTORE_BLK_BACKEND_REGISTER = 1,
+ PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER,
+ PSTORE_BLK_BACKEND_UNREGISTER,
+ PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER,
+};
+
+typedef int (*pstore_blk_notifier_fn_t)(enum pstore_blk_notifier_type type,
+ struct pstore_device_info *dev);
+
+struct pstore_blk_notifier {
+ struct notifier_block nb;
+ pstore_blk_notifier_fn_t notifier_call;
+};
+
int register_pstore_device(struct pstore_device_info *dev);
void unregister_pstore_device(struct pstore_device_info *dev);
+int register_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn);
+void unregister_pstore_blk_panic_notifier(struct pstore_blk_notifier *nb);
+
/**
* struct pstore_blk_config - the pstore_blk backend configuration
*
--
2.29.0
^ permalink raw reply related [relevance 17%]
* Re: [PATCH] mmc:mmc-cqhci:support interrupt coalescing
2023-01-31 13:32 0% ` Adrian Hunter
@ 2023-02-04 6:05 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2023-02-04 6:05 UTC (permalink / raw)
To: Adrian Hunter, riteshh, asutoshd, ulf.hansson, chaotian.jing,
matthias.bgg, kdasu.kdev, alcooperx, f.fainelli, haibo.chen,
shawnguo, agross, andersson, michal.simek, thierry.reding,
jonathanh
Cc: bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
Dear Adrian,
On 2023/1/31 21:32, Adrian Hunter wrote:
> On 31/01/23 15:12, Michael Wu wrote:
>> Dear Adrian,
>>
>> On 2023/1/30 23:59, Adrian Hunter wrote:
>>> On 30/01/23 08:46, Michael Wu wrote:
>>>> Support interrupt coalescing to reduce the frequency of mmc interrupts
>>>
>>> There doesn't seem to be any users. The new parameter to
>>> cqhci_init() is always false. New features are not usually
>>> accepted without users.
>>
>> At present, I have only supported this feature on the Allwinner platform because I have not get enough information about other vendors.
>>>
>>> There needs to be an explanation of why the change is being made.
>>
>> I consider reducing the number of interrupt context switches. Can you tell me why the community does not support this feature? I wonder whether I'm doing is correct. If it's correct, i will improve this patch and incorporate it
>
> AFAIK the community has not made any comment on supporting interrupt coalescing for CQHCI, one way or another.
> However, it is generally expected that new features will only be added if they demonstrate some benefit.
> Just assuming that there is a benefit is not enough.
>
Okay, I'll provide the performance data soon.
>>>
>>> Also there doesn't seem to be any configuration of the CQIC
>>> register.
>>
>> At present, I am working on the hook function .cqe_enable that the ICCTH of CQIC is set in enable
>>>
>>>>
>>>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>>>> ---
>>>> drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
>>>> drivers/mmc/host/cqhci.h | 5 ++++-
>>>> drivers/mmc/host/mtk-sd.c | 2 +-
>>>> drivers/mmc/host/sdhci-brcmstb.c | 2 +-
>>>> drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
>>>> drivers/mmc/host/sdhci-msm.c | 2 +-
>>>> drivers/mmc/host/sdhci-of-arasan.c | 2 +-
>>>> drivers/mmc/host/sdhci-pci-core.c | 2 +-
>>>> drivers/mmc/host/sdhci-pci-gli.c | 2 +-
>>>> drivers/mmc/host/sdhci-tegra.c | 2 +-
>>>> drivers/mmc/host/sdhci_am654.c | 2 +-
>>>> 11 files changed, 28 insertions(+), 15 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
>>>> index b3d7d6d8d654..f9cdf9f04bfc 100644
>>>> --- a/drivers/mmc/host/cqhci-core.c
>>>> +++ b/drivers/mmc/host/cqhci-core.c
>>>> @@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
>>>> }
>>>> static void cqhci_prep_task_desc(struct mmc_request *mrq,
>>>> - struct cqhci_host *cq_host, int tag)
>>>> + struct cqhci_host *cq_host, int tag, int intr)
>>>> {
>>>> __le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
>>>> u32 req_flags = mrq->data->flags;
>>>> @@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct mmc_request *mrq,
>>>> desc0 = CQHCI_VALID(1) |
>>>> CQHCI_END(1) |
>>>> - CQHCI_INT(1) |
>>>> + CQHCI_INT(intr) |
>>>> CQHCI_ACT(0x5) |
>>>> CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
>>>> CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
>>>> @@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
>>>> }
>>>> if (mrq->data) {
>>>> - cqhci_prep_task_desc(mrq, cq_host, tag);
>>>> + cqhci_prep_task_desc(mrq, cq_host, tag, (cq_host->intr_clsc ? 0 : 1));
>>>> err = cqhci_prep_tran_desc(mrq, cq_host, tag);
>>>> if (err) {
>>>> @@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc, unsigned int tag)
>>>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>>>> int data_error)
>>>> {
>>>> - u32 status;
>>>> + u32 status, rval;
>>>> unsigned long tag = 0, comp_status;
>>>> struct cqhci_host *cq_host = mmc->cqe_private;
>>>> @@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>>>> spin_unlock(&cq_host->lock);
>>>> }
>>>> + if (cq_host->intr_clsc) {
>>>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>>>> + rval |= CQHCI_IC_RESET;
>>>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>>>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>>>> + rval &= (~CQHCI_IC_RESET);
>>>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>>>> + }
>>>> +
>>>> if (status & CQHCI_IS_TCL)
>>>> wake_up(&cq_host->wait_queue);
>>>> @@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host)
>>>> }
>>>> int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
>>>> - bool dma64)
>>>> + bool dma64, bool intr_clsc)
>>>> {
>>>> int err;
>>>> cq_host->dma64 = dma64;
>>>> + cq_host->intr_clsc = intr_clsc;
>>>> cq_host->mmc = mmc;
>>>> cq_host->mmc->cqe_private = cq_host;
>>>> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
>>>> index ba9387ed90eb..acf90773c30a 100644
>>>> --- a/drivers/mmc/host/cqhci.h
>>>> +++ b/drivers/mmc/host/cqhci.h
>>>> @@ -227,6 +227,9 @@ struct cqhci_host {
>>>> /* 64 bit DMA */
>>>> bool dma64;
>>>> +
>>>> + /* interrupt coalescing*/
>>>> + bool intr_clsc;
>>>> int num_slots;
>>>> int qcnt;
>>>> @@ -312,7 +315,7 @@ struct platform_device;
>>>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>>>> int data_error);
>>>> -int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64);
>>>> +int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64, bool intr_clsc);
>>>> struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
>>>> int cqhci_deactivate(struct mmc_host *mmc);
>>>> static inline int cqhci_suspend(struct mmc_host *mmc)
>>>> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
>>>> index edade0e54a0c..2c18f954d4b8 100644
>>>> --- a/drivers/mmc/host/mtk-sd.c
>>>> +++ b/drivers/mmc/host/mtk-sd.c
>>>> @@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
>>>> host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>>> host->cq_host->mmio = host->base + 0x800;
>>>> host->cq_host->ops = &msdc_cmdq_ops;
>>>> - ret = cqhci_init(host->cq_host, mmc, true);
>>>> + ret = cqhci_init(host->cq_host, mmc, true, false);
>>>> if (ret)
>>>> goto host_free;
>>>> mmc->max_segs = 128;
>>>> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
>>>> index f2cf3d70db79..4aeaeddbbf25 100644
>>>> --- a/drivers/mmc/host/sdhci-brcmstb.c
>>>> +++ b/drivers/mmc/host/sdhci-brcmstb.c
>>>> @@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct sdhci_host *host,
>>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>>> }
>>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>>> if (ret)
>>>> goto cleanup;
>>>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
>>>> index 9e73c34b6401..7aef7abe71f1 100644
>>>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
>>>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
>>>> @@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
>>>> cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
>>>> cq_host->ops = &esdhc_cqhci_ops;
>>>> - err = cqhci_init(cq_host, host->mmc, false);
>>>> + err = cqhci_init(cq_host, host->mmc, false, false);
>>>> if (err)
>>>> goto disable_ahb_clk;
>>>> }
>>>> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
>>>> index 4ac8651d0b29..b6549d1e43ec 100644
>>>> --- a/drivers/mmc/host/sdhci-msm.c
>>>> +++ b/drivers/mmc/host/sdhci-msm.c
>>>> @@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct sdhci_host *host,
>>>> if (ret)
>>>> goto cleanup;
>>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>>> if (ret) {
>>>> dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
>>>> mmc_hostname(host->mmc), ret);
>>>> diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c
>>>> index 89c431a34c43..811f8686532d 100644
>>>> --- a/drivers/mmc/host/sdhci-of-arasan.c
>>>> +++ b/drivers/mmc/host/sdhci-of-arasan.c
>>>> @@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan)
>>>> if (dma64)
>>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>>> if (ret)
>>>> goto cleanup;
>>>> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
>>>> index c359f867df0a..6f6cae6355a7 100644
>>>> --- a/drivers/mmc/host/sdhci-pci-core.c
>>>> +++ b/drivers/mmc/host/sdhci-pci-core.c
>>>> @@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot *slot)
>>>> if (dma64)
>>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>>> if (ret)
>>>> goto cleanup;
>>>> diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
>>>> index 633a8ee8f8c5..6917ba339aa9 100644
>>>> --- a/drivers/mmc/host/sdhci-pci-gli.c
>>>> +++ b/drivers/mmc/host/sdhci-pci-gli.c
>>>> @@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
>>>> if (dma64)
>>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>>> if (ret)
>>>> goto cleanup;
>>>> diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
>>>> index bff084f178c9..f98a468e8f43 100644
>>>> --- a/drivers/mmc/host/sdhci-tegra.c
>>>> +++ b/drivers/mmc/host/sdhci-tegra.c
>>>> @@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct sdhci_host *host)
>>>> if (dma64)
>>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>>> if (ret)
>>>> goto cleanup;
>>>> diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
>>>> index 7ef828942df3..8e7fbee70e16 100644
>>>> --- a/drivers/mmc/host/sdhci_am654.c
>>>> +++ b/drivers/mmc/host/sdhci_am654.c
>>>> @@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
>>>> host->mmc->caps2 |= MMC_CAP2_CQE;
>>>> - return cqhci_init(cq_host, host->mmc, 1);
>>>> + return cqhci_init(cq_host, host->mmc, 1, false);
>>>> }
>>>> static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
>>
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* [PATCH] pstore/blk: Export a method to implemente panic_write()
@ 2023-02-03 11:35 17% Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2023-02-03 11:35 UTC (permalink / raw)
To: keescook; +Cc: tony.luck, gpiccoli, linux-hardening, linux-kernel
The panic_write() is necessary to write the pstore frontend message
to blk devices when panic. Here is a way to register panic_write when
we use "best_effort" way to register the pstore blk-backend.
Usage:
xx_register_pstore_panic_write(pstore_blk_notifier_type type,
struct pstore_device_info *pdi)
{
switch (type) {
case PSTORE_BLK_BACKEND_REGISTER:
case PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER:
...
pid->zone.panic_write = xxx;
...
break;
case PSTORE_BLK_BACKEND_UNREGISTER:
case PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER:
...
pdi->zone.panic_write = NULL;
...
break;
default:
break;
}
}
static struct pstore_blk_notifier pbn = {
.notitifer_call = xx_register_pstore_panic_write;
}
use {un,}register_pstore_blk_panic_notifier() to register/unregister
pstore_blk_notifier
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
fs/pstore/blk.c | 101 +++++++++++++++++++++++++++++++++++--
include/linux/pstore_blk.h | 19 +++++++
2 files changed, 116 insertions(+), 4 deletions(-)
diff --git a/fs/pstore/blk.c b/fs/pstore/blk.c
index 4ae0cfcd15f2..2c70a3bff1ae 100644
--- a/fs/pstore/blk.c
+++ b/fs/pstore/blk.c
@@ -18,6 +18,7 @@
#include <linux/file.h>
#include <linux/init_syscalls.h>
#include <linux/mount.h>
+#include <linux/notifier.h>
static long kmsg_size = CONFIG_PSTORE_BLK_KMSG_SIZE;
module_param(kmsg_size, long, 0400);
@@ -72,6 +73,14 @@ static DEFINE_MUTEX(pstore_blk_lock);
static struct file *psblk_file;
static struct pstore_device_info *pstore_device_info;
+static struct {
+ struct raw_notifier_head chain;
+ struct pstore_blk_notifier *pbn;
+ bool notifier;
+} pstore_blk_panic_notifier = {
+ .chain = RAW_NOTIFIER_INIT(pstore_blk_panic_notifier.chain),
+};
+
#define check_size(name, alignsize) ({ \
long _##name_ = (name); \
_##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \
@@ -94,6 +103,82 @@ static struct pstore_device_info *pstore_device_info;
dev->zone.name = _##name_; \
}
+static int pstore_blk_panic_notifier_call(struct notifier_block *nb,
+ unsigned long action, void *data)
+{
+ int ret = 0;
+ struct pstore_blk_notifier *pbn =
+ container_of(nb, struct pstore_blk_notifier, nb);
+
+ if (pbn)
+ ret = pbn->notifier_call(action, data);
+
+ return ret;
+}
+
+int register_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn)
+{
+ int err = 0;
+ struct notifier_block *nb;
+
+ mutex_lock(&pstore_blk_lock);
+
+ if (pstore_blk_panic_notifier.notifier) {
+ pr_info("had register panic\n");
+ goto unlock;
+ }
+
+ nb = &pbn->nb;
+ nb->notifier_call = pstore_blk_panic_notifier_call;
+
+ err = raw_notifier_chain_register(&pstore_blk_panic_notifier.chain, nb);
+ if (err)
+ goto unlock;
+
+ if (pstore_device_info)
+ err = nb->notifier_call(nb, PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER,
+ pstore_device_info);
+
+ if (!err)
+ pstore_blk_panic_notifier.notifier = true;
+
+unlock:
+ mutex_unlock(&pstore_blk_lock);
+
+ return err;
+}
+EXPORT_SYMBOL_GPL(register_pstore_blk_panic_notifier);
+
+void unregister_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn)
+{
+ struct notifier_block *nb = &pbn->nb;
+
+ mutex_lock(&pstore_blk_lock);
+
+ raw_notifier_chain_unregister(&pstore_blk_panic_notifier.chain, nb);
+
+ if (pstore_device_info)
+ nb->notifier_call(nb, PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER,
+ pstore_device_info);
+
+ pstore_blk_panic_notifier.notifier = false;
+
+ mutex_unlock(&pstore_blk_lock);
+}
+EXPORT_SYMBOL_GPL(unregister_pstore_blk_panic_notifier);
+
+static int pstore_blk_panic_notifier_init_call(struct pstore_device_info *pdi)
+{
+ return raw_notifier_call_chain(&pstore_blk_panic_notifier.chain,
+ PSTORE_BLK_BACKEND_REGISTER, pdi);
+}
+
+static int pstore_blk_panic_notifier_exit_call(struct pstore_device_info *pdi)
+{
+ return raw_notifier_call_chain(&pstore_blk_panic_notifier.chain,
+ PSTORE_BLK_BACKEND_UNREGISTER, pdi);
+}
+
static int __register_pstore_device(struct pstore_device_info *dev)
{
int ret;
@@ -301,16 +386,22 @@ static int __init __best_effort_init(void)
if (!best_effort_dev)
return -ENOMEM;
+ strcpy(best_effort_dev->path, blkdev);
best_effort_dev->zone.read = psblk_generic_blk_read;
best_effort_dev->zone.write = psblk_generic_blk_write;
ret = __register_pstore_blk(best_effort_dev,
early_boot_devpath(blkdev));
- if (ret)
+ if (ret) {
kfree(best_effort_dev);
- else
- pr_info("attached %s (%lu) (no dedicated panic_write!)\n",
- blkdev, best_effort_dev->zone.total_size);
+ } else {
+ if (pstore_blk_panic_notifier_init_call(best_effort_dev) == NOTIFY_OK)
+ pr_info("attached %s (%lu) (dedicated panic_write!)\n",
+ blkdev, best_effort_dev->zone.total_size);
+ else
+ pr_info("attached %s (%lu) (no dedicated panic_write!)\n",
+ blkdev, best_effort_dev->zone.total_size);
+ }
return ret;
}
@@ -326,6 +417,8 @@ static void __exit __best_effort_exit(void)
if (psblk_file) {
struct pstore_device_info *dev = pstore_device_info;
+ pstore_blk_panic_notifier_exit_call(dev);
+
__unregister_pstore_device(dev);
kfree(dev);
fput(psblk_file);
diff --git a/include/linux/pstore_blk.h b/include/linux/pstore_blk.h
index 924ca07aafbd..4c1fc8debdc7 100644
--- a/include/linux/pstore_blk.h
+++ b/include/linux/pstore_blk.h
@@ -17,13 +17,32 @@
*
*/
struct pstore_device_info {
+ char path[80];
unsigned int flags;
struct pstore_zone_info zone;
};
+enum pstore_blk_notifier_type {
+ PSTORE_BLK_BACKEND_REGISTER = 1,
+ PSTORE_BLK_BACKEND_PANIC_DRV_REGISTER,
+ PSTORE_BLK_BACKEND_UNREGISTER,
+ PSTORE_BLK_BACKEND_PANIC_DRV_UNREGISTER,
+};
+
+typedef int (*pstore_blk_notifier_fn_t)(pstore_blk_notifier_type type,
+ struct pstore_device_info *dev);
+
+struct pstore_blk_notifier {
+ struct notifier_block nb;
+ pstore_blk_notifier_fn_t notifier_call;
+};
+
int register_pstore_device(struct pstore_device_info *dev);
void unregister_pstore_device(struct pstore_device_info *dev);
+int register_pstore_blk_panic_notifier(struct pstore_blk_notifier *pbn);
+void unregister_pstore_blk_panic_notifier(struct pstore_blk_notifier *nb);
+
/**
* struct pstore_blk_config - the pstore_blk backend configuration
*
--
2.29.0
^ permalink raw reply related [relevance 17%]
* Re: [PATCH] mmc:mmc-cqhci:support interrupt coalescing
2023-01-31 13:12 13% ` Michael Wu
@ 2023-01-31 13:32 0% ` Adrian Hunter
2023-02-04 6:05 14% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Adrian Hunter @ 2023-01-31 13:32 UTC (permalink / raw)
To: Michael Wu, riteshh, asutoshd, ulf.hansson, chaotian.jing,
matthias.bgg, kdasu.kdev, alcooperx, f.fainelli, haibo.chen,
shawnguo, agross, andersson, michal.simek, thierry.reding,
jonathanh
Cc: bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
On 31/01/23 15:12, Michael Wu wrote:
> Dear Adrian,
>
> On 2023/1/30 23:59, Adrian Hunter wrote:
>> On 30/01/23 08:46, Michael Wu wrote:
>>> Support interrupt coalescing to reduce the frequency of mmc interrupts
>>
>> There doesn't seem to be any users. The new parameter to
>> cqhci_init() is always false. New features are not usually
>> accepted without users.
>
> At present, I have only supported this feature on the Allwinner platform because I have not get enough information about other vendors.
>>
>> There needs to be an explanation of why the change is being made.
>
> I consider reducing the number of interrupt context switches. Can you tell me why the community does not support this feature? I wonder whether I'm doing is correct. If it's correct, i will improve this patch and incorporate it
AFAIK the community has not made any comment on supporting interrupt coalescing for CQHCI, one way or another.
However, it is generally expected that new features will only be added if they demonstrate some benefit.
Just assuming that there is a benefit is not enough.
>>
>> Also there doesn't seem to be any configuration of the CQIC
>> register.
>
> At present, I am working on the hook function .cqe_enable that the ICCTH of CQIC is set in enable
>>
>>>
>>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>>> ---
>>> drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
>>> drivers/mmc/host/cqhci.h | 5 ++++-
>>> drivers/mmc/host/mtk-sd.c | 2 +-
>>> drivers/mmc/host/sdhci-brcmstb.c | 2 +-
>>> drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
>>> drivers/mmc/host/sdhci-msm.c | 2 +-
>>> drivers/mmc/host/sdhci-of-arasan.c | 2 +-
>>> drivers/mmc/host/sdhci-pci-core.c | 2 +-
>>> drivers/mmc/host/sdhci-pci-gli.c | 2 +-
>>> drivers/mmc/host/sdhci-tegra.c | 2 +-
>>> drivers/mmc/host/sdhci_am654.c | 2 +-
>>> 11 files changed, 28 insertions(+), 15 deletions(-)
>>>
>>> diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
>>> index b3d7d6d8d654..f9cdf9f04bfc 100644
>>> --- a/drivers/mmc/host/cqhci-core.c
>>> +++ b/drivers/mmc/host/cqhci-core.c
>>> @@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
>>> }
>>> static void cqhci_prep_task_desc(struct mmc_request *mrq,
>>> - struct cqhci_host *cq_host, int tag)
>>> + struct cqhci_host *cq_host, int tag, int intr)
>>> {
>>> __le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
>>> u32 req_flags = mrq->data->flags;
>>> @@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct mmc_request *mrq,
>>> desc0 = CQHCI_VALID(1) |
>>> CQHCI_END(1) |
>>> - CQHCI_INT(1) |
>>> + CQHCI_INT(intr) |
>>> CQHCI_ACT(0x5) |
>>> CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
>>> CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
>>> @@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
>>> }
>>> if (mrq->data) {
>>> - cqhci_prep_task_desc(mrq, cq_host, tag);
>>> + cqhci_prep_task_desc(mrq, cq_host, tag, (cq_host->intr_clsc ? 0 : 1));
>>> err = cqhci_prep_tran_desc(mrq, cq_host, tag);
>>> if (err) {
>>> @@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc, unsigned int tag)
>>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>>> int data_error)
>>> {
>>> - u32 status;
>>> + u32 status, rval;
>>> unsigned long tag = 0, comp_status;
>>> struct cqhci_host *cq_host = mmc->cqe_private;
>>> @@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>>> spin_unlock(&cq_host->lock);
>>> }
>>> + if (cq_host->intr_clsc) {
>>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>>> + rval |= CQHCI_IC_RESET;
>>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>>> + rval &= (~CQHCI_IC_RESET);
>>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>>> + }
>>> +
>>> if (status & CQHCI_IS_TCL)
>>> wake_up(&cq_host->wait_queue);
>>> @@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host)
>>> }
>>> int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
>>> - bool dma64)
>>> + bool dma64, bool intr_clsc)
>>> {
>>> int err;
>>> cq_host->dma64 = dma64;
>>> + cq_host->intr_clsc = intr_clsc;
>>> cq_host->mmc = mmc;
>>> cq_host->mmc->cqe_private = cq_host;
>>> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
>>> index ba9387ed90eb..acf90773c30a 100644
>>> --- a/drivers/mmc/host/cqhci.h
>>> +++ b/drivers/mmc/host/cqhci.h
>>> @@ -227,6 +227,9 @@ struct cqhci_host {
>>> /* 64 bit DMA */
>>> bool dma64;
>>> +
>>> + /* interrupt coalescing*/
>>> + bool intr_clsc;
>>> int num_slots;
>>> int qcnt;
>>> @@ -312,7 +315,7 @@ struct platform_device;
>>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>>> int data_error);
>>> -int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64);
>>> +int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64, bool intr_clsc);
>>> struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
>>> int cqhci_deactivate(struct mmc_host *mmc);
>>> static inline int cqhci_suspend(struct mmc_host *mmc)
>>> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
>>> index edade0e54a0c..2c18f954d4b8 100644
>>> --- a/drivers/mmc/host/mtk-sd.c
>>> +++ b/drivers/mmc/host/mtk-sd.c
>>> @@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
>>> host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>> host->cq_host->mmio = host->base + 0x800;
>>> host->cq_host->ops = &msdc_cmdq_ops;
>>> - ret = cqhci_init(host->cq_host, mmc, true);
>>> + ret = cqhci_init(host->cq_host, mmc, true, false);
>>> if (ret)
>>> goto host_free;
>>> mmc->max_segs = 128;
>>> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
>>> index f2cf3d70db79..4aeaeddbbf25 100644
>>> --- a/drivers/mmc/host/sdhci-brcmstb.c
>>> +++ b/drivers/mmc/host/sdhci-brcmstb.c
>>> @@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct sdhci_host *host,
>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>> }
>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>> if (ret)
>>> goto cleanup;
>>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
>>> index 9e73c34b6401..7aef7abe71f1 100644
>>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
>>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
>>> @@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
>>> cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
>>> cq_host->ops = &esdhc_cqhci_ops;
>>> - err = cqhci_init(cq_host, host->mmc, false);
>>> + err = cqhci_init(cq_host, host->mmc, false, false);
>>> if (err)
>>> goto disable_ahb_clk;
>>> }
>>> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
>>> index 4ac8651d0b29..b6549d1e43ec 100644
>>> --- a/drivers/mmc/host/sdhci-msm.c
>>> +++ b/drivers/mmc/host/sdhci-msm.c
>>> @@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct sdhci_host *host,
>>> if (ret)
>>> goto cleanup;
>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>> if (ret) {
>>> dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
>>> mmc_hostname(host->mmc), ret);
>>> diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c
>>> index 89c431a34c43..811f8686532d 100644
>>> --- a/drivers/mmc/host/sdhci-of-arasan.c
>>> +++ b/drivers/mmc/host/sdhci-of-arasan.c
>>> @@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan)
>>> if (dma64)
>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>> if (ret)
>>> goto cleanup;
>>> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
>>> index c359f867df0a..6f6cae6355a7 100644
>>> --- a/drivers/mmc/host/sdhci-pci-core.c
>>> +++ b/drivers/mmc/host/sdhci-pci-core.c
>>> @@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot *slot)
>>> if (dma64)
>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>> if (ret)
>>> goto cleanup;
>>> diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
>>> index 633a8ee8f8c5..6917ba339aa9 100644
>>> --- a/drivers/mmc/host/sdhci-pci-gli.c
>>> +++ b/drivers/mmc/host/sdhci-pci-gli.c
>>> @@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
>>> if (dma64)
>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>> if (ret)
>>> goto cleanup;
>>> diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
>>> index bff084f178c9..f98a468e8f43 100644
>>> --- a/drivers/mmc/host/sdhci-tegra.c
>>> +++ b/drivers/mmc/host/sdhci-tegra.c
>>> @@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct sdhci_host *host)
>>> if (dma64)
>>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>>> if (ret)
>>> goto cleanup;
>>> diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
>>> index 7ef828942df3..8e7fbee70e16 100644
>>> --- a/drivers/mmc/host/sdhci_am654.c
>>> +++ b/drivers/mmc/host/sdhci_am654.c
>>> @@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
>>> host->mmc->caps2 |= MMC_CAP2_CQE;
>>> - return cqhci_init(cq_host, host->mmc, 1);
>>> + return cqhci_init(cq_host, host->mmc, 1, false);
>>> }
>>> static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
>
^ permalink raw reply [relevance 0%]
* Re: [PATCH] mmc:mmc-cqhci:support interrupt coalescing
2023-01-30 15:59 0% ` Adrian Hunter
@ 2023-01-31 13:12 13% ` Michael Wu
2023-01-31 13:32 0% ` Adrian Hunter
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2023-01-31 13:12 UTC (permalink / raw)
To: Adrian Hunter, riteshh, asutoshd, ulf.hansson, chaotian.jing,
matthias.bgg, kdasu.kdev, alcooperx, f.fainelli, haibo.chen,
shawnguo, agross, andersson, michal.simek, thierry.reding,
jonathanh
Cc: bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
Dear Adrian,
On 2023/1/30 23:59, Adrian Hunter wrote:
> On 30/01/23 08:46, Michael Wu wrote:
>> Support interrupt coalescing to reduce the frequency of mmc interrupts
>
> There doesn't seem to be any users. The new parameter to
> cqhci_init() is always false. New features are not usually
> accepted without users.
At present, I have only supported this feature on the Allwinner platform
because I have not get enough information about other vendors.
>
> There needs to be an explanation of why the change is being made.
I consider reducing the number of interrupt context switches. Can you
tell me why the community does not support this feature? I wonder
whether I'm doing is correct. If it's correct, i will improve this patch
and incorporate it
>
> Also there doesn't seem to be any configuration of the CQIC
> register.
At present, I am working on the hook function .cqe_enable that the ICCTH
of CQIC is set in enable
>
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
>> drivers/mmc/host/cqhci.h | 5 ++++-
>> drivers/mmc/host/mtk-sd.c | 2 +-
>> drivers/mmc/host/sdhci-brcmstb.c | 2 +-
>> drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
>> drivers/mmc/host/sdhci-msm.c | 2 +-
>> drivers/mmc/host/sdhci-of-arasan.c | 2 +-
>> drivers/mmc/host/sdhci-pci-core.c | 2 +-
>> drivers/mmc/host/sdhci-pci-gli.c | 2 +-
>> drivers/mmc/host/sdhci-tegra.c | 2 +-
>> drivers/mmc/host/sdhci_am654.c | 2 +-
>> 11 files changed, 28 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
>> index b3d7d6d8d654..f9cdf9f04bfc 100644
>> --- a/drivers/mmc/host/cqhci-core.c
>> +++ b/drivers/mmc/host/cqhci-core.c
>> @@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
>> }
>>
>> static void cqhci_prep_task_desc(struct mmc_request *mrq,
>> - struct cqhci_host *cq_host, int tag)
>> + struct cqhci_host *cq_host, int tag, int intr)
>> {
>> __le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
>> u32 req_flags = mrq->data->flags;
>> @@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct mmc_request *mrq,
>>
>> desc0 = CQHCI_VALID(1) |
>> CQHCI_END(1) |
>> - CQHCI_INT(1) |
>> + CQHCI_INT(intr) |
>> CQHCI_ACT(0x5) |
>> CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
>> CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
>> @@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
>> }
>>
>> if (mrq->data) {
>> - cqhci_prep_task_desc(mrq, cq_host, tag);
>> + cqhci_prep_task_desc(mrq, cq_host, tag, (cq_host->intr_clsc ? 0 : 1));
>>
>> err = cqhci_prep_tran_desc(mrq, cq_host, tag);
>> if (err) {
>> @@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc, unsigned int tag)
>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>> int data_error)
>> {
>> - u32 status;
>> + u32 status, rval;
>> unsigned long tag = 0, comp_status;
>> struct cqhci_host *cq_host = mmc->cqe_private;
>>
>> @@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>> spin_unlock(&cq_host->lock);
>> }
>>
>> + if (cq_host->intr_clsc) {
>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>> + rval |= CQHCI_IC_RESET;
>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>> + rval &= (~CQHCI_IC_RESET);
>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>> + }
>> +
>> if (status & CQHCI_IS_TCL)
>> wake_up(&cq_host->wait_queue);
>>
>> @@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host)
>> }
>>
>> int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
>> - bool dma64)
>> + bool dma64, bool intr_clsc)
>> {
>> int err;
>>
>> cq_host->dma64 = dma64;
>> + cq_host->intr_clsc = intr_clsc;
>> cq_host->mmc = mmc;
>> cq_host->mmc->cqe_private = cq_host;
>>
>> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
>> index ba9387ed90eb..acf90773c30a 100644
>> --- a/drivers/mmc/host/cqhci.h
>> +++ b/drivers/mmc/host/cqhci.h
>> @@ -227,6 +227,9 @@ struct cqhci_host {
>>
>> /* 64 bit DMA */
>> bool dma64;
>> +
>> + /* interrupt coalescing*/
>> + bool intr_clsc;
>> int num_slots;
>> int qcnt;
>>
>> @@ -312,7 +315,7 @@ struct platform_device;
>>
>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>> int data_error);
>> -int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64);
>> +int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64, bool intr_clsc);
>> struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
>> int cqhci_deactivate(struct mmc_host *mmc);
>> static inline int cqhci_suspend(struct mmc_host *mmc)
>> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
>> index edade0e54a0c..2c18f954d4b8 100644
>> --- a/drivers/mmc/host/mtk-sd.c
>> +++ b/drivers/mmc/host/mtk-sd.c
>> @@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
>> host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>> host->cq_host->mmio = host->base + 0x800;
>> host->cq_host->ops = &msdc_cmdq_ops;
>> - ret = cqhci_init(host->cq_host, mmc, true);
>> + ret = cqhci_init(host->cq_host, mmc, true, false);
>> if (ret)
>> goto host_free;
>> mmc->max_segs = 128;
>> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
>> index f2cf3d70db79..4aeaeddbbf25 100644
>> --- a/drivers/mmc/host/sdhci-brcmstb.c
>> +++ b/drivers/mmc/host/sdhci-brcmstb.c
>> @@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct sdhci_host *host,
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>> }
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
>> index 9e73c34b6401..7aef7abe71f1 100644
>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
>> @@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
>> cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
>> cq_host->ops = &esdhc_cqhci_ops;
>>
>> - err = cqhci_init(cq_host, host->mmc, false);
>> + err = cqhci_init(cq_host, host->mmc, false, false);
>> if (err)
>> goto disable_ahb_clk;
>> }
>> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
>> index 4ac8651d0b29..b6549d1e43ec 100644
>> --- a/drivers/mmc/host/sdhci-msm.c
>> +++ b/drivers/mmc/host/sdhci-msm.c
>> @@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct sdhci_host *host,
>> if (ret)
>> goto cleanup;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret) {
>> dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
>> mmc_hostname(host->mmc), ret);
>> diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c
>> index 89c431a34c43..811f8686532d 100644
>> --- a/drivers/mmc/host/sdhci-of-arasan.c
>> +++ b/drivers/mmc/host/sdhci-of-arasan.c
>> @@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
>> index c359f867df0a..6f6cae6355a7 100644
>> --- a/drivers/mmc/host/sdhci-pci-core.c
>> +++ b/drivers/mmc/host/sdhci-pci-core.c
>> @@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot *slot)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
>> index 633a8ee8f8c5..6917ba339aa9 100644
>> --- a/drivers/mmc/host/sdhci-pci-gli.c
>> +++ b/drivers/mmc/host/sdhci-pci-gli.c
>> @@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
>> index bff084f178c9..f98a468e8f43 100644
>> --- a/drivers/mmc/host/sdhci-tegra.c
>> +++ b/drivers/mmc/host/sdhci-tegra.c
>> @@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct sdhci_host *host)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
>> index 7ef828942df3..8e7fbee70e16 100644
>> --- a/drivers/mmc/host/sdhci_am654.c
>> +++ b/drivers/mmc/host/sdhci_am654.c
>> @@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
>>
>> host->mmc->caps2 |= MMC_CAP2_CQE;
>>
>> - return cqhci_init(cq_host, host->mmc, 1);
>> + return cqhci_init(cq_host, host->mmc, 1, false);
>> }
>>
>> static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
--
Regards,
Michael Wu
^ permalink raw reply [relevance 13%]
* Re: [PATCH] mmc:mmc-cqhci:support interrupt coalescing
2023-01-31 3:09 6% ` Wenchao Chen
@ 2023-01-31 13:10 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2023-01-31 13:10 UTC (permalink / raw)
To: Wenchao Chen
Cc: adrian.hunter, riteshh, asutoshd, ulf.hansson, chaotian.jing,
matthias.bgg, kdasu.kdev, alcooperx, f.fainelli, haibo.chen,
shawnguo, agross, andersson, michal.simek, thierry.reding,
jonathanh, bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
Dear Wenchao,
At present, I am working on the hook function .cqe_enable that the
ICCTH of CQIC is set, and it work well in my test. Actually I want to
confirm why the community does not support this feature. I think it is
necessary to reduce the number of interrupts caused by IO and reducing
interrupt context switching.
On 2023/1/31 11:09, Wenchao Chen wrote:
> On Mon, Jan 30, 2023 at 2:49 PM Michael Wu <michael@allwinnertech.com> wrote:
>>
>> Support interrupt coalescing to reduce the frequency of mmc interrupts
>>
>
> Hi Michael
> The CQIS register does not have any configuration.
> Usually ICCTH needs to be enabled.
>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
>> drivers/mmc/host/cqhci.h | 5 ++++-
>> drivers/mmc/host/mtk-sd.c | 2 +-
>> drivers/mmc/host/sdhci-brcmstb.c | 2 +-
>> drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
>> drivers/mmc/host/sdhci-msm.c | 2 +-
>> drivers/mmc/host/sdhci-of-arasan.c | 2 +-
>> drivers/mmc/host/sdhci-pci-core.c | 2 +-
>> drivers/mmc/host/sdhci-pci-gli.c | 2 +-
>> drivers/mmc/host/sdhci-tegra.c | 2 +-
>> drivers/mmc/host/sdhci_am654.c | 2 +-
>> 11 files changed, 28 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
>> index b3d7d6d8d654..f9cdf9f04bfc 100644
>> --- a/drivers/mmc/host/cqhci-core.c
>> +++ b/drivers/mmc/host/cqhci-core.c
>> @@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
>> }
>>
>> static void cqhci_prep_task_desc(struct mmc_request *mrq,
>> - struct cqhci_host *cq_host, int tag)
>> + struct cqhci_host *cq_host, int tag, int intr)
>> {
>> __le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
>> u32 req_flags = mrq->data->flags;
>> @@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct mmc_request *mrq,
>>
>> desc0 = CQHCI_VALID(1) |
>> CQHCI_END(1) |
>> - CQHCI_INT(1) |
>> + CQHCI_INT(intr) |
>> CQHCI_ACT(0x5) |
>> CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
>> CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
>> @@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
>> }
>>
>> if (mrq->data) {
>> - cqhci_prep_task_desc(mrq, cq_host, tag);
>> + cqhci_prep_task_desc(mrq, cq_host, tag, (cq_host->intr_clsc ? 0 : 1));
>>
>> err = cqhci_prep_tran_desc(mrq, cq_host, tag);
>> if (err) {
>> @@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc, unsigned int tag)
>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>> int data_error)
>> {
>> - u32 status;
>> + u32 status, rval;
>> unsigned long tag = 0, comp_status;
>> struct cqhci_host *cq_host = mmc->cqe_private;
>>
>> @@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>> spin_unlock(&cq_host->lock);
>> }
>>
>> + if (cq_host->intr_clsc) {
>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>> + rval |= CQHCI_IC_RESET;
>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>> + rval &= (~CQHCI_IC_RESET);
>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>> + }
>> +
>> if (status & CQHCI_IS_TCL)
>> wake_up(&cq_host->wait_queue);
>>
>> @@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host)
>> }
>>
>> int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
>> - bool dma64)
>> + bool dma64, bool intr_clsc)
>> {
>> int err;
>>
>> cq_host->dma64 = dma64;
>> + cq_host->intr_clsc = intr_clsc;
>> cq_host->mmc = mmc;
>> cq_host->mmc->cqe_private = cq_host;
>>
>> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
>> index ba9387ed90eb..acf90773c30a 100644
>> --- a/drivers/mmc/host/cqhci.h
>> +++ b/drivers/mmc/host/cqhci.h
>> @@ -227,6 +227,9 @@ struct cqhci_host {
>>
>> /* 64 bit DMA */
>> bool dma64;
>> +
>> + /* interrupt coalescing*/
>> + bool intr_clsc;
>> int num_slots;
>> int qcnt;
>>
>> @@ -312,7 +315,7 @@ struct platform_device;
>>
>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>> int data_error);
>> -int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64);
>> +int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64, bool intr_clsc);
>> struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
>> int cqhci_deactivate(struct mmc_host *mmc);
>> static inline int cqhci_suspend(struct mmc_host *mmc)
>> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
>> index edade0e54a0c..2c18f954d4b8 100644
>> --- a/drivers/mmc/host/mtk-sd.c
>> +++ b/drivers/mmc/host/mtk-sd.c
>> @@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
>> host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>> host->cq_host->mmio = host->base + 0x800;
>> host->cq_host->ops = &msdc_cmdq_ops;
>> - ret = cqhci_init(host->cq_host, mmc, true);
>> + ret = cqhci_init(host->cq_host, mmc, true, false);
>> if (ret)
>> goto host_free;
>> mmc->max_segs = 128;
>> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
>> index f2cf3d70db79..4aeaeddbbf25 100644
>> --- a/drivers/mmc/host/sdhci-brcmstb.c
>> +++ b/drivers/mmc/host/sdhci-brcmstb.c
>> @@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct sdhci_host *host,
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>> }
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
>> index 9e73c34b6401..7aef7abe71f1 100644
>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
>> @@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
>> cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
>> cq_host->ops = &esdhc_cqhci_ops;
>>
>> - err = cqhci_init(cq_host, host->mmc, false);
>> + err = cqhci_init(cq_host, host->mmc, false, false);
>> if (err)
>> goto disable_ahb_clk;
>> }
>> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
>> index 4ac8651d0b29..b6549d1e43ec 100644
>> --- a/drivers/mmc/host/sdhci-msm.c
>> +++ b/drivers/mmc/host/sdhci-msm.c
>> @@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct sdhci_host *host,
>> if (ret)
>> goto cleanup;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret) {
>> dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
>> mmc_hostname(host->mmc), ret);
>> diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c
>> index 89c431a34c43..811f8686532d 100644
>> --- a/drivers/mmc/host/sdhci-of-arasan.c
>> +++ b/drivers/mmc/host/sdhci-of-arasan.c
>> @@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
>> index c359f867df0a..6f6cae6355a7 100644
>> --- a/drivers/mmc/host/sdhci-pci-core.c
>> +++ b/drivers/mmc/host/sdhci-pci-core.c
>> @@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot *slot)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
>> index 633a8ee8f8c5..6917ba339aa9 100644
>> --- a/drivers/mmc/host/sdhci-pci-gli.c
>> +++ b/drivers/mmc/host/sdhci-pci-gli.c
>> @@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
>> index bff084f178c9..f98a468e8f43 100644
>> --- a/drivers/mmc/host/sdhci-tegra.c
>> +++ b/drivers/mmc/host/sdhci-tegra.c
>> @@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct sdhci_host *host)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
>> index 7ef828942df3..8e7fbee70e16 100644
>> --- a/drivers/mmc/host/sdhci_am654.c
>> +++ b/drivers/mmc/host/sdhci_am654.c
>> @@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
>>
>> host->mmc->caps2 |= MMC_CAP2_CQE;
>>
>> - return cqhci_init(cq_host, host->mmc, 1);
>> + return cqhci_init(cq_host, host->mmc, 1, false);
>> }
>>
>> static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
>> --
>> 2.29.0
>>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] mmc:mmc-cqhci:support interrupt coalescing
2023-01-30 8:30 0% ` Michal Simek
@ 2023-01-31 11:01 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2023-01-31 11:01 UTC (permalink / raw)
To: Michal Simek, adrian.hunter, riteshh, asutoshd, ulf.hansson,
chaotian.jing, matthias.bgg, kdasu.kdev, alcooperx, f.fainelli,
haibo.chen, shawnguo, agross, andersson, michal.simek,
thierry.reding, jonathanh
Cc: bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
Dear Michal,
Thanks for your advices, I'll provide the performance data soon.
On 2023/1/30 16:30, Michal Simek wrote:
>
> If you look at commits on drivers/mmc/host/cqhci-core.c you will see
> that subject style is
> mmc: cqhci:<space>
>
> Also some tools are checking this style. Please fix it.
>
>
>
> On 1/30/23 07:46, Michael Wu wrote:
>>
>> Support interrupt coalescing to reduce the frequency of mmc interrupts
>
> Missing dot at the end of sentence. I expect that you are doing it for a
> reason.
> I would guess that it increase performance but without any details.
> Should I enable it to get for example 20% better performance?
>
> Commit message should be IMHO much bigger with more details and some
> information about how coaleascing works would be also worth.
>
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
>> drivers/mmc/host/cqhci.h | 5 ++++-
>> drivers/mmc/host/mtk-sd.c | 2 +-
>> drivers/mmc/host/sdhci-brcmstb.c | 2 +-
>> drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
>> drivers/mmc/host/sdhci-msm.c | 2 +-
>> drivers/mmc/host/sdhci-of-arasan.c | 2 +-
>> drivers/mmc/host/sdhci-pci-core.c | 2 +-
>> drivers/mmc/host/sdhci-pci-gli.c | 2 +-
>> drivers/mmc/host/sdhci-tegra.c | 2 +-
>> drivers/mmc/host/sdhci_am654.c | 2 +-
>> 11 files changed, 28 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/mmc/host/cqhci-core.c
>> b/drivers/mmc/host/cqhci-core.c
>> index b3d7d6d8d654..f9cdf9f04bfc 100644
>> --- a/drivers/mmc/host/cqhci-core.c
>> +++ b/drivers/mmc/host/cqhci-core.c
>> @@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
>> }
>>
>> static void cqhci_prep_task_desc(struct mmc_request *mrq,
>> - struct cqhci_host *cq_host, int tag)
>> + struct cqhci_host *cq_host, int tag,
>> int intr)
>> {
>> __le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
>> u32 req_flags = mrq->data->flags;
>> @@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct
>> mmc_request *mrq,
>>
>> desc0 = CQHCI_VALID(1) |
>> CQHCI_END(1) |
>> - CQHCI_INT(1) |
>> + CQHCI_INT(intr) |
>> CQHCI_ACT(0x5) |
>> CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
>> CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
>> @@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc,
>> struct mmc_request *mrq)
>> }
>>
>> if (mrq->data) {
>> - cqhci_prep_task_desc(mrq, cq_host, tag);
>> + cqhci_prep_task_desc(mrq, cq_host, tag,
>> (cq_host->intr_clsc ? 0 : 1));
>>
>> err = cqhci_prep_tran_desc(mrq, cq_host, tag);
>> if (err) {
>> @@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc,
>> unsigned int tag)
>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>> int data_error)
>> {
>> - u32 status;
>> + u32 status, rval;
>> unsigned long tag = 0, comp_status;
>> struct cqhci_host *cq_host = mmc->cqe_private;
>>
>> @@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32
>> intmask, int cmd_error,
>> spin_unlock(&cq_host->lock);
>> }
>>
>> + if (cq_host->intr_clsc) {
>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>> + rval |= CQHCI_IC_RESET;
>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>> + rval = cqhci_readl(cq_host, CQHCI_IC);
>> + rval &= (~CQHCI_IC_RESET);
>> + cqhci_writel(cq_host, rval, CQHCI_IC);
>> + }
>> +
>> if (status & CQHCI_IS_TCL)
>> wake_up(&cq_host->wait_queue);
>>
>> @@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct
>> cqhci_host *cq_host)
>> }
>>
>> int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
>> - bool dma64)
>> + bool dma64, bool intr_clsc)
>> {
>> int err;
>>
>> cq_host->dma64 = dma64;
>> + cq_host->intr_clsc = intr_clsc;
>> cq_host->mmc = mmc;
>> cq_host->mmc->cqe_private = cq_host;
>>
>> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
>> index ba9387ed90eb..acf90773c30a 100644
>> --- a/drivers/mmc/host/cqhci.h
>> +++ b/drivers/mmc/host/cqhci.h
>> @@ -227,6 +227,9 @@ struct cqhci_host {
>>
>> /* 64 bit DMA */
>> bool dma64;
>> +
>> + /* interrupt coalescing*/
>
> missing space.
>
>> + bool intr_clsc;
>> int num_slots;
>> int qcnt;
>>
>> @@ -312,7 +315,7 @@ struct platform_device;
>>
>> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
>> int data_error);
>> -int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool
>> dma64);
>> +int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool
>> dma64, bool intr_clsc);
>> struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
>> int cqhci_deactivate(struct mmc_host *mmc);
>> static inline int cqhci_suspend(struct mmc_host *mmc)
>> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
>> index edade0e54a0c..2c18f954d4b8 100644
>> --- a/drivers/mmc/host/mtk-sd.c
>> +++ b/drivers/mmc/host/mtk-sd.c
>> @@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device
>> *pdev)
>> host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>> host->cq_host->mmio = host->base + 0x800;
>> host->cq_host->ops = &msdc_cmdq_ops;
>> - ret = cqhci_init(host->cq_host, mmc, true);
>> + ret = cqhci_init(host->cq_host, mmc, true, false);
>> if (ret)
>> goto host_free;
>> mmc->max_segs = 128;
>> diff --git a/drivers/mmc/host/sdhci-brcmstb.c
>> b/drivers/mmc/host/sdhci-brcmstb.c
>> index f2cf3d70db79..4aeaeddbbf25 100644
>> --- a/drivers/mmc/host/sdhci-brcmstb.c
>> +++ b/drivers/mmc/host/sdhci-brcmstb.c
>> @@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct
>> sdhci_host *host,
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>> }
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c
>> b/drivers/mmc/host/sdhci-esdhc-imx.c
>> index 9e73c34b6401..7aef7abe71f1 100644
>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
>> @@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct
>> platform_device *pdev)
>> cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
>> cq_host->ops = &esdhc_cqhci_ops;
>>
>> - err = cqhci_init(cq_host, host->mmc, false);
>> + err = cqhci_init(cq_host, host->mmc, false, false);
>> if (err)
>> goto disable_ahb_clk;
>> }
>> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
>> index 4ac8651d0b29..b6549d1e43ec 100644
>> --- a/drivers/mmc/host/sdhci-msm.c
>> +++ b/drivers/mmc/host/sdhci-msm.c
>> @@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct
>> sdhci_host *host,
>> if (ret)
>> goto cleanup;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret) {
>> dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
>> mmc_hostname(host->mmc), ret);
>> diff --git a/drivers/mmc/host/sdhci-of-arasan.c
>> b/drivers/mmc/host/sdhci-of-arasan.c
>> index 89c431a34c43..811f8686532d 100644
>> --- a/drivers/mmc/host/sdhci-of-arasan.c
>> +++ b/drivers/mmc/host/sdhci-of-arasan.c
>> @@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct
>> sdhci_arasan_data *sdhci_arasan)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-pci-core.c
>> b/drivers/mmc/host/sdhci-pci-core.c
>> index c359f867df0a..6f6cae6355a7 100644
>> --- a/drivers/mmc/host/sdhci-pci-core.c
>> +++ b/drivers/mmc/host/sdhci-pci-core.c
>> @@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot
>> *slot)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-pci-gli.c
>> b/drivers/mmc/host/sdhci-pci-gli.c
>> index 633a8ee8f8c5..6917ba339aa9 100644
>> --- a/drivers/mmc/host/sdhci-pci-gli.c
>> +++ b/drivers/mmc/host/sdhci-pci-gli.c
>> @@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot
>> *slot)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci-tegra.c
>> b/drivers/mmc/host/sdhci-tegra.c
>> index bff084f178c9..f98a468e8f43 100644
>> --- a/drivers/mmc/host/sdhci-tegra.c
>> +++ b/drivers/mmc/host/sdhci-tegra.c
>> @@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct
>> sdhci_host *host)
>> if (dma64)
>> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>>
>> - ret = cqhci_init(cq_host, host->mmc, dma64);
>> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
>> if (ret)
>> goto cleanup;
>>
>> diff --git a/drivers/mmc/host/sdhci_am654.c
>> b/drivers/mmc/host/sdhci_am654.c
>> index 7ef828942df3..8e7fbee70e16 100644
>> --- a/drivers/mmc/host/sdhci_am654.c
>> +++ b/drivers/mmc/host/sdhci_am654.c
>> @@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct
>> sdhci_host *host)
>>
>> host->mmc->caps2 |= MMC_CAP2_CQE;
>>
>> - return cqhci_init(cq_host, host->mmc, 1);
>> + return cqhci_init(cq_host, host->mmc, 1, false);
>> }
>>
>> static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
>> --
>> 2.29.0
>>
>
> M
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] mmc:mmc-cqhci:support interrupt coalescing
2023-01-30 6:46 13% [PATCH] mmc:mmc-cqhci:support interrupt coalescing Michael Wu
2023-01-30 8:30 0% ` Michal Simek
2023-01-30 15:59 0% ` Adrian Hunter
@ 2023-01-31 3:09 6% ` Wenchao Chen
2023-01-31 13:10 14% ` Michael Wu
2 siblings, 1 reply; 200+ results
From: Wenchao Chen @ 2023-01-31 3:09 UTC (permalink / raw)
To: Michael Wu
Cc: adrian.hunter, riteshh, asutoshd, ulf.hansson, chaotian.jing,
matthias.bgg, kdasu.kdev, alcooperx, f.fainelli, haibo.chen,
shawnguo, agross, andersson, michal.simek, thierry.reding,
jonathanh, bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
On Mon, Jan 30, 2023 at 2:49 PM Michael Wu <michael@allwinnertech.com> wrote:
>
> Support interrupt coalescing to reduce the frequency of mmc interrupts
>
Hi Michael
The CQIS register does not have any configuration.
Usually ICCTH needs to be enabled.
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
> drivers/mmc/host/cqhci.h | 5 ++++-
> drivers/mmc/host/mtk-sd.c | 2 +-
> drivers/mmc/host/sdhci-brcmstb.c | 2 +-
> drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
> drivers/mmc/host/sdhci-msm.c | 2 +-
> drivers/mmc/host/sdhci-of-arasan.c | 2 +-
> drivers/mmc/host/sdhci-pci-core.c | 2 +-
> drivers/mmc/host/sdhci-pci-gli.c | 2 +-
> drivers/mmc/host/sdhci-tegra.c | 2 +-
> drivers/mmc/host/sdhci_am654.c | 2 +-
> 11 files changed, 28 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
> index b3d7d6d8d654..f9cdf9f04bfc 100644
> --- a/drivers/mmc/host/cqhci-core.c
> +++ b/drivers/mmc/host/cqhci-core.c
> @@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
> }
>
> static void cqhci_prep_task_desc(struct mmc_request *mrq,
> - struct cqhci_host *cq_host, int tag)
> + struct cqhci_host *cq_host, int tag, int intr)
> {
> __le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
> u32 req_flags = mrq->data->flags;
> @@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct mmc_request *mrq,
>
> desc0 = CQHCI_VALID(1) |
> CQHCI_END(1) |
> - CQHCI_INT(1) |
> + CQHCI_INT(intr) |
> CQHCI_ACT(0x5) |
> CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
> CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
> @@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
> }
>
> if (mrq->data) {
> - cqhci_prep_task_desc(mrq, cq_host, tag);
> + cqhci_prep_task_desc(mrq, cq_host, tag, (cq_host->intr_clsc ? 0 : 1));
>
> err = cqhci_prep_tran_desc(mrq, cq_host, tag);
> if (err) {
> @@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc, unsigned int tag)
> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> int data_error)
> {
> - u32 status;
> + u32 status, rval;
> unsigned long tag = 0, comp_status;
> struct cqhci_host *cq_host = mmc->cqe_private;
>
> @@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> spin_unlock(&cq_host->lock);
> }
>
> + if (cq_host->intr_clsc) {
> + rval = cqhci_readl(cq_host, CQHCI_IC);
> + rval |= CQHCI_IC_RESET;
> + cqhci_writel(cq_host, rval, CQHCI_IC);
> + rval = cqhci_readl(cq_host, CQHCI_IC);
> + rval &= (~CQHCI_IC_RESET);
> + cqhci_writel(cq_host, rval, CQHCI_IC);
> + }
> +
> if (status & CQHCI_IS_TCL)
> wake_up(&cq_host->wait_queue);
>
> @@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host)
> }
>
> int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
> - bool dma64)
> + bool dma64, bool intr_clsc)
> {
> int err;
>
> cq_host->dma64 = dma64;
> + cq_host->intr_clsc = intr_clsc;
> cq_host->mmc = mmc;
> cq_host->mmc->cqe_private = cq_host;
>
> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
> index ba9387ed90eb..acf90773c30a 100644
> --- a/drivers/mmc/host/cqhci.h
> +++ b/drivers/mmc/host/cqhci.h
> @@ -227,6 +227,9 @@ struct cqhci_host {
>
> /* 64 bit DMA */
> bool dma64;
> +
> + /* interrupt coalescing*/
> + bool intr_clsc;
> int num_slots;
> int qcnt;
>
> @@ -312,7 +315,7 @@ struct platform_device;
>
> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> int data_error);
> -int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64);
> +int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64, bool intr_clsc);
> struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
> int cqhci_deactivate(struct mmc_host *mmc);
> static inline int cqhci_suspend(struct mmc_host *mmc)
> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
> index edade0e54a0c..2c18f954d4b8 100644
> --- a/drivers/mmc/host/mtk-sd.c
> +++ b/drivers/mmc/host/mtk-sd.c
> @@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
> host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
> host->cq_host->mmio = host->base + 0x800;
> host->cq_host->ops = &msdc_cmdq_ops;
> - ret = cqhci_init(host->cq_host, mmc, true);
> + ret = cqhci_init(host->cq_host, mmc, true, false);
> if (ret)
> goto host_free;
> mmc->max_segs = 128;
> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
> index f2cf3d70db79..4aeaeddbbf25 100644
> --- a/drivers/mmc/host/sdhci-brcmstb.c
> +++ b/drivers/mmc/host/sdhci-brcmstb.c
> @@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct sdhci_host *host,
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
> }
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> index 9e73c34b6401..7aef7abe71f1 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
> cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
> cq_host->ops = &esdhc_cqhci_ops;
>
> - err = cqhci_init(cq_host, host->mmc, false);
> + err = cqhci_init(cq_host, host->mmc, false, false);
> if (err)
> goto disable_ahb_clk;
> }
> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
> index 4ac8651d0b29..b6549d1e43ec 100644
> --- a/drivers/mmc/host/sdhci-msm.c
> +++ b/drivers/mmc/host/sdhci-msm.c
> @@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct sdhci_host *host,
> if (ret)
> goto cleanup;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret) {
> dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
> mmc_hostname(host->mmc), ret);
> diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c
> index 89c431a34c43..811f8686532d 100644
> --- a/drivers/mmc/host/sdhci-of-arasan.c
> +++ b/drivers/mmc/host/sdhci-of-arasan.c
> @@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
> index c359f867df0a..6f6cae6355a7 100644
> --- a/drivers/mmc/host/sdhci-pci-core.c
> +++ b/drivers/mmc/host/sdhci-pci-core.c
> @@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot *slot)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
> index 633a8ee8f8c5..6917ba339aa9 100644
> --- a/drivers/mmc/host/sdhci-pci-gli.c
> +++ b/drivers/mmc/host/sdhci-pci-gli.c
> @@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
> index bff084f178c9..f98a468e8f43 100644
> --- a/drivers/mmc/host/sdhci-tegra.c
> +++ b/drivers/mmc/host/sdhci-tegra.c
> @@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct sdhci_host *host)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
> index 7ef828942df3..8e7fbee70e16 100644
> --- a/drivers/mmc/host/sdhci_am654.c
> +++ b/drivers/mmc/host/sdhci_am654.c
> @@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
>
> host->mmc->caps2 |= MMC_CAP2_CQE;
>
> - return cqhci_init(cq_host, host->mmc, 1);
> + return cqhci_init(cq_host, host->mmc, 1, false);
> }
>
> static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
> --
> 2.29.0
>
^ permalink raw reply [relevance 6%]
* Re: [PATCH] mmc:mmc-cqhci:support interrupt coalescing
2023-01-30 6:46 13% [PATCH] mmc:mmc-cqhci:support interrupt coalescing Michael Wu
2023-01-30 8:30 0% ` Michal Simek
@ 2023-01-30 15:59 0% ` Adrian Hunter
2023-01-31 13:12 13% ` Michael Wu
2023-01-31 3:09 6% ` Wenchao Chen
2 siblings, 1 reply; 200+ results
From: Adrian Hunter @ 2023-01-30 15:59 UTC (permalink / raw)
To: Michael Wu, riteshh, asutoshd, ulf.hansson, chaotian.jing,
matthias.bgg, kdasu.kdev, alcooperx, f.fainelli, haibo.chen,
shawnguo, agross, andersson, michal.simek, thierry.reding,
jonathanh
Cc: bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
On 30/01/23 08:46, Michael Wu wrote:
> Support interrupt coalescing to reduce the frequency of mmc interrupts
There doesn't seem to be any users. The new parameter to
cqhci_init() is always false. New features are not usually
accepted without users.
There needs to be an explanation of why the change is being made.
Also there doesn't seem to be any configuration of the CQIC
register.
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
> drivers/mmc/host/cqhci.h | 5 ++++-
> drivers/mmc/host/mtk-sd.c | 2 +-
> drivers/mmc/host/sdhci-brcmstb.c | 2 +-
> drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
> drivers/mmc/host/sdhci-msm.c | 2 +-
> drivers/mmc/host/sdhci-of-arasan.c | 2 +-
> drivers/mmc/host/sdhci-pci-core.c | 2 +-
> drivers/mmc/host/sdhci-pci-gli.c | 2 +-
> drivers/mmc/host/sdhci-tegra.c | 2 +-
> drivers/mmc/host/sdhci_am654.c | 2 +-
> 11 files changed, 28 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
> index b3d7d6d8d654..f9cdf9f04bfc 100644
> --- a/drivers/mmc/host/cqhci-core.c
> +++ b/drivers/mmc/host/cqhci-core.c
> @@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
> }
>
> static void cqhci_prep_task_desc(struct mmc_request *mrq,
> - struct cqhci_host *cq_host, int tag)
> + struct cqhci_host *cq_host, int tag, int intr)
> {
> __le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
> u32 req_flags = mrq->data->flags;
> @@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct mmc_request *mrq,
>
> desc0 = CQHCI_VALID(1) |
> CQHCI_END(1) |
> - CQHCI_INT(1) |
> + CQHCI_INT(intr) |
> CQHCI_ACT(0x5) |
> CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
> CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
> @@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
> }
>
> if (mrq->data) {
> - cqhci_prep_task_desc(mrq, cq_host, tag);
> + cqhci_prep_task_desc(mrq, cq_host, tag, (cq_host->intr_clsc ? 0 : 1));
>
> err = cqhci_prep_tran_desc(mrq, cq_host, tag);
> if (err) {
> @@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc, unsigned int tag)
> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> int data_error)
> {
> - u32 status;
> + u32 status, rval;
> unsigned long tag = 0, comp_status;
> struct cqhci_host *cq_host = mmc->cqe_private;
>
> @@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> spin_unlock(&cq_host->lock);
> }
>
> + if (cq_host->intr_clsc) {
> + rval = cqhci_readl(cq_host, CQHCI_IC);
> + rval |= CQHCI_IC_RESET;
> + cqhci_writel(cq_host, rval, CQHCI_IC);
> + rval = cqhci_readl(cq_host, CQHCI_IC);
> + rval &= (~CQHCI_IC_RESET);
> + cqhci_writel(cq_host, rval, CQHCI_IC);
> + }
> +
> if (status & CQHCI_IS_TCL)
> wake_up(&cq_host->wait_queue);
>
> @@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host)
> }
>
> int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
> - bool dma64)
> + bool dma64, bool intr_clsc)
> {
> int err;
>
> cq_host->dma64 = dma64;
> + cq_host->intr_clsc = intr_clsc;
> cq_host->mmc = mmc;
> cq_host->mmc->cqe_private = cq_host;
>
> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
> index ba9387ed90eb..acf90773c30a 100644
> --- a/drivers/mmc/host/cqhci.h
> +++ b/drivers/mmc/host/cqhci.h
> @@ -227,6 +227,9 @@ struct cqhci_host {
>
> /* 64 bit DMA */
> bool dma64;
> +
> + /* interrupt coalescing*/
> + bool intr_clsc;
> int num_slots;
> int qcnt;
>
> @@ -312,7 +315,7 @@ struct platform_device;
>
> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> int data_error);
> -int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64);
> +int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64, bool intr_clsc);
> struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
> int cqhci_deactivate(struct mmc_host *mmc);
> static inline int cqhci_suspend(struct mmc_host *mmc)
> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
> index edade0e54a0c..2c18f954d4b8 100644
> --- a/drivers/mmc/host/mtk-sd.c
> +++ b/drivers/mmc/host/mtk-sd.c
> @@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
> host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
> host->cq_host->mmio = host->base + 0x800;
> host->cq_host->ops = &msdc_cmdq_ops;
> - ret = cqhci_init(host->cq_host, mmc, true);
> + ret = cqhci_init(host->cq_host, mmc, true, false);
> if (ret)
> goto host_free;
> mmc->max_segs = 128;
> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
> index f2cf3d70db79..4aeaeddbbf25 100644
> --- a/drivers/mmc/host/sdhci-brcmstb.c
> +++ b/drivers/mmc/host/sdhci-brcmstb.c
> @@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct sdhci_host *host,
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
> }
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> index 9e73c34b6401..7aef7abe71f1 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
> cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
> cq_host->ops = &esdhc_cqhci_ops;
>
> - err = cqhci_init(cq_host, host->mmc, false);
> + err = cqhci_init(cq_host, host->mmc, false, false);
> if (err)
> goto disable_ahb_clk;
> }
> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
> index 4ac8651d0b29..b6549d1e43ec 100644
> --- a/drivers/mmc/host/sdhci-msm.c
> +++ b/drivers/mmc/host/sdhci-msm.c
> @@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct sdhci_host *host,
> if (ret)
> goto cleanup;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret) {
> dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
> mmc_hostname(host->mmc), ret);
> diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c
> index 89c431a34c43..811f8686532d 100644
> --- a/drivers/mmc/host/sdhci-of-arasan.c
> +++ b/drivers/mmc/host/sdhci-of-arasan.c
> @@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
> index c359f867df0a..6f6cae6355a7 100644
> --- a/drivers/mmc/host/sdhci-pci-core.c
> +++ b/drivers/mmc/host/sdhci-pci-core.c
> @@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot *slot)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
> index 633a8ee8f8c5..6917ba339aa9 100644
> --- a/drivers/mmc/host/sdhci-pci-gli.c
> +++ b/drivers/mmc/host/sdhci-pci-gli.c
> @@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
> index bff084f178c9..f98a468e8f43 100644
> --- a/drivers/mmc/host/sdhci-tegra.c
> +++ b/drivers/mmc/host/sdhci-tegra.c
> @@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct sdhci_host *host)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
> index 7ef828942df3..8e7fbee70e16 100644
> --- a/drivers/mmc/host/sdhci_am654.c
> +++ b/drivers/mmc/host/sdhci_am654.c
> @@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
>
> host->mmc->caps2 |= MMC_CAP2_CQE;
>
> - return cqhci_init(cq_host, host->mmc, 1);
> + return cqhci_init(cq_host, host->mmc, 1, false);
> }
>
> static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
^ permalink raw reply [relevance 0%]
* Re: [PATCH] mmc:mmc-cqhci:support interrupt coalescing
2023-01-30 6:46 13% [PATCH] mmc:mmc-cqhci:support interrupt coalescing Michael Wu
@ 2023-01-30 8:30 0% ` Michal Simek
2023-01-31 11:01 14% ` Michael Wu
2023-01-30 15:59 0% ` Adrian Hunter
2023-01-31 3:09 6% ` Wenchao Chen
2 siblings, 1 reply; 200+ results
From: Michal Simek @ 2023-01-30 8:30 UTC (permalink / raw)
To: Michael Wu, adrian.hunter, riteshh, asutoshd, ulf.hansson,
chaotian.jing, matthias.bgg, kdasu.kdev, alcooperx, f.fainelli,
haibo.chen, shawnguo, agross, andersson, michal.simek,
thierry.reding, jonathanh
Cc: bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
If you look at commits on drivers/mmc/host/cqhci-core.c you will see that
subject style is
mmc: cqhci:<space>
Also some tools are checking this style. Please fix it.
On 1/30/23 07:46, Michael Wu wrote:
>
> Support interrupt coalescing to reduce the frequency of mmc interrupts
Missing dot at the end of sentence. I expect that you are doing it for a reason.
I would guess that it increase performance but without any details.
Should I enable it to get for example 20% better performance?
Commit message should be IMHO much bigger with more details and some information
about how coaleascing works would be also worth.
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
> drivers/mmc/host/cqhci.h | 5 ++++-
> drivers/mmc/host/mtk-sd.c | 2 +-
> drivers/mmc/host/sdhci-brcmstb.c | 2 +-
> drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
> drivers/mmc/host/sdhci-msm.c | 2 +-
> drivers/mmc/host/sdhci-of-arasan.c | 2 +-
> drivers/mmc/host/sdhci-pci-core.c | 2 +-
> drivers/mmc/host/sdhci-pci-gli.c | 2 +-
> drivers/mmc/host/sdhci-tegra.c | 2 +-
> drivers/mmc/host/sdhci_am654.c | 2 +-
> 11 files changed, 28 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
> index b3d7d6d8d654..f9cdf9f04bfc 100644
> --- a/drivers/mmc/host/cqhci-core.c
> +++ b/drivers/mmc/host/cqhci-core.c
> @@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
> }
>
> static void cqhci_prep_task_desc(struct mmc_request *mrq,
> - struct cqhci_host *cq_host, int tag)
> + struct cqhci_host *cq_host, int tag, int intr)
> {
> __le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
> u32 req_flags = mrq->data->flags;
> @@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct mmc_request *mrq,
>
> desc0 = CQHCI_VALID(1) |
> CQHCI_END(1) |
> - CQHCI_INT(1) |
> + CQHCI_INT(intr) |
> CQHCI_ACT(0x5) |
> CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
> CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
> @@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
> }
>
> if (mrq->data) {
> - cqhci_prep_task_desc(mrq, cq_host, tag);
> + cqhci_prep_task_desc(mrq, cq_host, tag, (cq_host->intr_clsc ? 0 : 1));
>
> err = cqhci_prep_tran_desc(mrq, cq_host, tag);
> if (err) {
> @@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc, unsigned int tag)
> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> int data_error)
> {
> - u32 status;
> + u32 status, rval;
> unsigned long tag = 0, comp_status;
> struct cqhci_host *cq_host = mmc->cqe_private;
>
> @@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> spin_unlock(&cq_host->lock);
> }
>
> + if (cq_host->intr_clsc) {
> + rval = cqhci_readl(cq_host, CQHCI_IC);
> + rval |= CQHCI_IC_RESET;
> + cqhci_writel(cq_host, rval, CQHCI_IC);
> + rval = cqhci_readl(cq_host, CQHCI_IC);
> + rval &= (~CQHCI_IC_RESET);
> + cqhci_writel(cq_host, rval, CQHCI_IC);
> + }
> +
> if (status & CQHCI_IS_TCL)
> wake_up(&cq_host->wait_queue);
>
> @@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host)
> }
>
> int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
> - bool dma64)
> + bool dma64, bool intr_clsc)
> {
> int err;
>
> cq_host->dma64 = dma64;
> + cq_host->intr_clsc = intr_clsc;
> cq_host->mmc = mmc;
> cq_host->mmc->cqe_private = cq_host;
>
> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
> index ba9387ed90eb..acf90773c30a 100644
> --- a/drivers/mmc/host/cqhci.h
> +++ b/drivers/mmc/host/cqhci.h
> @@ -227,6 +227,9 @@ struct cqhci_host {
>
> /* 64 bit DMA */
> bool dma64;
> +
> + /* interrupt coalescing*/
missing space.
> + bool intr_clsc;
> int num_slots;
> int qcnt;
>
> @@ -312,7 +315,7 @@ struct platform_device;
>
> irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
> int data_error);
> -int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64);
> +int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64, bool intr_clsc);
> struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
> int cqhci_deactivate(struct mmc_host *mmc);
> static inline int cqhci_suspend(struct mmc_host *mmc)
> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
> index edade0e54a0c..2c18f954d4b8 100644
> --- a/drivers/mmc/host/mtk-sd.c
> +++ b/drivers/mmc/host/mtk-sd.c
> @@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
> host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
> host->cq_host->mmio = host->base + 0x800;
> host->cq_host->ops = &msdc_cmdq_ops;
> - ret = cqhci_init(host->cq_host, mmc, true);
> + ret = cqhci_init(host->cq_host, mmc, true, false);
> if (ret)
> goto host_free;
> mmc->max_segs = 128;
> diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
> index f2cf3d70db79..4aeaeddbbf25 100644
> --- a/drivers/mmc/host/sdhci-brcmstb.c
> +++ b/drivers/mmc/host/sdhci-brcmstb.c
> @@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct sdhci_host *host,
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
> }
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> index 9e73c34b6401..7aef7abe71f1 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
> cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
> cq_host->ops = &esdhc_cqhci_ops;
>
> - err = cqhci_init(cq_host, host->mmc, false);
> + err = cqhci_init(cq_host, host->mmc, false, false);
> if (err)
> goto disable_ahb_clk;
> }
> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
> index 4ac8651d0b29..b6549d1e43ec 100644
> --- a/drivers/mmc/host/sdhci-msm.c
> +++ b/drivers/mmc/host/sdhci-msm.c
> @@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct sdhci_host *host,
> if (ret)
> goto cleanup;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret) {
> dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
> mmc_hostname(host->mmc), ret);
> diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c
> index 89c431a34c43..811f8686532d 100644
> --- a/drivers/mmc/host/sdhci-of-arasan.c
> +++ b/drivers/mmc/host/sdhci-of-arasan.c
> @@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
> index c359f867df0a..6f6cae6355a7 100644
> --- a/drivers/mmc/host/sdhci-pci-core.c
> +++ b/drivers/mmc/host/sdhci-pci-core.c
> @@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot *slot)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
> index 633a8ee8f8c5..6917ba339aa9 100644
> --- a/drivers/mmc/host/sdhci-pci-gli.c
> +++ b/drivers/mmc/host/sdhci-pci-gli.c
> @@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
> index bff084f178c9..f98a468e8f43 100644
> --- a/drivers/mmc/host/sdhci-tegra.c
> +++ b/drivers/mmc/host/sdhci-tegra.c
> @@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct sdhci_host *host)
> if (dma64)
> cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
>
> - ret = cqhci_init(cq_host, host->mmc, dma64);
> + ret = cqhci_init(cq_host, host->mmc, dma64, false);
> if (ret)
> goto cleanup;
>
> diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
> index 7ef828942df3..8e7fbee70e16 100644
> --- a/drivers/mmc/host/sdhci_am654.c
> +++ b/drivers/mmc/host/sdhci_am654.c
> @@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
>
> host->mmc->caps2 |= MMC_CAP2_CQE;
>
> - return cqhci_init(cq_host, host->mmc, 1);
> + return cqhci_init(cq_host, host->mmc, 1, false);
> }
>
> static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
> --
> 2.29.0
>
M
^ permalink raw reply [relevance 0%]
* [PATCH] mmc:mmc-cqhci:support interrupt coalescing
@ 2023-01-30 6:46 13% Michael Wu
2023-01-30 8:30 0% ` Michal Simek
` (2 more replies)
0 siblings, 3 replies; 200+ results
From: Michael Wu @ 2023-01-30 6:46 UTC (permalink / raw)
To: adrian.hunter, riteshh, asutoshd, ulf.hansson, chaotian.jing,
matthias.bgg, kdasu.kdev, alcooperx, f.fainelli, haibo.chen,
shawnguo, agross, andersson, michal.simek, thierry.reding,
jonathanh
Cc: bcm-kernel-feedback-list, kernel, festevam, linux-imx,
konrad.dybcio, linux-mmc, linux-kernel, linux-arm-kernel,
linux-mediatek, linux-arm-msm, linux-tegra
Support interrupt coalescing to reduce the frequency of mmc interrupts
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/mmc/host/cqhci-core.c | 20 +++++++++++++++-----
drivers/mmc/host/cqhci.h | 5 ++++-
drivers/mmc/host/mtk-sd.c | 2 +-
drivers/mmc/host/sdhci-brcmstb.c | 2 +-
drivers/mmc/host/sdhci-esdhc-imx.c | 2 +-
drivers/mmc/host/sdhci-msm.c | 2 +-
drivers/mmc/host/sdhci-of-arasan.c | 2 +-
drivers/mmc/host/sdhci-pci-core.c | 2 +-
drivers/mmc/host/sdhci-pci-gli.c | 2 +-
drivers/mmc/host/sdhci-tegra.c | 2 +-
drivers/mmc/host/sdhci_am654.c | 2 +-
11 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
index b3d7d6d8d654..f9cdf9f04bfc 100644
--- a/drivers/mmc/host/cqhci-core.c
+++ b/drivers/mmc/host/cqhci-core.c
@@ -420,7 +420,7 @@ static void cqhci_disable(struct mmc_host *mmc)
}
static void cqhci_prep_task_desc(struct mmc_request *mrq,
- struct cqhci_host *cq_host, int tag)
+ struct cqhci_host *cq_host, int tag, int intr)
{
__le64 *task_desc = (__le64 __force *)get_desc(cq_host, tag);
u32 req_flags = mrq->data->flags;
@@ -428,7 +428,7 @@ static void cqhci_prep_task_desc(struct mmc_request *mrq,
desc0 = CQHCI_VALID(1) |
CQHCI_END(1) |
- CQHCI_INT(1) |
+ CQHCI_INT(intr) |
CQHCI_ACT(0x5) |
CQHCI_FORCED_PROG(!!(req_flags & MMC_DATA_FORCED_PRG)) |
CQHCI_DATA_TAG(!!(req_flags & MMC_DATA_DAT_TAG)) |
@@ -621,7 +621,7 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
}
if (mrq->data) {
- cqhci_prep_task_desc(mrq, cq_host, tag);
+ cqhci_prep_task_desc(mrq, cq_host, tag, (cq_host->intr_clsc ? 0 : 1));
err = cqhci_prep_tran_desc(mrq, cq_host, tag);
if (err) {
@@ -812,7 +812,7 @@ static void cqhci_finish_mrq(struct mmc_host *mmc, unsigned int tag)
irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
int data_error)
{
- u32 status;
+ u32 status, rval;
unsigned long tag = 0, comp_status;
struct cqhci_host *cq_host = mmc->cqe_private;
@@ -856,6 +856,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
spin_unlock(&cq_host->lock);
}
+ if (cq_host->intr_clsc) {
+ rval = cqhci_readl(cq_host, CQHCI_IC);
+ rval |= CQHCI_IC_RESET;
+ cqhci_writel(cq_host, rval, CQHCI_IC);
+ rval = cqhci_readl(cq_host, CQHCI_IC);
+ rval &= (~CQHCI_IC_RESET);
+ cqhci_writel(cq_host, rval, CQHCI_IC);
+ }
+
if (status & CQHCI_IS_TCL)
wake_up(&cq_host->wait_queue);
@@ -1172,11 +1181,12 @@ static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host)
}
int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc,
- bool dma64)
+ bool dma64, bool intr_clsc)
{
int err;
cq_host->dma64 = dma64;
+ cq_host->intr_clsc = intr_clsc;
cq_host->mmc = mmc;
cq_host->mmc->cqe_private = cq_host;
diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
index ba9387ed90eb..acf90773c30a 100644
--- a/drivers/mmc/host/cqhci.h
+++ b/drivers/mmc/host/cqhci.h
@@ -227,6 +227,9 @@ struct cqhci_host {
/* 64 bit DMA */
bool dma64;
+
+ /* interrupt coalescing*/
+ bool intr_clsc;
int num_slots;
int qcnt;
@@ -312,7 +315,7 @@ struct platform_device;
irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error,
int data_error);
-int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64);
+int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64, bool intr_clsc);
struct cqhci_host *cqhci_pltfm_init(struct platform_device *pdev);
int cqhci_deactivate(struct mmc_host *mmc);
static inline int cqhci_suspend(struct mmc_host *mmc)
diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
index edade0e54a0c..2c18f954d4b8 100644
--- a/drivers/mmc/host/mtk-sd.c
+++ b/drivers/mmc/host/mtk-sd.c
@@ -2796,7 +2796,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
host->cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
host->cq_host->mmio = host->base + 0x800;
host->cq_host->ops = &msdc_cmdq_ops;
- ret = cqhci_init(host->cq_host, mmc, true);
+ ret = cqhci_init(host->cq_host, mmc, true, false);
if (ret)
goto host_free;
mmc->max_segs = 128;
diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
index f2cf3d70db79..4aeaeddbbf25 100644
--- a/drivers/mmc/host/sdhci-brcmstb.c
+++ b/drivers/mmc/host/sdhci-brcmstb.c
@@ -231,7 +231,7 @@ static int sdhci_brcmstb_add_host(struct sdhci_host *host,
cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
}
- ret = cqhci_init(cq_host, host->mmc, dma64);
+ ret = cqhci_init(cq_host, host->mmc, dma64, false);
if (ret)
goto cleanup;
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index 9e73c34b6401..7aef7abe71f1 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -1712,7 +1712,7 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET;
cq_host->ops = &esdhc_cqhci_ops;
- err = cqhci_init(cq_host, host->mmc, false);
+ err = cqhci_init(cq_host, host->mmc, false, false);
if (err)
goto disable_ahb_clk;
}
diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
index 4ac8651d0b29..b6549d1e43ec 100644
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
@@ -2153,7 +2153,7 @@ static int sdhci_msm_cqe_add_host(struct sdhci_host *host,
if (ret)
goto cleanup;
- ret = cqhci_init(cq_host, host->mmc, dma64);
+ ret = cqhci_init(cq_host, host->mmc, dma64, false);
if (ret) {
dev_err(&pdev->dev, "%s: CQE init: failed (%d)\n",
mmc_hostname(host->mmc), ret);
diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c
index 89c431a34c43..811f8686532d 100644
--- a/drivers/mmc/host/sdhci-of-arasan.c
+++ b/drivers/mmc/host/sdhci-of-arasan.c
@@ -1610,7 +1610,7 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan)
if (dma64)
cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
- ret = cqhci_init(cq_host, host->mmc, dma64);
+ ret = cqhci_init(cq_host, host->mmc, dma64, false);
if (ret)
goto cleanup;
diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
index c359f867df0a..6f6cae6355a7 100644
--- a/drivers/mmc/host/sdhci-pci-core.c
+++ b/drivers/mmc/host/sdhci-pci-core.c
@@ -964,7 +964,7 @@ static int glk_emmc_add_host(struct sdhci_pci_slot *slot)
if (dma64)
cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
- ret = cqhci_init(cq_host, host->mmc, dma64);
+ ret = cqhci_init(cq_host, host->mmc, dma64, false);
if (ret)
goto cleanup;
diff --git a/drivers/mmc/host/sdhci-pci-gli.c b/drivers/mmc/host/sdhci-pci-gli.c
index 633a8ee8f8c5..6917ba339aa9 100644
--- a/drivers/mmc/host/sdhci-pci-gli.c
+++ b/drivers/mmc/host/sdhci-pci-gli.c
@@ -908,7 +908,7 @@ static int gl9763e_add_host(struct sdhci_pci_slot *slot)
if (dma64)
cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
- ret = cqhci_init(cq_host, host->mmc, dma64);
+ ret = cqhci_init(cq_host, host->mmc, dma64, false);
if (ret)
goto cleanup;
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index bff084f178c9..f98a468e8f43 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -1620,7 +1620,7 @@ static int sdhci_tegra_add_host(struct sdhci_host *host)
if (dma64)
cq_host->caps |= CQHCI_TASK_DESC_SZ_128;
- ret = cqhci_init(cq_host, host->mmc, dma64);
+ ret = cqhci_init(cq_host, host->mmc, dma64, false);
if (ret)
goto cleanup;
diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
index 7ef828942df3..8e7fbee70e16 100644
--- a/drivers/mmc/host/sdhci_am654.c
+++ b/drivers/mmc/host/sdhci_am654.c
@@ -568,7 +568,7 @@ static int sdhci_am654_cqe_add_host(struct sdhci_host *host)
host->mmc->caps2 |= MMC_CAP2_CQE;
- return cqhci_init(cq_host, host->mmc, 1);
+ return cqhci_init(cq_host, host->mmc, 1, false);
}
static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
--
2.29.0
^ permalink raw reply related [relevance 13%]
* [PATCH 5.4 000/622] 5.4.229-rc2 review
@ 2023-01-17 12:48 1% Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2023-01-17 12:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow
This is the start of the stable review cycle for the 5.4.229 release.
There are 622 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 19 Jan 2023 12:45:11 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.229-rc2.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.4.229-rc2
Xin Long <lucien.xin@gmail.com>
tipc: call tipc_lxc_xmit without holding node_read_lock
Heming Zhao <ocfs2-devel@oss.oracle.com>
ocfs2: fix freeing uninitialized resource on ocfs2_dlm_shutdown
Hoang Le <hoang.h.le@dektech.com.au>
tipc: Add a missing case of TIPC_DIRECT_MSG type
Dmitry Osipenko <digetx@gmail.com>
tty: serial: tegra: Handle RX transfer in PIO mode if DMA wasn't started
Tuong Lien <tuong.t.lien@dektech.com.au>
tipc: fix use-after-free in tipc_disc_rcv()
Ferry Toth <ftoth@exalondelft.nl>
Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout"
Aaron Thompson <dev@aaront.org>
mm: Always release pages to the buddy allocator in memblock_free_late().
Johan Hovold <johan+linaro@kernel.org>
efi: fix NULL-deref in init error path
Mark Rutland <mark.rutland@arm.com>
arm64: cmpxchg_double*: hazard against entire exchange variable
Mark Rutland <mark.rutland@arm.com>
arm64: atomics: remove LL/SC trampolines
Mark Rutland <mark.rutland@arm.com>
arm64: atomics: format whitespace consistently
Rob Clark <robdclark@chromium.org>
drm/virtio: Fix GEM handle creation UAF
Peter Newman <peternewman@google.com>
x86/resctrl: Fix task CLOSID/RMID update race
Reinette Chatre <reinette.chatre@intel.com>
x86/resctrl: Use task_curr() instead of task_struct->on_cpu to prevent unnecessary IPI
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
iommu/mediatek-v1: Fix an error handling path in mtk_iommu_v1_probe()
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek-v1: Add error handle for mtk_iommu_probe
Rahul Rameshbabu <rrameshbabu@nvidia.com>
net/mlx5: Fix ptp max frequency adjustment range
Eran Ben Elisha <eranbe@mellanox.com>
net/mlx5: Rename ptp clock info
Ido Schimmel <idosch@nvidia.com>
net/sched: act_mpls: Fix warning during failed attribute validation
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame()
Roger Pau Monne <roger.pau@citrix.com>
hvc/xen: lock console list traversal
Tung Nguyen <tung.q.nguyen@dektech.com.au>
tipc: fix unexpected link reset due to discovery messages
Hoang Le <hoang.h.le@dektech.com.au>
tipc: eliminate checking netns if node established
Hoang Le <hoang.h.le@dektech.com.au>
tipc: improve throughput between nodes in netns
Ricardo Ribalda <ribalda@chromium.org>
regulator: da9211: Use irq handler when ready
Eliav Farber <farbere@amazon.com>
EDAC/device: Fix period calculation in edac_device_reset_delay_period()
Peter Zijlstra <peterz@infradead.org>
x86/boot: Avoid using Intel mnemonics in AT&T syntax asm
Kajol Jain <kjain@linux.ibm.com>
powerpc/imc-pmu: Fix use of mutex in IRQs disabled section
Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() function.
Ye Bin <yebin10@huawei.com>
ext4: fix uninititialized value in 'ext4_evict_inode'
Baokun Li <libaokun1@huawei.com>
ext4: fix use-after-free in ext4_orphan_cleanup
zhengliang <zhengliang6@huawei.com>
ext4: lost matching-pair of trace in ext4_truncate
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad quota inode
Jan Kara <jack@suse.cz>
quota: Factor out setup of quota inode
Bixuan Cui <cuibixuan@linux.alibaba.com>
jbd2: use the correct print format
Ferry Toth <ftoth@exalondelft.nl>
usb: ulpi: defer ulpi_register on ulpi_read_id timeout
Michael Walle <michael@walle.cc>
wifi: wilc1000: sdio: fix module autoloading
Herbert Xu <herbert@gondor.apana.org.au>
ipv6: raw: Deduct extension header length in rawv6_push_pending_frames
Yang Yingliang <yangyingliang@huawei.com>
ixgbe: fix pci device refcount leak
Hans de Goede <hdegoede@redhat.com>
platform/x86: sony-laptop: Don't turn off 0x153 keyboard backlight during probe
Konrad Dybcio <konrad.dybcio@linaro.org>
drm/msm/adreno: Make adreno quirks not overwrite each other
Volker Lendecke <vl@samba.org>
cifs: Fix uninitialized memory read for smb311 posix symlink create
Adrian Chan <adchan@google.com>
ALSA: hda/hdmi: Add a HP device 0x8715 to force connect list
Clement Lecigne <clecigne@google.com>
ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF
Paolo Abeni <pabeni@redhat.com>
net/ulp: prevent ULP without clone op from entering the LISTEN status
Heiko Carstens <hca@linux.ibm.com>
s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple()
Alexander Egorenkov <egorenar@linux.ibm.com>
s390/kexec: fix ipl report address for kdump
Adrian Hunter <adrian.hunter@intel.com>
perf auxtrace: Fix address filter duplicate symbol selection
Jonathan Corbet <corbet@lwn.net>
docs: Fix the docs build with Sphinx 6.0
Ard Biesheuvel <ardb@kernel.org>
efi: tpm: Avoid READ_ONCE() for accessing the event log
Marc Zyngier <maz@kernel.org>
KVM: arm64: Fix S1PTW handling on RO memslots
Frederick Lawler <fred@cloudflare.com>
net: sched: disallow noqueue for qdisc classes
Isaac J. Manjarres <isaacmanjarres@google.com>
driver core: Fix bus_type.match() error handling in __driver_attach()
Muhammad Usama Anjum <usama.anjum@collabora.com>
selftests: set the BUILD variable to absolute path
Shuah Khan <skhan@linuxfoundation.org>
selftests: Fix kselftest O=objdir build from cluttering top level objdir
Helge Deller <deller@gmx.de>
parisc: Align parisc MADV_XXX constants with all other architectures
Jan Kara <jack@suse.cz>
mbcache: Avoid nesting of cache->c_list_lock under bit locks
Linus Torvalds <torvalds@linux-foundation.org>
hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
Arnd Bergmann <arnd@arndb.de>
hfs/hfsplus: use WARN_ON for sanity check
Eric Biggers <ebiggers@google.com>
ext4: don't allow journal inode to have encrypt flag
Ben Dooks <ben-linux@fluff.org>
riscv: uaccess: fix type of 0 variable on error in get_user()
Jeff Layton <jlayton@kernel.org>
nfsd: fix handling of readdir in v4root vs. mount upcall timeout
Rodrigo Branco <bsdaemon@google.com>
x86/bugs: Flush IBP in ib_prctl_set()
Hans de Goede <hdegoede@redhat.com>
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
Jan Kara <jack@suse.cz>
udf: Fix extension of the last extent in the file
Zhengchao Shao <shaozhengchao@huawei.com>
caif: fix memory leak in cfctrl_linkup_request()
Dan Carpenter <error27@gmail.com>
drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()
Szymon Heidrich <szymon.heidrich@gmail.com>
usb: rndis_host: Secure rndis_query check against int overflow
Daniil Tatianin <d-tatianin@yandex-team.ru>
drivers/net/bonding/bond_3ad: return when there's no aggregator
Miaoqian Lin <linmq006@gmail.com>
perf tools: Fix resources leak in perf_data__open_dir()
Jamal Hadi Salim <jhs@mojatatu.com>
net: sched: cbq: dont intepret cls results when asked to drop
Jamal Hadi Salim <jhs@mojatatu.com>
net: sched: atm: dont intepret cls results when asked to drop
Maor Gottlieb <maorg@nvidia.com>
RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
Leon Romanovsky <leon@kernel.org>
RDMA/uverbs: Silence shiftTooManyBitsSigned warning
Miaoqian Lin <linmq006@gmail.com>
net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
Jiguang Xiao <jiguang.xiao@windriver.com>
net: amd-xgbe: add missed tasklet_kill
Stefano Garzarella <sgarzare@redhat.com>
vhost: fix range used in translate_desc()
Miaoqian Lin <linmq006@gmail.com>
nfc: Fix potential resource leaks
Daniil Tatianin <d-tatianin@yandex-team.ru>
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
Hawkins Jiawei <yin31149@gmail.com>
net: sched: fix memory leak in tcindex_set_parms
Jie Wang <wangjie125@huawei.com>
net: hns3: add interrupts re-initialization while doing VF FLR
Jeff Layton <jlayton@kernel.org>
nfsd: shut down the NFSv4 state objects before the filecache
Jakub Kicinski <kuba@kernel.org>
bpf: pull before calling skb_postpull_rcsum()
minoura makoto <minoura@valinux.co.jp>
SUNRPC: ensure the matching upcall is in-flight upon downcall
Jan Kara <jack@suse.cz>
ext4: fix deadlock due to mbcache entry corruption
Jan Kara <jack@suse.cz>
mbcache: automatically delete entries from cache on freeing
Jan Kara <jack@suse.cz>
ext4: fix race when reusing xattr blocks
Jan Kara <jack@suse.cz>
ext4: unindent codeblock in ext4_xattr_block_set()
Jan Kara <jack@suse.cz>
ext4: remove EA inode entry from mbcache on inode eviction
Jan Kara <jack@suse.cz>
mbcache: add functions to delete entry if unused
Jan Kara <jack@suse.cz>
mbcache: don't reclaim used entries
Shuqi Zhang <zhangshuqi3@huawei.com>
ext4: use kmemdup() to replace kmalloc + memcpy
Alexander Potapenko <glider@google.com>
fs: ext4: initialize fsdata in pagecache_write()
Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
ext4: use memcpy_to_page() in pagecache_write()
Ira Weiny <ira.weiny@intel.com>
mm/highmem: Lift memcpy_[to|from]_page to core
Baokun Li <libaokun1@huawei.com>
ext4: correct inconsistent error msg in nojournal mode
Jason Yan <yanaijie@huawei.com>
ext4: goto right label 'failed_mount3a'
Biju Das <biju.das.jz@bp.renesas.com>
ravb: Fix "failed to switch device to config mode" message during unbind
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1
Xiaoyao Li <xiaoyao.li@intel.com>
KVM: VMX: Fix the spelling of CPU_BASED_USE_TSC_OFFSETTING
Xiaoyao Li <xiaoyao.li@intel.com>
KVM: VMX: Rename NMI_PENDING to NMI_WINDOW
Xiaoyao Li <xiaoyao.li@intel.com>
KVM: VMX: Rename INTERRUPT_PENDING to INTERRUPT_WINDOW
Andrea Arcangeli <aarcange@redhat.com>
KVM: retpolines: x86: eliminate retpoline from vmx.c exit handlers
Andrea Arcangeli <aarcange@redhat.com>
KVM: x86: optimize more exit handlers in vmx.c
Masami Hiramatsu (Google) <mhiramat@kernel.org>
perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
Masami Hiramatsu (Google) <mhiramat@kernel.org>
perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor
Luo Meng <luomeng12@huawei.com>
dm thin: resume even if in FAIL mode
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix in register read and write for H264
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Clear workbit to handle error condition
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix to handle reference queue during finishing
Kant Fan <kant@allwinnertech.com>
PM/devfreq: governor: Add a private governor_data for governor
Sasha Levin <sashal@kernel.org>
btrfs: replace strncpy() with strscpy()
Ye Bin <yebin10@huawei.com>
ext4: allocate extended attribute value in vmalloc area
Jan Kara <jack@suse.cz>
ext4: avoid unaccounted block allocation when expanding inode
Jan Kara <jack@suse.cz>
ext4: initialize quota before expanding inode in setproject ioctl
Ye Bin <yebin10@huawei.com>
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
Jan Kara <jack@suse.cz>
ext4: avoid BUG_ON when creating xattrs
Luís Henriques <lhenriques@suse.de>
ext4: fix error code return to user-space in ext4_get_branch()
Baokun Li <libaokun1@huawei.com>
ext4: fix corruption when online resizing a 1K bigalloc fs
Eric Whitney <enwlinux@gmail.com>
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
Ye Bin <yebin10@huawei.com>
ext4: init quota for 'old.inode' in 'ext4_rename'
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
Ye Bin <yebin10@huawei.com>
ext4: fix reserved cluster accounting in __es_remove_extent()
Baokun Li <libaokun1@huawei.com>
ext4: add helper to check quota inums
Baokun Li <libaokun1@huawei.com>
ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
Gaosheng Cui <cuigaosheng1@huawei.com>
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
Baokun Li <libaokun1@huawei.com>
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Validate the box size for the snooped cursor
Simon Ser <contact@emersion.fr>
drm/connector: send hotplug uevent on connector cleanup
Wang Weiyang <wangweiyang2@huawei.com>
device_cgroup: Roll back to original exceptions after copy failure
Shang XiaoJing <shangxiaojing@huawei.com>
parisc: led: Fix potential null-ptr-deref in start_task()
Kim Phillips <kim.phillips@amd.com>
iommu/amd: Fix ivrs_acpihid cmdline parsing code
Corentin Labbe <clabbe@baylibre.com>
crypto: n2 - add missing hash statesize
Sascha Hauer <s.hauer@pengutronix.de>
PCI/sysfs: Fix double free in error path
Michael S. Tsirkin <mst@redhat.com>
PCI: Fix pci_device_is_present() for VFs by checking PF
Dan Carpenter <error27@gmail.com>
ipmi: fix use after free in _ipmi_destroy_user()
Huaxin Lu <luhuaxin1@huawei.com>
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
Alexander Sverdlin <alexander.sverdlin@nokia.com>
mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix long wait in unload when IPMI disconnect
Aditya Garg <gargaditya08@live.com>
efi: Add iMac Pro 2017 to uefi skip cert quirk
Florian-Ewald Mueller <florian-ewald.mueller@ionos.com>
md/bitmap: Fix bitmap chunk size overflow issues
Steve French <stfrench@microsoft.com>
cifs: fix missing display of three mount options
Paulo Alcantara <pc@cjr.nz>
cifs: fix confusing debug message
Takashi Iwai <tiwai@suse.de>
media: dvb-core: Fix UAF due to refcount races at releasing
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
media: dvb-core: Fix double free in dvb_register_device()
Nick Desaulniers <ndesaulniers@google.com>
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
Yang Jihong <yangjihong1@huawei.com>
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix wrong return value in parse_action_params()
Ashok Raj <ashok.raj@intel.com>
x86/microcode/intel: Do not retry microcode reloading on the APs
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx'
Mike Snitzer <snitzer@kernel.org>
dm cache: set needs_check flag after aborting metadata
Luo Meng <luomeng12@huawei.com>
dm cache: Fix UAF in destroy()
Luo Meng <luomeng12@huawei.com>
dm clone: Fix UAF in clone_dtr()
Luo Meng <luomeng12@huawei.com>
dm integrity: Fix UAF in dm_integrity_dtr()
Luo Meng <luomeng12@huawei.com>
dm thin: Fix UAF in run_timer_softirq()
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Use last transaction's pmd->root when commit failed
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata
Mike Snitzer <snitzer@kernel.org>
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
Wang Yufen <wangyufen@huawei.com>
binfmt: Fix error return code in load_elf_fdpic_binary()
Eric W. Biederman <ebiederm@xmission.com>
binfmt: Move install_exec_creds after setup_new_exec to match binfmt_elf
Yongqiang Liu <liuyongqiang13@huawei.com>
cpufreq: Init completion before kobject_init_and_add()
Mickaël Salaün <mic@digikod.net>
selftests: Use optional USERCFLAGS and USERLDFLAGS
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
Jason A. Donenfeld <Jason@zx2c4.com>
ARM: ux500: do not directly dereference __iomem
Boris Burkov <boris@bur.io>
btrfs: fix resolving backrefs for inline extent followed by prealloc
Wenchao Chen <wenchao.chen@unisoc.com>
mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
Steven Rostedt <rostedt@goodmis.org>
ktest.pl minconfig: Unset configs instead of just removing them
Steven Rostedt <rostedt@goodmis.org>
kest.pl: Fix grub2 menu handling for rebooting
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
soc: qcom: Select REMAP_MMIO for LLCC driver
Jason A. Donenfeld <Jason@zx2c4.com>
media: stv0288: use explicitly signed char
Eric Dumazet <edumazet@google.com>
net/af_packet: make sure to pull mac header
Hangbin Liu <liuhangbin@gmail.com>
net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO
Chuck Lever <chuck.lever@oracle.com>
SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails
Hanjun Guo <guohanjun@huawei.com>
tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak
Hanjun Guo <guohanjun@huawei.com>
tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak
Deren Wu <deren.wu@mediatek.com>
mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
Pavel Machek <pavel@denx.de>
f2fs: should put a page when checking the summary info
NARIBAYASHI Akira <a.naribayashi@fujitsu.com>
mm, compaction: fix fast_isolate_around() to stay within boundaries
Mikulas Patocka <mpatocka@redhat.com>
md: fix a crash in mempool_free
Christian Brauner <brauner@kernel.org>
pnode: terminate at peers of source
Artem Egorkine <arteme@gmail.com>
ALSA: line6: fix stack overflow in line6_midi_transmit
Artem Egorkine <arteme@gmail.com>
ALSA: line6: correct midi status byte when receiving data from podxt
Zhang Tianci <zhangtianci.1997@bytedance.com>
ovl: Use ovl mounter's fsuid and fsgid in ovl_link()
Aditya Garg <gargaditya08@live.com>
hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
Terry Junge <linuxhid@cosmicgizmosystems.com>
HID: plantronics: Additional PIDs for double volume key presses quirk
José Expósito <jose.exposito89@gmail.com>
HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/rtas: avoid scheduling in rtas_os_term()
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/rtas: avoid device tree lookups in rtas_os_term()
Christophe Leroy <christophe.leroy@csgroup.eu>
objtool: Fix SEGFAULT
Christoph Hellwig <hch@lst.de>
nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition
Revanth Rajashekar <revanth.rajashekar@intel.com>
nvme: resync include/linux/nvme.h with nvmecli
Adam Vodopjan <grozzly@protonmail.com>
ata: ahci: Fix PCS quirk application for suspend
Klaus Jensen <k.jensen@samsung.com>
nvme-pci: fix doorbell buffer value endianness
Paulo Alcantara <pc@cjr.nz>
cifs: fix oops during encryption
Lin Ma <linma@zju.edu.cn>
media: dvbdev: fix refcnt bug
Lin Ma <linma@zju.edu.cn>
media: dvbdev: fix build warning due to comments
Rickard x Andersson <rickaran@axis.com>
gcov: add support for checksum field
Johan Hovold <johan+linaro@kernel.org>
regulator: core: fix deadlock on regulator enable
Rasmus Villemoes <linux@rasmusvillemoes.dk>
iio: adc128s052: add proper .data members in adc128_of_match table
Nuno Sá <nuno.sa@analog.com>
iio: adc: ad_sigma_delta: do not use internal iio_dev lock
Roberto Sassu <roberto.sassu@huawei.com>
reiserfs: Add missing calls to reiserfs_security_free()
Jason Gerecke <killertofu@gmail.com>
HID: wacom: Ensure bootloader PID is usable in hidraw mode
Ferry Toth <ftoth@exalondelft.nl>
usb: dwc3: core: defer probe on ulpi_read_id timeout
Jiao Zhou <jiaozhou@google.com>
ALSA: hda/hdmi: Add HP Device 0x8711 to force connect list
Edward Pacman <edward@edward-p.xyz>
ALSA: hda/realtek: Add quirk for Lenovo TianYi510Pro-14IOB
John Stultz <jstultz@google.com>
pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
John Stultz <jstultz@google.com>
pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion
Hans de Goede <hdegoede@redhat.com>
ASoC: rt5670: Remove unbalanced pm_runtime_put()
Wang Jingjin <wangjingjin1@huawei.com>
ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in rk_spdif_runtime_resume()
Marek Szyprowski <m.szyprowski@samsung.com>
ASoC: wm8994: Fix potential deadlock
Wang Jingjin <wangjingjin1@huawei.com>
ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in rockchip_pdm_runtime_resume()
Wang Yufen <wangyufen@huawei.com>
ASoC: audio-graph-card: fix refcount leak of cpu_ep in __graph_for_each_link()
Wang Yufen <wangyufen@huawei.com>
ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in mt8173_rt5650_rt5514_dev_probe()
Cezary Rojewski <cezary.rojewski@intel.com>
ASoC: Intel: Skylake: Fix driver hang during shutdown
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ALSA: hda: add snd_hdac_stop_streams() helper
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ALSA/ASoC: hda: move/rename snd_hdac_ext_stop_streams to hdac_stream.c
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix kmemleak in orangefs_prepare_debugfs_help_string()
Nathan Chancellor <nathan@kernel.org>
drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid()
Nathan Chancellor <nathan@kernel.org>
drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid()
Hawkins Jiawei <yin31149@gmail.com>
hugetlbfs: fix null-ptr-deref in hugetlbfs_parse_param()
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: st: Fix memory leak in st_of_quadfs_setup()
Shigeru Yoshida <syoshida@redhat.com>
media: si470x: Fix use-after-free in si470x_int_in_callback()
Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
mmc: f-sdh30: Add quirks for broken timeout clock capability
Rui Zhang <zr.zhang@vivo.com>
regulator: core: fix use_count leakage when handling boot-on
Ye Bin <yebin10@huawei.com>
blk-mq: fix possible memleak when register 'hctx' failed
Mazin Al Haddad <mazinalhaddad05@gmail.com>
media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
Lin Ma <linma@zju.edu.cn>
media: dvbdev: adopts refcnt to avoid UAF
Yan Lei <yan_lei@dahuatech.com>
media: dvb-frontends: fix leak of memory fw
Stanislav Fomichev <sdf@google.com>
bpf: Prevent decl_tag from being referenced in func_proto arg
Stanislav Fomichev <sdf@google.com>
ppp: associate skb with a device at tx
Schspa Shi <schspa@gmail.com>
mrp: introduce active flags to prevent UAF when applicant uninit
Eric Dumazet <edumazet@google.com>
net: add atomic_long_t to net_device_stats fields
Jiang Li <jiang.li@ugreen.com>
md/raid1: stop mdx_raid1 thread when raid1 array run failed
Li Zhong <floridsleeves@gmail.com>
drivers/md/md-bitmap: check the return value of md_bitmap_get_counter()
Ville Syrjälä <ville.syrjala@linux.intel.com>
drm/sti: Use drm_mode_copy()
Ville Syrjälä <ville.syrjala@linux.intel.com>
drm/rockchip: Use drm_mode_copy()
Nathan Chancellor <nathan@kernel.org>
s390/lcs: Fix return type of lcs_start_xmit()
Nathan Chancellor <nathan@kernel.org>
s390/netiucv: Fix return type of netiucv_tx()
Nathan Chancellor <nathan@kernel.org>
s390/ctcm: Fix return type of ctc{mp,}m_tx()
Kees Cook <keescook@chromium.org>
igb: Do not free q_vector unless new one was allocated
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
wifi: brcmfmac: Fix potential shift-out-of-bounds in brcmf_fw_alloc_request()
Nathan Chancellor <nathan@kernel.org>
hamradio: baycom_epp: Fix return type of baycom_send_packet()
Nathan Chancellor <nathan@kernel.org>
net: ethernet: ti: Fix return type of netcp_ndo_start_xmit()
Stanislav Fomichev <sdf@google.com>
bpf: make sure skb->len != 0 when redirecting to a tunneling device
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix memleak when unload ipmi driver
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
ASoC: codecs: rt298: Add quirk for KBL-R RVP platform
Shigeru Yoshida <syoshida@redhat.com>
wifi: ar5523: Fix use-after-free on ar5523_cmd() timed out
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: verify the expected usb_endpoints are present
Wright Feng <wright.feng@cypress.com>
brcmfmac: return error when getting invalid max_flowrings from dongle
Doug Brown <doug@schmorgal.com>
drm/etnaviv: add missing quirks for GC300
ZhangPeng <zhangpeng362@huawei.com>
hfs: fix OOB Read in __hfs_brec_find
Zheng Yejian <zhengyejian1@huawei.com>
acct: fix potential integer overflow in encode_comp_t()
Ryusuke Konishi <konishi.ryusuke@gmail.com>
nilfs2: fix shift-out-of-bounds/overflow in nilfs_sb2_bad_offset()
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
ACPICA: Fix error code path in acpi_ds_call_control_method()
Hoi Pok Wu <wuhoipok@gmail.com>
fs: jfs: fix shift-out-of-bounds in dbDiscardAG
Shigeru Yoshida <syoshida@redhat.com>
udf: Avoid double brelse() in udf_rename()
Dongliang Mu <mudongliangabcd@gmail.com>
fs: jfs: fix shift-out-of-bounds in dbAllocAG
Liu Shixin <liushixin2@huawei.com>
binfmt_misc: fix shift-out-of-bounds in check_special_flags
Zqiang <qiang1.zhang@intel.com>
rcu: Fix __this_cpu_read() lockdep warning in rcu_force_quiescent_state()
Eric Dumazet <edumazet@google.com>
net: stream: purge sk_error_queue in sk_stream_kill_queues()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
myri10ge: Fix an error handling path in myri10ge_probe()
David Howells <dhowells@redhat.com>
rxrpc: Fix missing unlock in rxrpc_do_sendmsg()
Cong Wang <cong.wang@bytedance.com>
net_sched: reject TCF_EM_SIMPLE case for complex ematch module
Yang Yingliang <yangyingliang@huawei.com>
mailbox: zynq-ipi: fix error handling while device_register() fails
Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com>
skbuff: Account for tail adjustment during pull operations
Eelco Chaudron <echaudro@redhat.com>
openvswitch: Fix flow lookup to use unmasked key
GUO Zihua <guozihua@huawei.com>
rtc: mxc_v2: Add missing clk_disable_unprepare()
Li Zetao <lizetao1@huawei.com>
r6040: Fix kmemleak in probe and remove
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
nfc: pn533: Clear nfc_target before being used
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcmulti: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcpci: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcsusb: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Dan Aloni <dan.aloni@vastdata.com>
nfsd: under NFSv4.1, fix double svc_xprt_put on rpc_create failure
Chuck Lever <chuck.lever@oracle.com>
NFSD: Add tracepoints to NFSD's duplicate reply cache
Trond Myklebust <trondmy@gmail.com>
nfsd: Define the file access mode enum for tracing
Gaosheng Cui <cuigaosheng1@huawei.com>
rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe()
Gaosheng Cui <cuigaosheng1@huawei.com>
rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe()
Yuan Can <yuancan@huawei.com>
remoteproc: qcom_q6v5_pas: Fix missing of_node_put() in adsp_alloc_memory_region()
Gaosheng Cui <cuigaosheng1@huawei.com>
remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev()
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
pwm: sifive: Call pwm_sifive_update_clock() while mutex is held
Miaoqian Lin <linmq006@gmail.com>
selftests/powerpc: Fix resource leaks
Kajol Jain <kjain@linux.ibm.com>
powerpc/hv-gpci: Fix hv_gpci event list
Yang Yingliang <yangyingliang@huawei.com>
powerpc/83xx/mpc832x_rdb: call platform_device_put() in error case in of_fsl_spi_probe()
Nicholas Piggin <npiggin@gmail.com>
powerpc/perf: callchain validate kernel stack pointer bounds
Yang Yingliang <yangyingliang@huawei.com>
powerpc/xive: add missing iounmap() in error path in xive_spapr_populate_irq_data()
Miaoqian Lin <linmq006@gmail.com>
cxl: Fix refcount leak in cxl_calc_capp_routing
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
powerpc/52xx: Fix a resource leak in an error handling path
Xie Shaowen <studentxswpy@163.com>
macintosh/macio-adb: check the return value of ioremap()
Yang Yingliang <yangyingliang@huawei.com>
macintosh: fix possible memory leak in macio_add_one_device()
Yuan Can <yuancan@huawei.com>
iommu/fsl_pamu: Fix resource leak in fsl_pamu_probe()
Yang Yingliang <yangyingliang@huawei.com>
iommu/amd: Fix pci device refcount leak in ppr_notifier()
Alexander Stein <alexander.stein@ew.tq-group.com>
rtc: pcf85063: Fix reading alarm
Stefan Eichenberger <stefan.eichenberger@toradex.com>
rtc: snvs: Allow a time difference on clock register read
Matt Redfearn <matt.redfearn@mips.com>
include/uapi/linux/swab: Fix potentially missing __always_inline
Arnd Bergmann <arnd@arndb.de>
RDMA/siw: Fix pointer cast warning
ruanjinjie <ruanjinjie@huawei.com>
power: supply: fix null pointer dereferencing in power_supply_get_battery_info
Yuan Can <yuancan@huawei.com>
HSI: omap_ssi_core: Fix error handling in ssi_init()
Ajay Kaher <akaher@vmware.com>
perf symbol: correction while adjusting symbol
Leo Yan <leo.yan@linaro.org>
perf trace: Handle failure when trace point folder is missed
Leo Yan <leo.yan@linaro.org>
perf trace: Use macro RAW_SYSCALL_ARGS_NUM to replace number
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Add a strtoul() method to 'struct syscall_arg_fmt'
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Allow associating scnprintf routines with well known arg names
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Add the syscall_arg_fmt pointer to syscall_arg
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Factor out the initialization of syscal_arg_fmt->scnprintf
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Separate 'struct syscall_fmt' definition from syscall_fmts variable
Leo Yan <leo.yan@linaro.org>
perf trace: Return error if a system call doesn't exist
Zeng Heng <zengheng4@huawei.com>
power: supply: fix residue sysfs file in error handle route of __power_supply_register()
Yang Yingliang <yangyingliang@huawei.com>
HSI: omap_ssi_core: fix possible memory leak in ssi_probe()
Yang Yingliang <yangyingliang@huawei.com>
HSI: omap_ssi_core: fix unbalanced pm_runtime_disable()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
fbdev: uvesafb: Fixes an error handling path in uvesafb_probe()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
fbdev: vermilion: decrease reference count in error path
Shang XiaoJing <shangxiaojing@huawei.com>
fbdev: via: Fix error in via_core_init()
Yang Yingliang <yangyingliang@huawei.com>
fbdev: pm2fb: fix missing pci_disable_device()
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
fbdev: ssd1307fb: Drop optional dependency
Shang XiaoJing <shangxiaojing@huawei.com>
samples: vfio-mdev: Fix missing pci_disable_device() in mdpy_fb_probe()
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix issue of losting command info in error_log
Jiasheng Jiang <jiasheng@iscas.ac.cn>
usb: storage: Add check for kcalloc
Zheyu Ma <zheyuma97@gmail.com>
i2c: ismt: Fix an out-of-bounds bug in ismt_access()
Chen Zhongjin <chenzhongjin@huawei.com>
vme: Fix error not catched in fake_init()
YueHaibing <yuehaibing@huawei.com>
staging: rtl8192e: Fix potential use-after-free in rtllib_rx_Monitor()
Dan Carpenter <error27@gmail.com>
staging: rtl8192u: Fix use after free in ieee80211_rx()
Hui Tang <tanghui20@huawei.com>
i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe
Yang Yingliang <yangyingliang@huawei.com>
chardev: fix error handling in cdev_device_add()
Yang Yingliang <yangyingliang@huawei.com>
mcb: mcb-parse: fix error handing in chameleon_parse_gdd()
Zhengchao Shao <shaozhengchao@huawei.com>
drivers: mcb: fix resource leak in mcb_probe()
John Keeping <john@metanate.com>
usb: gadget: f_hid: fix refcount leak on error path
John Keeping <john@metanate.com>
usb: gadget: f_hid: fix f_hidg lifetime vs cdev
Maxim Devaev <mdevaev@gmail.com>
usb: gadget: f_hid: optional SETUP/SET_REPORT mode
Yang Yingliang <yangyingliang@huawei.com>
usb: roles: fix of node refcount leak in usb_role_switch_is_parent()
Fabrice Gasnier <fabrice.gasnier@foss.st.com>
counter: stm32-lptimer-cnt: fix the check on arr and cmp registers update
Yang Yingliang <yangyingliang@huawei.com>
cxl: fix possible null-ptr-deref in cxl_pci_init_afu|adapter()
Yang Yingliang <yangyingliang@huawei.com>
cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter()
Zheng Wang <zyytlz.wz@163.com>
misc: sgi-gru: fix use-after-free error in gru_set_context_option, gru_fault and gru_handle_user_call_os
ruanjinjie <ruanjinjie@huawei.com>
misc: tifm: fix possible memory leak in tifm_7xx1_switch_media()
Yang Yingliang <yangyingliang@huawei.com>
misc: ocxl: fix possible name leak in ocxl_file_register_afu()
Zhengchao Shao <shaozhengchao@huawei.com>
test_firmware: fix memory leak in test_firmware_init()
Yuan Can <yuancan@huawei.com>
serial: sunsab: Fix error handling in sunsab_init()
Gabriel Somlo <gsomlo@gmail.com>
serial: altera_uart: fix locking in polling mode
Jiri Slaby <jslaby@suse.cz>
tty: serial: altera_uart_{r,t}x_chars() need only uart_port
Jiri Slaby <jslaby@suse.cz>
tty: serial: clean up stop-tx part in altera_uart_tx_chars()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
serial: pch: Fix PCI device refcount leak in pch_request_dma()
delisun <delisun@pateo.com.cn>
serial: pl011: Do not clear RX FIFO & RX interrupt in unthrottle.
Jiamei Xie <jiamei.xie@arm.com>
serial: amba-pl011: avoid SBSA UART accessing DMACR register
Yang Yingliang <yangyingliang@huawei.com>
usb: typec: tcpci: fix of node refcount leak in tcpci_register_port()
Sven Peter <sven@svenpeter.dev>
usb: typec: Check for ops->exit instead of ops->enter in altmode_exit
Gaosheng Cui <cuigaosheng1@huawei.com>
staging: vme_user: Fix possible UAF in tsi148_dma_list_add
Linus Walleij <linus.walleij@linaro.org>
usb: fotg210-udc: Fix ages old endianness issues
Rafael Mendonca <rafaelmendsr@gmail.com>
uio: uio_dmem_genirq: Fix deadlock between irq config and handling
Rafael Mendonca <rafaelmendsr@gmail.com>
uio: uio_dmem_genirq: Fix missing unlock in irq configuration
Rafael Mendonca <rafaelmendsr@gmail.com>
vfio: platform: Do not pass return buffer to ACPI _RST method
Yang Yingliang <yangyingliang@huawei.com>
class: fix possible memory leak in __class_register()
Kartik <kkartik@nvidia.com>
serial: tegra: Read DMA status before terminating
Dmitry Osipenko <digetx@gmail.com>
tty: serial: tegra: Activate RX DMA transfer by request
Yang Yingliang <yangyingliang@huawei.com>
drivers: dio: fix possible memory leak in dio_init()
Dragos Tatulea <dtatulea@nvidia.com>
IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces
Xiongfeng Wang <wangxiongfeng2@huawei.com>
hwrng: geode - Fix PCI device refcount leak
Xiongfeng Wang <wangxiongfeng2@huawei.com>
hwrng: amd - Fix PCI device refcount leak
Gaosheng Cui <cuigaosheng1@huawei.com>
crypto: img-hash - Fix variable dereferenced before check 'hdev->req'
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix sysfs not cleanup when dev init failed
Wang Yufen <wangyufen@huawei.com>
RDMA/hfi1: Fix error return code in parse_platform_config()
Shang XiaoJing <shangxiaojing@huawei.com>
crypto: omap-sham - Use pm_runtime_resume_and_get() in omap_sham_probe()
Yonggil Song <yonggil.song@samsung.com>
f2fs: avoid victim selection from previous victim section
Yuan Can <yuancan@huawei.com>
RDMA/nldev: Add checks for nla_nest_start() in fill_stat_counter_qps()
Gaosheng Cui <cuigaosheng1@huawei.com>
scsi: snic: Fix possible UAF in snic_tgt_create()
Chen Zhongjin <chenzhongjin@huawei.com>
scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails
Shang XiaoJing <shangxiaojing@huawei.com>
scsi: ipr: Fix WARNING in ipr_init()
Yang Yingliang <yangyingliang@huawei.com>
scsi: fcoe: Fix possible name leak when device_register() fails
Yang Yingliang <yangyingliang@huawei.com>
scsi: hpsa: Fix possible memory leak in hpsa_add_sas_device()
Yang Yingliang <yangyingliang@huawei.com>
scsi: hpsa: Fix error handling in hpsa_add_sas_host()
Yang Yingliang <yangyingliang@huawei.com>
scsi: mpt3sas: Fix possible resource leaks in mpt3sas_transport_port_add()
Zhang Yiqun <zhangyiqun@phytium.com.cn>
crypto: tcrypt - Fix multibuffer skcipher speed test mem leak
Yuan Can <yuancan@huawei.com>
scsi: hpsa: Fix possible memory leak in hpsa_init_one()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
RDMA/rxe: Fix NULL-ptr-deref in rxe_qp_do_cleanup() when socket create failed
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
crypto: ccree - Make cc_debugfs_global_fini() available for module init function
Xiongfeng Wang <wangxiongfeng2@huawei.com>
RDMA/hfi: Decrease PCI device reference count in error path
Zeng Heng <zengheng4@huawei.com>
PCI: Check for alloc failure in pci_request_irq()
Gaosheng Cui <cuigaosheng1@huawei.com>
crypto: ccree - Remove debugfs when platform_driver_register failed
Geert Uytterhoeven <geert+renesas@glider.be>
crypto: ccree - swap SHA384 and SHA512 larval hashes at build time
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
scsi: scsi_debug: Fix a warning in resp_write_scat()
Bernard Metzler <bmt@zurich.ibm.com>
RDMA/siw: Set defined status for work completion with undefined status
Mark Zhang <markzhang@nvidia.com>
RDMA/nldev: Return "-EAGAIN" if the cm_id isn't from expected port
Bernard Metzler <bmt@zurich.ibm.com>
RDMA/siw: Fix immediate work request flush to completion queue
Dongdong Zhang <zhangdongdong1@oppo.com>
f2fs: fix normal discard process
Leon Romanovsky <leonro@nvidia.com>
RDMA/core: Fix order of nldev_exit call
Xiu Jianfeng <xiujianfeng@huawei.com>
apparmor: Use pointer to struct aa_label for lbs_cred
John Johansen <john.johansen@canonical.com>
apparmor: Fix abi check to include v8 abi
John Johansen <john.johansen@canonical.com>
apparmor: fix lockdep warning when removing a namespace
Gaosheng Cui <cuigaosheng1@huawei.com>
apparmor: fix a memleak in multi_transaction_new()
Piergiorgio Beruto <piergiorgio.beruto@gmail.com>
stmmac: fix potential division by 0
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: RFCOMM: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_core: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_bcsp: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_h5: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_ll: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_qca: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()
Eric Pilmore <epilmore@gigaio.com>
ntb_netdev: Use dev_kfree_skb_any() in interrupt context
Jerry Ray <jerry.ray@microchip.com>
net: lan9303: Fix read error execution path
Markus Schneider-Pargmann <msp@baylibre.com>
can: tcan4x5x: Remove invalid write in clear_interrupts
Tom Lendacky <thomas.lendacky@amd.com>
net: amd-xgbe: Check only the minimum speed for active/passive cables
Tom Lendacky <thomas.lendacky@amd.com>
net: amd-xgbe: Fix logic around active and passive cables
Yang Yingliang <yangyingliang@huawei.com>
net: amd: lance: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
hamradio: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: ethernet: dnet: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: emaclite: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave()
Hangbin Liu <liuhangbin@gmail.com>
net/tunnel: wait until all sk_user_data reader finish before releasing the sock
Li Zetao <lizetao1@huawei.com>
net: farsync: Fix kmemleak when rmmods farsync
Yang Yingliang <yangyingliang@huawei.com>
ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave()
ruanjinjie <ruanjinjie@huawei.com>
of: overlay: fix null pointer dereferencing in find_dup_cset_node_entry() and find_dup_cset_prop()
Yuan Can <yuancan@huawei.com>
drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init()
Zhang Changzhong <zhangchangzhong@huawei.com>
net: stmmac: selftests: fix potential memleak in stmmac_test_arpoffload()
Yongqiang Liu <liuyongqiang13@huawei.com>
net: defxx: Fix missing err handling in dfx_init()
Artem Chernyshev <artem.chernyshev@red-soft.ru>
net: vmw_vsock: vmci: Check memcpy_from_msg()
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: socfpga: Fix memory leak in socfpga_gate_init()
Dinh Nguyen <dinguyen@kernel.org>
clk: socfpga: use clk_hw_register for a5/c5
Lee Jones <lee.jones@linaro.org>
clk: socfpga: clk-pll: Remove unused variable 'rc'
Yang Jihong <yangjihong1@huawei.com>
blktrace: Fix output non-blktrace event when blk_classic option enabled
Wang Yufen <wangyufen@huawei.com>
wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware()
Bitterblue Smith <rtl8821cerfe2@gmail.com>
wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h
Kris Bahnsen <kris@embeddedTS.com>
spi: spi-gpio: Don't set MOSI as an input if not 3WIRE mode
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: samsung: Fix memory leak in _samsung_clk_register_pll()
Jiasheng Jiang <jiasheng@iscas.ac.cn>
media: coda: Add check for kmalloc
Jiasheng Jiang <jiasheng@iscas.ac.cn>
media: coda: Add check for dcoda_iram_alloc
Liang He <windhl@126.com>
media: c8sectpfe: Add of_node_put() when breaking out of loop
Yang Yingliang <yangyingliang@huawei.com>
mmc: mmci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: wbsd: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: via-sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: meson-gx: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: omap_hsmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: atmel-mci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: wmt-sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: vub300: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: toshsd: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: pxamci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: mxcmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: moxart: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: alcor: fix return value check of mmc_add_host()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.x: Fail client initialisation if state manager thread can't run
Wang ShaoBo <bobo.shaobowang@huawei.com>
SUNRPC: Fix missing release socket in rpc_sockname()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
xprtrdma: Fix regbuf data not freed in rpcrdma_req_create()
Gaosheng Cui <cuigaosheng1@huawei.com>
ALSA: mts64: fix possible null-ptr-defer in snd_mts64_interrupt
Liu Shixin <liushixin2@huawei.com>
media: saa7164: fix missing pci_disable_device()
Eric Dumazet <edumazet@google.com>
bpf, sockmap: fix race in sock_map_free()
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix resource leak in regulator_register()
Chen Zhongjin <chenzhongjin@huawei.com>
configfs: fix possible memory leak in configfs_create_dir()
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hsr: Avoid double remove of a node.
Christian Marangi <ansuelsmth@gmail.com>
clk: qcom: clk-krait: fix wrong div2 functions
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix module refcount leak in set_supply()
Chen Zhongjin <chenzhongjin@huawei.com>
wifi: cfg80211: Fix not unregister reg_pdev when load_builtin_regdb_keys() fails
Alexander Sverdlin <alexander.sverdlin@siemens.com>
spi: spidev: mask SPI_CS_HIGH in SPI_IOC_RD_MODE
Dan Carpenter <error27@gmail.com>
bonding: uninitialized variable in bond_miimon_inspect()
Pengcheng Yang <yangpc@wangsu.com>
bpf, sockmap: Fix data loss caused by using apply_bytes on ingress redirect
Pengcheng Yang <yangpc@wangsu.com>
bpf, sockmap: Fix repeated calls to sock_put() when msg has more_data
Florian Westphal <fw@strlen.de>
netfilter: conntrack: set icmpv6 redirects as RELATED
Zhang Qilong <zhangqilong3@huawei.com>
ASoC: pcm512x: Fix PM disable depth imbalance in pcm512x_probe
Xiongfeng Wang <wangxiongfeng2@huawei.com>
drm/amdgpu: Fix PCI device refcount leak in amdgpu_atrm_get_bios()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
drm/radeon: Fix PCI device refcount leak in radeon_atrm_get_bios()
Ricardo Ribalda <ribalda@chromium.org>
ASoC: mediatek: mt8173: Enable IRQ when pdata is ready
Ben Greear <greearb@candelatech.com>
wifi: iwlwifi: mvm: fix double free on tx path.
Liu Shixin <liushixin2@huawei.com>
ALSA: asihpi: fix missing pci_disable_device()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4: Fix a deadlock between nfs4_open_recover_helper() and delegreturn
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Fix initialisation of struct nfs4_label
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Fix a memory stomp in decode_attr_security_label
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Clear FATTR4_WORD2_SECURITY_LABEL when done decoding
Jiasheng Jiang <jiasheng@iscas.ac.cn>
ASoC: mediatek: mtk-btcvsd: Add checks for write and read of mtk_btcvsd_snd
Dmitry Torokhov <dmitry.torokhov@gmail.com>
ASoC: dt-bindings: wcd9335: fix reset line polarity in example
Zhang Zekun <zhangzekun11@huawei.com>
drm/tegra: Add missing clk_disable_unprepare() in tegra_dc_probe()
Aakarsh Jain <aakarsh.jain@samsung.com>
media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC
Baisong Zhong <zhongbaisong@huawei.com>
media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()
Chen Zhongjin <chenzhongjin@huawei.com>
media: dvb-core: Fix ignored return value in dvb_register_frontend()
ZhangPeng <zhangpeng362@huawei.com>
pinctrl: pinconf-generic: add missing of_node_put()
Dario Binacchi <dario.binacchi@amarulasolutions.com>
clk: imx: replace osc_hdmi with dummy
Li Jun <jun.li@nxp.com>
clk: imx8mn: correct the usb1_ctrl parent to be usb_bus
Gautam Menghani <gautammenghani201@gmail.com>
media: imon: fix a race condition in send_packet()
Zheng Yongjun <zhengyongjun3@huawei.com>
mtd: maps: pxa2xx-flash: fix memory leak in probe
Jonathan Toppins <jtoppins@redhat.com>
bonding: fix link recovery in mode 2 when updelay is nonzero
Maor Gottlieb <maorg@mellanox.com>
bonding: Rename slave_arr to usable_slaves
Maor Gottlieb <maorg@mellanox.com>
bonding: Export skip slave logic to function
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: rockchip: Fix memory leak in rockchip_clk_register_pll()
Wang ShaoBo <bobo.shaobowang@huawei.com>
regulator: core: use kfree_const() to free space conditionally
Baisong Zhong <zhongbaisong@huawei.com>
ALSA: seq: fix undefined behavior in bit shift for SNDRV_SEQ_FILTER_USE_EVENT
Baisong Zhong <zhongbaisong@huawei.com>
ALSA: pcm: fix undefined behavior in bit shift for SNDRV_PCM_RATE_KNOT
Marcus Folkesson <marcus.folkesson@gmail.com>
HID: hid-sensor-custom: set fixed size for custom attributes
Stanislav Fomichev <sdf@google.com>
bpf: Move skb->len == 0 checks into __bpf_redirect
Christoph Hellwig <hch@lst.de>
media: videobuf-dma-contig: use dma_mmap_coherent
Yuan Can <yuancan@huawei.com>
media: platform: exynos4-is: Fix error handling in fimc_md_init()
Yang Yingliang <yangyingliang@huawei.com>
media: solo6x10: fix possible memory leak in solo_sysfs_init()
Douglas Anderson <dianders@chromium.org>
Input: elants_i2c - properly handle the reset GPIO when power is off
Hui Tang <tanghui20@huawei.com>
mtd: lpddr2_nvm: Fix possible null-ptr-deref
Xiu Jianfeng <xiujianfeng@huawei.com>
wifi: ath10k: Fix return value in ath10k_pci_init()
Xiu Jianfeng <xiujianfeng@huawei.com>
ima: Fix misuse of dereference of pointer in template_desc_init_fields()
GUO Zihua <guozihua@huawei.com>
integrity: Fix memory leakage in keyring allocation error path
Dan Carpenter <error27@gmail.com>
amdgpu/pm: prevent array underflow in vega20_odn_edit_dpm_table()
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix unbalanced of node refcount in regulator_dev_lookup()
Zeng Heng <zengheng4@huawei.com>
ASoC: pxa: fix null-pointer dereference in filter()
Xinlei Lee <xinlei.lee@mediatek.com>
drm/mediatek: Modify dpi power on/off sequence.
Hanjun Guo <guohanjun@huawei.com>
drm/radeon: Add the missed acpi_put_table() to fix memory leak
David Howells <dhowells@redhat.com>
rxrpc: Fix ack.bufferSize to be 0 when generating an ack
David Howells <dhowells@redhat.com>
net, proc: Provide PROC_FS=n fallback for proc_create_net_single_write()
Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
media: camss: Clean up received buffers on failed start of streaming
Marek Vasut <marex@denx.de>
wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
mtd: Fix device name leak when register device failed in add_mtd_device()
Andrii Nakryiko <andrii@kernel.org>
bpf: propagate precision in ALU/ALU64 operations
Liu Shixin <liushixin2@huawei.com>
media: vivid: fix compose size exceed boundary
GUO Zihua <guozihua@huawei.com>
ima: Handle -ESTALE returned by ima_filter_rule_match()
Gustavo A. R. Silva <gustavoars@kernel.org>
ima: Fix fall-through warnings for Clang
Tyler Hicks <tyhicks@linux.microsoft.com>
ima: Rename internal filter rule functions
Marek Vasut <marex@denx.de>
drm/panel/panel-sitronix-st7701: Remove panel on DSI attach failure
Jonathan Neuschäfer <j.neuschaefer@gmx.net>
spi: Update reference to struct spi_controller
Marek Vasut <marex@denx.de>
clk: renesas: r9a06g032: Repair grave increment error
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: Compare requested bittiming parameters with actual parameters in do_set_{,data}_bittiming
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: Add struct kvaser_usb_busparams
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix bogus restart events
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix wrong CAN state after stopping
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix improved state not being reported
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Set Warning state even without bus errors
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Handle CMD_ERROR_EVENT
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Rename {leaf,usbcan}_cmd_error_event to {leaf,usbcan}_cmd_can_error_event
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Get capabilities from device
Vincent Mailhol <mailhol.vincent@wanadoo.fr>
can: kvaser_usb: do not increase tx statistics when sending error message frames
Ricardo Ribalda <ribalda@chromium.org>
media: i2c: ad5820: Fix error path
Junlin Yang <yangjunlin@yulong.com>
pata_ipx4xx_cf: Fix unsigned comparison with less than zero
Bitterblue Smith <rtl8821cerfe2@gmail.com>
wifi: rtl8xxxu: Fix reading the vendor of combo chips
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb()
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: hif_usb: fix memory leak of urbs in ath9k_hif_usb_dealloc_tx_urbs()
Cai Xinchen <caixinchen1@huawei.com>
rapidio: devices: fix missing put_device in mport_cdev_open
ZhangPeng <zhangpeng362@huawei.com>
hfs: Fix OOB Write in hfs_asc2mac
Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
relay: fix type mismatch when allocating memory in relay_create_buf()
Zhang Qilong <zhangqilong3@huawei.com>
eventfd: change int to __u64 in eventfd_signal() ifndef CONFIG_EVENTFD
Wang Weiyang <wangweiyang2@huawei.com>
rapidio: fix possible UAF when kfifo_alloc() fails
Chen Zhongjin <chenzhongjin@huawei.com>
fs: sysv: Fix sysv_nblocks() returns wrong value
Ladislav Michl <ladis@linux-mips.org>
MIPS: OCTEON: warn only once if deprecated link status is being used
Anastasia Belova <abelova@astralinux.ru>
MIPS: BCM63xx: Add check for NULL for clk in clk_enable
Yu Liao <liaoyu15@huawei.com>
platform/x86: mxm-wmi: fix memleak in mxm_wmi_call_mx[ds|mx]()
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
PM: runtime: Do not call __rpm_callback() from rpm_idle()
Ulf Hansson <ulf.hansson@linaro.org>
PM: runtime: Improve path in rpm_idle() when no callback
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
xen/privcmd: Fix a possible warning in privcmd_ioctl_mmap_resource()
Xiu Jianfeng <xiujianfeng@huawei.com>
x86/xen: Fix memory leak in xen_init_lock_cpu()
Xiu Jianfeng <xiujianfeng@huawei.com>
x86/xen: Fix memory leak in xen_smp_intr_init{_pv}()
Juergen Gross <jgross@suse.com>
xen/events: only register debug interrupt for 2-level events
Oleg Nesterov <oleg@redhat.com>
uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix
Li Zetao <lizetao1@huawei.com>
ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage()
Geert Uytterhoeven <geert+renesas@glider.be>
clocksource/drivers/sh_cmt: Make sure channel clock supply is enabled
Yang Yingliang <yangyingliang@huawei.com>
rapidio: rio: fix possible name leak in rio_register_mport()
Yang Yingliang <yangyingliang@huawei.com>
rapidio: fix possible name leaks when rio_add_device() fails
Li Zetao <ocfs2-devel@oss.oracle.com>
ocfs2: fix memory leak in ocfs2_mount_volume()
Heming Zhao via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: rewrite error handling of ocfs2_fill_super
Heming Zhao via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: ocfs2_mount_volume does cleanup job before return error
Akinobu Mita <akinobu.mita@gmail.com>
debugfs: fix error when writing negative value to atomic_t debugfs file
Wolfram Sang <wsa+renesas@sang-engineering.com>
docs: fault-injection: fix non-working usage of negative values
Akinobu Mita <akinobu.mita@gmail.com>
lib/notifier-error-inject: fix error when writing -errno to debugfs file
Akinobu Mita <akinobu.mita@gmail.com>
libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value
Xiongfeng Wang <wangxiongfeng2@huawei.com>
cpufreq: amd_freq_sensitivity: Add missing pci_dev_put()
Yang Yingliang <yangyingliang@huawei.com>
genirq/irqdesc: Don't try to remove non-existing sysfs files
Jeff Layton <jlayton@kernel.org>
nfsd: don't call nfsd_file_put from client states seqfile display
Yang Yingliang <yangyingliang@huawei.com>
EDAC/i10nm: fix refcount leak in pci_get_dev_wrapper()
Shang XiaoJing <shangxiaojing@huawei.com>
irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox()
Yang Yingliang <yangyingliang@huawei.com>
PNP: fix name memory leak in pnp_alloc_dev()
Zhao Gongyi <zhaogongyi@huawei.com>
selftests/efivarfs: Add checking of the test return value
Yang Yingliang <yangyingliang@huawei.com>
MIPS: vpe-cmp: fix possible memory leak while module exiting
Yang Yingliang <yangyingliang@huawei.com>
MIPS: vpe-mt: fix possible memory leak while module exiting
Shang XiaoJing <shangxiaojing@huawei.com>
ocfs2: fix memory leak in ocfs2_stack_glue_init()
Gaosheng Cui <cuigaosheng1@huawei.com>
lib/fonts: fix undefined behavior in bit shift for get_default_font
Alexey Dobriyan <adobriyan@gmail.com>
proc: fixup uptime selftest
Barnabás Pőcze <pobrn@protonmail.com>
timerqueue: Use rb_entry_safe() in timerqueue_getnext()
Chen Zhongjin <chenzhongjin@huawei.com>
perf: Fix possible memleak in pmu_dev_alloc()
Yipeng Zou <zouyipeng@huawei.com>
selftests/ftrace: event_triggers: wait longer for test_event_enable
Ondrej Mosnacek <omosnace@redhat.com>
fs: don't audit the capability check in simple_xattr_list()
xiongxin <xiongxin@kylinos.cn>
PM: hibernate: Fix mistake in kerneldoc comment
Al Viro <viro@zeniv.linux.org.uk>
alpha: fix syscall entry in !AUDUT_SYSCALL case
Ulf Hansson <ulf.hansson@linaro.org>
cpuidle: dt: Return the correct numbers of parsed idle states
Michael Kelley <mikelley@microsoft.com>
tpm/tpm_crb: Fix error message in __crb_relinquish_locality()
Stephen Boyd <swboyd@chromium.org>
pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP
Doug Brown <doug@schmorgal.com>
ARM: mmp: fix timer_read delay
Wang Yufen <wangyufen@huawei.com>
pstore/ram: Fix error return code in ramoops_probe()
Pali Rohár <pali@kernel.org>
arm64: dts: armada-3720-turris-mox: Add missing interrupt for RTC
Pali Rohár <pali@kernel.org>
ARM: dts: turris-omnia: Add switch port 6 node
Pali Rohár <pali@kernel.org>
ARM: dts: turris-omnia: Add ethernet aliases
Pali Rohár <pali@kernel.org>
ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712-evb: Fix usb vbus regulators unit names
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712-evb: Fix vproc fixed regulators unit names
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712e: Fix unit address for pinctrl node
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712e: Fix unit_address_vs_reg warning for oscillators
Shang XiaoJing <shangxiaojing@huawei.com>
perf/smmuv3: Fix hotplug callback leak in arm_smmu_pmu_init()
Yuan Can <yuancan@huawei.com>
perf: arm_dsu: Fix hotplug callback leak in dsu_pmu_init()
Zhang Qilong <zhangqilong3@huawei.com>
soc: ti: smartreflex: Fix PM disable depth imbalance in omap_sr_probe
Zhang Qilong <zhangqilong3@huawei.com>
soc: ti: knav_qmss_queue: Fix PM disable depth imbalance in knav_queue_probe
Minghao Chi <chi.minghao@zte.com.cn>
soc: ti: knav_qmss_queue: Use pm_runtime_resume_and_get instead of pm_runtime_get_sync
Kory Maincent <kory.maincent@bootlin.com>
arm: dts: spear600: Fix clcd interrupt
Chen Jiahao <chenjiahao16@huawei.com>
drivers: soc: ti: knav_qmss_queue: Mark knav_acc_firmwares as static
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm845-cheza: fix AP suspend pin bias
Luca Weiss <luca@z3ntu.xyz>
ARM: dts: qcom: apq8064: fix coresight compatible
Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
usb: musb: remove extra check in musb_gadget_vbus_draw
Rasmus Villemoes <linux@rasmusvillemoes.dk>
net: loopback: use NET_NAME_PREDICTABLE for name_assign_type
Sungwoo Kim <iam@sung-woo.kim>
Bluetooth: L2CAP: Fix u8 overflow
José Expósito <jose.exposito89@gmail.com>
HID: uclogic: Add HID_QUIRK_HIDINPUT_FORCE quirk
Hans de Goede <hdegoede@redhat.com>
HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10
Hans de Goede <hdegoede@redhat.com>
HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch 10E
Hans de Goede <hdegoede@redhat.com>
HID: ite: Add support for Acer S1002 keyboard-dock
Pratyush Yadav <ptyadav@amazon.de>
xen-netback: move removal of "hotplug-status" to the right place
Tony Nguyen <anthony.l.nguyen@intel.com>
igb: Initialize mailbox message for VF reset
Johan Hovold <johan@kernel.org>
USB: serial: f81534: fix division by zero on line-speed change
Johan Hovold <johan@kernel.org>
USB: serial: f81232: fix division by zero on line-speed change
Bruno Thomsen <bruno.thomsen@gmail.com>
USB: serial: cp210x: add Kamstrup RF sniffer PIDs
Duke Xin <duke_xinanwen@163.com>
USB: serial: option: add Quectel EM05-G modem
Szymon Heidrich <szymon.heidrich@gmail.com>
usb: gadget: uvc: Prevent buffer overflow in setup handler
Jan Kara <jack@suse.cz>
udf: Fix extending file within last block
Jan Kara <jack@suse.cz>
udf: Do not bother looking for prealloc extents if i_lenExtents matches i_size
Jan Kara <jack@suse.cz>
udf: Fix preallocation discarding at indirect extent boundary
Jan Kara <jack@suse.cz>
udf: Discard preallocation before extending file with a hole
Pratyush Yadav <ptyadav@amazon.de>
tracing/ring-buffer: Only do full wait when cpu != RING_BUFFER_ALL_CPUS
-------------
Diffstat:
.../devicetree/bindings/sound/qcom,wcd9335.txt | 2 +-
Documentation/driver-api/spi.rst | 4 +-
Documentation/fault-injection/fault-injection.rst | 16 +-
Documentation/sphinx/load_config.py | 6 +-
Makefile | 4 +-
arch/alpha/kernel/entry.S | 4 +-
arch/arm/boot/dts/armada-370.dtsi | 2 +-
arch/arm/boot/dts/armada-375.dtsi | 2 +-
arch/arm/boot/dts/armada-380.dtsi | 4 +-
arch/arm/boot/dts/armada-385-turris-omnia.dts | 18 +-
arch/arm/boot/dts/armada-385.dtsi | 6 +-
arch/arm/boot/dts/armada-39x.dtsi | 6 +-
arch/arm/boot/dts/armada-xp-mv78230.dtsi | 8 +-
arch/arm/boot/dts/armada-xp-mv78260.dtsi | 16 +-
arch/arm/boot/dts/dove.dtsi | 2 +-
arch/arm/boot/dts/qcom-apq8064.dtsi | 2 +-
arch/arm/boot/dts/spear600.dtsi | 2 +-
arch/arm/mach-mmp/time.c | 11 +-
arch/arm/nwfpe/Makefile | 6 +
.../boot/dts/marvell/armada-3720-turris-mox.dts | 3 +
arch/arm64/boot/dts/mediatek/mt2712-evb.dts | 12 +-
arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 22 +-
arch/arm64/boot/dts/mediatek/mt6797.dtsi | 2 +-
arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi | 4 +-
.../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 6 +-
arch/arm64/include/asm/atomic_ll_sc.h | 114 +++---
arch/arm64/include/asm/atomic_lse.h | 16 +-
arch/arm64/include/asm/kvm_emulate.h | 22 +-
arch/mips/bcm63xx/clk.c | 2 +
.../cavium-octeon/executive/cvmx-helper-board.c | 2 +-
arch/mips/cavium-octeon/executive/cvmx-helper.c | 2 +-
arch/mips/kernel/vpe-cmp.c | 4 +-
arch/mips/kernel/vpe-mt.c | 4 +-
arch/parisc/include/uapi/asm/mman.h | 23 +-
arch/parisc/kernel/sys_parisc.c | 27 ++
arch/parisc/kernel/syscalls/syscall.tbl | 2 +-
arch/powerpc/include/asm/imc-pmu.h | 2 +-
arch/powerpc/kernel/rtas.c | 20 +-
arch/powerpc/perf/callchain.c | 1 +
arch/powerpc/perf/hv-gpci-requests.h | 4 +
arch/powerpc/perf/hv-gpci.c | 33 +-
arch/powerpc/perf/hv-gpci.h | 1 +
arch/powerpc/perf/imc-pmu.c | 136 ++++---
arch/powerpc/perf/req-gen/perf.h | 20 +
arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | 1 +
arch/powerpc/platforms/83xx/mpc832x_rdb.c | 2 +-
arch/powerpc/sysdev/xive/spapr.c | 1 +
arch/riscv/include/asm/uaccess.h | 2 +-
arch/s390/include/asm/percpu.h | 2 +-
arch/s390/kernel/machine_kexec_file.c | 5 +-
arch/x86/boot/bioscall.S | 4 +-
arch/x86/events/intel/uncore_snbep.c | 1 +
arch/x86/ia32/ia32_aout.c | 3 +-
arch/x86/include/asm/vmx.h | 6 +-
arch/x86/include/uapi/asm/vmx.h | 4 +-
arch/x86/kernel/cpu/bugs.c | 2 +
arch/x86/kernel/cpu/microcode/intel.c | 8 +-
arch/x86/kernel/cpu/resctrl/rdtgroup.c | 26 +-
arch/x86/kernel/uprobes.c | 4 +-
arch/x86/kvm/vmx/nested.c | 31 +-
arch/x86/kvm/vmx/vmx.c | 66 ++--
arch/x86/xen/smp.c | 41 +-
arch/x86/xen/smp_pv.c | 12 +-
arch/x86/xen/spinlock.c | 6 +-
arch/x86/xen/xen-ops.h | 2 +
block/blk-mq-sysfs.c | 11 +-
crypto/tcrypt.c | 9 -
drivers/acpi/acpica/dsmethod.c | 10 +-
drivers/acpi/acpica/utcopy.c | 7 -
drivers/ata/ahci.c | 32 +-
drivers/ata/pata_ixp4xx_cf.c | 2 +-
drivers/base/class.c | 5 +
drivers/base/dd.c | 8 +-
drivers/base/power/runtime.c | 18 +-
drivers/bluetooth/btusb.c | 6 +-
drivers/bluetooth/hci_bcsp.c | 2 +-
drivers/bluetooth/hci_h5.c | 2 +-
drivers/bluetooth/hci_ll.c | 2 +-
drivers/bluetooth/hci_qca.c | 2 +-
drivers/char/hw_random/amd-rng.c | 18 +-
drivers/char/hw_random/geode-rng.c | 36 +-
drivers/char/ipmi/ipmi_msghandler.c | 12 +-
drivers/char/ipmi/ipmi_si_intf.c | 27 +-
drivers/char/tpm/tpm_crb.c | 31 +-
drivers/char/tpm/tpm_tis.c | 9 +-
drivers/clk/imx/clk-imx8mn.c | 14 +-
drivers/clk/qcom/clk-krait.c | 2 +
drivers/clk/renesas/r9a06g032-clocks.c | 3 +-
drivers/clk/rockchip/clk-pll.c | 1 +
drivers/clk/samsung/clk-pll.c | 1 +
drivers/clk/socfpga/clk-gate.c | 16 +-
drivers/clk/socfpga/clk-periph.c | 8 +-
drivers/clk/socfpga/clk-pll.c | 17 +-
drivers/clk/st/clkgen-fsyn.c | 5 +-
drivers/clocksource/sh_cmt.c | 16 +-
drivers/counter/stm32-lptimer-cnt.c | 2 +-
drivers/cpufreq/amd_freq_sensitivity.c | 2 +
drivers/cpufreq/cpufreq.c | 2 +-
drivers/cpuidle/dt_idle_states.c | 2 +-
drivers/crypto/ccree/cc_debugfs.c | 2 +-
drivers/crypto/ccree/cc_driver.c | 11 +-
drivers/crypto/ccree/cc_hash.c | 49 +--
drivers/crypto/ccree/cc_hash.h | 2 -
drivers/crypto/img-hash.c | 8 +-
drivers/crypto/n2_core.c | 6 +
drivers/crypto/omap-sham.c | 2 +-
drivers/devfreq/devfreq.c | 6 +-
drivers/devfreq/governor_userspace.c | 12 +-
drivers/dio/dio.c | 8 +
drivers/edac/edac_device.c | 17 +-
drivers/edac/edac_module.h | 2 +-
drivers/edac/i10nm_base.c | 3 +-
drivers/firmware/efi/efi.c | 9 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c | 1 +
drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c | 3 +-
drivers/gpu/drm/drm_connector.c | 3 +
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 11 +-
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 5 +-
drivers/gpu/drm/i915/gvt/scheduler.c | 1 +
drivers/gpu/drm/mediatek/mtk_dpi.c | 12 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 10 +-
drivers/gpu/drm/panel/panel-sitronix-st7701.c | 10 +-
drivers/gpu/drm/radeon/radeon_bios.c | 19 +-
drivers/gpu/drm/rockchip/cdn-dp-core.c | 2 +-
drivers/gpu/drm/rockchip/inno_hdmi.c | 2 +-
drivers/gpu/drm/rockchip/rk3066_hdmi.c | 2 +-
drivers/gpu/drm/sti/sti_dvo.c | 7 +-
drivers/gpu/drm/sti/sti_hda.c | 7 +-
drivers/gpu/drm/sti/sti_hdmi.c | 7 +-
drivers/gpu/drm/tegra/dc.c | 4 +-
drivers/gpu/drm/virtio/virtgpu_ioctl.c | 10 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +-
drivers/hid/hid-ids.h | 5 +
drivers/hid/hid-ite.c | 26 +-
drivers/hid/hid-multitouch.c | 4 +
drivers/hid/hid-plantronics.c | 9 +
drivers/hid/hid-sensor-custom.c | 2 +-
drivers/hid/hid-uclogic-core.c | 1 +
drivers/hid/wacom_sys.c | 8 +
drivers/hid/wacom_wac.c | 4 +
drivers/hid/wacom_wac.h | 1 +
drivers/hsi/controllers/omap_ssi_core.c | 14 +-
drivers/i2c/busses/i2c-ismt.c | 3 +
drivers/i2c/busses/i2c-pxa-pci.c | 10 +-
drivers/iio/adc/ad_sigma_delta.c | 8 +-
drivers/iio/adc/ti-adc128s052.c | 14 +-
drivers/infiniband/core/device.c | 2 +-
drivers/infiniband/core/nldev.c | 4 +-
drivers/infiniband/core/uverbs_cmd.c | 2 +-
drivers/infiniband/hw/hfi1/affinity.c | 2 +
drivers/infiniband/hw/hfi1/firmware.c | 6 +
drivers/infiniband/hw/mlx5/qp.c | 49 ++-
drivers/infiniband/sw/rxe/rxe_qp.c | 6 +-
drivers/infiniband/sw/siw/siw_cq.c | 24 +-
drivers/infiniband/sw/siw/siw_qp_tx.c | 2 +-
drivers/infiniband/sw/siw/siw_verbs.c | 40 +-
drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 7 +
drivers/input/touchscreen/elants_i2c.c | 9 +-
drivers/iommu/amd_iommu_init.c | 7 +
drivers/iommu/amd_iommu_v2.c | 1 +
drivers/iommu/fsl_pamu.c | 2 +-
drivers/iommu/mtk_iommu_v1.c | 26 +-
drivers/irqchip/irq-gic-pm.c | 2 +-
drivers/isdn/hardware/mISDN/hfcmulti.c | 19 +-
drivers/isdn/hardware/mISDN/hfcpci.c | 13 +-
drivers/isdn/hardware/mISDN/hfcsusb.c | 12 +-
drivers/macintosh/macio-adb.c | 4 +
drivers/macintosh/macio_asic.c | 2 +-
drivers/mailbox/zynqmp-ipi-mailbox.c | 4 +-
drivers/mcb/mcb-core.c | 4 +-
drivers/mcb/mcb-parse.c | 2 +-
drivers/md/dm-cache-metadata.c | 54 ++-
drivers/md/dm-cache-target.c | 11 +-
drivers/md/dm-clone-target.c | 1 +
drivers/md/dm-integrity.c | 2 +
drivers/md/dm-thin-metadata.c | 60 ++-
drivers/md/dm-thin.c | 18 +-
drivers/md/md-bitmap.c | 47 ++-
drivers/md/md.c | 9 +-
drivers/md/raid1.c | 1 +
drivers/media/dvb-core/dmxdev.c | 8 +
drivers/media/dvb-core/dvb_ca_en50221.c | 2 +-
drivers/media/dvb-core/dvb_frontend.c | 10 +-
drivers/media/dvb-core/dvbdev.c | 33 +-
drivers/media/dvb-frontends/bcm3510.c | 1 +
drivers/media/dvb-frontends/stv0288.c | 5 +-
drivers/media/i2c/ad5820.c | 10 +-
drivers/media/pci/saa7164/saa7164-core.c | 4 +-
drivers/media/pci/solo6x10/solo6x10-core.c | 1 +
drivers/media/platform/coda/coda-bit.c | 14 +-
drivers/media/platform/exynos4-is/fimc-core.c | 2 +-
drivers/media/platform/exynos4-is/media-dev.c | 6 +-
drivers/media/platform/qcom/camss/camss-video.c | 3 +-
drivers/media/platform/s5p-mfc/s5p_mfc.c | 17 +-
drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c | 4 +-
drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 12 +-
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c | 14 +-
.../media/platform/sti/c8sectpfe/c8sectpfe-core.c | 1 +
drivers/media/platform/vivid/vivid-vid-cap.c | 1 +
drivers/media/radio/si470x/radio-si470x-usb.c | 4 +-
drivers/media/rc/imon.c | 6 +-
drivers/media/usb/dvb-usb/az6027.c | 4 +
drivers/media/usb/dvb-usb/dvb-usb-init.c | 4 +-
drivers/media/v4l2-core/videobuf-dma-contig.c | 22 +-
drivers/misc/cxl/guest.c | 24 +-
drivers/misc/cxl/pci.c | 21 +-
drivers/misc/ocxl/file.c | 7 +-
drivers/misc/sgi-gru/grufault.c | 13 +-
drivers/misc/sgi-gru/grumain.c | 22 +-
drivers/misc/sgi-gru/grutables.h | 2 +-
drivers/misc/tifm_7xx1.c | 2 +-
drivers/mmc/host/alcor.c | 5 +-
drivers/mmc/host/atmel-mci.c | 9 +-
drivers/mmc/host/meson-gx-mmc.c | 4 +-
drivers/mmc/host/mmci.c | 4 +-
drivers/mmc/host/moxart-mmc.c | 4 +-
drivers/mmc/host/mxcmmc.c | 4 +-
drivers/mmc/host/omap_hsmmc.c | 4 +-
drivers/mmc/host/pxamci.c | 7 +-
drivers/mmc/host/rtsx_usb_sdmmc.c | 11 +-
drivers/mmc/host/sdhci-sprd.c | 16 +-
drivers/mmc/host/sdhci_f_sdh30.c | 3 +
drivers/mmc/host/toshsd.c | 6 +-
drivers/mmc/host/via-sdmmc.c | 4 +-
drivers/mmc/host/vub300.c | 13 +-
drivers/mmc/host/wbsd.c | 12 +-
drivers/mmc/host/wmt-sdmmc.c | 6 +-
drivers/mtd/lpddr/lpddr2_nvm.c | 2 +
drivers/mtd/maps/pxa2xx-flash.c | 2 +
drivers/mtd/mtdcore.c | 4 +-
drivers/mtd/spi-nor/spi-nor.c | 2 +
drivers/net/bonding/bond_3ad.c | 1 +
drivers/net/bonding/bond_alb.c | 4 +-
drivers/net/bonding/bond_main.c | 98 +++--
drivers/net/can/m_can/tcan4x5x.c | 5 -
drivers/net/can/usb/kvaser_usb/kvaser_usb.h | 30 +-
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 115 +++++-
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 167 ++++++--
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 437 ++++++++++++++++++---
drivers/net/dsa/lan9303-core.c | 4 +-
drivers/net/ethernet/amd/atarilance.c | 2 +-
drivers/net/ethernet/amd/lance.c | 2 +-
drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 3 +
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c | 4 +-
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 4 +-
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 23 +-
drivers/net/ethernet/apple/bmac.c | 2 +-
drivers/net/ethernet/apple/mace.c | 2 +-
drivers/net/ethernet/dnet.c | 4 +-
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 3 +-
drivers/net/ethernet/intel/igb/igb_main.c | 10 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 14 +-
.../net/ethernet/mellanox/mlx5/core/lib/clock.c | 4 +-
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 1 +
drivers/net/ethernet/neterion/s2io.c | 2 +-
.../net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 8 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 8 +-
.../ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 2 +
drivers/net/ethernet/rdc/r6040.c | 5 +-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 3 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 8 +-
drivers/net/ethernet/ti/netcp_core.c | 2 +-
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 2 +-
drivers/net/fddi/defxx.c | 22 +-
drivers/net/hamradio/baycom_epp.c | 2 +-
drivers/net/hamradio/scc.c | 6 +-
drivers/net/loopback.c | 2 +-
drivers/net/ntb_netdev.c | 4 +-
drivers/net/phy/xilinx_gmii2rgmii.c | 1 +
drivers/net/ppp/ppp_generic.c | 2 +
drivers/net/usb/rndis_host.c | 3 +-
drivers/net/wan/farsync.c | 2 +
drivers/net/wireless/ath/ar5523/ar5523.c | 6 +
drivers/net/wireless/ath/ath10k/pci.c | 20 +-
drivers/net/wireless/ath/ath9k/hif_usb.c | 46 ++-
.../broadcom/brcm80211/brcmfmac/firmware.c | 5 +
.../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 6 +-
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 12 +-
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 2 +-
.../net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 16 +-
drivers/net/wireless/rsi/rsi_91x_core.c | 4 +-
drivers/net/wireless/rsi/rsi_91x_hal.c | 6 +-
drivers/net/xen-netback/xenbus.c | 3 +-
drivers/nfc/pn533/pn533.c | 4 +
drivers/nfc/pn533/usb.c | 44 ++-
drivers/nvme/host/pci.c | 25 +-
drivers/of/overlay.c | 4 +-
drivers/parisc/led.c | 3 +
drivers/pci/irq.c | 2 +
drivers/pci/pci-sysfs.c | 13 +-
drivers/pci/pci.c | 2 +
drivers/perf/arm_dsu_pmu.c | 6 +-
drivers/perf/arm_smmuv3_pmu.c | 8 +-
drivers/pinctrl/pinconf-generic.c | 4 +-
drivers/platform/x86/mxm-wmi.c | 8 +-
drivers/platform/x86/sony-laptop.c | 21 +-
drivers/pnp/core.c | 4 +-
drivers/power/avs/smartreflex.c | 1 +
drivers/power/supply/power_supply_core.c | 7 +-
drivers/pwm/pwm-sifive.c | 5 +-
drivers/rapidio/devices/rio_mport_cdev.c | 15 +-
drivers/rapidio/rio-scan.c | 8 +-
drivers/rapidio/rio.c | 9 +-
drivers/regulator/core.c | 15 +-
drivers/regulator/da9211-regulator.c | 11 +-
drivers/remoteproc/qcom_q6v5_pas.c | 1 +
drivers/remoteproc/qcom_sysmon.c | 5 +-
drivers/rtc/rtc-mxc_v2.c | 4 +-
drivers/rtc/rtc-pcf85063.c | 8 +-
drivers/rtc/rtc-pic32.c | 8 +-
drivers/rtc/rtc-snvs.c | 16 +-
drivers/rtc/rtc-st-lpc.c | 1 +
drivers/s390/net/ctcm_main.c | 11 +-
drivers/s390/net/lcs.c | 8 +-
drivers/s390/net/netiucv.c | 9 +-
drivers/scsi/fcoe/fcoe.c | 1 +
drivers/scsi/fcoe/fcoe_sysfs.c | 19 +-
drivers/scsi/hpsa.c | 9 +-
drivers/scsi/ipr.c | 10 +-
drivers/scsi/mpt3sas/mpt3sas_transport.c | 2 +
drivers/scsi/scsi_debug.c | 2 +-
drivers/scsi/snic/snic_disc.c | 3 +
drivers/soc/qcom/Kconfig | 1 +
drivers/soc/ti/knav_qmss_queue.c | 6 +-
drivers/soc/ux500/ux500-soc-id.c | 10 +-
drivers/spi/spi-gpio.c | 16 +-
drivers/spi/spidev.c | 21 +-
drivers/staging/rtl8192e/rtllib_rx.c | 2 +-
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 4 +-
drivers/staging/wilc1000/wilc_sdio.c | 1 +
drivers/tty/hvc/hvc_xen.c | 46 ++-
drivers/tty/serial/altera_uart.c | 21 +-
drivers/tty/serial/amba-pl011.c | 14 +-
drivers/tty/serial/pch_uart.c | 4 +
drivers/tty/serial/serial-tegra.c | 115 +++---
drivers/tty/serial/sunsab.c | 8 +-
drivers/uio/uio_dmem_genirq.c | 13 +-
drivers/usb/dwc3/core.c | 7 +-
drivers/usb/gadget/function/f_hid.c | 271 ++++++++++---
drivers/usb/gadget/function/f_uvc.c | 5 +-
drivers/usb/gadget/function/u_hid.h | 1 +
drivers/usb/gadget/udc/fotg210-udc.c | 12 +-
drivers/usb/musb/musb_gadget.c | 2 -
drivers/usb/roles/class.c | 5 +-
drivers/usb/serial/cp210x.c | 2 +
drivers/usb/serial/f81232.c | 12 +-
drivers/usb/serial/f81534.c | 12 +-
drivers/usb/serial/option.c | 3 +
drivers/usb/storage/alauda.c | 2 +
drivers/usb/typec/bus.c | 2 +-
drivers/usb/typec/tcpm/tcpci.c | 5 +-
drivers/vfio/platform/vfio_platform_common.c | 3 +-
drivers/vhost/vhost.c | 4 +-
drivers/video/fbdev/Kconfig | 1 -
drivers/video/fbdev/pm2fb.c | 9 +-
drivers/video/fbdev/uvesafb.c | 1 +
drivers/video/fbdev/vermilion/vermilion.c | 4 +-
drivers/video/fbdev/via/via-core.c | 9 +-
drivers/vme/bridges/vme_fake.c | 2 +
drivers/vme/bridges/vme_tsi148.c | 1 +
drivers/xen/events/events_base.c | 10 +-
drivers/xen/privcmd.c | 2 +-
fs/binfmt_aout.c | 2 +-
fs/binfmt_elf_fdpic.c | 7 +-
fs/binfmt_flat.c | 3 +-
fs/binfmt_misc.c | 8 +-
fs/btrfs/backref.c | 4 +
fs/btrfs/ioctl.c | 9 +-
fs/btrfs/rcu-string.h | 6 +-
fs/char_dev.c | 2 +-
fs/cifs/cifsfs.c | 8 +-
fs/cifs/cifsglob.h | 70 ++++
fs/cifs/cifsproto.h | 4 +-
fs/cifs/connect.c | 4 +-
fs/cifs/link.c | 1 +
fs/cifs/misc.c | 4 +-
fs/cifs/smb2ops.c | 143 ++++---
fs/configfs/dir.c | 2 +
fs/debugfs/file.c | 28 +-
fs/ext4/ext4.h | 5 +-
fs/ext4/extents.c | 8 +
fs/ext4/extents_status.c | 3 +-
fs/ext4/indirect.c | 9 +-
fs/ext4/inode.c | 48 ++-
fs/ext4/ioctl.c | 13 +-
fs/ext4/namei.c | 3 +
fs/ext4/resize.c | 6 +-
fs/ext4/super.c | 50 ++-
fs/ext4/verity.c | 7 +-
fs/ext4/xattr.c | 182 +++++----
fs/ext4/xattr.h | 1 +
fs/f2fs/gc.c | 6 +-
fs/f2fs/segment.c | 2 +-
fs/hfs/inode.c | 13 +-
fs/hfs/trans.c | 2 +-
fs/hfsplus/hfsplus_fs.h | 2 +
fs/hfsplus/inode.c | 16 +-
fs/hfsplus/options.c | 4 +
fs/hugetlbfs/inode.c | 6 +-
fs/jfs/jfs_dmap.c | 27 +-
fs/libfs.c | 22 +-
fs/mbcache.c | 121 ++++--
fs/nfs/nfs4proc.c | 34 +-
fs/nfs/nfs4state.c | 2 +
fs/nfs/nfs4xdr.c | 12 +-
fs/nfsd/nfs4callback.c | 4 +-
fs/nfsd/nfs4state.c | 51 ++-
fs/nfsd/nfs4xdr.c | 11 +
fs/nfsd/nfscache.c | 57 +--
fs/nfsd/nfssvc.c | 2 +-
fs/nfsd/trace.h | 65 +++
fs/nilfs2/the_nilfs.c | 31 +-
fs/ocfs2/dlmglue.c | 8 +-
fs/ocfs2/journal.c | 2 +-
fs/ocfs2/journal.h | 1 +
fs/ocfs2/stackglue.c | 8 +-
fs/ocfs2/super.c | 108 ++---
fs/orangefs/orangefs-debugfs.c | 29 +-
fs/orangefs/orangefs-mod.c | 8 +-
fs/overlayfs/dir.c | 46 ++-
fs/pnode.c | 2 +-
fs/pstore/Kconfig | 1 +
fs/pstore/pmsg.c | 7 +-
fs/pstore/ram.c | 2 +
fs/pstore/ram_core.c | 6 +-
fs/quota/dquot.c | 110 ++++--
fs/reiserfs/namei.c | 4 +
fs/reiserfs/xattr_security.c | 2 +-
fs/sysv/itree.c | 2 +-
fs/udf/inode.c | 76 ++--
fs/udf/namei.c | 8 +-
fs/udf/truncate.c | 48 +--
fs/xattr.c | 2 +-
include/linux/debugfs.h | 19 +-
include/linux/devfreq.h | 11 +-
include/linux/eventfd.h | 2 +-
include/linux/fs.h | 12 +-
include/linux/highmem.h | 18 +
include/linux/mbcache.h | 41 +-
include/linux/netdevice.h | 58 +--
include/linux/nvme.h | 56 ++-
include/linux/proc_fs.h | 2 +
include/linux/quotaops.h | 2 +
include/linux/sunrpc/rpc_pipe_fs.h | 5 +
include/linux/timerqueue.h | 2 +-
include/linux/tpm_eventlog.h | 4 +-
include/media/dvbdev.h | 32 +-
include/net/bonding.h | 2 +-
include/net/dst.h | 5 +-
include/net/mrp.h | 1 +
include/sound/hdaudio.h | 2 +
include/sound/hdaudio_ext.h | 1 -
include/sound/pcm.h | 36 +-
include/trace/events/jbd2.h | 40 +-
include/uapi/linux/swab.h | 2 +-
include/uapi/sound/asequencer.h | 8 +-
kernel/acct.c | 2 +
kernel/bpf/btf.c | 5 +
kernel/bpf/verifier.c | 5 +
kernel/events/core.c | 8 +-
kernel/gcov/gcc_4_7.c | 5 +
kernel/irq/internals.h | 2 +
kernel/irq/irqdesc.c | 15 +-
kernel/power/snapshot.c | 4 +-
kernel/rcu/tree.c | 2 +-
kernel/relay.c | 4 +-
kernel/trace/blktrace.c | 3 +-
kernel/trace/ring_buffer.c | 1 +
kernel/trace/trace.c | 15 +-
kernel/trace/trace_events_hist.c | 13 +-
lib/fonts/fonts.c | 4 +-
lib/iov_iter.c | 14 -
lib/notifier-error-inject.c | 2 +-
lib/test_firmware.c | 1 +
mm/compaction.c | 18 +-
mm/memblock.c | 8 +-
net/802/mrp.c | 18 +-
net/bluetooth/hci_core.c | 2 +-
net/bluetooth/l2cap_core.c | 3 +-
net/bluetooth/rfcomm/core.c | 2 +-
net/bpf/test_run.c | 3 -
net/caif/cfctrl.c | 6 +-
net/core/dev.c | 14 +-
net/core/filter.c | 18 +-
net/core/skbuff.c | 3 +
net/core/sock_map.c | 2 +
net/core/stream.c | 6 +
net/hsr/hsr_framereg.c | 16 +-
net/hsr/hsr_framereg.h | 1 +
net/ipv4/inet_connection_sock.c | 16 +-
net/ipv4/tcp_bpf.c | 8 +-
net/ipv4/udp_tunnel.c | 1 +
net/ipv6/raw.c | 4 +
net/netfilter/ipset/ip_set_bitmap_ip.c | 4 +-
net/netfilter/nf_conntrack_proto_icmpv6.c | 53 +++
net/nfc/netlink.c | 52 ++-
net/openvswitch/datapath.c | 25 +-
net/packet/af_packet.c | 20 +-
net/rxrpc/output.c | 2 +-
net/rxrpc/sendmsg.c | 2 +-
net/sched/act_mpls.c | 8 +-
net/sched/cls_tcindex.c | 12 +-
net/sched/ematch.c | 2 +
net/sched/sch_api.c | 5 +
net/sched/sch_atm.c | 5 +-
net/sched/sch_cbq.c | 5 +-
net/sunrpc/auth_gss/auth_gss.c | 19 +-
net/sunrpc/auth_gss/svcauth_gss.c | 9 +-
net/sunrpc/clnt.c | 2 +-
net/sunrpc/xprtrdma/verbs.c | 1 +
net/tipc/core.c | 16 +
net/tipc/core.h | 6 +
net/tipc/discover.c | 4 +-
net/tipc/msg.h | 19 +
net/tipc/name_distr.c | 2 +-
net/tipc/node.c | 172 +++++++-
net/tipc/node.h | 5 +-
net/tipc/socket.c | 6 +-
net/vmw_vsock/vmci_transport.c | 6 +-
net/wireless/reg.c | 4 +-
samples/vfio-mdev/mdpy-fb.c | 8 +-
security/apparmor/apparmorfs.c | 4 +-
security/apparmor/lsm.c | 4 +-
security/apparmor/policy.c | 2 +-
security/apparmor/policy_unpack.c | 2 +-
security/device_cgroup.c | 33 +-
security/integrity/digsig.c | 6 +-
security/integrity/ima/ima.h | 16 +-
security/integrity/ima/ima_main.c | 1 +
security/integrity/ima/ima_policy.c | 65 +--
security/integrity/ima/ima_template.c | 9 +-
security/integrity/platform_certs/load_uefi.c | 1 +
sound/core/control_compat.c | 4 +
sound/drivers/mts64.c | 3 +
sound/hda/ext/hdac_ext_stream.c | 17 -
sound/hda/hdac_stream.c | 27 ++
sound/pci/asihpi/hpioctl.c | 2 +-
sound/pci/hda/hda_controller.c | 4 +-
sound/pci/hda/patch_hdmi.c | 2 +
sound/pci/hda/patch_realtek.c | 27 ++
sound/soc/codecs/pcm512x.c | 8 +-
sound/soc/codecs/rt298.c | 7 +
sound/soc/codecs/rt5670.c | 2 -
sound/soc/codecs/wm8994.c | 5 +
sound/soc/generic/audio-graph-card.c | 4 +-
sound/soc/intel/boards/bytcr_rt5640.c | 15 +
sound/soc/intel/skylake/skl.c | 7 +-
sound/soc/mediatek/common/mtk-btcvsd.c | 6 +-
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 20 +-
sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c | 7 +-
sound/soc/pxa/mmp-pcm.c | 2 +-
sound/soc/rockchip/rockchip_pdm.c | 1 +
sound/soc/rockchip/rockchip_spdif.c | 1 +
sound/usb/line6/driver.c | 3 +-
sound/usb/line6/midi.c | 6 +-
sound/usb/line6/midibuf.c | 25 +-
sound/usb/line6/midibuf.h | 5 +-
sound/usb/line6/pod.c | 3 +-
tools/arch/parisc/include/uapi/asm/mman.h | 12 +-
tools/arch/x86/include/uapi/asm/vmx.h | 4 +-
tools/objtool/check.c | 2 +-
tools/perf/bench/bench.h | 12 -
tools/perf/builtin-trace.c | 135 +++++--
tools/perf/trace/beauty/beauty.h | 3 +
tools/perf/util/auxtrace.c | 2 +-
tools/perf/util/data.c | 2 +
tools/perf/util/dwarf-aux.c | 23 +-
tools/perf/util/symbol-elf.c | 2 +-
tools/testing/ktest/ktest.pl | 23 +-
tools/testing/selftests/Makefile | 28 +-
tools/testing/selftests/efivarfs/efivarfs.sh | 5 +
.../ftrace/test.d/ftrace/func_event_triggers.tc | 15 +-
tools/testing/selftests/kvm/include/x86_64/vmx.h | 8 +-
.../selftests/kvm/x86_64/vmx_tsc_adjust_test.c | 2 +-
tools/testing/selftests/lib.mk | 5 +
.../selftests/netfilter/conntrack_icmp_related.sh | 36 +-
.../selftests/powerpc/dscr/dscr_sysfs_test.c | 5 +-
tools/testing/selftests/proc/proc-uptime-002.c | 3 +-
582 files changed, 5505 insertions(+), 2440 deletions(-)
^ permalink raw reply [relevance 1%]
* [PATCH 5.4 000/658] 5.4.229-rc1 review
@ 2023-01-16 15:41 1% Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2023-01-16 15:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow
This is the start of the stable review cycle for the 5.4.229 release.
There are 658 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Wed, 18 Jan 2023 15:47:28 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.229-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.4.229-rc1
Xin Long <lucien.xin@gmail.com>
tipc: call tipc_lxc_xmit without holding node_read_lock
Heming Zhao <ocfs2-devel@oss.oracle.com>
ocfs2: fix freeing uninitialized resource on ocfs2_dlm_shutdown
Mahesh Salgaonkar <mahesh@linux.ibm.com>
pseries/eeh: Fix the kdump kernel crash during eeh_pseries_init
Hoang Le <hoang.h.le@dektech.com.au>
tipc: Add a missing case of TIPC_DIRECT_MSG type
Dmitry Osipenko <digetx@gmail.com>
tty: serial: tegra: Handle RX transfer in PIO mode if DMA wasn't started
Tuong Lien <tuong.t.lien@dektech.com.au>
tipc: fix use-after-free in tipc_disc_rcv()
Ferry Toth <ftoth@exalondelft.nl>
Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout"
Aaron Thompson <dev@aaront.org>
mm: Always release pages to the buddy allocator in memblock_free_late().
Johan Hovold <johan+linaro@kernel.org>
efi: fix NULL-deref in init error path
Mark Rutland <mark.rutland@arm.com>
arm64: cmpxchg_double*: hazard against entire exchange variable
Mark Rutland <mark.rutland@arm.com>
arm64: atomics: remove LL/SC trampolines
Mark Rutland <mark.rutland@arm.com>
arm64: atomics: format whitespace consistently
Rob Clark <robdclark@chromium.org>
drm/virtio: Fix GEM handle creation UAF
Peter Newman <peternewman@google.com>
x86/resctrl: Fix task CLOSID/RMID update race
Reinette Chatre <reinette.chatre@intel.com>
x86/resctrl: Use task_curr() instead of task_struct->on_cpu to prevent unnecessary IPI
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
iommu/mediatek-v1: Fix an error handling path in mtk_iommu_v1_probe()
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek-v1: Add error handle for mtk_iommu_probe
Rahul Rameshbabu <rrameshbabu@nvidia.com>
net/mlx5: Fix ptp max frequency adjustment range
Eran Ben Elisha <eranbe@mellanox.com>
net/mlx5: Rename ptp clock info
Ido Schimmel <idosch@nvidia.com>
net/sched: act_mpls: Fix warning during failed attribute validation
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame()
Roger Pau Monne <roger.pau@citrix.com>
hvc/xen: lock console list traversal
Tung Nguyen <tung.q.nguyen@dektech.com.au>
tipc: fix unexpected link reset due to discovery messages
Hoang Le <hoang.h.le@dektech.com.au>
tipc: eliminate checking netns if node established
Hoang Le <hoang.h.le@dektech.com.au>
tipc: improve throughput between nodes in netns
Ricardo Ribalda <ribalda@chromium.org>
regulator: da9211: Use irq handler when ready
Eliav Farber <farbere@amazon.com>
EDAC/device: Fix period calculation in edac_device_reset_delay_period()
Peter Zijlstra <peterz@infradead.org>
x86/boot: Avoid using Intel mnemonics in AT&T syntax asm
Kajol Jain <kjain@linux.ibm.com>
powerpc/imc-pmu: Fix use of mutex in IRQs disabled section
Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() function.
Ye Bin <yebin10@huawei.com>
ext4: fix uninititialized value in 'ext4_evict_inode'
Baokun Li <libaokun1@huawei.com>
ext4: fix use-after-free in ext4_orphan_cleanup
zhengliang <zhengliang6@huawei.com>
ext4: lost matching-pair of trace in ext4_truncate
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad quota inode
Jan Kara <jack@suse.cz>
quota: Factor out setup of quota inode
Bixuan Cui <cuibixuan@linux.alibaba.com>
jbd2: use the correct print format
Jan Kara <jack@suse.cz>
jbd2: Factor out common parts of stopping and restarting a handle
Jan Kara <jack@suse.cz>
jbd2: Drop pointless wakeup from jbd2_journal_stop()
Jan Kara <jack@suse.cz>
jbd2: Reorganize jbd2_journal_stop()
Jan Kara <jack@suse.cz>
ocfs2: Use accessor function for h_buffer_credits
Jan Kara <jack@suse.cz>
ext4, jbd2: Provide accessor function for handle credits
Jan Kara <jack@suse.cz>
ext4: Provide function to handle transaction restarts
Ferry Toth <ftoth@exalondelft.nl>
usb: ulpi: defer ulpi_register on ulpi_read_id timeout
Michael Walle <michael@walle.cc>
wifi: wilc1000: sdio: fix module autoloading
Herbert Xu <herbert@gondor.apana.org.au>
ipv6: raw: Deduct extension header length in rawv6_push_pending_frames
Yang Yingliang <yangyingliang@huawei.com>
ixgbe: fix pci device refcount leak
Hans de Goede <hdegoede@redhat.com>
platform/x86: sony-laptop: Don't turn off 0x153 keyboard backlight during probe
Konrad Dybcio <konrad.dybcio@linaro.org>
drm/msm/adreno: Make adreno quirks not overwrite each other
Volker Lendecke <vl@samba.org>
cifs: Fix uninitialized memory read for smb311 posix symlink create
Adrian Chan <adchan@google.com>
ALSA: hda/hdmi: Add a HP device 0x8715 to force connect list
Clement Lecigne <clecigne@google.com>
ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF
Paolo Abeni <pabeni@redhat.com>
net/ulp: prevent ULP without clone op from entering the LISTEN status
Heiko Carstens <hca@linux.ibm.com>
s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple()
Alexander Egorenkov <egorenar@linux.ibm.com>
s390/kexec: fix ipl report address for kdump
Adrian Hunter <adrian.hunter@intel.com>
perf auxtrace: Fix address filter duplicate symbol selection
Jonathan Corbet <corbet@lwn.net>
docs: Fix the docs build with Sphinx 6.0
Ard Biesheuvel <ardb@kernel.org>
efi: tpm: Avoid READ_ONCE() for accessing the event log
Marc Zyngier <maz@kernel.org>
KVM: arm64: Fix S1PTW handling on RO memslots
Frederick Lawler <fred@cloudflare.com>
net: sched: disallow noqueue for qdisc classes
Isaac J. Manjarres <isaacmanjarres@google.com>
driver core: Fix bus_type.match() error handling in __driver_attach()
Muhammad Usama Anjum <usama.anjum@collabora.com>
selftests: set the BUILD variable to absolute path
Shuah Khan <skhan@linuxfoundation.org>
selftests: Fix kselftest O=objdir build from cluttering top level objdir
Helge Deller <deller@gmx.de>
parisc: Align parisc MADV_XXX constants with all other architectures
Jan Kara <jack@suse.cz>
mbcache: Avoid nesting of cache->c_list_lock under bit locks
Linus Torvalds <torvalds@linux-foundation.org>
hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
Arnd Bergmann <arnd@arndb.de>
hfs/hfsplus: use WARN_ON for sanity check
Eric Biggers <ebiggers@google.com>
ext4: don't allow journal inode to have encrypt flag
Ben Dooks <ben-linux@fluff.org>
riscv: uaccess: fix type of 0 variable on error in get_user()
Jeff Layton <jlayton@kernel.org>
nfsd: fix handling of readdir in v4root vs. mount upcall timeout
Rodrigo Branco <bsdaemon@google.com>
x86/bugs: Flush IBP in ib_prctl_set()
Hans de Goede <hdegoede@redhat.com>
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
Jan Kara <jack@suse.cz>
udf: Fix extension of the last extent in the file
Zhengchao Shao <shaozhengchao@huawei.com>
caif: fix memory leak in cfctrl_linkup_request()
Dan Carpenter <error27@gmail.com>
drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()
Szymon Heidrich <szymon.heidrich@gmail.com>
usb: rndis_host: Secure rndis_query check against int overflow
Daniil Tatianin <d-tatianin@yandex-team.ru>
drivers/net/bonding/bond_3ad: return when there's no aggregator
Miaoqian Lin <linmq006@gmail.com>
perf tools: Fix resources leak in perf_data__open_dir()
Jamal Hadi Salim <jhs@mojatatu.com>
net: sched: cbq: dont intepret cls results when asked to drop
Jamal Hadi Salim <jhs@mojatatu.com>
net: sched: atm: dont intepret cls results when asked to drop
Maor Gottlieb <maorg@nvidia.com>
RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
Leon Romanovsky <leon@kernel.org>
RDMA/uverbs: Silence shiftTooManyBitsSigned warning
Miaoqian Lin <linmq006@gmail.com>
net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
Jiguang Xiao <jiguang.xiao@windriver.com>
net: amd-xgbe: add missed tasklet_kill
Stefano Garzarella <sgarzare@redhat.com>
vhost: fix range used in translate_desc()
Miaoqian Lin <linmq006@gmail.com>
nfc: Fix potential resource leaks
Daniil Tatianin <d-tatianin@yandex-team.ru>
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
Hawkins Jiawei <yin31149@gmail.com>
net: sched: fix memory leak in tcindex_set_parms
Jie Wang <wangjie125@huawei.com>
net: hns3: add interrupts re-initialization while doing VF FLR
Jeff Layton <jlayton@kernel.org>
nfsd: shut down the NFSv4 state objects before the filecache
Jakub Kicinski <kuba@kernel.org>
bpf: pull before calling skb_postpull_rcsum()
minoura makoto <minoura@valinux.co.jp>
SUNRPC: ensure the matching upcall is in-flight upon downcall
Jan Kara <jack@suse.cz>
ext4: fix deadlock due to mbcache entry corruption
Jan Kara <jack@suse.cz>
mbcache: automatically delete entries from cache on freeing
Jan Kara <jack@suse.cz>
ext4: fix race when reusing xattr blocks
Jan Kara <jack@suse.cz>
ext4: unindent codeblock in ext4_xattr_block_set()
Jan Kara <jack@suse.cz>
ext4: remove EA inode entry from mbcache on inode eviction
Jan Kara <jack@suse.cz>
mbcache: add functions to delete entry if unused
Jan Kara <jack@suse.cz>
mbcache: don't reclaim used entries
Shuqi Zhang <zhangshuqi3@huawei.com>
ext4: use kmemdup() to replace kmalloc + memcpy
Alexander Potapenko <glider@google.com>
fs: ext4: initialize fsdata in pagecache_write()
Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
ext4: use memcpy_to_page() in pagecache_write()
Ira Weiny <ira.weiny@intel.com>
mm/highmem: Lift memcpy_[to|from]_page to core
Baokun Li <libaokun1@huawei.com>
ext4: correct inconsistent error msg in nojournal mode
Jason Yan <yanaijie@huawei.com>
ext4: goto right label 'failed_mount3a'
Guo Ren <guoren@linux.alibaba.com>
riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument
Chen Huang <chenhuang5@huawei.com>
riscv/stacktrace: Fix stack output without ra on the stack top
Biju Das <biju.das.jz@bp.renesas.com>
ravb: Fix "failed to switch device to config mode" message during unbind
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1
Xiaoyao Li <xiaoyao.li@intel.com>
KVM: VMX: Fix the spelling of CPU_BASED_USE_TSC_OFFSETTING
Xiaoyao Li <xiaoyao.li@intel.com>
KVM: VMX: Rename NMI_PENDING to NMI_WINDOW
Xiaoyao Li <xiaoyao.li@intel.com>
KVM: VMX: Rename INTERRUPT_PENDING to INTERRUPT_WINDOW
Andrea Arcangeli <aarcange@redhat.com>
KVM: retpolines: x86: eliminate retpoline from vmx.c exit handlers
Andrea Arcangeli <aarcange@redhat.com>
KVM: x86: optimize more exit handlers in vmx.c
Masami Hiramatsu (Google) <mhiramat@kernel.org>
perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
Masami Hiramatsu (Google) <mhiramat@kernel.org>
perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor
Luo Meng <luomeng12@huawei.com>
dm thin: resume even if in FAIL mode
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix in register read and write for H264
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Clear workbit to handle error condition
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix to handle reference queue during finishing
Kant Fan <kant@allwinnertech.com>
PM/devfreq: governor: Add a private governor_data for governor
Sasha Levin <sashal@kernel.org>
btrfs: replace strncpy() with strscpy()
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: make display pinning more flexible (v2)
Ye Bin <yebin10@huawei.com>
ext4: allocate extended attribute value in vmalloc area
Jan Kara <jack@suse.cz>
ext4: avoid unaccounted block allocation when expanding inode
Jan Kara <jack@suse.cz>
ext4: initialize quota before expanding inode in setproject ioctl
Ye Bin <yebin10@huawei.com>
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
Jan Kara <jack@suse.cz>
ext4: avoid BUG_ON when creating xattrs
Luís Henriques <lhenriques@suse.de>
ext4: fix error code return to user-space in ext4_get_branch()
Baokun Li <libaokun1@huawei.com>
ext4: fix corruption when online resizing a 1K bigalloc fs
Eric Whitney <enwlinux@gmail.com>
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
Ye Bin <yebin10@huawei.com>
ext4: init quota for 'old.inode' in 'ext4_rename'
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
Ye Bin <yebin10@huawei.com>
ext4: fix reserved cluster accounting in __es_remove_extent()
Baokun Li <libaokun1@huawei.com>
ext4: add helper to check quota inums
Baokun Li <libaokun1@huawei.com>
ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
Gaosheng Cui <cuigaosheng1@huawei.com>
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
Baokun Li <libaokun1@huawei.com>
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Validate the box size for the snooped cursor
Simon Ser <contact@emersion.fr>
drm/connector: send hotplug uevent on connector cleanup
Wang Weiyang <wangweiyang2@huawei.com>
device_cgroup: Roll back to original exceptions after copy failure
Shang XiaoJing <shangxiaojing@huawei.com>
parisc: led: Fix potential null-ptr-deref in start_task()
Kim Phillips <kim.phillips@amd.com>
iommu/amd: Fix ivrs_acpihid cmdline parsing code
Corentin Labbe <clabbe@baylibre.com>
crypto: n2 - add missing hash statesize
Sascha Hauer <s.hauer@pengutronix.de>
PCI/sysfs: Fix double free in error path
Michael S. Tsirkin <mst@redhat.com>
PCI: Fix pci_device_is_present() for VFs by checking PF
Dan Carpenter <error27@gmail.com>
ipmi: fix use after free in _ipmi_destroy_user()
Huaxin Lu <luhuaxin1@huawei.com>
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
Alexander Sverdlin <alexander.sverdlin@nokia.com>
mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix long wait in unload when IPMI disconnect
Aditya Garg <gargaditya08@live.com>
efi: Add iMac Pro 2017 to uefi skip cert quirk
Florian-Ewald Mueller <florian-ewald.mueller@ionos.com>
md/bitmap: Fix bitmap chunk size overflow issues
Steve French <stfrench@microsoft.com>
cifs: fix missing display of three mount options
Paulo Alcantara <pc@cjr.nz>
cifs: fix confusing debug message
Takashi Iwai <tiwai@suse.de>
media: dvb-core: Fix UAF due to refcount races at releasing
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
media: dvb-core: Fix double free in dvb_register_device()
Nick Desaulniers <ndesaulniers@google.com>
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
Yang Jihong <yangjihong1@huawei.com>
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix wrong return value in parse_action_params()
Ashok Raj <ashok.raj@intel.com>
x86/microcode/intel: Do not retry microcode reloading on the APs
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx'
Mike Snitzer <snitzer@kernel.org>
dm cache: set needs_check flag after aborting metadata
Luo Meng <luomeng12@huawei.com>
dm cache: Fix UAF in destroy()
Luo Meng <luomeng12@huawei.com>
dm clone: Fix UAF in clone_dtr()
Luo Meng <luomeng12@huawei.com>
dm integrity: Fix UAF in dm_integrity_dtr()
Luo Meng <luomeng12@huawei.com>
dm thin: Fix UAF in run_timer_softirq()
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Use last transaction's pmd->root when commit failed
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata
Mike Snitzer <snitzer@kernel.org>
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
Wang Yufen <wangyufen@huawei.com>
binfmt: Fix error return code in load_elf_fdpic_binary()
Eric W. Biederman <ebiederm@xmission.com>
binfmt: Move install_exec_creds after setup_new_exec to match binfmt_elf
Yongqiang Liu <liuyongqiang13@huawei.com>
cpufreq: Init completion before kobject_init_and_add()
Mickaël Salaün <mic@digikod.net>
selftests: Use optional USERCFLAGS and USERLDFLAGS
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
Jason A. Donenfeld <Jason@zx2c4.com>
ARM: ux500: do not directly dereference __iomem
Boris Burkov <boris@bur.io>
btrfs: fix resolving backrefs for inline extent followed by prealloc
Wenchao Chen <wenchao.chen@unisoc.com>
mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
Steven Rostedt <rostedt@goodmis.org>
ktest.pl minconfig: Unset configs instead of just removing them
Steven Rostedt <rostedt@goodmis.org>
kest.pl: Fix grub2 menu handling for rebooting
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
soc: qcom: Select REMAP_MMIO for LLCC driver
Jason A. Donenfeld <Jason@zx2c4.com>
media: stv0288: use explicitly signed char
Eric Dumazet <edumazet@google.com>
net/af_packet: make sure to pull mac header
Hangbin Liu <liuhangbin@gmail.com>
net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO
Chuck Lever <chuck.lever@oracle.com>
SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails
Hanjun Guo <guohanjun@huawei.com>
tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak
Hanjun Guo <guohanjun@huawei.com>
tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak
Deren Wu <deren.wu@mediatek.com>
mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
Pavel Machek <pavel@denx.de>
f2fs: should put a page when checking the summary info
NARIBAYASHI Akira <a.naribayashi@fujitsu.com>
mm, compaction: fix fast_isolate_around() to stay within boundaries
Mikulas Patocka <mpatocka@redhat.com>
md: fix a crash in mempool_free
Christian Brauner <brauner@kernel.org>
pnode: terminate at peers of source
Artem Egorkine <arteme@gmail.com>
ALSA: line6: fix stack overflow in line6_midi_transmit
Artem Egorkine <arteme@gmail.com>
ALSA: line6: correct midi status byte when receiving data from podxt
Zhang Tianci <zhangtianci.1997@bytedance.com>
ovl: Use ovl mounter's fsuid and fsgid in ovl_link()
Aditya Garg <gargaditya08@live.com>
hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
Terry Junge <linuxhid@cosmicgizmosystems.com>
HID: plantronics: Additional PIDs for double volume key presses quirk
José Expósito <jose.exposito89@gmail.com>
HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/rtas: avoid scheduling in rtas_os_term()
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/rtas: avoid device tree lookups in rtas_os_term()
Christophe Leroy <christophe.leroy@csgroup.eu>
objtool: Fix SEGFAULT
Christoph Hellwig <hch@lst.de>
nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition
Revanth Rajashekar <revanth.rajashekar@intel.com>
nvme: resync include/linux/nvme.h with nvmecli
Adam Vodopjan <grozzly@protonmail.com>
ata: ahci: Fix PCS quirk application for suspend
Baolin Wang <baolin.wang@linux.alibaba.com>
nvme-pci: use the consistent return type of nvme_pci_iod_alloc_size()
Baolin Wang <baolin.wang@linux.alibaba.com>
nvme-pci: add a blank line after declarations
Klaus Jensen <k.jensen@samsung.com>
nvme-pci: fix doorbell buffer value endianness
Paulo Alcantara <pc@cjr.nz>
cifs: fix oops during encryption
Lin Ma <linma@zju.edu.cn>
media: dvbdev: fix refcnt bug
Lin Ma <linma@zju.edu.cn>
media: dvbdev: fix build warning due to comments
Rickard x Andersson <rickaran@axis.com>
gcov: add support for checksum field
Johan Hovold <johan+linaro@kernel.org>
regulator: core: fix deadlock on regulator enable
Rasmus Villemoes <linux@rasmusvillemoes.dk>
iio: adc128s052: add proper .data members in adc128_of_match table
Nuno Sá <nuno.sa@analog.com>
iio: adc: ad_sigma_delta: do not use internal iio_dev lock
Roberto Sassu <roberto.sassu@huawei.com>
reiserfs: Add missing calls to reiserfs_security_free()
Jason Gerecke <killertofu@gmail.com>
HID: wacom: Ensure bootloader PID is usable in hidraw mode
Ferry Toth <ftoth@exalondelft.nl>
usb: dwc3: core: defer probe on ulpi_read_id timeout
Jiao Zhou <jiaozhou@google.com>
ALSA: hda/hdmi: Add HP Device 0x8711 to force connect list
Edward Pacman <edward@edward-p.xyz>
ALSA: hda/realtek: Add quirk for Lenovo TianYi510Pro-14IOB
John Stultz <jstultz@google.com>
pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
Yang Jihong <yangjihong1@huawei.com>
perf debug: Set debug_peo_args and redirect_to_stderr variable to correct values in perf_quiet_option()
John Stultz <jstultz@google.com>
pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion
Hans de Goede <hdegoede@redhat.com>
ASoC: rt5670: Remove unbalanced pm_runtime_put()
Wang Jingjin <wangjingjin1@huawei.com>
ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in rk_spdif_runtime_resume()
Marek Szyprowski <m.szyprowski@samsung.com>
ASoC: wm8994: Fix potential deadlock
Wang Jingjin <wangjingjin1@huawei.com>
ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in rockchip_pdm_runtime_resume()
Wang Yufen <wangyufen@huawei.com>
ASoC: audio-graph-card: fix refcount leak of cpu_ep in __graph_for_each_link()
Wang Yufen <wangyufen@huawei.com>
ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in mt8173_rt5650_rt5514_dev_probe()
Cezary Rojewski <cezary.rojewski@intel.com>
ASoC: Intel: Skylake: Fix driver hang during shutdown
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ALSA: hda: add snd_hdac_stop_streams() helper
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ALSA/ASoC: hda: move/rename snd_hdac_ext_stop_streams to hdac_stream.c
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix kmemleak in orangefs_prepare_debugfs_help_string()
Nathan Chancellor <nathan@kernel.org>
drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid()
Nathan Chancellor <nathan@kernel.org>
drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid()
Hawkins Jiawei <yin31149@gmail.com>
hugetlbfs: fix null-ptr-deref in hugetlbfs_parse_param()
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: st: Fix memory leak in st_of_quadfs_setup()
Shigeru Yoshida <syoshida@redhat.com>
media: si470x: Fix use-after-free in si470x_int_in_callback()
Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
mmc: f-sdh30: Add quirks for broken timeout clock capability
Rui Zhang <zr.zhang@vivo.com>
regulator: core: fix use_count leakage when handling boot-on
Ye Bin <yebin10@huawei.com>
blk-mq: fix possible memleak when register 'hctx' failed
Mazin Al Haddad <mazinalhaddad05@gmail.com>
media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
Lin Ma <linma@zju.edu.cn>
media: dvbdev: adopts refcnt to avoid UAF
Yan Lei <yan_lei@dahuatech.com>
media: dvb-frontends: fix leak of memory fw
Stanislav Fomichev <sdf@google.com>
bpf: Prevent decl_tag from being referenced in func_proto arg
Stanislav Fomichev <sdf@google.com>
ppp: associate skb with a device at tx
Schspa Shi <schspa@gmail.com>
mrp: introduce active flags to prevent UAF when applicant uninit
Eric Dumazet <edumazet@google.com>
net: add atomic_long_t to net_device_stats fields
Jiang Li <jiang.li@ugreen.com>
md/raid1: stop mdx_raid1 thread when raid1 array run failed
Li Zhong <floridsleeves@gmail.com>
drivers/md/md-bitmap: check the return value of md_bitmap_get_counter()
Ville Syrjälä <ville.syrjala@linux.intel.com>
drm/sti: Use drm_mode_copy()
Ville Syrjälä <ville.syrjala@linux.intel.com>
drm/rockchip: Use drm_mode_copy()
Nathan Chancellor <nathan@kernel.org>
s390/lcs: Fix return type of lcs_start_xmit()
Nathan Chancellor <nathan@kernel.org>
s390/netiucv: Fix return type of netiucv_tx()
Nathan Chancellor <nathan@kernel.org>
s390/ctcm: Fix return type of ctc{mp,}m_tx()
Kees Cook <keescook@chromium.org>
igb: Do not free q_vector unless new one was allocated
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
wifi: brcmfmac: Fix potential shift-out-of-bounds in brcmf_fw_alloc_request()
Nathan Chancellor <nathan@kernel.org>
hamradio: baycom_epp: Fix return type of baycom_send_packet()
Nathan Chancellor <nathan@kernel.org>
net: ethernet: ti: Fix return type of netcp_ndo_start_xmit()
Stanislav Fomichev <sdf@google.com>
bpf: make sure skb->len != 0 when redirecting to a tunneling device
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix memleak when unload ipmi driver
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
ASoC: codecs: rt298: Add quirk for KBL-R RVP platform
Shigeru Yoshida <syoshida@redhat.com>
wifi: ar5523: Fix use-after-free on ar5523_cmd() timed out
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: verify the expected usb_endpoints are present
Wright Feng <wright.feng@cypress.com>
brcmfmac: return error when getting invalid max_flowrings from dongle
Doug Brown <doug@schmorgal.com>
drm/etnaviv: add missing quirks for GC300
ZhangPeng <zhangpeng362@huawei.com>
hfs: fix OOB Read in __hfs_brec_find
Zheng Yejian <zhengyejian1@huawei.com>
acct: fix potential integer overflow in encode_comp_t()
Ryusuke Konishi <konishi.ryusuke@gmail.com>
nilfs2: fix shift-out-of-bounds/overflow in nilfs_sb2_bad_offset()
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
ACPICA: Fix error code path in acpi_ds_call_control_method()
Hoi Pok Wu <wuhoipok@gmail.com>
fs: jfs: fix shift-out-of-bounds in dbDiscardAG
Shigeru Yoshida <syoshida@redhat.com>
udf: Avoid double brelse() in udf_rename()
Dongliang Mu <mudongliangabcd@gmail.com>
fs: jfs: fix shift-out-of-bounds in dbAllocAG
Liu Shixin <liushixin2@huawei.com>
binfmt_misc: fix shift-out-of-bounds in check_special_flags
Zqiang <qiang1.zhang@intel.com>
rcu: Fix __this_cpu_read() lockdep warning in rcu_force_quiescent_state()
Eric Dumazet <edumazet@google.com>
net: stream: purge sk_error_queue in sk_stream_kill_queues()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
myri10ge: Fix an error handling path in myri10ge_probe()
David Howells <dhowells@redhat.com>
rxrpc: Fix missing unlock in rxrpc_do_sendmsg()
Cong Wang <cong.wang@bytedance.com>
net_sched: reject TCF_EM_SIMPLE case for complex ematch module
Yang Yingliang <yangyingliang@huawei.com>
mailbox: zynq-ipi: fix error handling while device_register() fails
Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com>
skbuff: Account for tail adjustment during pull operations
Eelco Chaudron <echaudro@redhat.com>
openvswitch: Fix flow lookup to use unmasked key
GUO Zihua <guozihua@huawei.com>
rtc: mxc_v2: Add missing clk_disable_unprepare()
Li Zetao <lizetao1@huawei.com>
r6040: Fix kmemleak in probe and remove
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
nfc: pn533: Clear nfc_target before being used
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcmulti: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcpci: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcsusb: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Dan Aloni <dan.aloni@vastdata.com>
nfsd: under NFSv4.1, fix double svc_xprt_put on rpc_create failure
Chuck Lever <chuck.lever@oracle.com>
NFSD: Add tracepoints to NFSD's duplicate reply cache
Trond Myklebust <trondmy@gmail.com>
nfsd: Define the file access mode enum for tracing
Gaosheng Cui <cuigaosheng1@huawei.com>
rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe()
Gaosheng Cui <cuigaosheng1@huawei.com>
rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe()
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/pseries/eeh: use correct API for error log size
Haowen Bai <baihaowen@meizu.com>
powerpc/eeh: Drop redundant spinlock initialization
Oliver O'Halloran <oohall@gmail.com>
powerpc/pseries: Stop using eeh_ops->init()
Wen Xiong <wenxiong@linux.vnet.ibm.com>
powerpc/pseries: PCIE PHB reset
Sam Bobroff <sbobroff@linux.ibm.com>
powerpc/eeh: Fix pseries_eeh_configure_bridge()
Yuan Can <yuancan@huawei.com>
remoteproc: qcom_q6v5_pas: Fix missing of_node_put() in adsp_alloc_memory_region()
Gaosheng Cui <cuigaosheng1@huawei.com>
remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev()
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
pwm: sifive: Call pwm_sifive_update_clock() while mutex is held
Miaoqian Lin <linmq006@gmail.com>
selftests/powerpc: Fix resource leaks
Kajol Jain <kjain@linux.ibm.com>
powerpc/hv-gpci: Fix hv_gpci event list
Yang Yingliang <yangyingliang@huawei.com>
powerpc/83xx/mpc832x_rdb: call platform_device_put() in error case in of_fsl_spi_probe()
Nicholas Piggin <npiggin@gmail.com>
powerpc/perf: callchain validate kernel stack pointer bounds
Yang Yingliang <yangyingliang@huawei.com>
powerpc/xive: add missing iounmap() in error path in xive_spapr_populate_irq_data()
Miaoqian Lin <linmq006@gmail.com>
cxl: Fix refcount leak in cxl_calc_capp_routing
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
powerpc/52xx: Fix a resource leak in an error handling path
Xie Shaowen <studentxswpy@163.com>
macintosh/macio-adb: check the return value of ioremap()
Yang Yingliang <yangyingliang@huawei.com>
macintosh: fix possible memory leak in macio_add_one_device()
Yuan Can <yuancan@huawei.com>
iommu/fsl_pamu: Fix resource leak in fsl_pamu_probe()
Yang Yingliang <yangyingliang@huawei.com>
iommu/amd: Fix pci device refcount leak in ppr_notifier()
Alexander Stein <alexander.stein@ew.tq-group.com>
rtc: pcf85063: Fix reading alarm
Stefan Eichenberger <stefan.eichenberger@toradex.com>
rtc: snvs: Allow a time difference on clock register read
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Disable ACPI RTC event on removal
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Rename ACPI-related functions
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Eliminate forward declarations of some functions
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Call rtc_wake_setup() from cmos_do_probe()
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Call cmos_wake_setup() from cmos_do_probe()
Alexandre Belloni <alexandre.belloni@bootlin.com>
rtc: cmos: fix build on non-ACPI platforms
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Fix wake alarm breakage
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Fix event handler registration ordering issue
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: rtc-cmos: Do not check ACPI_FADT_LOW_POWER_S0
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
rtc: cmos: Refactor code by using the new dmi_get_bios_year() helper
Matt Redfearn <matt.redfearn@mips.com>
include/uapi/linux/swab: Fix potentially missing __always_inline
Arnd Bergmann <arnd@arndb.de>
RDMA/siw: Fix pointer cast warning
ruanjinjie <ruanjinjie@huawei.com>
power: supply: fix null pointer dereferencing in power_supply_get_battery_info
Yuan Can <yuancan@huawei.com>
HSI: omap_ssi_core: Fix error handling in ssi_init()
Ajay Kaher <akaher@vmware.com>
perf symbol: correction while adjusting symbol
Leo Yan <leo.yan@linaro.org>
perf trace: Handle failure when trace point folder is missed
Leo Yan <leo.yan@linaro.org>
perf trace: Use macro RAW_SYSCALL_ARGS_NUM to replace number
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Add a strtoul() method to 'struct syscall_arg_fmt'
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Allow associating scnprintf routines with well known arg names
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Add the syscall_arg_fmt pointer to syscall_arg
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Factor out the initialization of syscal_arg_fmt->scnprintf
Arnaldo Carvalho de Melo <acme@redhat.com>
perf trace: Separate 'struct syscall_fmt' definition from syscall_fmts variable
Leo Yan <leo.yan@linaro.org>
perf trace: Return error if a system call doesn't exist
Zeng Heng <zengheng4@huawei.com>
power: supply: fix residue sysfs file in error handle route of __power_supply_register()
Yang Yingliang <yangyingliang@huawei.com>
HSI: omap_ssi_core: fix possible memory leak in ssi_probe()
Yang Yingliang <yangyingliang@huawei.com>
HSI: omap_ssi_core: fix unbalanced pm_runtime_disable()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
fbdev: uvesafb: Fixes an error handling path in uvesafb_probe()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
fbdev: vermilion: decrease reference count in error path
Shang XiaoJing <shangxiaojing@huawei.com>
fbdev: via: Fix error in via_core_init()
Yang Yingliang <yangyingliang@huawei.com>
fbdev: pm2fb: fix missing pci_disable_device()
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
fbdev: ssd1307fb: Drop optional dependency
Shang XiaoJing <shangxiaojing@huawei.com>
samples: vfio-mdev: Fix missing pci_disable_device() in mdpy_fb_probe()
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix issue of losting command info in error_log
Jiasheng Jiang <jiasheng@iscas.ac.cn>
usb: storage: Add check for kcalloc
Zheyu Ma <zheyuma97@gmail.com>
i2c: ismt: Fix an out-of-bounds bug in ismt_access()
Yang Yingliang <yangyingliang@huawei.com>
i2c: mux: reg: check return value after calling platform_get_resource()
Dejin Zheng <zhengdejin5@gmail.com>
drivers: provide devm_platform_get_and_ioremap_resource()
Chen Zhongjin <chenzhongjin@huawei.com>
vme: Fix error not catched in fake_init()
YueHaibing <yuehaibing@huawei.com>
staging: rtl8192e: Fix potential use-after-free in rtllib_rx_Monitor()
Dan Carpenter <error27@gmail.com>
staging: rtl8192u: Fix use after free in ieee80211_rx()
Hui Tang <tanghui20@huawei.com>
i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe
Yang Yingliang <yangyingliang@huawei.com>
chardev: fix error handling in cdev_device_add()
Yang Yingliang <yangyingliang@huawei.com>
mcb: mcb-parse: fix error handing in chameleon_parse_gdd()
Zhengchao Shao <shaozhengchao@huawei.com>
drivers: mcb: fix resource leak in mcb_probe()
John Keeping <john@metanate.com>
usb: gadget: f_hid: fix refcount leak on error path
John Keeping <john@metanate.com>
usb: gadget: f_hid: fix f_hidg lifetime vs cdev
Maxim Devaev <mdevaev@gmail.com>
usb: gadget: f_hid: optional SETUP/SET_REPORT mode
Yang Yingliang <yangyingliang@huawei.com>
usb: roles: fix of node refcount leak in usb_role_switch_is_parent()
Fabrice Gasnier <fabrice.gasnier@foss.st.com>
counter: stm32-lptimer-cnt: fix the check on arr and cmp registers update
Yang Yingliang <yangyingliang@huawei.com>
cxl: fix possible null-ptr-deref in cxl_pci_init_afu|adapter()
Yang Yingliang <yangyingliang@huawei.com>
cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter()
Zheng Wang <zyytlz.wz@163.com>
misc: sgi-gru: fix use-after-free error in gru_set_context_option, gru_fault and gru_handle_user_call_os
ruanjinjie <ruanjinjie@huawei.com>
misc: tifm: fix possible memory leak in tifm_7xx1_switch_media()
Yang Yingliang <yangyingliang@huawei.com>
misc: ocxl: fix possible name leak in ocxl_file_register_afu()
Zhengchao Shao <shaozhengchao@huawei.com>
test_firmware: fix memory leak in test_firmware_init()
Yuan Can <yuancan@huawei.com>
serial: sunsab: Fix error handling in sunsab_init()
Gabriel Somlo <gsomlo@gmail.com>
serial: altera_uart: fix locking in polling mode
Jiri Slaby <jslaby@suse.cz>
tty: serial: altera_uart_{r,t}x_chars() need only uart_port
Jiri Slaby <jslaby@suse.cz>
tty: serial: clean up stop-tx part in altera_uart_tx_chars()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
serial: pch: Fix PCI device refcount leak in pch_request_dma()
delisun <delisun@pateo.com.cn>
serial: pl011: Do not clear RX FIFO & RX interrupt in unthrottle.
Jiamei Xie <jiamei.xie@arm.com>
serial: amba-pl011: avoid SBSA UART accessing DMACR register
Yang Yingliang <yangyingliang@huawei.com>
usb: typec: tcpci: fix of node refcount leak in tcpci_register_port()
Sven Peter <sven@svenpeter.dev>
usb: typec: Check for ops->exit instead of ops->enter in altmode_exit
Gaosheng Cui <cuigaosheng1@huawei.com>
staging: vme_user: Fix possible UAF in tsi148_dma_list_add
Linus Walleij <linus.walleij@linaro.org>
usb: fotg210-udc: Fix ages old endianness issues
Rafael Mendonca <rafaelmendsr@gmail.com>
uio: uio_dmem_genirq: Fix deadlock between irq config and handling
Rafael Mendonca <rafaelmendsr@gmail.com>
uio: uio_dmem_genirq: Fix missing unlock in irq configuration
Rafael Mendonca <rafaelmendsr@gmail.com>
vfio: platform: Do not pass return buffer to ACPI _RST method
Yang Yingliang <yangyingliang@huawei.com>
class: fix possible memory leak in __class_register()
Kartik <kkartik@nvidia.com>
serial: tegra: Read DMA status before terminating
Dmitry Osipenko <digetx@gmail.com>
tty: serial: tegra: Activate RX DMA transfer by request
Yang Yingliang <yangyingliang@huawei.com>
drivers: dio: fix possible memory leak in dio_init()
Dragos Tatulea <dtatulea@nvidia.com>
IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces
Xiongfeng Wang <wangxiongfeng2@huawei.com>
hwrng: geode - Fix PCI device refcount leak
Xiongfeng Wang <wangxiongfeng2@huawei.com>
hwrng: amd - Fix PCI device refcount leak
Gaosheng Cui <cuigaosheng1@huawei.com>
crypto: img-hash - Fix variable dereferenced before check 'hdev->req'
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix sysfs not cleanup when dev init failed
Wang Yufen <wangyufen@huawei.com>
RDMA/hfi1: Fix error return code in parse_platform_config()
Shang XiaoJing <shangxiaojing@huawei.com>
crypto: omap-sham - Use pm_runtime_resume_and_get() in omap_sham_probe()
Yonggil Song <yonggil.song@samsung.com>
f2fs: avoid victim selection from previous victim section
Yuan Can <yuancan@huawei.com>
RDMA/nldev: Add checks for nla_nest_start() in fill_stat_counter_qps()
Gaosheng Cui <cuigaosheng1@huawei.com>
scsi: snic: Fix possible UAF in snic_tgt_create()
Chen Zhongjin <chenzhongjin@huawei.com>
scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails
Shang XiaoJing <shangxiaojing@huawei.com>
scsi: ipr: Fix WARNING in ipr_init()
Yang Yingliang <yangyingliang@huawei.com>
scsi: fcoe: Fix possible name leak when device_register() fails
Yang Yingliang <yangyingliang@huawei.com>
scsi: hpsa: Fix possible memory leak in hpsa_add_sas_device()
Yang Yingliang <yangyingliang@huawei.com>
scsi: hpsa: Fix error handling in hpsa_add_sas_host()
Yang Yingliang <yangyingliang@huawei.com>
scsi: mpt3sas: Fix possible resource leaks in mpt3sas_transport_port_add()
Zhang Yiqun <zhangyiqun@phytium.com.cn>
crypto: tcrypt - Fix multibuffer skcipher speed test mem leak
Yuan Can <yuancan@huawei.com>
scsi: hpsa: Fix possible memory leak in hpsa_init_one()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
RDMA/rxe: Fix NULL-ptr-deref in rxe_qp_do_cleanup() when socket create failed
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
crypto: ccree - Make cc_debugfs_global_fini() available for module init function
Xiongfeng Wang <wangxiongfeng2@huawei.com>
RDMA/hfi: Decrease PCI device reference count in error path
Zeng Heng <zengheng4@huawei.com>
PCI: Check for alloc failure in pci_request_irq()
Gaosheng Cui <cuigaosheng1@huawei.com>
crypto: ccree - Remove debugfs when platform_driver_register failed
Geert Uytterhoeven <geert+renesas@glider.be>
crypto: ccree - swap SHA384 and SHA512 larval hashes at build time
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
scsi: scsi_debug: Fix a warning in resp_write_scat()
Bernard Metzler <bmt@zurich.ibm.com>
RDMA/siw: Set defined status for work completion with undefined status
Mark Zhang <markzhang@nvidia.com>
RDMA/nldev: Return "-EAGAIN" if the cm_id isn't from expected port
Bernard Metzler <bmt@zurich.ibm.com>
RDMA/siw: Fix immediate work request flush to completion queue
Dongdong Zhang <zhangdongdong1@oppo.com>
f2fs: fix normal discard process
Leon Romanovsky <leonro@nvidia.com>
RDMA/core: Fix order of nldev_exit call
Xiu Jianfeng <xiujianfeng@huawei.com>
apparmor: Use pointer to struct aa_label for lbs_cred
John Johansen <john.johansen@canonical.com>
apparmor: Fix abi check to include v8 abi
John Johansen <john.johansen@canonical.com>
apparmor: fix lockdep warning when removing a namespace
Gaosheng Cui <cuigaosheng1@huawei.com>
apparmor: fix a memleak in multi_transaction_new()
Piergiorgio Beruto <piergiorgio.beruto@gmail.com>
stmmac: fix potential division by 0
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: RFCOMM: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_core: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_bcsp: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_h5: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_ll: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_qca: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()
Eric Pilmore <epilmore@gigaio.com>
ntb_netdev: Use dev_kfree_skb_any() in interrupt context
Jerry Ray <jerry.ray@microchip.com>
net: lan9303: Fix read error execution path
Markus Schneider-Pargmann <msp@baylibre.com>
can: tcan4x5x: Remove invalid write in clear_interrupts
Tom Lendacky <thomas.lendacky@amd.com>
net: amd-xgbe: Check only the minimum speed for active/passive cables
Tom Lendacky <thomas.lendacky@amd.com>
net: amd-xgbe: Fix logic around active and passive cables
Yang Yingliang <yangyingliang@huawei.com>
net: amd: lance: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
hamradio: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: ethernet: dnet: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: emaclite: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave()
Hangbin Liu <liuhangbin@gmail.com>
net/tunnel: wait until all sk_user_data reader finish before releasing the sock
Li Zetao <lizetao1@huawei.com>
net: farsync: Fix kmemleak when rmmods farsync
Yang Yingliang <yangyingliang@huawei.com>
ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave()
ruanjinjie <ruanjinjie@huawei.com>
of: overlay: fix null pointer dereferencing in find_dup_cset_node_entry() and find_dup_cset_prop()
Yuan Can <yuancan@huawei.com>
drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init()
Zhang Changzhong <zhangchangzhong@huawei.com>
net: stmmac: selftests: fix potential memleak in stmmac_test_arpoffload()
Yongqiang Liu <liuyongqiang13@huawei.com>
net: defxx: Fix missing err handling in dfx_init()
Artem Chernyshev <artem.chernyshev@red-soft.ru>
net: vmw_vsock: vmci: Check memcpy_from_msg()
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: socfpga: Fix memory leak in socfpga_gate_init()
Dinh Nguyen <dinguyen@kernel.org>
clk: socfpga: use clk_hw_register for a5/c5
Lee Jones <lee.jones@linaro.org>
clk: socfpga: clk-pll: Remove unused variable 'rc'
Yang Jihong <yangjihong1@huawei.com>
blktrace: Fix output non-blktrace event when blk_classic option enabled
Wang Yufen <wangyufen@huawei.com>
wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware()
Bitterblue Smith <rtl8821cerfe2@gmail.com>
wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h
Kris Bahnsen <kris@embeddedTS.com>
spi: spi-gpio: Don't set MOSI as an input if not 3WIRE mode
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: samsung: Fix memory leak in _samsung_clk_register_pll()
Jiasheng Jiang <jiasheng@iscas.ac.cn>
media: coda: Add check for kmalloc
Jiasheng Jiang <jiasheng@iscas.ac.cn>
media: coda: Add check for dcoda_iram_alloc
Liang He <windhl@126.com>
media: c8sectpfe: Add of_node_put() when breaking out of loop
Yang Yingliang <yangyingliang@huawei.com>
mmc: mmci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: wbsd: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: via-sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: meson-gx: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: omap_hsmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: atmel-mci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: wmt-sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: vub300: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: toshsd: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: pxamci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: mxcmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: moxart: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: alcor: fix return value check of mmc_add_host()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.x: Fail client initialisation if state manager thread can't run
Wang ShaoBo <bobo.shaobowang@huawei.com>
SUNRPC: Fix missing release socket in rpc_sockname()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
xprtrdma: Fix regbuf data not freed in rpcrdma_req_create()
Gaosheng Cui <cuigaosheng1@huawei.com>
ALSA: mts64: fix possible null-ptr-defer in snd_mts64_interrupt
Liu Shixin <liushixin2@huawei.com>
media: saa7164: fix missing pci_disable_device()
Eric Dumazet <edumazet@google.com>
bpf, sockmap: fix race in sock_map_free()
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix resource leak in regulator_register()
Chen Zhongjin <chenzhongjin@huawei.com>
configfs: fix possible memory leak in configfs_create_dir()
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hsr: Avoid double remove of a node.
Christian Marangi <ansuelsmth@gmail.com>
clk: qcom: clk-krait: fix wrong div2 functions
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix module refcount leak in set_supply()
Chen Zhongjin <chenzhongjin@huawei.com>
wifi: cfg80211: Fix not unregister reg_pdev when load_builtin_regdb_keys() fails
Zhengchao Shao <shaozhengchao@huawei.com>
wifi: mac80211: fix memory leak in ieee80211_if_add()
Alexander Sverdlin <alexander.sverdlin@siemens.com>
spi: spidev: mask SPI_CS_HIGH in SPI_IOC_RD_MODE
Dan Carpenter <error27@gmail.com>
bonding: uninitialized variable in bond_miimon_inspect()
Pengcheng Yang <yangpc@wangsu.com>
bpf, sockmap: Fix data loss caused by using apply_bytes on ingress redirect
Pengcheng Yang <yangpc@wangsu.com>
bpf, sockmap: Fix repeated calls to sock_put() when msg has more_data
Florian Westphal <fw@strlen.de>
netfilter: conntrack: set icmpv6 redirects as RELATED
Zhang Qilong <zhangqilong3@huawei.com>
ASoC: pcm512x: Fix PM disable depth imbalance in pcm512x_probe
Xiongfeng Wang <wangxiongfeng2@huawei.com>
drm/amdgpu: Fix PCI device refcount leak in amdgpu_atrm_get_bios()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
drm/radeon: Fix PCI device refcount leak in radeon_atrm_get_bios()
Ricardo Ribalda <ribalda@chromium.org>
ASoC: mediatek: mt8173: Enable IRQ when pdata is ready
Ben Greear <greearb@candelatech.com>
wifi: iwlwifi: mvm: fix double free on tx path.
Liu Shixin <liushixin2@huawei.com>
ALSA: asihpi: fix missing pci_disable_device()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4: Fix a deadlock between nfs4_open_recover_helper() and delegreturn
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Fix initialisation of struct nfs4_label
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Fix a memory stomp in decode_attr_security_label
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Clear FATTR4_WORD2_SECURITY_LABEL when done decoding
Jiasheng Jiang <jiasheng@iscas.ac.cn>
ASoC: mediatek: mtk-btcvsd: Add checks for write and read of mtk_btcvsd_snd
Dmitry Torokhov <dmitry.torokhov@gmail.com>
ASoC: dt-bindings: wcd9335: fix reset line polarity in example
Zhang Zekun <zhangzekun11@huawei.com>
drm/tegra: Add missing clk_disable_unprepare() in tegra_dc_probe()
Aakarsh Jain <aakarsh.jain@samsung.com>
media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC
Baisong Zhong <zhongbaisong@huawei.com>
media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()
Chen Zhongjin <chenzhongjin@huawei.com>
media: dvb-core: Fix ignored return value in dvb_register_frontend()
ZhangPeng <zhangpeng362@huawei.com>
pinctrl: pinconf-generic: add missing of_node_put()
Dario Binacchi <dario.binacchi@amarulasolutions.com>
clk: imx: replace osc_hdmi with dummy
Li Jun <jun.li@nxp.com>
clk: imx8mn: correct the usb1_ctrl parent to be usb_bus
Gautam Menghani <gautammenghani201@gmail.com>
media: imon: fix a race condition in send_packet()
Zheng Yongjun <zhengyongjun3@huawei.com>
mtd: maps: pxa2xx-flash: fix memory leak in probe
Jonathan Toppins <jtoppins@redhat.com>
bonding: fix link recovery in mode 2 when updelay is nonzero
Maor Gottlieb <maorg@mellanox.com>
bonding: Rename slave_arr to usable_slaves
Maor Gottlieb <maorg@mellanox.com>
bonding: Export skip slave logic to function
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: rockchip: Fix memory leak in rockchip_clk_register_pll()
Wang ShaoBo <bobo.shaobowang@huawei.com>
regulator: core: use kfree_const() to free space conditionally
Baisong Zhong <zhongbaisong@huawei.com>
ALSA: seq: fix undefined behavior in bit shift for SNDRV_SEQ_FILTER_USE_EVENT
Baisong Zhong <zhongbaisong@huawei.com>
ALSA: pcm: fix undefined behavior in bit shift for SNDRV_PCM_RATE_KNOT
Marcus Folkesson <marcus.folkesson@gmail.com>
HID: hid-sensor-custom: set fixed size for custom attributes
Stanislav Fomichev <sdf@google.com>
bpf: Move skb->len == 0 checks into __bpf_redirect
Christoph Hellwig <hch@lst.de>
media: videobuf-dma-contig: use dma_mmap_coherent
Yuan Can <yuancan@huawei.com>
media: platform: exynos4-is: Fix error handling in fimc_md_init()
Yang Yingliang <yangyingliang@huawei.com>
media: solo6x10: fix possible memory leak in solo_sysfs_init()
Douglas Anderson <dianders@chromium.org>
Input: elants_i2c - properly handle the reset GPIO when power is off
Hui Tang <tanghui20@huawei.com>
mtd: lpddr2_nvm: Fix possible null-ptr-deref
Xiu Jianfeng <xiujianfeng@huawei.com>
wifi: ath10k: Fix return value in ath10k_pci_init()
Xiu Jianfeng <xiujianfeng@huawei.com>
ima: Fix misuse of dereference of pointer in template_desc_init_fields()
GUO Zihua <guozihua@huawei.com>
integrity: Fix memory leakage in keyring allocation error path
Dan Carpenter <error27@gmail.com>
amdgpu/pm: prevent array underflow in vega20_odn_edit_dpm_table()
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix unbalanced of node refcount in regulator_dev_lookup()
Zeng Heng <zengheng4@huawei.com>
ASoC: pxa: fix null-pointer dereference in filter()
Xinlei Lee <xinlei.lee@mediatek.com>
drm/mediatek: Modify dpi power on/off sequence.
Hanjun Guo <guohanjun@huawei.com>
drm/radeon: Add the missed acpi_put_table() to fix memory leak
David Howells <dhowells@redhat.com>
rxrpc: Fix ack.bufferSize to be 0 when generating an ack
David Howells <dhowells@redhat.com>
net, proc: Provide PROC_FS=n fallback for proc_create_net_single_write()
Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
media: camss: Clean up received buffers on failed start of streaming
Marek Vasut <marex@denx.de>
wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
mtd: Fix device name leak when register device failed in add_mtd_device()
Andrii Nakryiko <andrii@kernel.org>
bpf: propagate precision in ALU/ALU64 operations
Liu Shixin <liushixin2@huawei.com>
media: vivid: fix compose size exceed boundary
GUO Zihua <guozihua@huawei.com>
ima: Handle -ESTALE returned by ima_filter_rule_match()
Gustavo A. R. Silva <gustavoars@kernel.org>
ima: Fix fall-through warnings for Clang
Tyler Hicks <tyhicks@linux.microsoft.com>
ima: Rename internal filter rule functions
Marek Vasut <marex@denx.de>
drm/panel/panel-sitronix-st7701: Remove panel on DSI attach failure
Jonathan Neuschäfer <j.neuschaefer@gmx.net>
spi: Update reference to struct spi_controller
Marek Vasut <marex@denx.de>
clk: renesas: r9a06g032: Repair grave increment error
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: Compare requested bittiming parameters with actual parameters in do_set_{,data}_bittiming
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: Add struct kvaser_usb_busparams
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix bogus restart events
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix wrong CAN state after stopping
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix improved state not being reported
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Set Warning state even without bus errors
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Handle CMD_ERROR_EVENT
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Rename {leaf,usbcan}_cmd_error_event to {leaf,usbcan}_cmd_can_error_event
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Get capabilities from device
Vincent Mailhol <mailhol.vincent@wanadoo.fr>
can: kvaser_usb: do not increase tx statistics when sending error message frames
Ricardo Ribalda <ribalda@chromium.org>
media: i2c: ad5820: Fix error path
Junlin Yang <yangjunlin@yulong.com>
pata_ipx4xx_cf: Fix unsigned comparison with less than zero
Bitterblue Smith <rtl8821cerfe2@gmail.com>
wifi: rtl8xxxu: Fix reading the vendor of combo chips
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb()
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: hif_usb: fix memory leak of urbs in ath9k_hif_usb_dealloc_tx_urbs()
Cai Xinchen <caixinchen1@huawei.com>
rapidio: devices: fix missing put_device in mport_cdev_open
ZhangPeng <zhangpeng362@huawei.com>
hfs: Fix OOB Write in hfs_asc2mac
Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
relay: fix type mismatch when allocating memory in relay_create_buf()
Zhang Qilong <zhangqilong3@huawei.com>
eventfd: change int to __u64 in eventfd_signal() ifndef CONFIG_EVENTFD
Wang Weiyang <wangweiyang2@huawei.com>
rapidio: fix possible UAF when kfifo_alloc() fails
Chen Zhongjin <chenzhongjin@huawei.com>
fs: sysv: Fix sysv_nblocks() returns wrong value
Ladislav Michl <ladis@linux-mips.org>
MIPS: OCTEON: warn only once if deprecated link status is being used
Anastasia Belova <abelova@astralinux.ru>
MIPS: BCM63xx: Add check for NULL for clk in clk_enable
Yu Liao <liaoyu15@huawei.com>
platform/x86: mxm-wmi: fix memleak in mxm_wmi_call_mx[ds|mx]()
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
PM: runtime: Do not call __rpm_callback() from rpm_idle()
Ulf Hansson <ulf.hansson@linaro.org>
PM: runtime: Improve path in rpm_idle() when no callback
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
xen/privcmd: Fix a possible warning in privcmd_ioctl_mmap_resource()
Xiu Jianfeng <xiujianfeng@huawei.com>
x86/xen: Fix memory leak in xen_init_lock_cpu()
Xiu Jianfeng <xiujianfeng@huawei.com>
x86/xen: Fix memory leak in xen_smp_intr_init{_pv}()
Juergen Gross <jgross@suse.com>
xen/events: only register debug interrupt for 2-level events
Oleg Nesterov <oleg@redhat.com>
uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix
Li Zetao <lizetao1@huawei.com>
ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage()
Geert Uytterhoeven <geert+renesas@glider.be>
clocksource/drivers/sh_cmt: Make sure channel clock supply is enabled
Yang Yingliang <yangyingliang@huawei.com>
rapidio: rio: fix possible name leak in rio_register_mport()
Yang Yingliang <yangyingliang@huawei.com>
rapidio: fix possible name leaks when rio_add_device() fails
Li Zetao <ocfs2-devel@oss.oracle.com>
ocfs2: fix memory leak in ocfs2_mount_volume()
Heming Zhao via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: rewrite error handling of ocfs2_fill_super
Heming Zhao via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: ocfs2_mount_volume does cleanup job before return error
Akinobu Mita <akinobu.mita@gmail.com>
debugfs: fix error when writing negative value to atomic_t debugfs file
Wolfram Sang <wsa+renesas@sang-engineering.com>
docs: fault-injection: fix non-working usage of negative values
Akinobu Mita <akinobu.mita@gmail.com>
lib/notifier-error-inject: fix error when writing -errno to debugfs file
Akinobu Mita <akinobu.mita@gmail.com>
libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value
Xiongfeng Wang <wangxiongfeng2@huawei.com>
cpufreq: amd_freq_sensitivity: Add missing pci_dev_put()
Yang Yingliang <yangyingliang@huawei.com>
genirq/irqdesc: Don't try to remove non-existing sysfs files
Jeff Layton <jlayton@kernel.org>
nfsd: don't call nfsd_file_put from client states seqfile display
Yang Yingliang <yangyingliang@huawei.com>
EDAC/i10nm: fix refcount leak in pci_get_dev_wrapper()
Shang XiaoJing <shangxiaojing@huawei.com>
irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox()
Yang Yingliang <yangyingliang@huawei.com>
PNP: fix name memory leak in pnp_alloc_dev()
Zhao Gongyi <zhaogongyi@huawei.com>
selftests/efivarfs: Add checking of the test return value
Yang Yingliang <yangyingliang@huawei.com>
MIPS: vpe-cmp: fix possible memory leak while module exiting
Yang Yingliang <yangyingliang@huawei.com>
MIPS: vpe-mt: fix possible memory leak while module exiting
Shang XiaoJing <shangxiaojing@huawei.com>
ocfs2: fix memory leak in ocfs2_stack_glue_init()
Gaosheng Cui <cuigaosheng1@huawei.com>
lib/fonts: fix undefined behavior in bit shift for get_default_font
Alexey Dobriyan <adobriyan@gmail.com>
proc: fixup uptime selftest
Barnabás Pőcze <pobrn@protonmail.com>
timerqueue: Use rb_entry_safe() in timerqueue_getnext()
wuchi <wuchi.zero@gmail.com>
lib/debugobjects: fix stat count and optimize debug_objects_mem_init
Zqiang <qiang.zhang@windriver.com>
debugobjects: Free per CPU pool after CPU unplug
Chen Zhongjin <chenzhongjin@huawei.com>
perf: Fix possible memleak in pmu_dev_alloc()
Yipeng Zou <zouyipeng@huawei.com>
selftests/ftrace: event_triggers: wait longer for test_event_enable
Ondrej Mosnacek <omosnace@redhat.com>
fs: don't audit the capability check in simple_xattr_list()
xiongxin <xiongxin@kylinos.cn>
PM: hibernate: Fix mistake in kerneldoc comment
Al Viro <viro@zeniv.linux.org.uk>
alpha: fix syscall entry in !AUDUT_SYSCALL case
Ulf Hansson <ulf.hansson@linaro.org>
cpuidle: dt: Return the correct numbers of parsed idle states
Michael Kelley <mikelley@microsoft.com>
tpm/tpm_crb: Fix error message in __crb_relinquish_locality()
Stephen Boyd <swboyd@chromium.org>
pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP
Doug Brown <doug@schmorgal.com>
ARM: mmp: fix timer_read delay
Wang Yufen <wangyufen@huawei.com>
pstore/ram: Fix error return code in ramoops_probe()
Pali Rohár <pali@kernel.org>
arm64: dts: armada-3720-turris-mox: Add missing interrupt for RTC
Pali Rohár <pali@kernel.org>
ARM: dts: turris-omnia: Add switch port 6 node
Pali Rohár <pali@kernel.org>
ARM: dts: turris-omnia: Add ethernet aliases
Pali Rohár <pali@kernel.org>
ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712-evb: Fix usb vbus regulators unit names
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712-evb: Fix vproc fixed regulators unit names
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712e: Fix unit address for pinctrl node
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712e: Fix unit_address_vs_reg warning for oscillators
Shang XiaoJing <shangxiaojing@huawei.com>
perf/smmuv3: Fix hotplug callback leak in arm_smmu_pmu_init()
Yuan Can <yuancan@huawei.com>
perf: arm_dsu: Fix hotplug callback leak in dsu_pmu_init()
Zhang Qilong <zhangqilong3@huawei.com>
soc: ti: smartreflex: Fix PM disable depth imbalance in omap_sr_probe
Zhang Qilong <zhangqilong3@huawei.com>
soc: ti: knav_qmss_queue: Fix PM disable depth imbalance in knav_queue_probe
Minghao Chi <chi.minghao@zte.com.cn>
soc: ti: knav_qmss_queue: Use pm_runtime_resume_and_get instead of pm_runtime_get_sync
Kory Maincent <kory.maincent@bootlin.com>
arm: dts: spear600: Fix clcd interrupt
Luca Weiss <luca.weiss@fairphone.com>
soc: qcom: llcc: make irq truly optional
Vivek Gautam <vivek.gautam@codeaurora.org>
soc: qcom: Rename llcc-slice to llcc-qcom
Vivek Gautam <vivek.gautam@codeaurora.org>
soc: qcom: llcc cleanup to get rid of sdm845 specific driver file
Chen Jiahao <chenjiahao16@huawei.com>
drivers: soc: ti: knav_qmss_queue: Mark knav_acc_firmwares as static
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm845-cheza: fix AP suspend pin bias
Luca Weiss <luca@z3ntu.xyz>
ARM: dts: qcom: apq8064: fix coresight compatible
Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
usb: musb: remove extra check in musb_gadget_vbus_draw
Rasmus Villemoes <linux@rasmusvillemoes.dk>
net: loopback: use NET_NAME_PREDICTABLE for name_assign_type
Sungwoo Kim <iam@sung-woo.kim>
Bluetooth: L2CAP: Fix u8 overflow
José Expósito <jose.exposito89@gmail.com>
HID: uclogic: Add HID_QUIRK_HIDINPUT_FORCE quirk
Hans de Goede <hdegoede@redhat.com>
HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10
Hans de Goede <hdegoede@redhat.com>
HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch 10E
Hans de Goede <hdegoede@redhat.com>
HID: ite: Add support for Acer S1002 keyboard-dock
Pratyush Yadav <ptyadav@amazon.de>
xen-netback: move removal of "hotplug-status" to the right place
Tony Nguyen <anthony.l.nguyen@intel.com>
igb: Initialize mailbox message for VF reset
Johan Hovold <johan@kernel.org>
USB: serial: f81534: fix division by zero on line-speed change
Johan Hovold <johan@kernel.org>
USB: serial: f81232: fix division by zero on line-speed change
Bruno Thomsen <bruno.thomsen@gmail.com>
USB: serial: cp210x: add Kamstrup RF sniffer PIDs
Duke Xin <duke_xinanwen@163.com>
USB: serial: option: add Quectel EM05-G modem
Szymon Heidrich <szymon.heidrich@gmail.com>
usb: gadget: uvc: Prevent buffer overflow in setup handler
Jan Kara <jack@suse.cz>
udf: Fix extending file within last block
Jan Kara <jack@suse.cz>
udf: Do not bother looking for prealloc extents if i_lenExtents matches i_size
Jan Kara <jack@suse.cz>
udf: Fix preallocation discarding at indirect extent boundary
Jan Kara <jack@suse.cz>
udf: Discard preallocation before extending file with a hole
Pratyush Yadav <ptyadav@amazon.de>
tracing/ring-buffer: Only do full wait when cpu != RING_BUFFER_ALL_CPUS
-------------
Diffstat:
.../devicetree/bindings/sound/qcom,wcd9335.txt | 2 +-
Documentation/driver-api/spi.rst | 4 +-
Documentation/fault-injection/fault-injection.rst | 16 +-
Documentation/sphinx/load_config.py | 6 +-
Makefile | 4 +-
arch/alpha/kernel/entry.S | 4 +-
arch/arm/boot/dts/armada-370.dtsi | 2 +-
arch/arm/boot/dts/armada-375.dtsi | 2 +-
arch/arm/boot/dts/armada-380.dtsi | 4 +-
arch/arm/boot/dts/armada-385-turris-omnia.dts | 18 +-
arch/arm/boot/dts/armada-385.dtsi | 6 +-
arch/arm/boot/dts/armada-39x.dtsi | 6 +-
arch/arm/boot/dts/armada-xp-mv78230.dtsi | 8 +-
arch/arm/boot/dts/armada-xp-mv78260.dtsi | 16 +-
arch/arm/boot/dts/dove.dtsi | 2 +-
arch/arm/boot/dts/qcom-apq8064.dtsi | 2 +-
arch/arm/boot/dts/spear600.dtsi | 2 +-
arch/arm/mach-mmp/time.c | 11 +-
arch/arm/nwfpe/Makefile | 6 +
.../boot/dts/marvell/armada-3720-turris-mox.dts | 3 +
arch/arm64/boot/dts/mediatek/mt2712-evb.dts | 12 +-
arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 22 +-
arch/arm64/boot/dts/mediatek/mt6797.dtsi | 2 +-
arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi | 4 +-
.../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 6 +-
arch/arm64/include/asm/atomic_ll_sc.h | 114 +++---
arch/arm64/include/asm/atomic_lse.h | 16 +-
arch/arm64/include/asm/kvm_emulate.h | 22 +-
arch/mips/bcm63xx/clk.c | 2 +
.../cavium-octeon/executive/cvmx-helper-board.c | 2 +-
arch/mips/cavium-octeon/executive/cvmx-helper.c | 2 +-
arch/mips/kernel/vpe-cmp.c | 4 +-
arch/mips/kernel/vpe-mt.c | 4 +-
arch/parisc/include/uapi/asm/mman.h | 23 +-
arch/parisc/kernel/sys_parisc.c | 27 ++
arch/parisc/kernel/syscalls/syscall.tbl | 2 +-
arch/powerpc/include/asm/imc-pmu.h | 2 +-
arch/powerpc/kernel/rtas.c | 20 +-
arch/powerpc/perf/callchain.c | 1 +
arch/powerpc/perf/hv-gpci-requests.h | 4 +
arch/powerpc/perf/hv-gpci.c | 33 +-
arch/powerpc/perf/hv-gpci.h | 1 +
arch/powerpc/perf/imc-pmu.c | 136 ++++---
arch/powerpc/perf/req-gen/perf.h | 20 +
arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | 1 +
arch/powerpc/platforms/83xx/mpc832x_rdb.c | 2 +-
arch/powerpc/platforms/pseries/eeh_pseries.c | 323 +++++++++------
arch/powerpc/sysdev/xive/spapr.c | 1 +
arch/riscv/include/asm/uaccess.h | 2 +-
arch/riscv/kernel/stacktrace.c | 12 +-
arch/s390/include/asm/percpu.h | 2 +-
arch/s390/kernel/machine_kexec_file.c | 5 +-
arch/x86/boot/bioscall.S | 4 +-
arch/x86/events/intel/uncore_snbep.c | 1 +
arch/x86/ia32/ia32_aout.c | 3 +-
arch/x86/include/asm/vmx.h | 6 +-
arch/x86/include/uapi/asm/vmx.h | 4 +-
arch/x86/kernel/cpu/bugs.c | 2 +
arch/x86/kernel/cpu/microcode/intel.c | 8 +-
arch/x86/kernel/cpu/resctrl/rdtgroup.c | 26 +-
arch/x86/kernel/uprobes.c | 4 +-
arch/x86/kvm/vmx/nested.c | 31 +-
arch/x86/kvm/vmx/vmx.c | 66 ++--
arch/x86/xen/smp.c | 41 +-
arch/x86/xen/smp_pv.c | 12 +-
arch/x86/xen/spinlock.c | 6 +-
arch/x86/xen/xen-ops.h | 2 +
block/blk-mq-sysfs.c | 11 +-
crypto/tcrypt.c | 9 -
drivers/acpi/acpica/dsmethod.c | 10 +-
drivers/acpi/acpica/utcopy.c | 7 -
drivers/ata/ahci.c | 32 +-
drivers/ata/pata_ixp4xx_cf.c | 2 +-
drivers/base/class.c | 5 +
drivers/base/dd.c | 8 +-
drivers/base/platform.c | 22 ++
drivers/base/power/runtime.c | 18 +-
drivers/bluetooth/btusb.c | 6 +-
drivers/bluetooth/hci_bcsp.c | 2 +-
drivers/bluetooth/hci_h5.c | 2 +-
drivers/bluetooth/hci_ll.c | 2 +-
drivers/bluetooth/hci_qca.c | 2 +-
drivers/char/hw_random/amd-rng.c | 18 +-
drivers/char/hw_random/geode-rng.c | 36 +-
drivers/char/ipmi/ipmi_msghandler.c | 12 +-
drivers/char/ipmi/ipmi_si_intf.c | 27 +-
drivers/char/tpm/tpm_crb.c | 31 +-
drivers/char/tpm/tpm_tis.c | 9 +-
drivers/clk/imx/clk-imx8mn.c | 14 +-
drivers/clk/qcom/clk-krait.c | 2 +
drivers/clk/renesas/r9a06g032-clocks.c | 3 +-
drivers/clk/rockchip/clk-pll.c | 1 +
drivers/clk/samsung/clk-pll.c | 1 +
drivers/clk/socfpga/clk-gate.c | 16 +-
drivers/clk/socfpga/clk-periph.c | 8 +-
drivers/clk/socfpga/clk-pll.c | 17 +-
drivers/clk/st/clkgen-fsyn.c | 5 +-
drivers/clocksource/sh_cmt.c | 16 +-
drivers/counter/stm32-lptimer-cnt.c | 2 +-
drivers/cpufreq/amd_freq_sensitivity.c | 2 +
drivers/cpufreq/cpufreq.c | 2 +-
drivers/cpuidle/dt_idle_states.c | 2 +-
drivers/crypto/ccree/cc_debugfs.c | 2 +-
drivers/crypto/ccree/cc_driver.c | 11 +-
drivers/crypto/ccree/cc_hash.c | 49 +--
drivers/crypto/ccree/cc_hash.h | 2 -
drivers/crypto/img-hash.c | 8 +-
drivers/crypto/n2_core.c | 6 +
drivers/crypto/omap-sham.c | 2 +-
drivers/devfreq/devfreq.c | 6 +-
drivers/devfreq/governor_userspace.c | 12 +-
drivers/dio/dio.c | 8 +
drivers/edac/edac_device.c | 17 +-
drivers/edac/edac_module.h | 2 +-
drivers/edac/i10nm_base.c | 3 +-
drivers/firmware/efi/efi.c | 9 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 +-
drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c | 3 +-
drivers/gpu/drm/drm_connector.c | 3 +
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 11 +-
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 5 +-
drivers/gpu/drm/i915/gvt/scheduler.c | 1 +
drivers/gpu/drm/mediatek/mtk_dpi.c | 12 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 10 +-
drivers/gpu/drm/panel/panel-sitronix-st7701.c | 10 +-
drivers/gpu/drm/radeon/radeon_bios.c | 19 +-
drivers/gpu/drm/rockchip/cdn-dp-core.c | 2 +-
drivers/gpu/drm/rockchip/inno_hdmi.c | 2 +-
drivers/gpu/drm/rockchip/rk3066_hdmi.c | 2 +-
drivers/gpu/drm/sti/sti_dvo.c | 7 +-
drivers/gpu/drm/sti/sti_hda.c | 7 +-
drivers/gpu/drm/sti/sti_hdmi.c | 7 +-
drivers/gpu/drm/tegra/dc.c | 4 +-
drivers/gpu/drm/virtio/virtgpu_ioctl.c | 10 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +-
drivers/hid/hid-ids.h | 5 +
drivers/hid/hid-ite.c | 26 +-
drivers/hid/hid-multitouch.c | 4 +
drivers/hid/hid-plantronics.c | 9 +
drivers/hid/hid-sensor-custom.c | 2 +-
drivers/hid/hid-uclogic-core.c | 1 +
drivers/hid/wacom_sys.c | 8 +
drivers/hid/wacom_wac.c | 4 +
drivers/hid/wacom_wac.h | 1 +
drivers/hsi/controllers/omap_ssi_core.c | 14 +-
drivers/i2c/busses/i2c-ismt.c | 3 +
drivers/i2c/busses/i2c-pxa-pci.c | 10 +-
drivers/i2c/muxes/i2c-mux-reg.c | 5 +-
drivers/iio/adc/ad_sigma_delta.c | 8 +-
drivers/iio/adc/ti-adc128s052.c | 14 +-
drivers/infiniband/core/device.c | 2 +-
drivers/infiniband/core/nldev.c | 4 +-
drivers/infiniband/core/uverbs_cmd.c | 2 +-
drivers/infiniband/hw/hfi1/affinity.c | 2 +
drivers/infiniband/hw/hfi1/firmware.c | 6 +
drivers/infiniband/hw/mlx5/qp.c | 49 ++-
drivers/infiniband/sw/rxe/rxe_qp.c | 6 +-
drivers/infiniband/sw/siw/siw_cq.c | 24 +-
drivers/infiniband/sw/siw/siw_qp_tx.c | 2 +-
drivers/infiniband/sw/siw/siw_verbs.c | 40 +-
drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 7 +
drivers/input/touchscreen/elants_i2c.c | 9 +-
drivers/iommu/amd_iommu_init.c | 7 +
drivers/iommu/amd_iommu_v2.c | 1 +
drivers/iommu/fsl_pamu.c | 2 +-
drivers/iommu/mtk_iommu_v1.c | 26 +-
drivers/irqchip/irq-gic-pm.c | 2 +-
drivers/isdn/hardware/mISDN/hfcmulti.c | 19 +-
drivers/isdn/hardware/mISDN/hfcpci.c | 13 +-
drivers/isdn/hardware/mISDN/hfcsusb.c | 12 +-
drivers/macintosh/macio-adb.c | 4 +
drivers/macintosh/macio_asic.c | 2 +-
drivers/mailbox/zynqmp-ipi-mailbox.c | 4 +-
drivers/mcb/mcb-core.c | 4 +-
drivers/mcb/mcb-parse.c | 2 +-
drivers/md/dm-cache-metadata.c | 54 ++-
drivers/md/dm-cache-target.c | 11 +-
drivers/md/dm-clone-target.c | 1 +
drivers/md/dm-integrity.c | 2 +
drivers/md/dm-thin-metadata.c | 60 ++-
drivers/md/dm-thin.c | 18 +-
drivers/md/md-bitmap.c | 47 ++-
drivers/md/md.c | 9 +-
drivers/md/raid1.c | 1 +
drivers/media/dvb-core/dmxdev.c | 8 +
drivers/media/dvb-core/dvb_ca_en50221.c | 2 +-
drivers/media/dvb-core/dvb_frontend.c | 10 +-
drivers/media/dvb-core/dvbdev.c | 33 +-
drivers/media/dvb-frontends/bcm3510.c | 1 +
drivers/media/dvb-frontends/stv0288.c | 5 +-
drivers/media/i2c/ad5820.c | 10 +-
drivers/media/pci/saa7164/saa7164-core.c | 4 +-
drivers/media/pci/solo6x10/solo6x10-core.c | 1 +
drivers/media/platform/coda/coda-bit.c | 14 +-
drivers/media/platform/exynos4-is/fimc-core.c | 2 +-
drivers/media/platform/exynos4-is/media-dev.c | 6 +-
drivers/media/platform/qcom/camss/camss-video.c | 3 +-
drivers/media/platform/s5p-mfc/s5p_mfc.c | 17 +-
drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c | 4 +-
drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 12 +-
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c | 14 +-
.../media/platform/sti/c8sectpfe/c8sectpfe-core.c | 1 +
drivers/media/platform/vivid/vivid-vid-cap.c | 1 +
drivers/media/radio/si470x/radio-si470x-usb.c | 4 +-
drivers/media/rc/imon.c | 6 +-
drivers/media/usb/dvb-usb/az6027.c | 4 +
drivers/media/usb/dvb-usb/dvb-usb-init.c | 4 +-
drivers/media/v4l2-core/videobuf-dma-contig.c | 22 +-
drivers/misc/cxl/guest.c | 24 +-
drivers/misc/cxl/pci.c | 21 +-
drivers/misc/ocxl/file.c | 7 +-
drivers/misc/sgi-gru/grufault.c | 13 +-
drivers/misc/sgi-gru/grumain.c | 22 +-
drivers/misc/sgi-gru/grutables.h | 2 +-
drivers/misc/tifm_7xx1.c | 2 +-
drivers/mmc/host/alcor.c | 5 +-
drivers/mmc/host/atmel-mci.c | 9 +-
drivers/mmc/host/meson-gx-mmc.c | 4 +-
drivers/mmc/host/mmci.c | 4 +-
drivers/mmc/host/moxart-mmc.c | 4 +-
drivers/mmc/host/mxcmmc.c | 4 +-
drivers/mmc/host/omap_hsmmc.c | 4 +-
drivers/mmc/host/pxamci.c | 7 +-
drivers/mmc/host/rtsx_usb_sdmmc.c | 11 +-
drivers/mmc/host/sdhci-sprd.c | 16 +-
drivers/mmc/host/sdhci_f_sdh30.c | 3 +
drivers/mmc/host/toshsd.c | 6 +-
drivers/mmc/host/via-sdmmc.c | 4 +-
drivers/mmc/host/vub300.c | 13 +-
drivers/mmc/host/wbsd.c | 12 +-
drivers/mmc/host/wmt-sdmmc.c | 6 +-
drivers/mtd/lpddr/lpddr2_nvm.c | 2 +
drivers/mtd/maps/pxa2xx-flash.c | 2 +
drivers/mtd/mtdcore.c | 4 +-
drivers/mtd/spi-nor/spi-nor.c | 2 +
drivers/net/bonding/bond_3ad.c | 1 +
drivers/net/bonding/bond_alb.c | 4 +-
drivers/net/bonding/bond_main.c | 98 +++--
drivers/net/can/m_can/tcan4x5x.c | 5 -
drivers/net/can/usb/kvaser_usb/kvaser_usb.h | 30 +-
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 115 +++++-
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 167 ++++++--
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 437 ++++++++++++++++++---
drivers/net/dsa/lan9303-core.c | 4 +-
drivers/net/ethernet/amd/atarilance.c | 2 +-
drivers/net/ethernet/amd/lance.c | 2 +-
drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 3 +
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c | 4 +-
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 4 +-
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 23 +-
drivers/net/ethernet/apple/bmac.c | 2 +-
drivers/net/ethernet/apple/mace.c | 2 +-
drivers/net/ethernet/dnet.c | 4 +-
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 3 +-
drivers/net/ethernet/intel/igb/igb_main.c | 10 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 14 +-
.../net/ethernet/mellanox/mlx5/core/lib/clock.c | 4 +-
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 1 +
drivers/net/ethernet/neterion/s2io.c | 2 +-
.../net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 8 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 8 +-
.../ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 2 +
drivers/net/ethernet/rdc/r6040.c | 5 +-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 3 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 8 +-
drivers/net/ethernet/ti/netcp_core.c | 2 +-
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 2 +-
drivers/net/fddi/defxx.c | 22 +-
drivers/net/hamradio/baycom_epp.c | 2 +-
drivers/net/hamradio/scc.c | 6 +-
drivers/net/loopback.c | 2 +-
drivers/net/ntb_netdev.c | 4 +-
drivers/net/phy/xilinx_gmii2rgmii.c | 1 +
drivers/net/ppp/ppp_generic.c | 2 +
drivers/net/usb/rndis_host.c | 3 +-
drivers/net/wan/farsync.c | 2 +
drivers/net/wireless/ath/ar5523/ar5523.c | 6 +
drivers/net/wireless/ath/ath10k/pci.c | 20 +-
drivers/net/wireless/ath/ath9k/hif_usb.c | 46 ++-
.../broadcom/brcm80211/brcmfmac/firmware.c | 5 +
.../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 6 +-
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 12 +-
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 2 +-
.../net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 16 +-
drivers/net/wireless/rsi/rsi_91x_core.c | 4 +-
drivers/net/wireless/rsi/rsi_91x_hal.c | 6 +-
drivers/net/xen-netback/xenbus.c | 3 +-
drivers/nfc/pn533/pn533.c | 4 +
drivers/nfc/pn533/usb.c | 44 ++-
drivers/nvme/host/pci.c | 31 +-
drivers/of/overlay.c | 4 +-
drivers/parisc/led.c | 3 +
drivers/pci/irq.c | 2 +
drivers/pci/pci-sysfs.c | 13 +-
drivers/pci/pci.c | 2 +
drivers/perf/arm_dsu_pmu.c | 6 +-
drivers/perf/arm_smmuv3_pmu.c | 8 +-
drivers/pinctrl/pinconf-generic.c | 4 +-
drivers/platform/x86/mxm-wmi.c | 8 +-
drivers/platform/x86/sony-laptop.c | 21 +-
drivers/pnp/core.c | 4 +-
drivers/power/avs/smartreflex.c | 1 +
drivers/power/supply/power_supply_core.c | 7 +-
drivers/pwm/pwm-sifive.c | 5 +-
drivers/rapidio/devices/rio_mport_cdev.c | 15 +-
drivers/rapidio/rio-scan.c | 8 +-
drivers/rapidio/rio.c | 9 +-
drivers/regulator/core.c | 15 +-
drivers/regulator/da9211-regulator.c | 11 +-
drivers/remoteproc/qcom_q6v5_pas.c | 1 +
drivers/remoteproc/qcom_sysmon.c | 5 +-
drivers/rtc/rtc-cmos.c | 366 ++++++++---------
drivers/rtc/rtc-mxc_v2.c | 4 +-
drivers/rtc/rtc-pcf85063.c | 8 +-
drivers/rtc/rtc-pic32.c | 8 +-
drivers/rtc/rtc-snvs.c | 16 +-
drivers/rtc/rtc-st-lpc.c | 1 +
drivers/s390/net/ctcm_main.c | 11 +-
drivers/s390/net/lcs.c | 8 +-
drivers/s390/net/netiucv.c | 9 +-
drivers/scsi/fcoe/fcoe.c | 1 +
drivers/scsi/fcoe/fcoe_sysfs.c | 19 +-
drivers/scsi/hpsa.c | 9 +-
drivers/scsi/ipr.c | 10 +-
drivers/scsi/mpt3sas/mpt3sas_transport.c | 2 +
drivers/scsi/scsi_debug.c | 2 +-
drivers/scsi/snic/snic_disc.c | 3 +
drivers/soc/qcom/Kconfig | 15 +-
drivers/soc/qcom/Makefile | 3 +-
drivers/soc/qcom/{llcc-slice.c => llcc-qcom.c} | 62 ++-
drivers/soc/qcom/llcc-sdm845.c | 100 -----
drivers/soc/ti/knav_qmss_queue.c | 6 +-
drivers/soc/ux500/ux500-soc-id.c | 10 +-
drivers/spi/spi-gpio.c | 16 +-
drivers/spi/spidev.c | 21 +-
drivers/staging/rtl8192e/rtllib_rx.c | 2 +-
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 4 +-
drivers/staging/wilc1000/wilc_sdio.c | 1 +
drivers/tty/hvc/hvc_xen.c | 46 ++-
drivers/tty/serial/altera_uart.c | 21 +-
drivers/tty/serial/amba-pl011.c | 14 +-
drivers/tty/serial/pch_uart.c | 4 +
drivers/tty/serial/serial-tegra.c | 115 +++---
drivers/tty/serial/sunsab.c | 8 +-
drivers/uio/uio_dmem_genirq.c | 13 +-
drivers/usb/dwc3/core.c | 7 +-
drivers/usb/gadget/function/f_hid.c | 271 ++++++++++---
drivers/usb/gadget/function/f_uvc.c | 5 +-
drivers/usb/gadget/function/u_hid.h | 1 +
drivers/usb/gadget/udc/fotg210-udc.c | 12 +-
drivers/usb/musb/musb_gadget.c | 2 -
drivers/usb/roles/class.c | 5 +-
drivers/usb/serial/cp210x.c | 2 +
drivers/usb/serial/f81232.c | 12 +-
drivers/usb/serial/f81534.c | 12 +-
drivers/usb/serial/option.c | 3 +
drivers/usb/storage/alauda.c | 2 +
drivers/usb/typec/bus.c | 2 +-
drivers/usb/typec/tcpm/tcpci.c | 5 +-
drivers/vfio/platform/vfio_platform_common.c | 3 +-
drivers/vhost/vhost.c | 4 +-
drivers/video/fbdev/Kconfig | 1 -
drivers/video/fbdev/pm2fb.c | 9 +-
drivers/video/fbdev/uvesafb.c | 1 +
drivers/video/fbdev/vermilion/vermilion.c | 4 +-
drivers/video/fbdev/via/via-core.c | 9 +-
drivers/vme/bridges/vme_fake.c | 2 +
drivers/vme/bridges/vme_tsi148.c | 1 +
drivers/xen/events/events_base.c | 10 +-
drivers/xen/privcmd.c | 2 +-
fs/binfmt_aout.c | 2 +-
fs/binfmt_elf_fdpic.c | 7 +-
fs/binfmt_flat.c | 3 +-
fs/binfmt_misc.c | 8 +-
fs/btrfs/backref.c | 4 +
fs/btrfs/ioctl.c | 9 +-
fs/btrfs/rcu-string.h | 6 +-
fs/char_dev.c | 2 +-
fs/cifs/cifsfs.c | 8 +-
fs/cifs/cifsglob.h | 70 ++++
fs/cifs/cifsproto.h | 4 +-
fs/cifs/connect.c | 4 +-
fs/cifs/link.c | 1 +
fs/cifs/misc.c | 4 +-
fs/cifs/smb2ops.c | 143 ++++---
fs/configfs/dir.c | 2 +
fs/debugfs/file.c | 28 +-
fs/ext4/ext4.h | 9 +-
fs/ext4/ext4_jbd2.c | 20 +-
fs/ext4/ext4_jbd2.h | 55 ++-
fs/ext4/extents.c | 76 ++--
fs/ext4/extents_status.c | 3 +-
fs/ext4/indirect.c | 102 +++--
fs/ext4/inode.c | 74 ++--
fs/ext4/ioctl.c | 13 +-
fs/ext4/migrate.c | 95 ++---
fs/ext4/namei.c | 3 +
fs/ext4/resize.c | 52 +--
fs/ext4/super.c | 50 ++-
fs/ext4/verity.c | 7 +-
fs/ext4/xattr.c | 274 ++++++-------
fs/ext4/xattr.h | 1 +
fs/f2fs/gc.c | 6 +-
fs/f2fs/segment.c | 2 +-
fs/hfs/inode.c | 13 +-
fs/hfs/trans.c | 2 +-
fs/hfsplus/hfsplus_fs.h | 2 +
fs/hfsplus/inode.c | 16 +-
fs/hfsplus/options.c | 4 +
fs/hugetlbfs/inode.c | 6 +-
fs/jbd2/transaction.c | 135 +++----
fs/jfs/jfs_dmap.c | 27 +-
fs/libfs.c | 22 +-
fs/mbcache.c | 121 ++++--
fs/nfs/nfs4proc.c | 34 +-
fs/nfs/nfs4state.c | 2 +
fs/nfs/nfs4xdr.c | 12 +-
fs/nfsd/nfs4callback.c | 4 +-
fs/nfsd/nfs4state.c | 51 ++-
fs/nfsd/nfs4xdr.c | 11 +
fs/nfsd/nfscache.c | 57 +--
fs/nfsd/nfssvc.c | 2 +-
fs/nfsd/trace.h | 65 +++
fs/nilfs2/the_nilfs.c | 31 +-
fs/ocfs2/alloc.c | 32 +-
fs/ocfs2/dlmglue.c | 8 +-
fs/ocfs2/journal.c | 6 +-
fs/ocfs2/journal.h | 1 +
fs/ocfs2/stackglue.c | 8 +-
fs/ocfs2/super.c | 108 ++---
fs/orangefs/orangefs-debugfs.c | 29 +-
fs/orangefs/orangefs-mod.c | 8 +-
fs/overlayfs/dir.c | 46 ++-
fs/pnode.c | 2 +-
fs/pstore/Kconfig | 1 +
fs/pstore/pmsg.c | 7 +-
fs/pstore/ram.c | 2 +
fs/pstore/ram_core.c | 6 +-
fs/quota/dquot.c | 110 ++++--
fs/reiserfs/namei.c | 4 +
fs/reiserfs/xattr_security.c | 2 +-
fs/sysv/itree.c | 2 +-
fs/udf/inode.c | 76 ++--
fs/udf/namei.c | 8 +-
fs/udf/truncate.c | 48 +--
fs/xattr.c | 2 +-
include/linux/cpuhotplug.h | 1 +
include/linux/debugfs.h | 19 +-
include/linux/devfreq.h | 11 +-
include/linux/eventfd.h | 2 +-
include/linux/fs.h | 12 +-
include/linux/highmem.h | 18 +
include/linux/jbd2.h | 6 +
include/linux/mbcache.h | 41 +-
include/linux/netdevice.h | 58 +--
include/linux/nvme.h | 56 ++-
include/linux/platform_device.h | 3 +
include/linux/proc_fs.h | 2 +
include/linux/quotaops.h | 2 +
include/linux/soc/qcom/llcc-qcom.h | 57 +--
include/linux/sunrpc/rpc_pipe_fs.h | 5 +
include/linux/timerqueue.h | 2 +-
include/linux/tpm_eventlog.h | 4 +-
include/media/dvbdev.h | 32 +-
include/net/bonding.h | 2 +-
include/net/dst.h | 5 +-
include/net/mrp.h | 1 +
include/sound/hdaudio.h | 2 +
include/sound/hdaudio_ext.h | 1 -
include/sound/pcm.h | 36 +-
include/trace/events/jbd2.h | 40 +-
include/uapi/linux/swab.h | 2 +-
include/uapi/sound/asequencer.h | 8 +-
kernel/acct.c | 2 +
kernel/bpf/btf.c | 5 +
kernel/bpf/verifier.c | 5 +
kernel/events/core.c | 8 +-
kernel/gcov/gcc_4_7.c | 5 +
kernel/irq/internals.h | 2 +
kernel/irq/irqdesc.c | 15 +-
kernel/power/snapshot.c | 4 +-
kernel/rcu/tree.c | 2 +-
kernel/relay.c | 4 +-
kernel/trace/blktrace.c | 3 +-
kernel/trace/ring_buffer.c | 1 +
kernel/trace/trace.c | 15 +-
kernel/trace/trace_events_hist.c | 13 +-
lib/debugobjects.c | 35 ++
lib/fonts/fonts.c | 4 +-
lib/iov_iter.c | 14 -
lib/notifier-error-inject.c | 2 +-
lib/test_firmware.c | 1 +
mm/compaction.c | 18 +-
mm/memblock.c | 8 +-
net/802/mrp.c | 18 +-
net/bluetooth/hci_core.c | 2 +-
net/bluetooth/l2cap_core.c | 3 +-
net/bluetooth/rfcomm/core.c | 2 +-
net/bpf/test_run.c | 3 -
net/caif/cfctrl.c | 6 +-
net/core/dev.c | 14 +-
net/core/filter.c | 18 +-
net/core/skbuff.c | 3 +
net/core/sock_map.c | 2 +
net/core/stream.c | 6 +
net/hsr/hsr_framereg.c | 16 +-
net/hsr/hsr_framereg.h | 1 +
net/ipv4/inet_connection_sock.c | 16 +-
net/ipv4/tcp_bpf.c | 8 +-
net/ipv4/udp_tunnel.c | 1 +
net/ipv6/raw.c | 4 +
net/mac80211/iface.c | 1 +
net/netfilter/ipset/ip_set_bitmap_ip.c | 4 +-
net/netfilter/nf_conntrack_proto_icmpv6.c | 53 +++
net/nfc/netlink.c | 52 ++-
net/openvswitch/datapath.c | 25 +-
net/packet/af_packet.c | 20 +-
net/rxrpc/output.c | 2 +-
net/rxrpc/sendmsg.c | 2 +-
net/sched/act_mpls.c | 8 +-
net/sched/cls_tcindex.c | 12 +-
net/sched/ematch.c | 2 +
net/sched/sch_api.c | 5 +
net/sched/sch_atm.c | 5 +-
net/sched/sch_cbq.c | 5 +-
net/sunrpc/auth_gss/auth_gss.c | 19 +-
net/sunrpc/auth_gss/svcauth_gss.c | 9 +-
net/sunrpc/clnt.c | 2 +-
net/sunrpc/xprtrdma/verbs.c | 1 +
net/tipc/core.c | 16 +
net/tipc/core.h | 6 +
net/tipc/discover.c | 4 +-
net/tipc/msg.h | 19 +
net/tipc/name_distr.c | 2 +-
net/tipc/node.c | 172 +++++++-
net/tipc/node.h | 5 +-
net/tipc/socket.c | 6 +-
net/vmw_vsock/vmci_transport.c | 6 +-
net/wireless/reg.c | 4 +-
samples/vfio-mdev/mdpy-fb.c | 8 +-
security/apparmor/apparmorfs.c | 4 +-
security/apparmor/lsm.c | 4 +-
security/apparmor/policy.c | 2 +-
security/apparmor/policy_unpack.c | 2 +-
security/device_cgroup.c | 33 +-
security/integrity/digsig.c | 6 +-
security/integrity/ima/ima.h | 16 +-
security/integrity/ima/ima_main.c | 1 +
security/integrity/ima/ima_policy.c | 65 +--
security/integrity/ima/ima_template.c | 9 +-
security/integrity/platform_certs/load_uefi.c | 1 +
sound/core/control_compat.c | 4 +
sound/drivers/mts64.c | 3 +
sound/hda/ext/hdac_ext_stream.c | 17 -
sound/hda/hdac_stream.c | 27 ++
sound/pci/asihpi/hpioctl.c | 2 +-
sound/pci/hda/hda_controller.c | 4 +-
sound/pci/hda/patch_hdmi.c | 2 +
sound/pci/hda/patch_realtek.c | 27 ++
sound/soc/codecs/pcm512x.c | 8 +-
sound/soc/codecs/rt298.c | 7 +
sound/soc/codecs/rt5670.c | 2 -
sound/soc/codecs/wm8994.c | 5 +
sound/soc/generic/audio-graph-card.c | 4 +-
sound/soc/intel/boards/bytcr_rt5640.c | 15 +
sound/soc/intel/skylake/skl.c | 7 +-
sound/soc/mediatek/common/mtk-btcvsd.c | 6 +-
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 20 +-
sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c | 7 +-
sound/soc/pxa/mmp-pcm.c | 2 +-
sound/soc/rockchip/rockchip_pdm.c | 1 +
sound/soc/rockchip/rockchip_spdif.c | 1 +
sound/usb/line6/driver.c | 3 +-
sound/usb/line6/midi.c | 6 +-
sound/usb/line6/midibuf.c | 25 +-
sound/usb/line6/midibuf.h | 5 +-
sound/usb/line6/pod.c | 3 +-
tools/arch/parisc/include/uapi/asm/mman.h | 12 +-
tools/arch/x86/include/uapi/asm/vmx.h | 4 +-
tools/objtool/check.c | 2 +-
tools/perf/bench/bench.h | 12 -
tools/perf/builtin-trace.c | 135 +++++--
tools/perf/trace/beauty/beauty.h | 3 +
tools/perf/util/auxtrace.c | 2 +-
tools/perf/util/data.c | 2 +
tools/perf/util/debug.c | 4 +
tools/perf/util/dwarf-aux.c | 23 +-
tools/perf/util/symbol-elf.c | 2 +-
tools/testing/ktest/ktest.pl | 23 +-
tools/testing/selftests/Makefile | 28 +-
tools/testing/selftests/efivarfs/efivarfs.sh | 5 +
.../ftrace/test.d/ftrace/func_event_triggers.tc | 15 +-
tools/testing/selftests/kvm/include/x86_64/vmx.h | 8 +-
.../selftests/kvm/x86_64/vmx_tsc_adjust_test.c | 2 +-
tools/testing/selftests/lib.mk | 5 +
.../selftests/netfilter/conntrack_icmp_related.sh | 36 +-
.../selftests/powerpc/dscr/dscr_sysfs_test.c | 5 +-
tools/testing/selftests/proc/proc-uptime-002.c | 3 +-
603 files changed, 6390 insertions(+), 3248 deletions(-)
^ permalink raw reply [relevance 1%]
* [PATCH 5.10 000/783] 5.10.163-rc1 review
@ 2023-01-12 13:45 1% Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2023-01-12 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow
This is the start of the stable review cycle for the 5.10.163 release.
There are 783 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Sat, 14 Jan 2023 13:53:18 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.163-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.10.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.10.163-rc1
Paolo Abeni <pabeni@redhat.com>
net/ulp: prevent ULP without clone op from entering the LISTEN status
Frederick Lawler <fred@cloudflare.com>
net: sched: disallow noqueue for qdisc classes
Mat Martineau <mathew.j.martineau@linux.intel.com>
mptcp: use proper req destructor for IPv6
Mat Martineau <mathew.j.martineau@linux.intel.com>
mptcp: dedicated request sock for subflow in v6
Mat Martineau <mathew.j.martineau@linux.intel.com>
mptcp: remove MPTCP 'ifdef' in TCP SYN cookies
Mat Martineau <mathew.j.martineau@linux.intel.com>
mptcp: mark ops structures as ro_after_init
Rasmus Villemoes <linux@rasmusvillemoes.dk>
serial: fixup backport of "serial: Deassert Transmit Enable on probe in driver-specific way"
Indan Zupancic <Indan.Zupancic@mep-info.com>
fsl_lpuart: Don't enable interrupts too early
Eric Biggers <ebiggers@google.com>
ext4: don't set up encryption key during jbd2 transaction
Eric Biggers <ebiggers@google.com>
ext4: disable fast-commit of encrypted dir operations
Helge Deller <deller@gmx.de>
parisc: Align parisc MADV_XXX constants with all other architectures
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
io_uring: Fix unsigned 'res' comparison with zero in io_fixup_rw_res()
Ard Biesheuvel <ardb@kernel.org>
efi: random: combine bootloader provided RNG seed with RNG protocol output
Jan Kara <jack@suse.cz>
mbcache: Avoid nesting of cache->c_list_lock under bit locks
Linus Torvalds <torvalds@linux-foundation.org>
hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
Arnd Bergmann <arnd@arndb.de>
hfs/hfsplus: use WARN_ON for sanity check
Muhammad Usama Anjum <usama.anjum@collabora.com>
selftests: set the BUILD variable to absolute path
Eric Biggers <ebiggers@google.com>
ext4: don't allow journal inode to have encrypt flag
Zhenyu Wang <zhenyuw@linux.intel.com>
drm/i915/gvt: fix vgpu debugfs clean in remove
Zhenyu Wang <zhenyuw@linux.intel.com>
drm/i915/gvt: fix gvt debugfs destroy
Ben Dooks <ben-linux@fluff.org>
riscv: uaccess: fix type of 0 variable on error in get_user()
Paul Menzel <pmenzel@molgen.mpg.de>
fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB
Jeff Layton <jlayton@kernel.org>
nfsd: fix handling of readdir in v4root vs. mount upcall timeout
Rodrigo Branco <bsdaemon@google.com>
x86/bugs: Flush IBP in ib_prctl_set()
Yanjun Zhang <zhangyanjun@cestc.cn>
nvme: fix multipath crash caused by flush request when blktrace is enabled
Hans de Goede <hdegoede@redhat.com>
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
Jan Kara <jack@suse.cz>
udf: Fix extension of the last extent in the file
Zhengchao Shao <shaozhengchao@huawei.com>
caif: fix memory leak in cfctrl_linkup_request()
Dan Carpenter <error27@gmail.com>
drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()
Szymon Heidrich <szymon.heidrich@gmail.com>
usb: rndis_host: Secure rndis_query check against int overflow
Daniil Tatianin <d-tatianin@yandex-team.ru>
drivers/net/bonding/bond_3ad: return when there's no aggregator
Miaoqian Lin <linmq006@gmail.com>
perf tools: Fix resources leak in perf_data__open_dir()
Jozsef Kadlecsik <kadlec@netfilter.org>
netfilter: ipset: Rework long task execution when adding/deleting entries
Jozsef Kadlecsik <kadlec@netfilter.org>
netfilter: ipset: fix hash:net,port,net hang with /0 subnet
Jamal Hadi Salim <jhs@mojatatu.com>
net: sched: cbq: dont intepret cls results when asked to drop
Jamal Hadi Salim <jhs@mojatatu.com>
net: sched: atm: dont intepret cls results when asked to drop
Miaoqian Lin <linmq006@gmail.com>
gpio: sifive: Fix refcount leak in sifive_gpio_probe
Xiubo Li <xiubli@redhat.com>
ceph: switch to vfs_inode_has_locks() to fix file lock bug
Jeff Layton <jlayton@kernel.org>
filelock: new helper: vfs_inode_has_locks
Carlo Caione <ccaione@baylibre.com>
drm/meson: Reduce the FIFO lines held when AFBC is not used
Maor Gottlieb <maorg@nvidia.com>
RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
Miaoqian Lin <linmq006@gmail.com>
net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
Jiguang Xiao <jiguang.xiao@windriver.com>
net: amd-xgbe: add missed tasklet_kill
Adham Faris <afaris@nvidia.com>
net/mlx5e: Fix hw mtu initializing at XDP SQ allocation
Dragos Tatulea <dtatulea@nvidia.com>
net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default
Shay Drory <shayd@nvidia.com>
net/mlx5: Avoid recovery in probe flows
Jiri Pirko <jiri@nvidia.com>
net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path
Stefano Garzarella <sgarzare@redhat.com>
vhost: fix range used in translate_desc()
Stefano Garzarella <sgarzare@redhat.com>
vringh: fix range used in iotlb_translate()
Yuan Can <yuancan@huawei.com>
vhost/vsock: Fix error handling in vhost_vsock_init()
Miaoqian Lin <linmq006@gmail.com>
nfc: Fix potential resource leaks
Daniil Tatianin <d-tatianin@yandex-team.ru>
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
Hawkins Jiawei <yin31149@gmail.com>
net: sched: fix memory leak in tcindex_set_parms
Jie Wang <wangjie125@huawei.com>
net: hns3: add interrupts re-initialization while doing VF FLR
Jeff Layton <jlayton@kernel.org>
nfsd: shut down the NFSv4 state objects before the filecache
Shawn Bohrer <sbohrer@cloudflare.com>
veth: Fix race with AF_XDP exposing old or uninitialized descriptors
Ronak Doshi <doshir@vmware.com>
vmxnet3: correctly report csum_level for encapsulated packet
Steven Price <steven.price@arm.com>
drm/panfrost: Fix GEM handle creation ref-counting
Jakub Kicinski <kuba@kernel.org>
bpf: pull before calling skb_postpull_rcsum()
minoura makoto <minoura@valinux.co.jp>
SUNRPC: ensure the matching upcall is in-flight upon downcall
Jan Kara <jack@suse.cz>
ext4: fix deadlock due to mbcache entry corruption
Jan Kara <jack@suse.cz>
mbcache: automatically delete entries from cache on freeing
Jan Kara <jack@suse.cz>
ext4: fix race when reusing xattr blocks
Jan Kara <jack@suse.cz>
ext4: unindent codeblock in ext4_xattr_block_set()
Jan Kara <jack@suse.cz>
ext4: remove EA inode entry from mbcache on inode eviction
Jan Kara <jack@suse.cz>
mbcache: add functions to delete entry if unused
Jan Kara <jack@suse.cz>
mbcache: don't reclaim used entries
Shuqi Zhang <zhangshuqi3@huawei.com>
ext4: use kmemdup() to replace kmalloc + memcpy
Eric Biggers <ebiggers@google.com>
ext4: fix leaking uninitialized memory in fast-commit journal
Bhaskar Chowdhury <unixbhaskar@gmail.com>
ext4: fix various seppling typos
Jan Kara <jack@suse.cz>
ext4: simplify ext4 error translation
Jan Kara <jack@suse.cz>
ext4: move functions in super.c
Alexander Potapenko <glider@google.com>
fs: ext4: initialize fsdata in pagecache_write()
Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
ext4: use memcpy_to_page() in pagecache_write()
Ira Weiny <ira.weiny@intel.com>
mm/highmem: Lift memcpy_[to|from]_page to core
Baokun Li <libaokun1@huawei.com>
ext4: correct inconsistent error msg in nojournal mode
Jason Yan <yanaijie@huawei.com>
ext4: goto right label 'failed_mount3a'
Guo Ren <guoren@linux.alibaba.com>
riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument
Chen Huang <chenhuang5@huawei.com>
riscv/stacktrace: Fix stack output without ra on the stack top
Biju Das <biju.das.jz@bp.renesas.com>
ravb: Fix "failed to switch device to config mode" message during unbind
Luca Ceresoli <luca.ceresoli@bootlin.com>
staging: media: tegra-video: fix device_node use after free
Masami Hiramatsu (Google) <mhiramat@kernel.org>
x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK
Borislav Petkov <bp@suse.de>
x86/kprobes: Convert to insn_decode()
Masami Hiramatsu (Google) <mhiramat@kernel.org>
perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
Masami Hiramatsu (Google) <mhiramat@kernel.org>
perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix in register read and write for H264
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Clear workbit to handle error condition
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix to handle reference queue during finishing
Yazen Ghannam <yazen.ghannam@amd.com>
x86/MCE/AMD: Clear DFR errors found in THR handler
Borislav Petkov <bp@suse.de>
x86/mce: Get rid of msr_ops
Sasha Levin <sashal@kernel.org>
btrfs: replace strncpy() with strscpy()
Alexander Antonov <alexander.antonov@linux.intel.com>
perf/x86/intel/uncore: Clear attr_update properly
Alexander Antonov <alexander.antonov@linux.intel.com>
perf/x86/intel/uncore: Generalize I/O stacks to PMON mapping procedure
Jens Axboe <axboe@kernel.dk>
ARM: renumber bits related to _TIF_WORK_MASK
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: make display pinning more flexible (v2)
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: handle polaris10/11 overlap asics (v2)
Ye Bin <yebin10@huawei.com>
ext4: allocate extended attribute value in vmalloc area
Jan Kara <jack@suse.cz>
ext4: avoid unaccounted block allocation when expanding inode
Jan Kara <jack@suse.cz>
ext4: initialize quota before expanding inode in setproject ioctl
Ye Bin <yebin10@huawei.com>
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
Jan Kara <jack@suse.cz>
ext4: avoid BUG_ON when creating xattrs
Luís Henriques <lhenriques@suse.de>
ext4: fix error code return to user-space in ext4_get_branch()
Baokun Li <libaokun1@huawei.com>
ext4: fix corruption when online resizing a 1K bigalloc fs
Eric Whitney <enwlinux@gmail.com>
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
Ye Bin <yebin10@huawei.com>
ext4: init quota for 'old.inode' in 'ext4_rename'
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
Zhang Yi <yi.zhang@huawei.com>
ext4: check and assert if marking an no_delete evicting inode dirty
Ye Bin <yebin10@huawei.com>
ext4: fix reserved cluster accounting in __es_remove_extent()
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad quota inode
Baokun Li <libaokun1@huawei.com>
ext4: add helper to check quota inums
Baokun Li <libaokun1@huawei.com>
ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
Gaosheng Cui <cuigaosheng1@huawei.com>
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
Baokun Li <libaokun1@huawei.com>
ext4: fix use-after-free in ext4_orphan_cleanup
Baokun Li <libaokun1@huawei.com>
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
Zhang Yi <yi.zhang@huawei.com>
ext4: silence the warning when evicting inode with dioread_nolock
Yuan Can <yuancan@huawei.com>
drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init()
Mikko Kovanen <mikko.kovanen@aavamobile.com>
drm/i915/dsi: fix VBT send packet port selection for dual link DSI
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Validate the box size for the snooped cursor
Simon Ser <contact@emersion.fr>
drm/connector: send hotplug uevent on connector cleanup
Wang Weiyang <wangweiyang2@huawei.com>
device_cgroup: Roll back to original exceptions after copy failure
Shang XiaoJing <shangxiaojing@huawei.com>
parisc: led: Fix potential null-ptr-deref in start_task()
Maria Yu <quic_aiquny@quicinc.com>
remoteproc: core: Do pm_relax when in RPROC_OFFLINE state
Kim Phillips <kim.phillips@amd.com>
iommu/amd: Fix ivrs_acpihid cmdline parsing code
Isaac J. Manjarres <isaacmanjarres@google.com>
driver core: Fix bus_type.match() error handling in __driver_attach()
Corentin Labbe <clabbe@baylibre.com>
crypto: n2 - add missing hash statesize
Sascha Hauer <s.hauer@pengutronix.de>
PCI/sysfs: Fix double free in error path
Michael S. Tsirkin <mst@redhat.com>
PCI: Fix pci_device_is_present() for VFs by checking PF
Dan Carpenter <error27@gmail.com>
ipmi: fix use after free in _ipmi_destroy_user()
Huaxin Lu <luhuaxin1@huawei.com>
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
Alexander Sverdlin <alexander.sverdlin@nokia.com>
mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix long wait in unload when IPMI disconnect
Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
ASoC: jz4740-i2s: Handle independent FIFO flush bits
Michael Walle <michael@walle.cc>
wifi: wilc1000: sdio: fix module autoloading
Aditya Garg <gargaditya08@live.com>
efi: Add iMac Pro 2017 to uefi skip cert quirk
Florian-Ewald Mueller <florian-ewald.mueller@ionos.com>
md/bitmap: Fix bitmap chunk size overflow issues
Ian Abbott <abbotti@mev.co.uk>
rtc: ds1347: fix value written to century register
Steve French <stfrench@microsoft.com>
cifs: fix missing display of three mount options
Paulo Alcantara <pc@cjr.nz>
cifs: fix confusing debug message
Takashi Iwai <tiwai@suse.de>
media: dvb-core: Fix UAF due to refcount races at releasing
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
media: dvb-core: Fix double free in dvb_register_device()
Nick Desaulniers <ndesaulniers@google.com>
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
Luca Ceresoli <luca.ceresoli@bootlin.com>
staging: media: tegra-video: fix chan->mipi value on error
Yang Jihong <yangjihong1@huawei.com>
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix wrong return value in parse_action_params()
Masami Hiramatsu (Google) <mhiramat@kernel.org>
x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK
Steven Rostedt (Google) <rostedt@goodmis.org>
ftrace/x86: Add back ftrace_expected for ftrace bug reports
Ashok Raj <ashok.raj@intel.com>
x86/microcode/intel: Do not retry microcode reloading on the APs
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails
Namhyung Kim <namhyung@kernel.org>
perf/core: Call LSM hook after copying perf_event_attr
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx'
Mike Snitzer <snitzer@kernel.org>
dm cache: set needs_check flag after aborting metadata
Luo Meng <luomeng12@huawei.com>
dm cache: Fix UAF in destroy()
Luo Meng <luomeng12@huawei.com>
dm clone: Fix UAF in clone_dtr()
Luo Meng <luomeng12@huawei.com>
dm integrity: Fix UAF in dm_integrity_dtr()
Luo Meng <luomeng12@huawei.com>
dm thin: Fix UAF in run_timer_softirq()
Luo Meng <luomeng12@huawei.com>
dm thin: resume even if in FAIL mode
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Use last transaction's pmd->root when commit failed
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata
Mike Snitzer <snitzer@kernel.org>
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
Chris Chiu <chris.chiu@canonical.com>
ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops
Philipp Jungkamp <p.jungkamp@gmx.net>
ALSA: patch_realtek: Fix Dell Inspiron Plus 16
Yongqiang Liu <liuyongqiang13@huawei.com>
cpufreq: Init completion before kobject_init_and_add()
Kant Fan <kant@allwinnertech.com>
PM/devfreq: governor: Add a private governor_data for governor
Mickaël Salaün <mic@digikod.net>
selftests: Use optional USERCFLAGS and USERLDFLAGS
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
Jason A. Donenfeld <Jason@zx2c4.com>
ARM: ux500: do not directly dereference __iomem
Boris Burkov <boris@bur.io>
btrfs: fix resolving backrefs for inline extent followed by prealloc
Wenchao Chen <wenchao.chen@unisoc.com>
mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength
Bixuan Cui <cuibixuan@linux.alibaba.com>
jbd2: use the correct print format
Steven Rostedt <rostedt@goodmis.org>
ktest.pl minconfig: Unset configs instead of just removing them
Steven Rostedt <rostedt@goodmis.org>
kest.pl: Fix grub2 menu handling for rebooting
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
soc: qcom: Select REMAP_MMIO for LLCC driver
Jason A. Donenfeld <Jason@zx2c4.com>
media: stv0288: use explicitly signed char
Eric Dumazet <edumazet@google.com>
net/af_packet: make sure to pull mac header
Hangbin Liu <liuhangbin@gmail.com>
net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO
Paul E. McKenney <paulmck@kernel.org>
rcu: Prevent lockdep-RCU splats on lock acquisition/release
Paul E. McKenney <paulmck@kernel.org>
torture: Exclude "NOHZ tick-stop error" from fatal errors
Ping-Ke Shih <pkshih@realtek.com>
wifi: rtlwifi: 8192de: correct checking of IQK reload
Jakub Kicinski <kuba@kernel.org>
wifi: rtlwifi: remove always-true condition pointed out by GCC 12
Dima Chumak <dchumak@nvidia.com>
net/mlx5e: Fix nullptr in mlx5e_tc_add_fdb_flow()
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio
Marco Elver <elver@google.com>
kcsan: Instrument memcpy/memset/memmove with newer Clang
Chuck Lever <chuck.lever@oracle.com>
SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails
Hanjun Guo <guohanjun@huawei.com>
tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak
Hanjun Guo <guohanjun@huawei.com>
tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak
Hanjun Guo <guohanjun@huawei.com>
tpm: acpi: Call acpi_put_table() to fix memory leak
Deren Wu <deren.wu@mediatek.com>
mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
Pavel Machek <pavel@denx.de>
f2fs: should put a page when checking the summary info
NARIBAYASHI Akira <a.naribayashi@fujitsu.com>
mm, compaction: fix fast_isolate_around() to stay within boundaries
Mikulas Patocka <mpatocka@redhat.com>
md: fix a crash in mempool_free
Christian Brauner <brauner@kernel.org>
pnode: terminate at peers of source
Artem Egorkine <arteme@gmail.com>
ALSA: line6: fix stack overflow in line6_midi_transmit
Artem Egorkine <arteme@gmail.com>
ALSA: line6: correct midi status byte when receiving data from podxt
Zhang Tianci <zhangtianci.1997@bytedance.com>
ovl: Use ovl mounter's fsuid and fsgid in ovl_link()
Wang Yufen <wangyufen@huawei.com>
binfmt: Fix error return code in load_elf_fdpic_binary()
Aditya Garg <gargaditya08@live.com>
hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
Qiujun Huang <hqjagain@gmail.com>
pstore/zone: Use GFP_ATOMIC to allocate zone buffer
Terry Junge <linuxhid@cosmicgizmosystems.com>
HID: plantronics: Additional PIDs for double volume key presses quirk
José Expósito <jose.exposito89@gmail.com>
HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/rtas: avoid scheduling in rtas_os_term()
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/rtas: avoid device tree lookups in rtas_os_term()
Christophe Leroy <christophe.leroy@csgroup.eu>
objtool: Fix SEGFAULT
Christoph Hellwig <hch@lst.de>
nvmet: don't defer passthrough commands with trivial effects to the workqueue
Christoph Hellwig <hch@lst.de>
nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition
Adam Vodopjan <grozzly@protonmail.com>
ata: ahci: Fix PCS quirk application for suspend
Keith Busch <kbusch@kernel.org>
nvme-pci: fix page size checks
Keith Busch <kbusch@kernel.org>
nvme-pci: fix mempool alloc size
Klaus Jensen <k.jensen@samsung.com>
nvme-pci: fix doorbell buffer value endianness
Paulo Alcantara <pc@cjr.nz>
cifs: fix oops during encryption
Miaoqian Lin <linmq006@gmail.com>
usb: dwc3: qcom: Fix memory leak in dwc3_qcom_interconnect_init
Steven Price <steven.price@arm.com>
pwm: tegra: Fix 32 bit build
Lin Ma <linma@zju.edu.cn>
media: dvbdev: fix refcnt bug
Lin Ma <linma@zju.edu.cn>
media: dvbdev: fix build warning due to comments
Chen Zhongjin <chenzhongjin@huawei.com>
ovl: fix use inode directly in rcu-walk mode
Rickard x Andersson <rickaran@axis.com>
gcov: add support for checksum field
Johan Hovold <johan+linaro@kernel.org>
regulator: core: fix deadlock on regulator enable
Rasmus Villemoes <linux@rasmusvillemoes.dk>
iio: adc128s052: add proper .data members in adc128_of_match table
Nuno Sá <nuno.sa@analog.com>
iio: adc: ad_sigma_delta: do not use internal iio_dev lock
Roberto Sassu <roberto.sassu@huawei.com>
reiserfs: Add missing calls to reiserfs_security_free()
Enrik Berkhan <Enrik.Berkhan@inka.de>
HID: mcp2221: don't connect hidraw
Jason Gerecke <killertofu@gmail.com>
HID: wacom: Ensure bootloader PID is usable in hidraw mode
Ferry Toth <ftoth@exalondelft.nl>
usb: dwc3: core: defer probe on ulpi_read_id timeout
Sven Peter <sven@svenpeter.dev>
usb: dwc3: Fix race between dwc3_set_mode and __dwc3_set_mode
Jiao Zhou <jiaozhou@google.com>
ALSA: hda/hdmi: Add HP Device 0x8711 to force connect list
Edward Pacman <edward@edward-p.xyz>
ALSA: hda/realtek: Add quirk for Lenovo TianYi510Pro-14IOB
wangdicheng <wangdicheng@kylinos.cn>
ALSA: usb-audio: add the quirk for KT0206 device
GUO Zihua <guozihua@huawei.com>
ima: Simplify ima_lsm_copy_rule
John Stultz <jstultz@google.com>
pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
David Howells <dhowells@redhat.com>
afs: Fix lost servers_outstanding count
Yang Jihong <yangjihong1@huawei.com>
perf debug: Set debug_peo_args and redirect_to_stderr variable to correct values in perf_quiet_option()
John Stultz <jstultz@google.com>
pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion
Kees Cook <keescook@chromium.org>
LoadPin: Ignore the "contents" argument of the LSM hooks
Hans de Goede <hdegoede@redhat.com>
ASoC: rt5670: Remove unbalanced pm_runtime_put()
Wang Jingjin <wangjingjin1@huawei.com>
ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in rk_spdif_runtime_resume()
Marek Szyprowski <m.szyprowski@samsung.com>
ASoC: wm8994: Fix potential deadlock
Wang Jingjin <wangjingjin1@huawei.com>
ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in rockchip_pdm_runtime_resume()
Wang Yufen <wangyufen@huawei.com>
ASoC: audio-graph-card: fix refcount leak of cpu_ep in __graph_for_each_link()
Wang Yufen <wangyufen@huawei.com>
ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in mt8173_rt5650_rt5514_dev_probe()
Cezary Rojewski <cezary.rojewski@intel.com>
ASoC: Intel: Skylake: Fix driver hang during shutdown
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ALSA: hda: add snd_hdac_stop_streams() helper
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ALSA/ASoC: hda: move/rename snd_hdac_ext_stop_streams to hdac_stream.c
Yang Yingliang <yangyingliang@huawei.com>
hwmon: (jc42) Fix missing unlock on error in jc42_write()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix kmemleak in orangefs_prepare_debugfs_help_string()
Nathan Chancellor <nathan@kernel.org>
drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid()
Nathan Chancellor <nathan@kernel.org>
drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid()
Hawkins Jiawei <yin31149@gmail.com>
hugetlbfs: fix null-ptr-deref in hugetlbfs_parse_param()
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: st: Fix memory leak in st_of_quadfs_setup()
Shigeru Yoshida <syoshida@redhat.com>
media: si470x: Fix use-after-free in si470x_int_in_callback()
Wolfram Sang <wsa+renesas@sang-engineering.com>
mmc: renesas_sdhi: better reset from HS400 mode
Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
mmc: f-sdh30: Add quirks for broken timeout clock capability
Rui Zhang <zr.zhang@vivo.com>
regulator: core: fix use_count leakage when handling boot-on
Andrii Nakryiko <andrii@kernel.org>
libbpf: Avoid enum forward-declarations in public API in C++ mode
Ye Bin <yebin10@huawei.com>
blk-mq: fix possible memleak when register 'hctx' failed
Mazin Al Haddad <mazinalhaddad05@gmail.com>
media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
Lin Ma <linma@zju.edu.cn>
media: dvbdev: adopts refcnt to avoid UAF
Yan Lei <yan_lei@dahuatech.com>
media: dvb-frontends: fix leak of memory fw
Maxim Korotkov <korotkov.maxim.s@gmail.com>
ethtool: avoiding integer overflow in ethtool_phys_id()
Stanislav Fomichev <sdf@google.com>
bpf: Prevent decl_tag from being referenced in func_proto arg
Stanislav Fomichev <sdf@google.com>
ppp: associate skb with a device at tx
Schspa Shi <schspa@gmail.com>
mrp: introduce active flags to prevent UAF when applicant uninit
Eric Dumazet <edumazet@google.com>
net: add atomic_long_t to net_device_stats fields
Aurabindo Pillai <aurabindo.pillai@amd.com>
drm/amd/display: fix array index out of bound error in bios parser
Jiang Li <jiang.li@ugreen.com>
md/raid1: stop mdx_raid1 thread when raid1 array run failed
Li Zhong <floridsleeves@gmail.com>
drivers/md/md-bitmap: check the return value of md_bitmap_get_counter()
Ville Syrjälä <ville.syrjala@linux.intel.com>
drm/sti: Use drm_mode_copy()
Ville Syrjälä <ville.syrjala@linux.intel.com>
drm/rockchip: Use drm_mode_copy()
Ville Syrjälä <ville.syrjala@linux.intel.com>
drm/msm: Use drm_mode_copy()
Nathan Chancellor <nathan@kernel.org>
s390/lcs: Fix return type of lcs_start_xmit()
Nathan Chancellor <nathan@kernel.org>
s390/netiucv: Fix return type of netiucv_tx()
Nathan Chancellor <nathan@kernel.org>
s390/ctcm: Fix return type of ctc{mp,}m_tx()
Nathan Chancellor <nathan@kernel.org>
drm/amdgpu: Fix type of second parameter in odn_edit_dpm_table() callback
Nathan Chancellor <nathan@kernel.org>
drm/amdgpu: Fix type of second parameter in trans_msg() callback
Kees Cook <keescook@chromium.org>
igb: Do not free q_vector unless new one was allocated
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
wifi: brcmfmac: Fix potential shift-out-of-bounds in brcmf_fw_alloc_request()
Nathan Chancellor <nathan@kernel.org>
hamradio: baycom_epp: Fix return type of baycom_send_packet()
Nathan Chancellor <nathan@kernel.org>
net: ethernet: ti: Fix return type of netcp_ndo_start_xmit()
Stanislav Fomichev <sdf@google.com>
bpf: make sure skb->len != 0 when redirecting to a tunneling device
Jiri Slaby (SUSE) <jirislaby@kernel.org>
qed (gcc13): use u16 for fid to be big enough
gehao <gehao@kylinos.cn>
drm/amd/display: prevent memory leak
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix memleak when unload ipmi driver
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
ASoC: codecs: rt298: Add quirk for KBL-R RVP platform
Shigeru Yoshida <syoshida@redhat.com>
wifi: ar5523: Fix use-after-free on ar5523_cmd() timed out
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: verify the expected usb_endpoints are present
Wright Feng <wright.feng@cypress.com>
brcmfmac: return error when getting invalid max_flowrings from dongle
Doug Brown <doug@schmorgal.com>
drm/etnaviv: add missing quirks for GC300
ZhangPeng <zhangpeng362@huawei.com>
hfs: fix OOB Read in __hfs_brec_find
Zheng Yejian <zhengyejian1@huawei.com>
acct: fix potential integer overflow in encode_comp_t()
Ryusuke Konishi <konishi.ryusuke@gmail.com>
nilfs2: fix shift-out-of-bounds due to too large exponent of block size
Ryusuke Konishi <konishi.ryusuke@gmail.com>
nilfs2: fix shift-out-of-bounds/overflow in nilfs_sb2_bad_offset()
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
ACPICA: Fix error code path in acpi_ds_call_control_method()
Hoi Pok Wu <wuhoipok@gmail.com>
fs: jfs: fix shift-out-of-bounds in dbDiscardAG
Shigeru Yoshida <syoshida@redhat.com>
udf: Avoid double brelse() in udf_rename()
Dongliang Mu <mudongliangabcd@gmail.com>
fs: jfs: fix shift-out-of-bounds in dbAllocAG
Liu Shixin <liushixin2@huawei.com>
binfmt_misc: fix shift-out-of-bounds in check_special_flags
Gaurav Kohli <gauravkohli@linux.microsoft.com>
x86/hyperv: Remove unregister syscore call from Hyper-V cleanup
Guilherme G. Piccoli <gpiccoli@igalia.com>
video: hyperv_fb: Avoid taking busy spinlock on panic path
Mark Rutland <mark.rutland@arm.com>
arm64: make is_ttbrX_addr() noinstr-safe
Zqiang <qiang1.zhang@intel.com>
rcu: Fix __this_cpu_read() lockdep warning in rcu_force_quiescent_state()
Eric Dumazet <edumazet@google.com>
net: stream: purge sk_error_queue in sk_stream_kill_queues()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
myri10ge: Fix an error handling path in myri10ge_probe()
David Howells <dhowells@redhat.com>
rxrpc: Fix missing unlock in rxrpc_do_sendmsg()
Cong Wang <cong.wang@bytedance.com>
net_sched: reject TCF_EM_SIMPLE case for complex ematch module
Yang Yingliang <yangyingliang@huawei.com>
mailbox: zynq-ipi: fix error handling while device_register() fails
Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com>
skbuff: Account for tail adjustment during pull operations
Eelco Chaudron <echaudro@redhat.com>
openvswitch: Fix flow lookup to use unmasked key
Jakub Kicinski <kuba@kernel.org>
selftests: devlink: fix the fd redirect in dummy_reporter_test
GUO Zihua <guozihua@huawei.com>
rtc: mxc_v2: Add missing clk_disable_unprepare()
Tan Tee Min <tee.min.tan@linux.intel.com>
igc: Set Qbv start_time and end_time to end_time if not being configured in GCL
Kurt Kanzenbach <kurt@linutronix.de>
igc: Lift TAPRIO schedule restriction
Tan Tee Min <tee.min.tan@linux.intel.com>
igc: recalculate Qbv end_time by considering cycle time
Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
igc: Add checking for basetime less than zero
Vinicius Costa Gomes <vinicius.gomes@intel.com>
igc: Use strict cycles for Qbv scheduling
Vinicius Costa Gomes <vinicius.gomes@intel.com>
igc: Enhance Qbv scheduling by using first flag bit
Vladimir Oltean <olteanv@gmail.com>
net: add a helper to avoid issues with HW TX timestamping and SO_TXTIME
Xin Long <lucien.xin@gmail.com>
net: igc: use skb_csum_is_sctp instead of protocol check
Xin Long <lucien.xin@gmail.com>
net: add inline function skb_csum_is_sctp
Marco Elver <elver@google.com>
net: switch to storing KCOV handle directly in sk_buff
Li Zetao <lizetao1@huawei.com>
r6040: Fix kmemleak in probe and remove
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
nfc: pn533: Clear nfc_target before being used
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcmulti: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcpci: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
mISDN: hfcsusb: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Emeel Hakim <ehakim@nvidia.com>
net: macsec: fix net device access prior to holding a lock
Dan Aloni <dan.aloni@vastdata.com>
nfsd: under NFSv4.1, fix double svc_xprt_put on rpc_create failure
Chuck Lever <chuck.lever@oracle.com>
NFSD: Remove spurious cb_setup_err tracepoint
Alexandre Belloni <alexandre.belloni@bootlin.com>
rtc: pcf85063: fix pcf85063_clkout_control
Gaosheng Cui <cuigaosheng1@huawei.com>
rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe()
Gaosheng Cui <cuigaosheng1@huawei.com>
rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe()
Qingfang DENG <dqfext@gmail.com>
netfilter: flowtable: really fix NAT IPv6 offload
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/pseries/eeh: use correct API for error log size
Haowen Bai <baihaowen@meizu.com>
powerpc/eeh: Drop redundant spinlock initialization
Yuan Can <yuancan@huawei.com>
remoteproc: qcom_q6v5_pas: Fix missing of_node_put() in adsp_alloc_memory_region()
Luca Weiss <luca.weiss@fairphone.com>
remoteproc: qcom_q6v5_pas: detach power domains on remove
Luca Weiss <luca.weiss@fairphone.com>
remoteproc: qcom_q6v5_pas: disable wakeup on probe fail or remove
Gaosheng Cui <cuigaosheng1@huawei.com>
remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev()
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
pwm: sifive: Call pwm_sifive_update_clock() while mutex is held
Jason Gunthorpe <jgg@ziepe.ca>
iommu/sun50i: Remove IOMMU_DOMAIN_IDENTITY
Miaoqian Lin <linmq006@gmail.com>
selftests/powerpc: Fix resource leaks
Kajol Jain <kjain@linux.ibm.com>
powerpc/hv-gpci: Fix hv_gpci event list
Yang Yingliang <yangyingliang@huawei.com>
powerpc/83xx/mpc832x_rdb: call platform_device_put() in error case in of_fsl_spi_probe()
Nicholas Piggin <npiggin@gmail.com>
powerpc/perf: callchain validate kernel stack pointer bounds
Masahiro Yamada <masahiroy@kernel.org>
kbuild: refactor single builds of *.ko
Masahiro Yamada <masahiroy@kernel.org>
kbuild: unify modules(_install) for in-tree and external modules
Masahiro Yamada <masahiroy@kernel.org>
kbuild: remove unneeded mkdir for external modules_install
Yang Yingliang <yangyingliang@huawei.com>
powerpc/xive: add missing iounmap() in error path in xive_spapr_populate_irq_data()
Gustavo A. R. Silva <gustavoars@kernel.org>
powerpc/xmon: Fix -Wswitch-unreachable warning in bpt_cmds
Christophe Leroy <christophe.leroy@csgroup.eu>
powerpc/xmon: Enable breakpoints on 8xx
Miaoqian Lin <linmq006@gmail.com>
cxl: Fix refcount leak in cxl_calc_capp_routing
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
powerpc/52xx: Fix a resource leak in an error handling path
Xie Shaowen <studentxswpy@163.com>
macintosh/macio-adb: check the return value of ioremap()
Yang Yingliang <yangyingliang@huawei.com>
macintosh: fix possible memory leak in macio_add_one_device()
Yuan Can <yuancan@huawei.com>
iommu/fsl_pamu: Fix resource leak in fsl_pamu_probe()
Yang Yingliang <yangyingliang@huawei.com>
iommu/amd: Fix pci device refcount leak in ppr_notifier()
Alexander Stein <alexander.stein@ew.tq-group.com>
rtc: pcf85063: Fix reading alarm
Stefan Eichenberger <stefan.eichenberger@toradex.com>
rtc: snvs: Allow a time difference on clock register read
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Disable ACPI RTC event on removal
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Rename ACPI-related functions
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Eliminate forward declarations of some functions
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Call rtc_wake_setup() from cmos_do_probe()
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Call cmos_wake_setup() from cmos_do_probe()
Alexandre Belloni <alexandre.belloni@bootlin.com>
rtc: cmos: fix build on non-ACPI platforms
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Fix wake alarm breakage
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: cmos: Fix event handler registration ordering issue
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
rtc: rtc-cmos: Do not check ACPI_FADT_LOW_POWER_S0
Fenghua Yu <fenghua.yu@intel.com>
dmaengine: idxd: Fix crc_val field for completion record
Jon Hunter <jonathanh@nvidia.com>
pwm: tegra: Improve required rate calculation
Matt Redfearn <matt.redfearn@mips.com>
include/uapi/linux/swab: Fix potentially missing __always_inline
Al Cooper <alcooperx@gmail.com>
phy: usb: s2 WoL wakeup_count not incremented for USB->Eth devices
Jernej Skrabec <jernej.skrabec@gmail.com>
iommu/sun50i: Fix flush size
Jernej Skrabec <jernej.skrabec@gmail.com>
iommu/sun50i: Fix R/W permission check
Jernej Skrabec <jernej.skrabec@gmail.com>
iommu/sun50i: Consider all fault sources for reset
Jernej Skrabec <jernej.skrabec@gmail.com>
iommu/sun50i: Fix reset release
Arnd Bergmann <arnd@arndb.de>
RDMA/siw: Fix pointer cast warning
ruanjinjie <ruanjinjie@huawei.com>
power: supply: fix null pointer dereferencing in power_supply_get_battery_info
Yuan Can <yuancan@huawei.com>
HSI: omap_ssi_core: Fix error handling in ssi_init()
Ajay Kaher <akaher@vmware.com>
perf symbol: correction while adjusting symbol
Leo Yan <leo.yan@linaro.org>
perf trace: Handle failure when trace point folder is missed
Leo Yan <leo.yan@linaro.org>
perf trace: Use macro RAW_SYSCALL_ARGS_NUM to replace number
Leo Yan <leo.yan@linaro.org>
perf trace: Return error if a system call doesn't exist
Zeng Heng <zengheng4@huawei.com>
power: supply: fix residue sysfs file in error handle route of __power_supply_register()
Yang Yingliang <yangyingliang@huawei.com>
HSI: omap_ssi_core: fix possible memory leak in ssi_probe()
Yang Yingliang <yangyingliang@huawei.com>
HSI: omap_ssi_core: fix unbalanced pm_runtime_disable()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
fbdev: uvesafb: Fixes an error handling path in uvesafb_probe()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
fbdev: vermilion: decrease reference count in error path
Shang XiaoJing <shangxiaojing@huawei.com>
fbdev: via: Fix error in via_core_init()
Yang Yingliang <yangyingliang@huawei.com>
fbdev: pm2fb: fix missing pci_disable_device()
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
fbdev: ssd1307fb: Drop optional dependency
Marcus Folkesson <marcus.folkesson@gmail.com>
thermal/drivers/imx8mm_thermal: Validate temperature range
Shang XiaoJing <shangxiaojing@huawei.com>
samples: vfio-mdev: Fix missing pci_disable_device() in mdpy_fb_probe()
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix issue of losting command info in error_log
Jiasheng Jiang <jiasheng@iscas.ac.cn>
usb: storage: Add check for kcalloc
Zheyu Ma <zheyuma97@gmail.com>
i2c: ismt: Fix an out-of-bounds bug in ismt_access()
Yang Yingliang <yangyingliang@huawei.com>
i2c: mux: reg: check return value after calling platform_get_resource()
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
gpiolib: cdev: fix NULL-pointer dereferences
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
gpiolib: Get rid of redundant 'else'
Chen Zhongjin <chenzhongjin@huawei.com>
vme: Fix error not catched in fake_init()
YueHaibing <yuehaibing@huawei.com>
staging: rtl8192e: Fix potential use-after-free in rtllib_rx_Monitor()
Dan Carpenter <error27@gmail.com>
staging: rtl8192u: Fix use after free in ieee80211_rx()
Hui Tang <tanghui20@huawei.com>
i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe
Yang Yingliang <yangyingliang@huawei.com>
chardev: fix error handling in cdev_device_add()
Yang Yingliang <yangyingliang@huawei.com>
mcb: mcb-parse: fix error handing in chameleon_parse_gdd()
Zhengchao Shao <shaozhengchao@huawei.com>
drivers: mcb: fix resource leak in mcb_probe()
John Keeping <john@metanate.com>
usb: gadget: f_hid: fix refcount leak on error path
John Keeping <john@metanate.com>
usb: gadget: f_hid: fix f_hidg lifetime vs cdev
Maxim Devaev <mdevaev@gmail.com>
usb: gadget: f_hid: optional SETUP/SET_REPORT mode
Yang Yingliang <yangyingliang@huawei.com>
usb: roles: fix of node refcount leak in usb_role_switch_is_parent()
Fabrice Gasnier <fabrice.gasnier@foss.st.com>
counter: stm32-lptimer-cnt: fix the check on arr and cmp registers update
Ramona Bolboaca <ramona.bolboaca@analog.com>
iio: adis: add '__adis_enable_irq()' implementation
Jonathan Cameron <Jonathan.Cameron@huawei.com>
iio:imu:adis: Move exports into IIO_ADISLIB namespace
Nuno Sá <nuno.sa@analog.com>
iio: adis: stylistic changes
Nuno Sá <nuno.sa@analog.com>
iio: adis: handle devices that cannot unmask the drdy pin
Jonathan Cameron <Jonathan.Cameron@huawei.com>
iio:imu:adis: Use IRQF_NO_AUTOEN instead of irq request then disable
Barry Song <song.bao.hua@hisilicon.com>
genirq: Add IRQF_NO_AUTOEN for request_irq/nmi()
Cosmin Tanislav <cosmin.tanislav@analog.com>
iio: temperature: ltc2983: make bulk write buffer DMA-safe
Yang Yingliang <yangyingliang@huawei.com>
cxl: fix possible null-ptr-deref in cxl_pci_init_afu|adapter()
Yang Yingliang <yangyingliang@huawei.com>
cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter()
Yang Yingliang <yangyingliang@huawei.com>
firmware: raspberrypi: fix possible memory leak in rpi_firmware_probe()
Zheng Wang <zyytlz.wz@163.com>
misc: sgi-gru: fix use-after-free error in gru_set_context_option, gru_fault and gru_handle_user_call_os
ruanjinjie <ruanjinjie@huawei.com>
misc: tifm: fix possible memory leak in tifm_7xx1_switch_media()
Yang Yingliang <yangyingliang@huawei.com>
ocxl: fix pci device refcount leak when calling get_function_0()
Yang Yingliang <yangyingliang@huawei.com>
misc: ocxl: fix possible name leak in ocxl_file_register_afu()
Zhengchao Shao <shaozhengchao@huawei.com>
test_firmware: fix memory leak in test_firmware_init()
Yuan Can <yuancan@huawei.com>
serial: sunsab: Fix error handling in sunsab_init()
Gabriel Somlo <gsomlo@gmail.com>
serial: altera_uart: fix locking in polling mode
Jiri Slaby <jirislaby@kernel.org>
tty: serial: altera_uart_{r,t}x_chars() need only uart_port
Jiri Slaby <jirislaby@kernel.org>
tty: serial: clean up stop-tx part in altera_uart_tx_chars()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
serial: pch: Fix PCI device refcount leak in pch_request_dma()
delisun <delisun@pateo.com.cn>
serial: pl011: Do not clear RX FIFO & RX interrupt in unthrottle.
Jiamei Xie <jiamei.xie@arm.com>
serial: amba-pl011: avoid SBSA UART accessing DMACR register
Sven Peter <sven@svenpeter.dev>
usb: typec: tipd: Fix spurious fwnode_handle_put in error path
Yang Yingliang <yangyingliang@huawei.com>
usb: typec: tcpci: fix of node refcount leak in tcpci_register_port()
Sven Peter <sven@svenpeter.dev>
usb: typec: Check for ops->exit instead of ops->enter in altmode_exit
Gaosheng Cui <cuigaosheng1@huawei.com>
staging: vme_user: Fix possible UAF in tsi148_dma_list_add
Linus Walleij <linus.walleij@linaro.org>
usb: fotg210-udc: Fix ages old endianness issues
Rafael Mendonca <rafaelmendsr@gmail.com>
uio: uio_dmem_genirq: Fix deadlock between irq config and handling
Rafael Mendonca <rafaelmendsr@gmail.com>
uio: uio_dmem_genirq: Fix missing unlock in irq configuration
Rafael Mendonca <rafaelmendsr@gmail.com>
vfio: platform: Do not pass return buffer to ACPI _RST method
Yang Yingliang <yangyingliang@huawei.com>
class: fix possible memory leak in __class_register()
Kartik <kkartik@nvidia.com>
serial: tegra: Read DMA status before terminating
Yang Yingliang <yangyingliang@huawei.com>
drivers: dio: fix possible memory leak in dio_init()
Dragos Tatulea <dtatulea@nvidia.com>
IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces
Xiongfeng Wang <wangxiongfeng2@huawei.com>
hwrng: geode - Fix PCI device refcount leak
Xiongfeng Wang <wangxiongfeng2@huawei.com>
hwrng: amd - Fix PCI device refcount leak
Gaosheng Cui <cuigaosheng1@huawei.com>
crypto: img-hash - Fix variable dereferenced before check 'hdev->req'
Chengchang Tang <tangchengchang@huawei.com>
RDMA/hns: Fix page size cap from firmware
Chengchang Tang <tangchengchang@huawei.com>
RDMA/hns: Fix PBL page MTR find
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
orangefs: Fix sysfs not cleanup when dev init failed
Wang Yufen <wangyufen@huawei.com>
RDMA/srp: Fix error return code in srp_parse_options()
Wang Yufen <wangyufen@huawei.com>
RDMA/hfi1: Fix error return code in parse_platform_config()
Tong Tiangen <tongtiangen@huawei.com>
riscv/mm: add arch hook arch_clear_hugepage_flags
Shang XiaoJing <shangxiaojing@huawei.com>
crypto: omap-sham - Use pm_runtime_resume_and_get() in omap_sham_probe()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
crypto: amlogic - Remove kcalloc without check
Mark Zhang <markzhang@nvidia.com>
RDMA/nldev: Fix failure to send large messages
Yonggil Song <yonggil.song@samsung.com>
f2fs: avoid victim selection from previous victim section
Yuan Can <yuancan@huawei.com>
RDMA/nldev: Add checks for nla_nest_start() in fill_stat_counter_qps()
Gaosheng Cui <cuigaosheng1@huawei.com>
scsi: snic: Fix possible UAF in snic_tgt_create()
Chen Zhongjin <chenzhongjin@huawei.com>
scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails
Shang XiaoJing <shangxiaojing@huawei.com>
scsi: ipr: Fix WARNING in ipr_init()
Yang Yingliang <yangyingliang@huawei.com>
scsi: scsi_debug: Fix possible name leak in sdebug_add_host_helper()
Yang Yingliang <yangyingliang@huawei.com>
scsi: fcoe: Fix possible name leak when device_register() fails
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
scsi: scsi_debug: Fix a warning in resp_report_zones()
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
scsi: scsi_debug: Fix a warning in resp_verify()
Yang Yingliang <yangyingliang@huawei.com>
scsi: hpsa: Fix possible memory leak in hpsa_add_sas_device()
Yang Yingliang <yangyingliang@huawei.com>
scsi: hpsa: Fix error handling in hpsa_add_sas_host()
Yang Yingliang <yangyingliang@huawei.com>
scsi: mpt3sas: Fix possible resource leaks in mpt3sas_transport_port_add()
Daniel Jordan <daniel.m.jordan@oracle.com>
padata: Fix list iterator in padata_do_serial()
Daniel Jordan <daniel.m.jordan@oracle.com>
padata: Always leave BHs disabled when running ->parallel()
Zhang Yiqun <zhangyiqun@phytium.com.cn>
crypto: tcrypt - Fix multibuffer skcipher speed test mem leak
Yuan Can <yuancan@huawei.com>
scsi: hpsa: Fix possible memory leak in hpsa_init_one()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
RDMA/rxe: Fix NULL-ptr-deref in rxe_qp_do_cleanup() when socket create failed
Zhengchao Shao <shaozhengchao@huawei.com>
RDMA/hns: fix memory leak in hns_roce_alloc_mr()
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
crypto: ccree - Make cc_debugfs_global_fini() available for module init function
Xiongfeng Wang <wangxiongfeng2@huawei.com>
RDMA/hfi: Decrease PCI device reference count in error path
Zeng Heng <zengheng4@huawei.com>
PCI: Check for alloc failure in pci_request_irq()
Luoyouming <luoyouming@huawei.com>
RDMA/hns: Fix ext_sge num error when post send
Luoyouming <luoyouming@huawei.com>
RDMA/hns: Repacing 'dseg_len' by macros in fill_ext_sge_inl_data()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set()
Herbert Xu <herbert@gondor.apana.org.au>
crypto: cryptd - Use request context instead of stack for sub-request
Gaosheng Cui <cuigaosheng1@huawei.com>
crypto: ccree - Remove debugfs when platform_driver_register failed
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
scsi: scsi_debug: Fix a warning in resp_write_scat()
Bernard Metzler <bmt@zurich.ibm.com>
RDMA/siw: Set defined status for work completion with undefined status
Mark Zhang <markzhang@nvidia.com>
RDMA/nldev: Return "-EAGAIN" if the cm_id isn't from expected port
Bernard Metzler <bmt@zurich.ibm.com>
RDMA/siw: Fix immediate work request flush to completion queue
Dongdong Zhang <zhangdongdong1@oppo.com>
f2fs: fix normal discard process
Xiu Jianfeng <xiujianfeng@huawei.com>
apparmor: Fix memleak in alloc_ns()
Corentin Labbe <clabbe@baylibre.com>
crypto: rockchip - rework by using crypto_engine
Kai Ye <yekai13@huawei.com>
crypto: rockchip - delete unneeded variable initialization
Corentin Labbe <clabbe@baylibre.com>
crypto: rockchip - remove non-aligned handling
Corentin Labbe <clabbe@baylibre.com>
crypto: rockchip - better handle cipher key
Corentin Labbe <clabbe@baylibre.com>
crypto: rockchip - add fallback for ahash
Corentin Labbe <clabbe@baylibre.com>
crypto: rockchip - add fallback for cipher
Corentin Labbe <clabbe@baylibre.com>
crypto: rockchip - do not store mode globally
Corentin Labbe <clabbe@baylibre.com>
crypto: rockchip - do not do custom power management
Zhang Qilong <zhangqilong3@huawei.com>
f2fs: Fix the race condition of resize flag between resizefs
Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
PCI: pci-epf-test: Register notifier if only core_init_notifier is enabled
Leon Romanovsky <leon@kernel.org>
RDMA/core: Fix order of nldev_exit call
Vidya Sagar <vidyas@nvidia.com>
PCI: dwc: Fix n_fts[] array overrun
Xiu Jianfeng <xiujianfeng@huawei.com>
apparmor: Use pointer to struct aa_label for lbs_cred
Bart Van Assche <bvanassche@acm.org>
scsi: core: Fix a race between scsi_done() and scsi_timeout()
Natalia Petrova <n.petrova@fintech.ru>
crypto: nitrox - avoid double free on error path in nitrox_sriov_init()
Corentin Labbe <clabbe@baylibre.com>
crypto: sun8i-ss - use dma_addr instead u32
John Johansen <john.johansen@canonical.com>
apparmor: Fix abi check to include v8 abi
John Johansen <john.johansen@canonical.com>
apparmor: fix lockdep warning when removing a namespace
Gaosheng Cui <cuigaosheng1@huawei.com>
apparmor: fix a memleak in multi_transaction_new()
Piergiorgio Beruto <piergiorgio.beruto@gmail.com>
stmmac: fix potential division by 0
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: RFCOMM: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_core: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_bcsp: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_h5: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_ll: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: hci_qca: don't call kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()
Firo Yang <firo.yang@suse.com>
sctp: sysctl: make extra pointers netns aware
Eric Pilmore <epilmore@gigaio.com>
ntb_netdev: Use dev_kfree_skb_any() in interrupt context
Jerry Ray <jerry.ray@microchip.com>
net: lan9303: Fix read error execution path
Markus Schneider-Pargmann <msp@baylibre.com>
can: tcan4x5x: Remove invalid write in clear_interrupts
Tom Lendacky <thomas.lendacky@amd.com>
net: amd-xgbe: Check only the minimum speed for active/passive cables
Tom Lendacky <thomas.lendacky@amd.com>
net: amd-xgbe: Fix logic around active and passive cables
Yang Yingliang <yangyingliang@huawei.com>
net: amd: lance: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
hamradio: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: ethernet: dnet: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: emaclite: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave()
Yang Yingliang <yangyingliang@huawei.com>
net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave()
Hangbin Liu <liuhangbin@gmail.com>
net/tunnel: wait until all sk_user_data reader finish before releasing the sock
Li Zetao <lizetao1@huawei.com>
net: farsync: Fix kmemleak when rmmods farsync
Yang Yingliang <yangyingliang@huawei.com>
ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave()
ruanjinjie <ruanjinjie@huawei.com>
of: overlay: fix null pointer dereferencing in find_dup_cset_node_entry() and find_dup_cset_prop()
Yuan Can <yuancan@huawei.com>
drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init()
Zhang Changzhong <zhangchangzhong@huawei.com>
net: stmmac: selftests: fix potential memleak in stmmac_test_arpoffload()
Yongqiang Liu <liuyongqiang13@huawei.com>
net: defxx: Fix missing err handling in dfx_init()
Artem Chernyshev <artem.chernyshev@red-soft.ru>
net: vmw_vsock: vmci: Check memcpy_from_msg()
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: socfpga: Fix memory leak in socfpga_gate_init()
Dinh Nguyen <dinguyen@kernel.org>
clk: socfpga: use clk_hw_register for a5/c5
Lee Jones <lee.jones@linaro.org>
clk: socfpga: clk-pll: Remove unused variable 'rc'
Yang Jihong <yangjihong1@huawei.com>
blktrace: Fix output non-blktrace event when blk_classic option enabled
Wang Yufen <wangyufen@huawei.com>
wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware()
Bitterblue Smith <rtl8821cerfe2@gmail.com>
wifi: rtl8xxxu: Fix the channel width reporting
Bitterblue Smith <rtl8821cerfe2@gmail.com>
wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h
Kris Bahnsen <kris@embeddedTS.com>
spi: spi-gpio: Don't set MOSI as an input if not 3WIRE mode
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: samsung: Fix memory leak in _samsung_clk_register_pll()
Jiasheng Jiang <jiasheng@iscas.ac.cn>
media: coda: Add check for kmalloc
Jiasheng Jiang <jiasheng@iscas.ac.cn>
media: coda: Add check for dcoda_iram_alloc
Liang He <windhl@126.com>
media: c8sectpfe: Add of_node_put() when breaking out of loop
Yang Yingliang <yangyingliang@huawei.com>
mmc: mmci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: wbsd: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: via-sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: meson-gx: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: omap_hsmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: atmel-mci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: wmt-sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: vub300: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: toshsd: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: pxamci: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: mxcmmc: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: moxart: fix return value check of mmc_add_host()
Yang Yingliang <yangyingliang@huawei.com>
mmc: alcor: fix return value check of mmc_add_host()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.x: Fail client initialisation if state manager thread can't run
Wang ShaoBo <bobo.shaobowang@huawei.com>
SUNRPC: Fix missing release socket in rpc_sockname()
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
xprtrdma: Fix regbuf data not freed in rpcrdma_req_create()
Gaosheng Cui <cuigaosheng1@huawei.com>
ALSA: mts64: fix possible null-ptr-defer in snd_mts64_interrupt
Liu Shixin <liushixin2@huawei.com>
media: saa7164: fix missing pci_disable_device()
Takashi Iwai <tiwai@suse.de>
ALSA: pcm: Set missing stop_operating flag at undoing trigger start
Eric Dumazet <edumazet@google.com>
bpf, sockmap: fix race in sock_map_free()
Martin Blumenstingl <martin.blumenstingl@googlemail.com>
hwmon: (jc42) Restore the min/max/critical temperatures on resume
Martin Blumenstingl <martin.blumenstingl@googlemail.com>
hwmon: (jc42) Convert register access and caching to regmap/regcache
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix resource leak in regulator_register()
Chen Zhongjin <chenzhongjin@huawei.com>
configfs: fix possible memory leak in configfs_create_dir()
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hsr: Synchronize sequence number updates.
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hsr: Synchronize sending frames to have always incremented outgoing seq nr.
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hsr: Disable netpoll.
George McCollister <george.mccollister@gmail.com>
net: hsr: generate supervision frame without HSR/PRP tag
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hsr: Add a rcu-read lock to hsr_forward_skb().
Christian Marangi <ansuelsmth@gmail.com>
clk: qcom: clk-krait: fix wrong div2 functions
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix module refcount leak in set_supply()
Deren Wu <deren.wu@mediatek.com>
wifi: mt76: fix coverity overrun-call in mt76_get_txpower()
Chen Zhongjin <chenzhongjin@huawei.com>
wifi: cfg80211: Fix not unregister reg_pdev when load_builtin_regdb_keys() fails
Zhengchao Shao <shaozhengchao@huawei.com>
wifi: mac80211: fix memory leak in ieee80211_if_add()
Alexander Sverdlin <alexander.sverdlin@siemens.com>
spi: spidev: mask SPI_CS_HIGH in SPI_IOC_RD_MODE
Dan Carpenter <error27@gmail.com>
bonding: uninitialized variable in bond_miimon_inspect()
Pengcheng Yang <yangpc@wangsu.com>
bpf, sockmap: Fix data loss caused by using apply_bytes on ingress redirect
Pengcheng Yang <yangpc@wangsu.com>
bpf, sockmap: Fix repeated calls to sock_put() when msg has more_data
Florian Westphal <fw@strlen.de>
netfilter: conntrack: set icmpv6 redirects as RELATED
Zhang Qilong <zhangqilong3@huawei.com>
ASoC: pcm512x: Fix PM disable depth imbalance in pcm512x_probe
Xiongfeng Wang <wangxiongfeng2@huawei.com>
drm/amdgpu: Fix PCI device refcount leak in amdgpu_atrm_get_bios()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
drm/radeon: Fix PCI device refcount leak in radeon_atrm_get_bios()
Guchun Chen <guchun.chen@amd.com>
drm/amd/pm/smu11: BACO is supported when it's in BACO state
Ricardo Ribalda <ribalda@chromium.org>
ASoC: mediatek: mt8173: Enable IRQ when pdata is ready
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
ASoC: mediatek: mt8173: Fix debugfs registration for components
Ben Greear <greearb@candelatech.com>
wifi: iwlwifi: mvm: fix double free on tx path.
Liu Shixin <liushixin2@huawei.com>
ALSA: asihpi: fix missing pci_disable_device()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Fix an Oops in nfs_d_automount()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4: Fix a deadlock between nfs4_open_recover_helper() and delegreturn
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Fix initialisation of struct nfs4_label
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Fix a memory stomp in decode_attr_security_label
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4.2: Clear FATTR4_WORD2_SECURITY_LABEL when done decoding
Jiasheng Jiang <jiasheng@iscas.ac.cn>
ASoC: mediatek: mtk-btcvsd: Add checks for write and read of mtk_btcvsd_snd
Dmitry Torokhov <dmitry.torokhov@gmail.com>
ASoC: dt-bindings: wcd9335: fix reset line polarity in example
Zhang Zekun <zhangzekun11@huawei.com>
drm/tegra: Add missing clk_disable_unprepare() in tegra_dc_probe()
Aakarsh Jain <aakarsh.jain@samsung.com>
media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC
Baisong Zhong <zhongbaisong@huawei.com>
media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()
Chen Zhongjin <chenzhongjin@huawei.com>
media: dvb-core: Fix ignored return value in dvb_register_frontend()
ZhangPeng <zhangpeng362@huawei.com>
pinctrl: pinconf-generic: add missing of_node_put()
Dario Binacchi <dario.binacchi@amarulasolutions.com>
clk: imx: replace osc_hdmi with dummy
Gautam Menghani <gautammenghani201@gmail.com>
media: imon: fix a race condition in send_packet()
Chen Zhongjin <chenzhongjin@huawei.com>
media: vimc: Fix wrong function called when vimc_init() fails
Yuan Can <yuancan@huawei.com>
ASoC: qcom: Add checks for devm_kcalloc
Xiaomeng Tong <xiam0nd.tong@gmail.com>
drbd: fix an invalid memory access caused by incorrect use of list iterator
Zheng Yongjun <zhengyongjun3@huawei.com>
mtd: maps: pxa2xx-flash: fix memory leak in probe
Jonathan Toppins <jtoppins@redhat.com>
bonding: fix link recovery in mode 2 when updelay is nonzero
Yang Yingliang <yangyingliang@huawei.com>
drm/amdgpu: fix pci device refcount leak
Xiu Jianfeng <xiujianfeng@huawei.com>
clk: rockchip: Fix memory leak in rockchip_clk_register_pll()
Wang ShaoBo <bobo.shaobowang@huawei.com>
regulator: core: use kfree_const() to free space conditionally
Baisong Zhong <zhongbaisong@huawei.com>
ALSA: seq: fix undefined behavior in bit shift for SNDRV_SEQ_FILTER_USE_EVENT
Baisong Zhong <zhongbaisong@huawei.com>
ALSA: pcm: fix undefined behavior in bit shift for SNDRV_PCM_RATE_KNOT
Marcus Folkesson <marcus.folkesson@gmail.com>
HID: hid-sensor-custom: set fixed size for custom attributes
Stanislav Fomichev <sdf@google.com>
bpf: Move skb->len == 0 checks into __bpf_redirect
Eric Dumazet <edumazet@google.com>
inet: add READ_ONCE(sk->sk_bound_dev_if) in inet_csk_bind_conflict()
Christoph Hellwig <hch@lst.de>
media: videobuf-dma-contig: use dma_mmap_coherent
Yuan Can <yuancan@huawei.com>
media: platform: exynos4-is: Fix error handling in fimc_md_init()
Yang Yingliang <yangyingliang@huawei.com>
media: solo6x10: fix possible memory leak in solo_sysfs_init()
Chen Zhongjin <chenzhongjin@huawei.com>
media: vidtv: Fix use-after-free in vidtv_bridge_dvb_init()
Douglas Anderson <dianders@chromium.org>
Input: elants_i2c - properly handle the reset GPIO when power is off
Hui Tang <tanghui20@huawei.com>
mtd: lpddr2_nvm: Fix possible null-ptr-deref
Xiu Jianfeng <xiujianfeng@huawei.com>
wifi: ath10k: Fix return value in ath10k_pci_init()
Xiu Jianfeng <xiujianfeng@huawei.com>
ima: Fix misuse of dereference of pointer in template_desc_init_fields()
GUO Zihua <guozihua@huawei.com>
integrity: Fix memory leakage in keyring allocation error path
Brian Starkey <brian.starkey@arm.com>
drm/fourcc: Fix vsub/hsub for Q410 and Q401
Dave Stevenson <dave.stevenson@raspberrypi.com>
drm/fourcc: Add packed 10bit YUV 4:2:0 format
Dan Carpenter <error27@gmail.com>
amdgpu/pm: prevent array underflow in vega20_odn_edit_dpm_table()
Yang Yingliang <yangyingliang@huawei.com>
regulator: core: fix unbalanced of node refcount in regulator_dev_lookup()
Zeng Heng <zengheng4@huawei.com>
ASoC: pxa: fix null-pointer dereference in filter()
Xinlei Lee <xinlei.lee@mediatek.com>
drm/mediatek: Modify dpi power on/off sequence.
Hanjun Guo <guohanjun@huawei.com>
drm/radeon: Add the missed acpi_put_table() to fix memory leak
David Howells <dhowells@redhat.com>
rxrpc: Fix ack.bufferSize to be 0 when generating an ack
David Howells <dhowells@redhat.com>
net, proc: Provide PROC_FS=n fallback for proc_create_net_single_write()
Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
media: camss: Clean up received buffers on failed start of streaming
Marek Vasut <marex@denx.de>
wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port
Randy Dunlap <rdunlap@infradead.org>
Input: joystick - fix Kconfig warning for JOYSTICK_ADC
Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
mtd: Fix device name leak when register device failed in add_mtd_device()
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
clk: qcom: gcc-sm8250: Use retention mode for USB GDSCs
Andrii Nakryiko <andrii@kernel.org>
bpf: propagate precision across all frames, not just the last one
Martin KaFai Lau <kafai@fb.com>
bpf: Check the other end of slot_type for STACK_SPILL
Andrii Nakryiko <andrii@kernel.org>
bpf: propagate precision in ALU/ALU64 operations
Yang Yingliang <yangyingliang@huawei.com>
media: platform: exynos4-is: fix return value check in fimc_md_probe()
Liu Shixin <liushixin2@huawei.com>
media: vivid: fix compose size exceed boundary
Kumar Kartikeya Dwivedi <memxor@gmail.com>
bpf: Fix slot type check in check_stack_write_var_off
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/hdmi: drop unused GPIO support
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/hdmi: switch to drm_bridge_connector
GUO Zihua <guozihua@huawei.com>
ima: Handle -ESTALE returned by ima_filter_rule_match()
Gustavo A. R. Silva <gustavoars@kernel.org>
ima: Fix fall-through warnings for Clang
Marek Vasut <marex@denx.de>
drm/panel/panel-sitronix-st7701: Remove panel on DSI attach failure
Jonathan Neuschäfer <j.neuschaefer@gmx.net>
spi: Update reference to struct spi_controller
Marek Vasut <marex@denx.de>
clk: renesas: r9a06g032: Repair grave increment error
Zhang Qilong <zhangqilong3@huawei.com>
drm/rockchip: lvds: fix PM usage counter unbalance in poweron
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: Compare requested bittiming parameters with actual parameters in do_set_{,data}_bittiming
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: Add struct kvaser_usb_busparams
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix bogus restart events
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix wrong CAN state after stopping
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Fix improved state not being reported
Anssi Hannula <anssi.hannula@bitwise.fi>
can: kvaser_usb_leaf: Set Warning state even without bus errors
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Handle CMD_ERROR_EVENT
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Rename {leaf,usbcan}_cmd_error_event to {leaf,usbcan}_cmd_can_error_event
Jimmy Assarsson <extja@kvaser.com>
can: kvaser_usb: kvaser_usb_leaf: Get capabilities from device
Vincent Mailhol <mailhol.vincent@wanadoo.fr>
can: kvaser_usb: do not increase tx statistics when sending error message frames
Marek Szyprowski <m.szyprowski@samsung.com>
media: exynos4-is: don't rely on the v4l2_async_subdev internals
Ezequiel Garcia <ezequiel@collabora.com>
media: exynos4-is: Use v4l2_async_notifier_add_fwnode_remote_subdev
Tang Bin <tangbin@cmss.chinamobile.com>
venus: pm_helpers: Fix error check in vcodec_domains_get()
Ricardo Ribalda <ribalda@chromium.org>
media: i2c: ad5820: Fix error path
Jiasheng Jiang <jiasheng@iscas.ac.cn>
media: coda: jpeg: Add check for kmalloc
Junlin Yang <yangjunlin@yulong.com>
pata_ipx4xx_cf: Fix unsigned comparison with less than zero
Shung-Hsi Yu <shung-hsi.yu@suse.com>
libbpf: Fix null-pointer dereference in find_prog_by_sec_insn()
Xu Kuohai <xukuohai@huawei.com>
libbpf: Fix use-after-free in btf_dump_name_dups
Abhinav Kumar <quic_abhinavk@quicinc.com>
drm/bridge: adv7533: remove dynamic lane switching from adv7533 bridge
Bitterblue Smith <rtl8821cerfe2@gmail.com>
wifi: rtl8xxxu: Fix reading the vendor of combo chips
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb()
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: hif_usb: fix memory leak of urbs in ath9k_hif_usb_dealloc_tx_urbs()
Cai Xinchen <caixinchen1@huawei.com>
rapidio: devices: fix missing put_device in mport_cdev_open
ZhangPeng <zhangpeng362@huawei.com>
hfs: Fix OOB Write in hfs_asc2mac
Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
relay: fix type mismatch when allocating memory in relay_create_buf()
Zhang Qilong <zhangqilong3@huawei.com>
eventfd: change int to __u64 in eventfd_signal() ifndef CONFIG_EVENTFD
Wang Weiyang <wangweiyang2@huawei.com>
rapidio: fix possible UAF when kfifo_alloc() fails
Chen Zhongjin <chenzhongjin@huawei.com>
fs: sysv: Fix sysv_nblocks() returns wrong value
Ladislav Michl <ladis@linux-mips.org>
MIPS: OCTEON: warn only once if deprecated link status is being used
Anastasia Belova <abelova@astralinux.ru>
MIPS: BCM63xx: Add check for NULL for clk in clk_enable
Yang Yingliang <yangyingliang@huawei.com>
platform/x86: intel_scu_ipc: fix possible name leak in __intel_scu_ipc_register()
Yu Liao <liaoyu15@huawei.com>
platform/x86: mxm-wmi: fix memleak in mxm_wmi_call_mx[ds|mx]()
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
PM: runtime: Do not call __rpm_callback() from rpm_idle()
Ulf Hansson <ulf.hansson@linaro.org>
PM: runtime: Improve path in rpm_idle() when no callback
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
xen/privcmd: Fix a possible warning in privcmd_ioctl_mmap_resource()
Xiu Jianfeng <xiujianfeng@huawei.com>
x86/xen: Fix memory leak in xen_init_lock_cpu()
Xiu Jianfeng <xiujianfeng@huawei.com>
x86/xen: Fix memory leak in xen_smp_intr_init{_pv}()
Oleg Nesterov <oleg@redhat.com>
uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix
Li Zetao <lizetao1@huawei.com>
ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage()
Yang Yingliang <yangyingliang@huawei.com>
clocksource/drivers/timer-ti-dm: Fix missing clk_disable_unprepare in dmtimer_systimer_init_clock()
Phil Auld <pauld@redhat.com>
cpu/hotplug: Make target_store() a nop when target == state
Alexey Izbyshev <izbyshev@ispras.ru>
futex: Resend potentially swallowed owner death notification
Peter Zijlstra <peterz@infradead.org>
futex: Move to kernel/futex/
Wolfram Sang <wsa+renesas@sang-engineering.com>
clocksource/drivers/sh_cmt: Access registers according to spec
Geert Uytterhoeven <geert+renesas@glider.be>
clocksource/drivers/sh_cmt: Make sure channel clock supply is enabled
Yang Yingliang <yangyingliang@huawei.com>
rapidio: rio: fix possible name leak in rio_register_mport()
Yang Yingliang <yangyingliang@huawei.com>
rapidio: fix possible name leaks when rio_add_device() fails
Li Zetao <ocfs2-devel@oss.oracle.com>
ocfs2: fix memory leak in ocfs2_mount_volume()
Heming Zhao via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: rewrite error handling of ocfs2_fill_super
Heming Zhao via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: ocfs2_mount_volume does cleanup job before return error
Akinobu Mita <akinobu.mita@gmail.com>
debugfs: fix error when writing negative value to atomic_t debugfs file
Wolfram Sang <wsa+renesas@sang-engineering.com>
docs: fault-injection: fix non-working usage of negative values
Akinobu Mita <akinobu.mita@gmail.com>
lib/notifier-error-inject: fix error when writing -errno to debugfs file
Akinobu Mita <akinobu.mita@gmail.com>
libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value
Xiongfeng Wang <wangxiongfeng2@huawei.com>
cpufreq: amd_freq_sensitivity: Add missing pci_dev_put()
Yang Yingliang <yangyingliang@huawei.com>
genirq/irqdesc: Don't try to remove non-existing sysfs files
Jeff Layton <jlayton@kernel.org>
nfsd: don't call nfsd_file_put from client states seqfile display
Yang Yingliang <yangyingliang@huawei.com>
EDAC/i10nm: fix refcount leak in pci_get_dev_wrapper()
Shang XiaoJing <shangxiaojing@huawei.com>
irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe()
Yuan Can <yuancan@huawei.com>
platform/chrome: cros_usbpd_notify: Fix error handling in cros_usbpd_notify_init()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
perf/x86/intel/uncore: Fix reference count leak in __uncore_imc_init_box()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
perf/x86/intel/uncore: Fix reference count leak in snr_uncore_mmio_map()
Xiongfeng Wang <wangxiongfeng2@huawei.com>
perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox()
Yang Yingliang <yangyingliang@huawei.com>
PNP: fix name memory leak in pnp_alloc_dev()
Zhao Gongyi <zhaogongyi@huawei.com>
selftests/efivarfs: Add checking of the test return value
Yang Yingliang <yangyingliang@huawei.com>
MIPS: vpe-cmp: fix possible memory leak while module exiting
Yang Yingliang <yangyingliang@huawei.com>
MIPS: vpe-mt: fix possible memory leak while module exiting
Shang XiaoJing <shangxiaojing@huawei.com>
ocfs2: fix memory leak in ocfs2_stack_glue_init()
Gaosheng Cui <cuigaosheng1@huawei.com>
lib/fonts: fix undefined behavior in bit shift for get_default_font
Alexey Dobriyan <adobriyan@gmail.com>
proc: fixup uptime selftest
Barnabás Pőcze <pobrn@protonmail.com>
timerqueue: Use rb_entry_safe() in timerqueue_getnext()
Barnabás Pőcze <pobrn@protonmail.com>
platform/x86: huawei-wmi: fix return value calculation
wuchi <wuchi.zero@gmail.com>
lib/debugobjects: fix stat count and optimize debug_objects_mem_init
Chen Zhongjin <chenzhongjin@huawei.com>
perf: Fix possible memleak in pmu_dev_alloc()
Yipeng Zou <zouyipeng@huawei.com>
selftests/ftrace: event_triggers: wait longer for test_event_enable
Chen Hui <judy.chenhui@huawei.com>
cpufreq: qcom-hw: Fix memory leak in qcom_cpufreq_hw_read_lut()
Ondrej Mosnacek <omosnace@redhat.com>
fs: don't audit the capability check in simple_xattr_list()
xiongxin <xiongxin@kylinos.cn>
PM: hibernate: Fix mistake in kerneldoc comment
Al Viro <viro@zeniv.linux.org.uk>
alpha: fix syscall entry in !AUDUT_SYSCALL case
Ulf Hansson <ulf.hansson@linaro.org>
cpuidle: dt: Return the correct numbers of parsed idle states
Qais Yousef <qais.yousef@arm.com>
sched/uclamp: Fix relationship between uclamp and migration margin
Vincent Donnefort <vincent.donnefort@arm.com>
sched/fair: Cleanup task_util and capacity type
Michael Kelley <mikelley@microsoft.com>
tpm/tpm_crb: Fix error message in __crb_relinquish_locality()
Yuan Can <yuancan@huawei.com>
tpm/tpm_ftpm_tee: Fix error handling in ftpm_mod_init()
Stephen Boyd <swboyd@chromium.org>
pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP
Doug Brown <doug@schmorgal.com>
ARM: mmp: fix timer_read delay
Wang Yufen <wangyufen@huawei.com>
pstore/ram: Fix error return code in ramoops_probe()
Pali Rohár <pali@kernel.org>
arm64: dts: armada-3720-turris-mox: Add missing interrupt for RTC
Pali Rohár <pali@kernel.org>
ARM: dts: turris-omnia: Add switch port 6 node
Pali Rohár <pali@kernel.org>
ARM: dts: turris-omnia: Add ethernet aliases
Pali Rohár <pali@kernel.org>
ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port
Pali Rohár <pali@kernel.org>
ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mediatek: pumpkin-common: Fix devicetree warnings
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712-evb: Fix usb vbus regulators unit names
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712-evb: Fix vproc fixed regulators unit names
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712e: Fix unit address for pinctrl node
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arm64: dts: mt2712e: Fix unit_address_vs_reg warning for oscillators
Jayesh Choudhary <j-choudhary@ti.com>
arm64: dts: ti: k3-j721e-main: Drop dma-coherent in crypto node
Jayesh Choudhary <j-choudhary@ti.com>
arm64: dts: ti: k3-am65-main: Drop dma-coherent in crypto node
Shang XiaoJing <shangxiaojing@huawei.com>
perf/smmuv3: Fix hotplug callback leak in arm_smmu_pmu_init()
Yuan Can <yuancan@huawei.com>
perf: arm_dsu: Fix hotplug callback leak in dsu_pmu_init()
Zhang Qilong <zhangqilong3@huawei.com>
soc: ti: smartreflex: Fix PM disable depth imbalance in omap_sr_probe
Zhang Qilong <zhangqilong3@huawei.com>
soc: ti: knav_qmss_queue: Fix PM disable depth imbalance in knav_queue_probe
Minghao Chi <chi.minghao@zte.com.cn>
soc: ti: knav_qmss_queue: Use pm_runtime_resume_and_get instead of pm_runtime_get_sync
Kory Maincent <kory.maincent@bootlin.com>
arm: dts: spear600: Fix clcd interrupt
Jiasheng Jiang <jiasheng@iscas.ac.cn>
soc: qcom: apr: Add check for idr_alloc and of_property_read_string_index
Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
soc: qcom: apr: make code more reuseable
Luca Weiss <luca.weiss@fairphone.com>
soc: qcom: llcc: make irq truly optional
Chen Jiahao <chenjiahao16@huawei.com>
drivers: soc: ti: knav_qmss_queue: Mark knav_acc_firmwares as static
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Fix AV96 WLAN regulator gpio property
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Drop stm32mp15xc.dtsi from Avenger96
Marco Elver <elver@google.com>
objtool, kcsan: Add volatile read/write instrumentation to whitelist
Stephan Gerhold <stephan.gerhold@kernkonzept.com>
arm64: dts: qcom: msm8916: Drop MSS fallback compatible
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm845-cheza: fix AP suspend pin bias
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm630: fix UART1 pin bias
Luca Weiss <luca@z3ntu.xyz>
ARM: dts: qcom: apq8064: fix coresight compatible
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
arm64: dts: qcom: msm8996: fix GPU OPP table
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: ipq6018-cp01-c1: use BLSPI1 pins
Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
usb: musb: remove extra check in musb_gadget_vbus_draw
-------------
Diffstat:
.../devicetree/bindings/sound/qcom,wcd9335.txt | 2 +-
Documentation/driver-api/spi.rst | 4 +-
Documentation/fault-injection/fault-injection.rst | 16 +-
MAINTAINERS | 2 +-
Makefile | 107 ++---
arch/alpha/kernel/entry.S | 4 +-
arch/arm/boot/dts/armada-370.dtsi | 2 +-
arch/arm/boot/dts/armada-375.dtsi | 2 +-
arch/arm/boot/dts/armada-380.dtsi | 4 +-
arch/arm/boot/dts/armada-385-turris-omnia.dts | 18 +-
arch/arm/boot/dts/armada-385.dtsi | 6 +-
arch/arm/boot/dts/armada-39x.dtsi | 6 +-
arch/arm/boot/dts/armada-xp-mv78230.dtsi | 8 +-
arch/arm/boot/dts/armada-xp-mv78260.dtsi | 16 +-
arch/arm/boot/dts/dove.dtsi | 2 +-
arch/arm/boot/dts/qcom-apq8064.dtsi | 2 +-
arch/arm/boot/dts/spear600.dtsi | 2 +-
arch/arm/boot/dts/stm32mp157a-dhcor-avenger96.dts | 1 -
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 2 +-
arch/arm/include/asm/thread_info.h | 13 +-
arch/arm/mach-mmp/time.c | 11 +-
arch/arm/nwfpe/Makefile | 6 +
.../boot/dts/marvell/armada-3720-turris-mox.dts | 3 +
arch/arm64/boot/dts/mediatek/mt2712-evb.dts | 12 +-
arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 22 +-
arch/arm64/boot/dts/mediatek/mt6797.dtsi | 2 +-
arch/arm64/boot/dts/mediatek/pumpkin-common.dtsi | 6 +-
arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts | 2 +
arch/arm64/boot/dts/qcom/msm8916.dtsi | 2 +-
arch/arm64/boot/dts/qcom/msm8996.dtsi | 10 +-
arch/arm64/boot/dts/qcom/sdm630.dtsi | 2 +-
arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi | 4 +-
arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 5 +-
.../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 6 +-
arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 1 -
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 1 -
arch/arm64/include/asm/processor.h | 4 +-
arch/mips/bcm63xx/clk.c | 2 +
.../cavium-octeon/executive/cvmx-helper-board.c | 2 +-
arch/mips/cavium-octeon/executive/cvmx-helper.c | 2 +-
arch/mips/kernel/vpe-cmp.c | 4 +-
arch/mips/kernel/vpe-mt.c | 4 +-
arch/parisc/include/uapi/asm/mman.h | 23 +-
arch/parisc/kernel/sys_parisc.c | 27 ++
arch/parisc/kernel/syscalls/syscall.tbl | 2 +-
arch/powerpc/kernel/rtas.c | 20 +-
arch/powerpc/perf/callchain.c | 1 +
arch/powerpc/perf/hv-gpci-requests.h | 4 +
arch/powerpc/perf/hv-gpci.c | 33 +-
arch/powerpc/perf/hv-gpci.h | 1 +
arch/powerpc/perf/req-gen/perf.h | 20 +
arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | 1 +
arch/powerpc/platforms/83xx/mpc832x_rdb.c | 2 +-
arch/powerpc/platforms/pseries/eeh_pseries.c | 14 +-
arch/powerpc/sysdev/xive/spapr.c | 1 +
arch/powerpc/xmon/xmon.c | 11 +-
arch/riscv/include/asm/hugetlb.h | 6 +
arch/riscv/include/asm/uaccess.h | 2 +-
arch/riscv/kernel/stacktrace.c | 12 +-
arch/x86/events/intel/uncore.h | 1 +
arch/x86/events/intel/uncore_snb.c | 3 +
arch/x86/events/intel/uncore_snbep.c | 48 ++-
arch/x86/hyperv/hv_init.c | 2 -
arch/x86/kernel/cpu/bugs.c | 2 +
arch/x86/kernel/cpu/mce/amd.c | 37 +-
arch/x86/kernel/cpu/mce/core.c | 95 ++---
arch/x86/kernel/cpu/mce/internal.h | 12 +-
arch/x86/kernel/cpu/microcode/intel.c | 8 +-
arch/x86/kernel/ftrace.c | 2 +
arch/x86/kernel/kprobes/core.c | 27 +-
arch/x86/kernel/kprobes/opt.c | 35 +-
arch/x86/kernel/uprobes.c | 4 +-
arch/x86/kvm/vmx/nested.c | 44 ++-
arch/x86/xen/smp.c | 24 +-
arch/x86/xen/smp_pv.c | 12 +-
arch/x86/xen/spinlock.c | 6 +-
block/blk-mq-sysfs.c | 11 +-
crypto/cryptd.c | 36 +-
crypto/tcrypt.c | 9 -
drivers/acpi/acpica/dsmethod.c | 10 +-
drivers/acpi/acpica/utcopy.c | 7 -
drivers/ata/ahci.c | 32 +-
drivers/ata/pata_ixp4xx_cf.c | 2 +-
drivers/base/class.c | 5 +
drivers/base/dd.c | 6 +-
drivers/base/power/runtime.c | 18 +-
drivers/block/drbd/drbd_main.c | 4 +-
drivers/bluetooth/btusb.c | 6 +-
drivers/bluetooth/hci_bcsp.c | 2 +-
drivers/bluetooth/hci_h5.c | 2 +-
drivers/bluetooth/hci_ll.c | 2 +-
drivers/bluetooth/hci_qca.c | 2 +-
drivers/char/hw_random/amd-rng.c | 18 +-
drivers/char/hw_random/geode-rng.c | 36 +-
drivers/char/ipmi/ipmi_msghandler.c | 12 +-
drivers/char/ipmi/ipmi_si_intf.c | 27 +-
drivers/char/tpm/eventlog/acpi.c | 12 +-
drivers/char/tpm/tpm_crb.c | 31 +-
drivers/char/tpm/tpm_ftpm_tee.c | 8 +-
drivers/char/tpm/tpm_tis.c | 9 +-
drivers/clk/imx/clk-imx8mn.c | 12 +-
drivers/clk/qcom/clk-krait.c | 2 +
drivers/clk/qcom/gcc-sm8250.c | 4 +-
drivers/clk/renesas/r9a06g032-clocks.c | 3 +-
drivers/clk/rockchip/clk-pll.c | 1 +
drivers/clk/samsung/clk-pll.c | 1 +
drivers/clk/socfpga/clk-gate.c | 16 +-
drivers/clk/socfpga/clk-periph.c | 8 +-
drivers/clk/socfpga/clk-pll.c | 17 +-
drivers/clk/st/clkgen-fsyn.c | 5 +-
drivers/clocksource/sh_cmt.c | 102 +++--
drivers/clocksource/timer-ti-dm-systimer.c | 4 +-
drivers/counter/stm32-lptimer-cnt.c | 2 +-
drivers/cpufreq/amd_freq_sensitivity.c | 2 +
drivers/cpufreq/cpufreq.c | 2 +-
drivers/cpufreq/qcom-cpufreq-hw.c | 1 +
drivers/cpuidle/dt_idle_states.c | 2 +-
drivers/crypto/Kconfig | 5 +
.../crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 2 +-
drivers/crypto/amlogic/amlogic-gxl-core.c | 1 -
drivers/crypto/amlogic/amlogic-gxl.h | 2 +-
drivers/crypto/cavium/nitrox/nitrox_mbx.c | 1 +
drivers/crypto/ccree/cc_debugfs.c | 2 +-
drivers/crypto/ccree/cc_driver.c | 10 +-
drivers/crypto/hisilicon/qm.h | 6 +-
drivers/crypto/img-hash.c | 8 +-
drivers/crypto/n2_core.c | 6 +
drivers/crypto/omap-sham.c | 2 +-
drivers/crypto/rockchip/rk3288_crypto.c | 193 +--------
drivers/crypto/rockchip/rk3288_crypto.h | 53 +--
drivers/crypto/rockchip/rk3288_crypto_ahash.c | 199 ++++++----
drivers/crypto/rockchip/rk3288_crypto_skcipher.c | 413 +++++++++++--------
drivers/devfreq/devfreq.c | 6 +-
drivers/devfreq/governor_userspace.c | 12 +-
drivers/dio/dio.c | 8 +
drivers/edac/i10nm_base.c | 3 +-
drivers/firmware/efi/efi.c | 4 +-
drivers/firmware/efi/libstub/efistub.h | 2 +
drivers/firmware/efi/libstub/random.c | 42 +-
drivers/firmware/raspberrypi.c | 1 +
drivers/gpio/gpio-sifive.c | 1 +
drivers/gpio/gpiolib-cdev.c | 93 +++--
drivers/gpio/gpiolib.c | 12 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 +
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 13 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 5 +-
drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 16 +-
.../gpu/drm/amd/display/dc/dce60/dce60_resource.c | 3 +
.../gpu/drm/amd/display/dc/dce80/dce80_resource.c | 2 +
drivers/gpu/drm/amd/include/kgd_pp_interface.h | 3 +-
drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c | 3 +-
.../gpu/drm/amd/pm/powerplay/hwmgr/vega20_hwmgr.c | 3 +-
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 4 +
drivers/gpu/drm/bridge/adv7511/adv7511.h | 3 +-
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 18 +-
drivers/gpu/drm/bridge/adv7511/adv7533.c | 25 +-
drivers/gpu/drm/drm_connector.c | 3 +
drivers/gpu/drm/drm_fourcc.c | 11 +-
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 11 +-
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 5 +-
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 4 +-
drivers/gpu/drm/i915/gvt/debugfs.c | 17 +-
drivers/gpu/drm/i915/gvt/scheduler.c | 1 +
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 6 +-
drivers/gpu/drm/mediatek/mtk_dpi.c | 12 +-
drivers/gpu/drm/meson/meson_viu.c | 5 +-
drivers/gpu/drm/msm/Makefile | 2 +-
drivers/gpu/drm/msm/dp/dp_display.c | 2 +-
drivers/gpu/drm/msm/hdmi/hdmi.c | 78 ++--
drivers/gpu/drm/msm/hdmi/hdmi.h | 30 +-
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 81 +++-
.../drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 216 +---------
drivers/gpu/drm/panel/panel-sitronix-st7701.c | 10 +-
drivers/gpu/drm/panfrost/panfrost_drv.c | 27 +-
drivers/gpu/drm/panfrost/panfrost_gem.c | 16 +-
drivers/gpu/drm/panfrost/panfrost_gem.h | 5 +-
drivers/gpu/drm/radeon/radeon_bios.c | 19 +-
drivers/gpu/drm/rockchip/cdn-dp-core.c | 2 +-
drivers/gpu/drm/rockchip/inno_hdmi.c | 2 +-
drivers/gpu/drm/rockchip/rk3066_hdmi.c | 2 +-
drivers/gpu/drm/rockchip/rockchip_lvds.c | 10 +-
drivers/gpu/drm/sti/sti_dvo.c | 7 +-
drivers/gpu/drm/sti/sti_hda.c | 7 +-
drivers/gpu/drm/sti/sti_hdmi.c | 7 +-
drivers/gpu/drm/tegra/dc.c | 4 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +-
drivers/hid/hid-ids.h | 3 +
drivers/hid/hid-mcp2221.c | 12 +-
drivers/hid/hid-multitouch.c | 4 +
drivers/hid/hid-plantronics.c | 9 +
drivers/hid/hid-sensor-custom.c | 2 +-
drivers/hid/wacom_sys.c | 8 +
drivers/hid/wacom_wac.c | 4 +
drivers/hid/wacom_wac.h | 1 +
drivers/hsi/controllers/omap_ssi_core.c | 14 +-
drivers/hv/ring_buffer.c | 13 +
drivers/hwmon/Kconfig | 1 +
drivers/hwmon/jc42.c | 243 +++++++-----
drivers/i2c/busses/i2c-ismt.c | 3 +
drivers/i2c/busses/i2c-pxa-pci.c | 10 +-
drivers/i2c/muxes/i2c-mux-reg.c | 5 +-
drivers/iio/accel/adis16201.c | 1 +
drivers/iio/accel/adis16209.c | 1 +
drivers/iio/adc/ad_sigma_delta.c | 8 +-
drivers/iio/adc/ti-adc128s052.c | 14 +-
drivers/iio/gyro/adis16136.c | 1 +
drivers/iio/gyro/adis16260.c | 1 +
drivers/iio/imu/adis.c | 98 ++---
drivers/iio/imu/adis16400.c | 1 +
drivers/iio/imu/adis16460.c | 5 +-
drivers/iio/imu/adis16475.c | 6 +-
drivers/iio/imu/adis16480.c | 1 +
drivers/iio/imu/adis_buffer.c | 10 +-
drivers/iio/imu/adis_trigger.c | 20 +-
drivers/iio/temperature/ltc2983.c | 10 +-
drivers/infiniband/core/device.c | 2 +-
drivers/infiniband/core/nldev.c | 6 +-
drivers/infiniband/hw/hfi1/affinity.c | 2 +
drivers/infiniband/hw/hfi1/firmware.c | 6 +
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 24 +-
drivers/infiniband/hw/hns/hns_roce_mr.c | 4 +-
drivers/infiniband/hw/mlx5/qp.c | 49 ++-
drivers/infiniband/sw/rxe/rxe_qp.c | 6 +-
drivers/infiniband/sw/siw/siw_cq.c | 24 +-
drivers/infiniband/sw/siw/siw_qp_tx.c | 2 +-
drivers/infiniband/sw/siw/siw_verbs.c | 40 +-
drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 7 +
drivers/infiniband/ulp/srp/ib_srp.c | 96 ++++-
drivers/input/joystick/Kconfig | 1 +
drivers/input/touchscreen/elants_i2c.c | 9 +-
drivers/iommu/amd/init.c | 7 +
drivers/iommu/amd/iommu_v2.c | 1 +
drivers/iommu/fsl_pamu.c | 2 +-
drivers/iommu/sun50i-iommu.c | 16 +-
drivers/irqchip/irq-gic-pm.c | 2 +-
drivers/isdn/hardware/mISDN/hfcmulti.c | 19 +-
drivers/isdn/hardware/mISDN/hfcpci.c | 13 +-
drivers/isdn/hardware/mISDN/hfcsusb.c | 12 +-
drivers/macintosh/macio-adb.c | 4 +
drivers/macintosh/macio_asic.c | 2 +-
drivers/mailbox/zynqmp-ipi-mailbox.c | 4 +-
drivers/mcb/mcb-core.c | 4 +-
drivers/mcb/mcb-parse.c | 2 +-
drivers/md/dm-cache-metadata.c | 54 ++-
drivers/md/dm-cache-target.c | 11 +-
drivers/md/dm-clone-target.c | 1 +
drivers/md/dm-integrity.c | 2 +
drivers/md/dm-thin-metadata.c | 60 ++-
drivers/md/dm-thin.c | 18 +-
drivers/md/md-bitmap.c | 47 ++-
drivers/md/md.c | 9 +-
drivers/md/raid1.c | 1 +
drivers/media/dvb-core/dmxdev.c | 8 +
drivers/media/dvb-core/dvb_ca_en50221.c | 2 +-
drivers/media/dvb-core/dvb_frontend.c | 10 +-
drivers/media/dvb-core/dvbdev.c | 33 +-
drivers/media/dvb-frontends/bcm3510.c | 1 +
drivers/media/dvb-frontends/stv0288.c | 5 +-
drivers/media/i2c/ad5820.c | 10 +-
drivers/media/pci/saa7164/saa7164-core.c | 4 +-
drivers/media/pci/solo6x10/solo6x10-core.c | 1 +
drivers/media/platform/coda/coda-bit.c | 14 +-
drivers/media/platform/coda/coda-jpeg.c | 10 +-
drivers/media/platform/exynos4-is/fimc-core.c | 2 +-
drivers/media/platform/exynos4-is/media-dev.c | 32 +-
drivers/media/platform/exynos4-is/media-dev.h | 2 +-
drivers/media/platform/qcom/camss/camss-video.c | 3 +-
drivers/media/platform/qcom/venus/pm_helpers.c | 4 +-
drivers/media/platform/s5p-mfc/s5p_mfc.c | 17 +-
drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c | 4 +-
drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 12 +-
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c | 14 +-
.../media/platform/sti/c8sectpfe/c8sectpfe-core.c | 1 +
drivers/media/radio/si470x/radio-si470x-usb.c | 4 +-
drivers/media/rc/imon.c | 6 +-
drivers/media/test-drivers/vidtv/vidtv_bridge.c | 22 +-
drivers/media/test-drivers/vimc/vimc-core.c | 2 +-
drivers/media/test-drivers/vivid/vivid-vid-cap.c | 1 +
drivers/media/usb/dvb-usb/az6027.c | 4 +
drivers/media/usb/dvb-usb/dvb-usb-init.c | 4 +-
drivers/media/v4l2-core/videobuf-dma-contig.c | 22 +-
drivers/misc/cxl/guest.c | 24 +-
drivers/misc/cxl/pci.c | 21 +-
drivers/misc/ocxl/config.c | 20 +-
drivers/misc/ocxl/file.c | 7 +-
drivers/misc/sgi-gru/grufault.c | 13 +-
drivers/misc/sgi-gru/grumain.c | 22 +-
drivers/misc/sgi-gru/grutables.h | 2 +-
drivers/misc/tifm_7xx1.c | 2 +-
drivers/mmc/host/alcor.c | 5 +-
drivers/mmc/host/atmel-mci.c | 9 +-
drivers/mmc/host/meson-gx-mmc.c | 4 +-
drivers/mmc/host/mmci.c | 4 +-
drivers/mmc/host/moxart-mmc.c | 4 +-
drivers/mmc/host/mxcmmc.c | 4 +-
drivers/mmc/host/omap_hsmmc.c | 4 +-
drivers/mmc/host/pxamci.c | 7 +-
drivers/mmc/host/renesas_sdhi_core.c | 2 +-
drivers/mmc/host/rtsx_usb_sdmmc.c | 11 +-
drivers/mmc/host/sdhci-sprd.c | 16 +-
drivers/mmc/host/sdhci_f_sdh30.c | 3 +
drivers/mmc/host/toshsd.c | 6 +-
drivers/mmc/host/via-sdmmc.c | 4 +-
drivers/mmc/host/vub300.c | 13 +-
drivers/mmc/host/wbsd.c | 12 +-
drivers/mmc/host/wmt-sdmmc.c | 6 +-
drivers/mtd/lpddr/lpddr2_nvm.c | 2 +
drivers/mtd/maps/pxa2xx-flash.c | 2 +
drivers/mtd/mtdcore.c | 4 +-
drivers/mtd/spi-nor/core.c | 2 +
drivers/net/bonding/bond_3ad.c | 1 +
drivers/net/bonding/bond_main.c | 13 +-
drivers/net/can/m_can/tcan4x5x.c | 5 -
drivers/net/can/usb/kvaser_usb/kvaser_usb.h | 30 +-
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 115 +++++-
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 167 ++++++--
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 437 ++++++++++++++++++---
drivers/net/dsa/lan9303-core.c | 4 +-
drivers/net/ethernet/amd/atarilance.c | 2 +-
drivers/net/ethernet/amd/lance.c | 2 +-
drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 3 +
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c | 4 +-
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 4 +-
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 23 +-
drivers/net/ethernet/apple/bmac.c | 2 +-
drivers/net/ethernet/apple/mace.c | 2 +-
drivers/net/ethernet/dnet.c | 4 +-
drivers/net/ethernet/freescale/enetc/enetc.c | 8 +-
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 3 +-
drivers/net/ethernet/intel/igb/igb_main.c | 10 +-
drivers/net/ethernet/intel/igc/igc.h | 2 +
drivers/net/ethernet/intel/igc/igc_defines.h | 2 +
drivers/net/ethernet/intel/igc/igc_main.c | 245 +++++++++---
drivers/net/ethernet/intel/igc/igc_tsn.c | 11 +-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 12 +-
drivers/net/ethernet/mellanox/mlx5/core/health.c | 6 +
.../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 4 +
drivers/net/ethernet/mellanox/mlx5/core/main.c | 2 +
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 1 +
drivers/net/ethernet/neterion/s2io.c | 2 +-
drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 2 +-
drivers/net/ethernet/qlogic/qed/qed_debug.c | 3 +-
.../net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 8 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 8 +-
.../ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 2 +
drivers/net/ethernet/rdc/r6040.c | 5 +-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 3 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 8 +-
drivers/net/ethernet/ti/netcp_core.c | 2 +-
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 2 +-
drivers/net/fddi/defxx.c | 22 +-
drivers/net/hamradio/baycom_epp.c | 2 +-
drivers/net/hamradio/scc.c | 6 +-
drivers/net/macsec.c | 34 +-
drivers/net/ntb_netdev.c | 4 +-
drivers/net/phy/xilinx_gmii2rgmii.c | 1 +
drivers/net/ppp/ppp_generic.c | 2 +
drivers/net/usb/rndis_host.c | 3 +-
drivers/net/veth.c | 5 +-
drivers/net/vmxnet3/vmxnet3_drv.c | 8 +
drivers/net/wan/farsync.c | 2 +
drivers/net/wireless/ath/ar5523/ar5523.c | 6 +
drivers/net/wireless/ath/ath10k/pci.c | 20 +-
drivers/net/wireless/ath/ath9k/hif_usb.c | 46 ++-
.../broadcom/brcm80211/brcmfmac/firmware.c | 5 +
.../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 6 +-
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 12 +-
drivers/net/wireless/mediatek/mt76/mt76.h | 3 +-
drivers/net/wireless/microchip/wilc1000/sdio.c | 1 +
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 2 +-
.../net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 26 +-
.../net/wireless/realtek/rtlwifi/rtl8192de/phy.c | 10 +-
drivers/net/wireless/rsi/rsi_91x_core.c | 4 +-
drivers/net/wireless/rsi/rsi_91x_hal.c | 6 +-
drivers/nfc/pn533/pn533.c | 4 +
drivers/nvme/host/nvme.h | 2 +-
drivers/nvme/host/pci.c | 37 +-
drivers/nvme/target/passthru.c | 11 +-
drivers/of/overlay.c | 4 +-
drivers/parisc/led.c | 3 +
drivers/pci/controller/dwc/pcie-designware.c | 2 +-
drivers/pci/endpoint/functions/pci-epf-test.c | 2 +-
drivers/pci/irq.c | 2 +
drivers/pci/pci-sysfs.c | 13 +-
drivers/pci/pci.c | 2 +
drivers/perf/arm_dsu_pmu.c | 6 +-
drivers/perf/arm_smmuv3_pmu.c | 8 +-
drivers/phy/broadcom/phy-brcm-usb.c | 6 +-
drivers/pinctrl/pinconf-generic.c | 4 +-
drivers/platform/chrome/cros_usbpd_notify.c | 6 +-
drivers/platform/x86/huawei-wmi.c | 20 +-
drivers/platform/x86/intel_scu_ipc.c | 2 +-
drivers/platform/x86/mxm-wmi.c | 8 +-
drivers/pnp/core.c | 4 +-
drivers/power/supply/power_supply_core.c | 7 +-
drivers/pwm/pwm-sifive.c | 5 +-
drivers/pwm/pwm-tegra.c | 4 +-
drivers/rapidio/devices/rio_mport_cdev.c | 15 +-
drivers/rapidio/rio-scan.c | 8 +-
drivers/rapidio/rio.c | 9 +-
drivers/regulator/core.c | 15 +-
drivers/remoteproc/qcom_q6v5_pas.c | 4 +
drivers/remoteproc/qcom_sysmon.c | 5 +-
drivers/remoteproc/remoteproc_core.c | 9 +-
drivers/rtc/rtc-cmos.c | 366 ++++++++---------
drivers/rtc/rtc-ds1347.c | 2 +-
drivers/rtc/rtc-mxc_v2.c | 4 +-
drivers/rtc/rtc-pcf85063.c | 10 +-
drivers/rtc/rtc-pic32.c | 8 +-
drivers/rtc/rtc-snvs.c | 16 +-
drivers/rtc/rtc-st-lpc.c | 1 +
drivers/s390/net/ctcm_main.c | 11 +-
drivers/s390/net/lcs.c | 8 +-
drivers/s390/net/netiucv.c | 9 +-
drivers/scsi/fcoe/fcoe.c | 1 +
drivers/scsi/fcoe/fcoe_sysfs.c | 19 +-
drivers/scsi/hpsa.c | 9 +-
drivers/scsi/ipr.c | 10 +-
drivers/scsi/mpt3sas/mpt3sas_transport.c | 2 +
drivers/scsi/scsi_debug.c | 11 +-
drivers/scsi/scsi_error.c | 14 +-
drivers/scsi/snic/snic_disc.c | 3 +
drivers/soc/qcom/Kconfig | 1 +
drivers/soc/qcom/apr.c | 142 ++++---
drivers/soc/qcom/llcc-qcom.c | 2 +-
drivers/soc/ti/knav_qmss_queue.c | 6 +-
drivers/soc/ti/smartreflex.c | 1 +
drivers/soc/ux500/ux500-soc-id.c | 10 +-
drivers/soundwire/intel.c | 8 +-
drivers/soundwire/qcom.c | 8 +-
drivers/soundwire/stream.c | 4 +-
drivers/spi/spi-gpio.c | 16 +-
drivers/spi/spidev.c | 21 +-
drivers/staging/iio/accel/adis16203.c | 1 +
drivers/staging/iio/accel/adis16240.c | 1 +
drivers/staging/media/tegra-video/csi.c | 4 +-
drivers/staging/media/tegra-video/csi.h | 2 +-
drivers/staging/rtl8192e/rtllib_rx.c | 2 +-
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 4 +-
drivers/thermal/imx8mm_thermal.c | 8 +-
drivers/tty/serial/altera_uart.c | 21 +-
drivers/tty/serial/amba-pl011.c | 14 +-
drivers/tty/serial/fsl_lpuart.c | 18 +-
drivers/tty/serial/pch_uart.c | 4 +
drivers/tty/serial/serial-tegra.c | 6 +-
drivers/tty/serial/serial_core.c | 3 +-
drivers/tty/serial/sunsab.c | 8 +-
drivers/uio/uio_dmem_genirq.c | 13 +-
drivers/usb/dwc3/core.c | 23 +-
drivers/usb/dwc3/dwc3-qcom.c | 13 +-
drivers/usb/gadget/function/f_hid.c | 271 ++++++++++---
drivers/usb/gadget/function/u_hid.h | 1 +
drivers/usb/gadget/udc/fotg210-udc.c | 12 +-
drivers/usb/musb/musb_gadget.c | 2 -
drivers/usb/roles/class.c | 5 +-
drivers/usb/storage/alauda.c | 2 +
drivers/usb/typec/bus.c | 2 +-
drivers/usb/typec/tcpm/tcpci.c | 5 +-
drivers/usb/typec/tps6598x.c | 2 +-
drivers/vfio/platform/vfio_platform_common.c | 3 +-
drivers/vhost/vhost.c | 4 +-
drivers/vhost/vringh.c | 5 +-
drivers/vhost/vsock.c | 9 +-
drivers/video/fbdev/Kconfig | 1 -
drivers/video/fbdev/hyperv_fb.c | 8 +-
drivers/video/fbdev/matrox/matroxfb_base.c | 4 +-
drivers/video/fbdev/pm2fb.c | 9 +-
drivers/video/fbdev/uvesafb.c | 1 +
drivers/video/fbdev/vermilion/vermilion.c | 4 +-
drivers/video/fbdev/via/via-core.c | 9 +-
drivers/vme/bridges/vme_fake.c | 2 +
drivers/vme/bridges/vme_tsi148.c | 1 +
drivers/xen/privcmd.c | 2 +-
fs/afs/fs_probe.c | 5 +-
fs/binfmt_elf_fdpic.c | 5 +-
fs/binfmt_misc.c | 8 +-
fs/btrfs/backref.c | 4 +
fs/btrfs/ioctl.c | 9 +-
fs/btrfs/rcu-string.h | 6 +-
fs/ceph/caps.c | 2 +-
fs/ceph/locks.c | 4 -
fs/ceph/super.h | 1 -
fs/char_dev.c | 2 +-
fs/cifs/cifsfs.c | 8 +-
fs/cifs/cifsglob.h | 69 ++++
fs/cifs/cifsproto.h | 4 +-
fs/cifs/connect.c | 4 +-
fs/cifs/misc.c | 4 +-
fs/cifs/smb2ops.c | 143 ++++---
fs/configfs/dir.c | 2 +
fs/debugfs/file.c | 28 +-
fs/ext4/ext4.h | 9 +-
fs/ext4/extents.c | 8 +
fs/ext4/extents_status.c | 3 +-
fs/ext4/fast_commit.c | 49 ++-
fs/ext4/fast_commit.h | 1 +
fs/ext4/indirect.c | 11 +-
fs/ext4/inline.c | 2 +-
fs/ext4/inode.c | 49 ++-
fs/ext4/ioctl.c | 13 +-
fs/ext4/mballoc.h | 2 +-
fs/ext4/migrate.c | 6 +-
fs/ext4/namei.c | 49 ++-
fs/ext4/resize.c | 6 +-
fs/ext4/super.c | 230 +++++------
fs/ext4/verity.c | 7 +-
fs/ext4/xattr.c | 184 ++++-----
fs/ext4/xattr.h | 1 +
fs/f2fs/gc.c | 11 +-
fs/f2fs/segment.c | 2 +-
fs/hfs/inode.c | 13 +-
fs/hfs/trans.c | 2 +-
fs/hfsplus/hfsplus_fs.h | 2 +
fs/hfsplus/inode.c | 16 +-
fs/hfsplus/options.c | 4 +
fs/hugetlbfs/inode.c | 6 +-
fs/jfs/jfs_dmap.c | 27 +-
fs/libfs.c | 22 +-
fs/locks.c | 23 ++
fs/mbcache.c | 121 ++++--
fs/nfs/namespace.c | 2 +-
fs/nfs/nfs4proc.c | 34 +-
fs/nfs/nfs4state.c | 2 +
fs/nfs/nfs4xdr.c | 12 +-
fs/nfsd/nfs4callback.c | 8 +-
fs/nfsd/nfs4state.c | 51 ++-
fs/nfsd/nfs4xdr.c | 11 +
fs/nfsd/nfssvc.c | 2 +-
fs/nilfs2/the_nilfs.c | 73 +++-
fs/ocfs2/journal.c | 2 +-
fs/ocfs2/journal.h | 1 +
fs/ocfs2/stackglue.c | 8 +-
fs/ocfs2/super.c | 105 ++---
fs/orangefs/orangefs-debugfs.c | 29 +-
fs/orangefs/orangefs-mod.c | 8 +-
fs/overlayfs/dir.c | 46 ++-
fs/overlayfs/super.c | 7 +-
fs/pnode.c | 2 +-
fs/pstore/Kconfig | 1 +
fs/pstore/pmsg.c | 7 +-
fs/pstore/ram.c | 2 +
fs/pstore/ram_core.c | 6 +-
fs/pstore/zone.c | 2 +-
fs/quota/dquot.c | 2 +
fs/reiserfs/namei.c | 4 +
fs/reiserfs/xattr_security.c | 2 +-
fs/sysv/itree.c | 2 +-
fs/udf/inode.c | 2 +-
fs/udf/namei.c | 8 +-
fs/xattr.c | 2 +-
include/linux/debugfs.h | 19 +-
include/linux/devfreq.h | 7 +-
include/linux/efi.h | 2 -
include/linux/eventfd.h | 2 +-
include/linux/fs.h | 18 +-
include/linux/highmem.h | 18 +
include/linux/hyperv.h | 2 +
include/linux/iio/imu/adis.h | 63 +--
include/linux/interrupt.h | 4 +
include/linux/mbcache.h | 41 +-
include/linux/netdevice.h | 58 +--
include/linux/netfilter/ipset/ip_set.h | 2 +-
include/linux/nvme.h | 3 +-
include/linux/proc_fs.h | 2 +
include/linux/skbuff.h | 42 +-
include/linux/soc/qcom/apr.h | 12 +-
include/linux/sunrpc/rpc_pipe_fs.h | 5 +
include/linux/timerqueue.h | 2 +-
include/media/dvbdev.h | 32 +-
include/net/dst.h | 5 +-
include/net/mptcp.h | 12 +-
include/net/mrp.h | 1 +
include/net/pkt_sched.h | 9 +
include/sound/hdaudio.h | 2 +
include/sound/hdaudio_ext.h | 1 -
include/sound/pcm.h | 36 +-
include/sound/soc-dai.h | 32 +-
include/trace/events/ext4.h | 7 +-
include/trace/events/jbd2.h | 44 +--
include/uapi/drm/drm_fourcc.h | 11 +
include/uapi/linux/idxd.h | 2 +-
include/uapi/linux/swab.h | 2 +-
include/uapi/sound/asequencer.h | 8 +-
io_uring/io_uring.c | 2 +-
kernel/Makefile | 2 +-
kernel/acct.c | 2 +
kernel/bpf/btf.c | 5 +
kernel/bpf/verifier.c | 123 +++---
kernel/cpu.c | 4 +-
kernel/events/core.c | 14 +-
kernel/futex/Makefile | 3 +
kernel/{futex.c => futex/core.c} | 30 +-
kernel/gcov/gcc_4_7.c | 5 +
kernel/irq/internals.h | 2 +
kernel/irq/irqdesc.c | 15 +-
kernel/irq/manage.c | 11 +-
kernel/kcsan/core.c | 50 +++
kernel/padata.c | 15 +-
kernel/power/snapshot.c | 4 +-
kernel/rcu/tree.c | 23 +-
kernel/rcu/tree.h | 1 +
kernel/relay.c | 4 +-
kernel/sched/fair.c | 128 +++++-
kernel/trace/blktrace.c | 3 +-
kernel/trace/trace.c | 15 +-
kernel/trace/trace_events_hist.c | 13 +-
lib/Kconfig.debug | 1 -
lib/debugobjects.c | 10 +
lib/fonts/fonts.c | 4 +-
lib/iov_iter.c | 14 -
lib/notifier-error-inject.c | 2 +-
lib/test_firmware.c | 1 +
mm/compaction.c | 18 +-
net/802/mrp.c | 18 +-
net/bluetooth/hci_core.c | 2 +-
net/bluetooth/rfcomm/core.c | 2 +-
net/bpf/test_run.c | 3 -
net/caif/cfctrl.c | 6 +-
net/core/dev.c | 16 +-
net/core/filter.c | 18 +-
net/core/skbuff.c | 9 +-
net/core/sock_map.c | 2 +
net/core/stream.c | 6 +
net/ethtool/ioctl.c | 3 +-
net/hsr/hsr_device.c | 59 +--
net/hsr/hsr_forward.c | 15 +-
net/hsr/hsr_framereg.c | 9 +-
net/hsr/hsr_framereg.h | 2 +
net/ipv4/inet_connection_sock.c | 28 +-
net/ipv4/syncookies.c | 7 +-
net/ipv4/tcp_bpf.c | 8 +-
net/ipv4/tcp_ulp.c | 4 +
net/ipv4/udp_tunnel_core.c | 1 +
net/mac80211/iface.c | 1 +
net/mptcp/subflow.c | 76 +++-
net/netfilter/ipset/ip_set_core.c | 7 +-
net/netfilter/ipset/ip_set_hash_ip.c | 14 +-
net/netfilter/ipset/ip_set_hash_ipmark.c | 13 +-
net/netfilter/ipset/ip_set_hash_ipport.c | 13 +-
net/netfilter/ipset/ip_set_hash_ipportip.c | 13 +-
net/netfilter/ipset/ip_set_hash_ipportnet.c | 13 +-
net/netfilter/ipset/ip_set_hash_net.c | 17 +-
net/netfilter/ipset/ip_set_hash_netiface.c | 15 +-
net/netfilter/ipset/ip_set_hash_netnet.c | 23 +-
net/netfilter/ipset/ip_set_hash_netport.c | 19 +-
net/netfilter/ipset/ip_set_hash_netportnet.c | 40 +-
net/netfilter/nf_conntrack_proto_icmpv6.c | 53 +++
net/netfilter/nf_flow_table_offload.c | 6 +-
net/nfc/netlink.c | 52 ++-
net/openvswitch/datapath.c | 25 +-
net/packet/af_packet.c | 20 +-
net/rxrpc/output.c | 2 +-
net/rxrpc/sendmsg.c | 2 +-
net/sched/cls_tcindex.c | 12 +-
net/sched/ematch.c | 2 +
net/sched/sch_api.c | 5 +
net/sched/sch_atm.c | 5 +-
net/sched/sch_cbq.c | 4 +-
net/sctp/sysctl.c | 73 ++--
net/sunrpc/auth_gss/auth_gss.c | 19 +-
net/sunrpc/auth_gss/svcauth_gss.c | 9 +-
net/sunrpc/clnt.c | 2 +-
net/sunrpc/xprtrdma/verbs.c | 2 +-
net/vmw_vsock/vmci_transport.c | 6 +-
net/wireless/reg.c | 4 +-
samples/vfio-mdev/mdpy-fb.c | 8 +-
security/apparmor/apparmorfs.c | 4 +-
security/apparmor/lsm.c | 4 +-
security/apparmor/policy.c | 2 +-
security/apparmor/policy_ns.c | 2 +-
security/apparmor/policy_unpack.c | 2 +-
security/device_cgroup.c | 33 +-
security/integrity/digsig.c | 6 +-
security/integrity/ima/ima_main.c | 1 +
security/integrity/ima/ima_policy.c | 53 ++-
security/integrity/ima/ima_template.c | 9 +-
security/integrity/platform_certs/load_uefi.c | 1 +
security/loadpin/loadpin.c | 30 +-
sound/core/pcm_native.c | 4 +-
sound/drivers/mts64.c | 3 +
sound/hda/ext/hdac_ext_stream.c | 17 -
sound/hda/hdac_stream.c | 27 ++
sound/pci/asihpi/hpioctl.c | 2 +-
sound/pci/hda/hda_controller.c | 4 +-
sound/pci/hda/patch_hdmi.c | 1 +
sound/pci/hda/patch_realtek.c | 77 ++++
sound/soc/codecs/hdac_hda.c | 22 +-
sound/soc/codecs/max98373-sdw.c | 2 +-
sound/soc/codecs/pcm512x.c | 8 +-
sound/soc/codecs/rt1308-sdw.c | 2 +-
sound/soc/codecs/rt298.c | 7 +
sound/soc/codecs/rt5670.c | 2 -
sound/soc/codecs/rt5682-sdw.c | 2 +-
sound/soc/codecs/rt700.c | 2 +-
sound/soc/codecs/rt711.c | 2 +-
sound/soc/codecs/rt715.c | 2 +-
sound/soc/codecs/wm8994.c | 5 +
sound/soc/codecs/wsa881x.c | 2 +-
sound/soc/generic/audio-graph-card.c | 4 +-
sound/soc/intel/boards/bytcr_rt5640.c | 15 +
sound/soc/intel/boards/sof_sdw.c | 6 +-
sound/soc/intel/skylake/skl-pcm.c | 7 +-
sound/soc/intel/skylake/skl.c | 7 +-
sound/soc/jz4740/jz4740-i2s.c | 39 +-
sound/soc/mediatek/common/mtk-btcvsd.c | 6 +-
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 71 +++-
sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c | 7 +-
sound/soc/pxa/mmp-pcm.c | 2 +-
sound/soc/qcom/lpass-sc7180.c | 3 +
sound/soc/qcom/sdm845.c | 4 +-
sound/soc/rockchip/rockchip_pdm.c | 1 +
sound/soc/rockchip/rockchip_spdif.c | 1 +
sound/soc/sof/intel/hda-dai.c | 7 +-
sound/usb/line6/driver.c | 3 +-
sound/usb/line6/midi.c | 6 +-
sound/usb/line6/midibuf.c | 25 +-
sound/usb/line6/midibuf.h | 5 +-
sound/usb/line6/pod.c | 3 +-
sound/usb/quirks-table.h | 2 +
tools/arch/parisc/include/uapi/asm/mman.h | 12 +-
tools/lib/bpf/bpf.h | 7 +
tools/lib/bpf/btf_dump.c | 29 +-
tools/lib/bpf/libbpf.c | 3 +
tools/objtool/check.c | 12 +-
tools/perf/bench/bench.h | 12 -
tools/perf/builtin-trace.c | 32 +-
tools/perf/util/data.c | 2 +
tools/perf/util/debug.c | 4 +
tools/perf/util/dwarf-aux.c | 23 +-
tools/perf/util/symbol-elf.c | 2 +-
tools/testing/ktest/ktest.pl | 23 +-
tools/testing/selftests/Makefile | 26 +-
.../selftests/drivers/net/netdevsim/devlink.sh | 4 +-
tools/testing/selftests/efivarfs/efivarfs.sh | 5 +
.../ftrace/test.d/ftrace/func_event_triggers.tc | 15 +-
tools/testing/selftests/lib.mk | 5 +
.../selftests/netfilter/conntrack_icmp_related.sh | 36 +-
.../selftests/powerpc/dscr/dscr_sysfs_test.c | 5 +-
tools/testing/selftests/proc/proc-uptime-002.c | 3 +-
.../selftests/rcutorture/bin/console-badness.sh | 3 +-
747 files changed, 7705 insertions(+), 4186 deletions(-)
^ permalink raw reply [relevance 1%]
* [PATCH] Bluetooth: btrtl: Add support for RTL8852BS
@ 2023-01-12 9:42 20% Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2023-01-12 9:42 UTC (permalink / raw)
To: marcel, johan.hedberg, luiz.dentz; +Cc: linux-bluetooth, linux-kernel
Add the support for RTL8852BS BT controller on UART interface.
The necessary firmware file will be submitted to linux-firmware.
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/bluetooth/btrtl.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c
index 69c3fe649ca7..36c3a23324f8 100644
--- a/drivers/bluetooth/btrtl.c
+++ b/drivers/bluetooth/btrtl.c
@@ -198,6 +198,14 @@ static const struct id_table ic_id_table[] = {
.fw_name = "rtl_bt/rtl8852bu_fw.bin",
.cfg_name = "rtl_bt/rtl8852bu_config" },
+ /* 8852B with UART interface */
+ { IC_INFO(RTL_ROM_LMP_8852A, 0xb, 0xb, HCI_UART),
+ .config_needed = true,
+ .has_rom_version = true,
+ .has_msft_ext = true,
+ .fw_name = "rtl_bt/rtl8852bs_fw.bin",
+ .cfg_name = "rtl_bt/rtl8852bs_config" },
+
/* 8852C */
{ IC_INFO(RTL_ROM_LMP_8852A, 0xc, 0xc, HCI_USB),
.config_needed = false,
@@ -965,5 +973,7 @@ MODULE_FIRMWARE("rtl_bt/rtl8852au_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852au_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin");
+MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin");
+MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin");
MODULE_FIRMWARE("rtl_bt/rtl8852cu_config.bin");
--
2.29.0
^ permalink raw reply related [relevance 20%]
* [PATCH 5.15 000/290] 5.15.87-rc1 review
@ 2023-01-10 18:01 1% Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2023-01-10 18:01 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow
This is the start of the stable review cycle for the 5.15.87 release.
There are 290 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 12 Jan 2023 17:59:42 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.87-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.15.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.15.87-rc1
Jocelyn Falempe <jfalempe@redhat.com>
drm/mgag200: Fix PLL setup for G200_SE_A rev >=4
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
io_uring: Fix unsigned 'res' comparison with zero in io_fixup_rw_res()
Ard Biesheuvel <ardb@kernel.org>
efi: random: combine bootloader provided RNG seed with RNG protocol output
Jan Kara <jack@suse.cz>
mbcache: Avoid nesting of cache->c_list_lock under bit locks
Jie Wang <wangjie125@huawei.com>
net: hns3: fix return value check bug of rx copybreak
Qu Wenruo <wqu@suse.com>
btrfs: make thaw time super block check to also verify checksum
Muhammad Usama Anjum <usama.anjum@collabora.com>
selftests: set the BUILD variable to absolute path
Eric Biggers <ebiggers@google.com>
ext4: don't allow journal inode to have encrypt flag
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: use proper req destructor for IPv6
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: dedicated request sock for subflow in v6
Mario Limonciello <mario.limonciello@amd.com>
Revert "ACPI: PM: Add support for upcoming AMD uPEP HID AMDI007"
William Liu <will@willsroot.io>
ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob
Namjae Jeon <linkinjeon@kernel.org>
ksmbd: fix infinite loop in ksmbd_conn_handler_loop()
Linus Torvalds <torvalds@linux-foundation.org>
hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
Arnd Bergmann <arnd@arndb.de>
hfs/hfsplus: use WARN_ON for sanity check
Zhenyu Wang <zhenyuw@linux.intel.com>
drm/i915/gvt: fix vgpu debugfs clean in remove
Zhenyu Wang <zhenyuw@linux.intel.com>
drm/i915/gvt: fix gvt debugfs destroy
Björn Töpel <bjorn@rivosinc.com>
riscv, kprobes: Stricter c.jr/c.jalr decoding
Ben Dooks <ben-linux@fluff.org>
riscv: uaccess: fix type of 0 variable on error in get_user()
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
thermal: int340x: Add missing attribute for data rate base
Pavel Begunkov <asml.silence@gmail.com>
io_uring: fix CQ waiting timeout handling
Jens Axboe <axboe@kernel.dk>
block: don't allow splitting of a REQ_NOWAIT bio
Paul Menzel <pmenzel@molgen.mpg.de>
fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB
Jeff Layton <jlayton@kernel.org>
nfsd: fix handling of readdir in v4root vs. mount upcall timeout
Rodrigo Branco <bsdaemon@google.com>
x86/bugs: Flush IBP in ib_prctl_set()
Takashi Iwai <tiwai@suse.de>
x86/kexec: Fix double-free of elf header buffer
Qu Wenruo <wqu@suse.com>
btrfs: check superblock to ensure the fs was not modified at thaw time
Christoph Hellwig <hch@lst.de>
nvme: also return I/O command effects from nvme_command_effects
Christoph Hellwig <hch@lst.de>
nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it
Jens Axboe <axboe@kernel.dk>
io_uring: check for valid register opcode earlier
Yanjun Zhang <zhangyanjun@cestc.cn>
nvme: fix multipath crash caused by flush request when blktrace is enabled
Hans de Goede <hdegoede@redhat.com>
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
Jan Kara <jack@suse.cz>
udf: Fix extension of the last extent in the file
Zhengchao Shao <shaozhengchao@huawei.com>
caif: fix memory leak in cfctrl_linkup_request()
Dan Carpenter <error27@gmail.com>
drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()
Namhyung Kim <namhyung@kernel.org>
perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode
Szymon Heidrich <szymon.heidrich@gmail.com>
usb: rndis_host: Secure rndis_query check against int overflow
Geetha sowjanya <gakula@marvell.com>
octeontx2-pf: Fix lmtst ID used in aura free
Daniil Tatianin <d-tatianin@yandex-team.ru>
drivers/net/bonding/bond_3ad: return when there's no aggregator
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
fs/ntfs3: don't hold ni_lock when calling truncate_setsize()
Philipp Zabel <p.zabel@pengutronix.de>
drm/imx: ipuv3-plane: Fix overlay plane width
Miaoqian Lin <linmq006@gmail.com>
perf tools: Fix resources leak in perf_data__open_dir()
Jozsef Kadlecsik <kadlec@netfilter.org>
netfilter: ipset: Rework long task execution when adding/deleting entries
Jozsef Kadlecsik <kadlec@netfilter.org>
netfilter: ipset: fix hash:net,port,net hang with /0 subnet
Horatiu Vultur <horatiu.vultur@microchip.com>
net: sparx5: Fix reading of the MAC address
Jamal Hadi Salim <jhs@mojatatu.com>
net: sched: cbq: dont intepret cls results when asked to drop
Jamal Hadi Salim <jhs@mojatatu.com>
net: sched: atm: dont intepret cls results when asked to drop
Miaoqian Lin <linmq006@gmail.com>
gpio: sifive: Fix refcount leak in sifive_gpio_probe
Xiubo Li <xiubli@redhat.com>
ceph: switch to vfs_inode_has_locks() to fix file lock bug
Jeff Layton <jlayton@kernel.org>
filelock: new helper: vfs_inode_has_locks
Carlo Caione <ccaione@baylibre.com>
drm/meson: Reduce the FIFO lines held when AFBC is not used
Maor Gottlieb <maorg@nvidia.com>
RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
Shay Drory <shayd@nvidia.com>
RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device
Miaoqian Lin <linmq006@gmail.com>
net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
David Arinzon <darinzon@amazon.com>
net: ena: Update NUMA TPH hint register upon NUMA node update
David Arinzon <darinzon@amazon.com>
net: ena: Set default value for RX interrupt moderation
David Arinzon <darinzon@amazon.com>
net: ena: Fix rx_copybreak value update
David Arinzon <darinzon@amazon.com>
net: ena: Use bitmask to indicate packet redirection
David Arinzon <darinzon@amazon.com>
net: ena: Account for the number of processed bytes in XDP
David Arinzon <darinzon@amazon.com>
net: ena: Don't register memory info on XDP exchange
David Arinzon <darinzon@amazon.com>
net: ena: Fix toeplitz initial hash value
Jiguang Xiao <jiguang.xiao@windriver.com>
net: amd-xgbe: add missed tasklet_kill
Adham Faris <afaris@nvidia.com>
net/mlx5e: Fix hw mtu initializing at XDP SQ allocation
Chris Mi <cmi@nvidia.com>
net/mlx5e: Always clear dest encap in neigh-update-del
Roi Dayan <roid@nvidia.com>
net/mlx5e: TC, Refactor mlx5e_tc_add_flow_mod_hdr() to get flow attr
Dragos Tatulea <dtatulea@nvidia.com>
net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default
Shay Drory <shayd@nvidia.com>
net/mlx5: Avoid recovery in probe flows
Jiri Pirko <jiri@nvidia.com>
net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path
Moshe Shemesh <moshe@nvidia.com>
net/mlx5: E-Switch, properly handle ingress tagged packets on VST
Stefano Garzarella <sgarzare@redhat.com>
vdpa_sim: fix vringh initialization in vdpasim_queue_ready()
Stefano Garzarella <sgarzare@redhat.com>
vhost: fix range used in translate_desc()
Stefano Garzarella <sgarzare@redhat.com>
vringh: fix range used in iotlb_translate()
Yuan Can <yuancan@huawei.com>
vhost/vsock: Fix error handling in vhost_vsock_init()
ruanjinjie <ruanjinjie@huawei.com>
vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init()
Miaoqian Lin <linmq006@gmail.com>
nfc: Fix potential resource leaks
Johnny S. Lee <foss@jsl.io>
net: dsa: mv88e6xxx: depend on PTP conditionally
Daniil Tatianin <d-tatianin@yandex-team.ru>
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
Hawkins Jiawei <yin31149@gmail.com>
net: sched: fix memory leak in tcindex_set_parms
Jian Shen <shenjian15@huawei.com>
net: hns3: fix VF promisc mode not update when mac table full
Jian Shen <shenjian15@huawei.com>
net: hns3: fix miss L3E checking for rx packet
Peng Li <lipeng321@huawei.com>
net: hns3: extract macro to simplify ring stats update code
Hao Chen <chenhao288@hisilicon.com>
net: hns3: refactor hns3_nic_reuse_page()
Jie Wang <wangjie125@huawei.com>
net: hns3: add interrupts re-initialization while doing VF FLR
Jeff Layton <jlayton@kernel.org>
nfsd: shut down the NFSv4 state objects before the filecache
Shawn Bohrer <sbohrer@cloudflare.com>
veth: Fix race with AF_XDP exposing old or uninitialized descriptors
Pablo Neira Ayuso <pablo@netfilter.org>
netfilter: nf_tables: honor set timeout and garbage collection updates
Ronak Doshi <doshir@vmware.com>
vmxnet3: correctly report csum_level for encapsulated packet
Pablo Neira Ayuso <pablo@netfilter.org>
netfilter: nf_tables: perform type checking for existing sets
Pablo Neira Ayuso <pablo@netfilter.org>
netfilter: nf_tables: add function to create set stateful expressions
Pablo Neira Ayuso <pablo@netfilter.org>
netfilter: nf_tables: consolidate set description
Steven Price <steven.price@arm.com>
drm/panfrost: Fix GEM handle creation ref-counting
Jakub Kicinski <kuba@kernel.org>
bpf: pull before calling skb_postpull_rcsum()
Sasha Levin <sashal@kernel.org>
btrfs: fix an error handling path in btrfs_defrag_leaves()
minoura makoto <minoura@valinux.co.jp>
SUNRPC: ensure the matching upcall is in-flight upon downcall
Matthew Auld <matthew.auld@intel.com>
drm/i915/migrate: fix length calculation
Matthew Auld <matthew.auld@intel.com>
drm/i915/migrate: fix offset calculation
Matthew Auld <matthew.auld@intel.com>
drm/i915/migrate: don't check the scratch page
Jan Kara <jack@suse.cz>
ext4: fix deadlock due to mbcache entry corruption
Jan Kara <jack@suse.cz>
mbcache: automatically delete entries from cache on freeing
Baokun Li <libaokun1@huawei.com>
ext4: correct inconsistent error msg in nojournal mode
Jason Yan <yanaijie@huawei.com>
ext4: goto right label 'failed_mount3a'
Biju Das <biju.das.jz@bp.renesas.com>
ravb: Fix "failed to switch device to config mode" message during unbind
Masami Hiramatsu (Google) <mhiramat@kernel.org>
perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
Masami Hiramatsu (Google) <mhiramat@kernel.org>
perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix in register read and write for H264
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Clear workbit to handle error condition
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix to handle reference queue during finishing
Yazen Ghannam <yazen.ghannam@amd.com>
x86/MCE/AMD: Clear DFR errors found in THR handler
Borislav Petkov <bp@suse.de>
x86/mce: Get rid of msr_ops
void0red <void0red@gmail.com>
btrfs: fix extent map use-after-free when handling missing device in read_one_chunk
Nikolay Borisov <nborisov@suse.com>
btrfs: move missing device handling in a dedicate function
Sasha Levin <sashal@kernel.org>
btrfs: replace strncpy() with strscpy()
Sasha Levin <sashal@kernel.org>
phy: qcom-qmp-combo: fix out-of-bounds clock access
Jens Axboe <axboe@kernel.dk>
ARM: renumber bits related to _TIF_WORK_MASK
Eric Biggers <ebiggers@kernel.org>
ext4: fix off-by-one errors in fast-commit block filling
Eric Biggers <ebiggers@kernel.org>
ext4: fix unaligned memory access in ext4_fc_reserve_space()
Eric Biggers <ebiggers@kernel.org>
ext4: add missing validation of fast-commit record lengths
Eric Biggers <ebiggers@kernel.org>
ext4: don't set up encryption key during jbd2 transaction
Eric Biggers <ebiggers@kernel.org>
ext4: disable fast-commit of encrypted dir operations
Eric Biggers <ebiggers@kernel.org>
ext4: fix potential out of bound read in ext4_fc_replay_scan()
Eric Biggers <ebiggers@kernel.org>
ext4: factor out ext4_fc_get_tl()
Eric Biggers <ebiggers@kernel.org>
ext4: introduce EXT4_FC_TAG_BASE_LEN helper
Eric Biggers <ebiggers@kernel.org>
ext4: use ext4_debug() instead of jbd_debug()
Eric Biggers <ebiggers@kernel.org>
ext4: remove unused enum EXT4_FC_COMMIT_FAILED
Zheng Yejian <zhengyejian1@huawei.com>
tracing: Fix issue of missing one synthetic field
Damien Le Moal <damien.lemoal@opensource.wdc.com>
block: mq-deadline: Fix dd_finish_request() for zoned devices
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: make display pinning more flexible (v2)
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: handle polaris10/11 overlap asics (v2)
Ye Bin <yebin10@huawei.com>
ext4: allocate extended attribute value in vmalloc area
Jan Kara <jack@suse.cz>
ext4: avoid unaccounted block allocation when expanding inode
Jan Kara <jack@suse.cz>
ext4: initialize quota before expanding inode in setproject ioctl
Ye Bin <yebin10@huawei.com>
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
Ye Bin <yebin10@huawei.com>
ext4: fix kernel BUG in 'ext4_write_inline_data_end()'
Jan Kara <jack@suse.cz>
ext4: avoid BUG_ON when creating xattrs
Luís Henriques <lhenriques@suse.de>
ext4: fix error code return to user-space in ext4_get_branch()
Baokun Li <libaokun1@huawei.com>
ext4: fix corruption when online resizing a 1K bigalloc fs
Eric Whitney <enwlinux@gmail.com>
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
Ye Bin <yebin10@huawei.com>
ext4: init quota for 'old.inode' in 'ext4_rename'
Ye Bin <yebin10@huawei.com>
ext4: fix uninititialized value in 'ext4_evict_inode'
Eric Biggers <ebiggers@google.com>
ext4: fix leaking uninitialized memory in fast-commit journal
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
Zhang Yi <yi.zhang@huawei.com>
ext4: check and assert if marking an no_delete evicting inode dirty
Ye Bin <yebin10@huawei.com>
ext4: fix reserved cluster accounting in __es_remove_extent()
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad quota inode
Baokun Li <libaokun1@huawei.com>
ext4: add helper to check quota inums
Baokun Li <libaokun1@huawei.com>
ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
Gaosheng Cui <cuigaosheng1@huawei.com>
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
Baokun Li <libaokun1@huawei.com>
ext4: fix use-after-free in ext4_orphan_cleanup
Alexander Potapenko <glider@google.com>
fs: ext4: initialize fsdata in pagecache_write()
Luís Henriques <lhenriques@suse.de>
ext4: remove trailing newline from ext4_msg() message
Baokun Li <libaokun1@huawei.com>
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
Zhang Yi <yi.zhang@huawei.com>
ext4: silence the warning when evicting inode with dioread_nolock
Yuan Can <yuancan@huawei.com>
drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init()
Mikko Kovanen <mikko.kovanen@aavamobile.com>
drm/i915/dsi: fix VBT send packet port selection for dual link DSI
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Validate the box size for the snooped cursor
Simon Ser <contact@emersion.fr>
drm/connector: send hotplug uevent on connector cleanup
Wang Weiyang <wangweiyang2@huawei.com>
device_cgroup: Roll back to original exceptions after copy failure
Shang XiaoJing <shangxiaojing@huawei.com>
parisc: led: Fix potential null-ptr-deref in start_task()
Maria Yu <quic_aiquny@quicinc.com>
remoteproc: core: Do pm_relax when in RPROC_OFFLINE state
Kim Phillips <kim.phillips@amd.com>
iommu/amd: Fix ivrs_acpihid cmdline parsing code
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp-combo: fix sc8180x reset
Isaac J. Manjarres <isaacmanjarres@google.com>
driver core: Fix bus_type.match() error handling in __driver_attach()
Mario Limonciello <mario.limonciello@amd.com>
crypto: ccp - Add support for TEE for PCI ID 0x14CA
Corentin Labbe <clabbe@baylibre.com>
crypto: n2 - add missing hash statesize
Sergey Matyukevich <sergey.matyukevich@syntacore.com>
riscv: mm: notify remote harts about mmu cache updates
Guo Ren <guoren@linux.alibaba.com>
riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument
Sascha Hauer <s.hauer@pengutronix.de>
PCI/sysfs: Fix double free in error path
Michael S. Tsirkin <mst@redhat.com>
PCI: Fix pci_device_is_present() for VFs by checking PF
Dan Carpenter <error27@gmail.com>
ipmi: fix use after free in _ipmi_destroy_user()
Huaxin Lu <luhuaxin1@huawei.com>
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
Alexander Sverdlin <alexander.sverdlin@nokia.com>
mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix long wait in unload when IPMI disconnect
Maximilian Luz <luzmaximilian@gmail.com>
ipu3-imgu: Fix NULL pointer dereference in imgu_subdev_set_selection()
Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
ASoC: jz4740-i2s: Handle independent FIFO flush bits
Michael Walle <michael@walle.cc>
wifi: wilc1000: sdio: fix module autoloading
Aditya Garg <gargaditya08@live.com>
efi: Add iMac Pro 2017 to uefi skip cert quirk
Florian-Ewald Mueller <florian-ewald.mueller@ionos.com>
md/bitmap: Fix bitmap chunk size overflow issues
Damien Le Moal <damien.lemoal@opensource.wdc.com>
block: mq-deadline: Do not break sequential write streams to zoned HDDs
Ian Abbott <abbotti@mev.co.uk>
rtc: ds1347: fix value written to century register
Steve French <stfrench@microsoft.com>
cifs: fix missing display of three mount options
Paulo Alcantara <pc@cjr.nz>
cifs: fix confusing debug message
Takashi Iwai <tiwai@suse.de>
media: dvb-core: Fix UAF due to refcount races at releasing
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
media: dvb-core: Fix double free in dvb_register_device()
Nick Desaulniers <ndesaulniers@google.com>
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
Luca Ceresoli <luca.ceresoli@bootlin.com>
staging: media: tegra-video: fix device_node use after free
Luca Ceresoli <luca.ceresoli@bootlin.com>
staging: media: tegra-video: fix chan->mipi value on error
Yang Jihong <yangjihong1@huawei.com>
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
Steven Rostedt (Google) <rostedt@goodmis.org>
tracing/probes: Handle system names with hyphens
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix wrong return value in parse_action_params()
Masami Hiramatsu (Google) <mhiramat@kernel.org>
tracing: Fix complicated dependency of CONFIG_TRACER_MAX_TRACE
Steven Rostedt (Google) <rostedt@goodmis.org>
tracing: Fix race where eprobes can be called before the event
Masami Hiramatsu (Google) <mhiramat@kernel.org>
x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK
Masami Hiramatsu (Google) <mhiramat@kernel.org>
x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK
Steven Rostedt (Google) <rostedt@goodmis.org>
ftrace/x86: Add back ftrace_expected for ftrace bug reports
Ashok Raj <ashok.raj@intel.com>
x86/microcode/intel: Do not retry microcode reloading on the APs
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails
Sean Christopherson <seanjc@google.com>
KVM: VMX: Resume guest immediately when injecting #GP on ECREATE
Rob Herring <robh@kernel.org>
of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values
Namhyung Kim <namhyung@kernel.org>
perf/core: Call LSM hook after copying perf_event_attr
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx'
Mike Snitzer <snitzer@kernel.org>
dm cache: set needs_check flag after aborting metadata
Luo Meng <luomeng12@huawei.com>
dm cache: Fix UAF in destroy()
Luo Meng <luomeng12@huawei.com>
dm clone: Fix UAF in clone_dtr()
Luo Meng <luomeng12@huawei.com>
dm integrity: Fix UAF in dm_integrity_dtr()
Luo Meng <luomeng12@huawei.com>
dm thin: Fix UAF in run_timer_softirq()
Luo Meng <luomeng12@huawei.com>
dm thin: resume even if in FAIL mode
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Use last transaction's pmd->root when commit failed
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata
Mike Snitzer <snitzer@kernel.org>
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: remove MPTCP 'ifdef' in TCP SYN cookies
Florian Westphal <fw@strlen.de>
mptcp: mark ops structures as ro_after_init
Alexander Aring <aahringo@redhat.com>
fs: dlm: retry accept() until -EAGAIN or error returns
Alexander Aring <aahringo@redhat.com>
fs: dlm: fix sock release if listen fails
Chris Chiu <chris.chiu@canonical.com>
ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops
Philipp Jungkamp <p.jungkamp@gmx.net>
ALSA: patch_realtek: Fix Dell Inspiron Plus 16
Yongqiang Liu <liuyongqiang13@huawei.com>
cpufreq: Init completion before kobject_init_and_add()
Kant Fan <kant@allwinnertech.com>
PM/devfreq: governor: Add a private governor_data for governor
Mickaël Salaün <mic@digikod.net>
selftests: Use optional USERCFLAGS and USERLDFLAGS
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
Jason A. Donenfeld <Jason@zx2c4.com>
ARM: ux500: do not directly dereference __iomem
Boris Burkov <boris@bur.io>
btrfs: fix resolving backrefs for inline extent followed by prealloc
Wenchao Chen <wenchao.chen@unisoc.com>
mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength
Alexander Antonov <alexander.antonov@linux.intel.com>
perf/x86/intel/uncore: Clear attr_update properly
Alexander Antonov <alexander.antonov@linux.intel.com>
perf/x86/intel/uncore: Disable I/O stacks to PMU mapping on ICX-D
Bixuan Cui <cuibixuan@linux.alibaba.com>
jbd2: use the correct print format
Steven Rostedt <rostedt@goodmis.org>
ktest.pl minconfig: Unset configs instead of just removing them
Steven Rostedt <rostedt@goodmis.org>
kest.pl: Fix grub2 menu handling for rebooting
Manivannan Sadhasivam <mani@kernel.org>
soc: qcom: Select REMAP_MMIO for LLCC driver
Jason A. Donenfeld <Jason@zx2c4.com>
media: stv0288: use explicitly signed char
Eric Dumazet <edumazet@google.com>
net/af_packet: make sure to pull mac header
Hangbin Liu <liuhangbin@gmail.com>
net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO
Paul E. McKenney <paulmck@kernel.org>
rcu-tasks: Simplify trc_read_check_handler() atomic operations
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio
Marco Elver <elver@google.com>
kcsan: Instrument memcpy/memset/memmove with newer Clang
Chuck Lever <chuck.lever@oracle.com>
SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails
Hanjun Guo <guohanjun@huawei.com>
tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak
Hanjun Guo <guohanjun@huawei.com>
tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak
Hanjun Guo <guohanjun@huawei.com>
tpm: acpi: Call acpi_put_table() to fix memory leak
Deren Wu <deren.wu@mediatek.com>
mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
Jaegeuk Kim <jaegeuk@kernel.org>
f2fs: allow to read node block after shutdown
Pavel Machek <pavel@denx.de>
f2fs: should put a page when checking the summary info
NARIBAYASHI Akira <a.naribayashi@fujitsu.com>
mm, compaction: fix fast_isolate_around() to stay within boundaries
Mikulas Patocka <mpatocka@redhat.com>
md: fix a crash in mempool_free
ChiYuan Huang <cy_huang@richtek.com>
mfd: mt6360: Add bounds checking in Regmap read/write call-backs
Christian Brauner <brauner@kernel.org>
pnode: terminate at peers of source
Artem Egorkine <arteme@gmail.com>
ALSA: line6: fix stack overflow in line6_midi_transmit
Artem Egorkine <arteme@gmail.com>
ALSA: line6: correct midi status byte when receiving data from podxt
Zhang Tianci <zhangtianci.1997@bytedance.com>
ovl: Use ovl mounter's fsuid and fsgid in ovl_link()
Wang Yufen <wangyufen@huawei.com>
binfmt: Fix error return code in load_elf_fdpic_binary()
Aditya Garg <gargaditya08@live.com>
hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
Qiujun Huang <hqjagain@gmail.com>
pstore/zone: Use GFP_ATOMIC to allocate zone buffer
Luca Stefani <luca@osomprivacy.com>
pstore: Properly assign mem_type property
Terry Junge <linuxhid@cosmicgizmosystems.com>
HID: plantronics: Additional PIDs for double volume key presses quirk
José Expósito <jose.exposito89@gmail.com>
HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/rtas: avoid scheduling in rtas_os_term()
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/rtas: avoid device tree lookups in rtas_os_term()
Christophe Leroy <christophe.leroy@csgroup.eu>
objtool: Fix SEGFAULT
Yin Xiujiang <yinxiujiang@kylinos.cn>
fs/ntfs3: Fix slab-out-of-bounds in r_page
Dan Carpenter <dan.carpenter@oracle.com>
fs/ntfs3: Delete duplicate condition in ntfs_read_mft()
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
fs/ntfs3: Use __GFP_NOWARN allocation at ntfs_fill_super()
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
fs/ntfs3: Use __GFP_NOWARN allocation at wnd_init()
Edward Lo <edward.lo@ambergroup.io>
fs/ntfs3: Validate index root when initialize NTFS security
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
soundwire: dmi-quirks: add quirk variant for LAPBC710 NUC15
Hawkins Jiawei <yin31149@gmail.com>
fs/ntfs3: Fix slab-out-of-bounds read in run_unpack
Edward Lo <edward.lo@ambergroup.io>
fs/ntfs3: Validate resident attribute name
Edward Lo <edward.lo@ambergroup.io>
fs/ntfs3: Validate buffer length while parsing index
Edward Lo <edward.lo@ambergroup.io>
fs/ntfs3: Validate attribute name offset
Edward Lo <edward.lo@ambergroup.io>
fs/ntfs3: Add null pointer check for inode operations
Shigeru Yoshida <syoshida@redhat.com>
fs/ntfs3: Fix memory leak on ntfs_fill_super() error path
Edward Lo <edward.lo@ambergroup.io>
fs/ntfs3: Add null pointer check to attr_load_runs_vcn
Edward Lo <edward.lo@ambergroup.io>
fs/ntfs3: Validate data run offset
edward lo <edward.lo@ambergroup.io>
fs/ntfs3: Add overflow check for attribute size
edward lo <edward.lo@ambergroup.io>
fs/ntfs3: Validate BOOT record_size
Christoph Hellwig <hch@lst.de>
nvmet: don't defer passthrough commands with trivial effects to the workqueue
Christoph Hellwig <hch@lst.de>
nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition
Adam Vodopjan <grozzly@protonmail.com>
ata: ahci: Fix PCS quirk application for suspend
Yu Kuai <yukuai3@huawei.com>
block, bfq: fix uaf for bfqq in bfq_exit_icq_bfqq
Adrian Freund <adrian@freund.io>
ACPI: resource: do IRQ override on Lenovo 14ALC7
Erik Schumacher <ofenfisch@googlemail.com>
ACPI: resource: do IRQ override on XMG Core 15
Jiri Slaby (SUSE) <jirislaby@kernel.org>
ACPI: resource: do IRQ override on LENOVO IdeaPad
Tamim Khan <tamim@fusetak.com>
ACPI: resource: Skip IRQ override on Asus Vivobook K3402ZA/K3502ZA
Keith Busch <kbusch@kernel.org>
nvme-pci: fix page size checks
Keith Busch <kbusch@kernel.org>
nvme-pci: fix mempool alloc size
Klaus Jensen <k.jensen@samsung.com>
nvme-pci: fix doorbell buffer value endianness
Sasha Levin <sashal@kernel.org>
Revert "selftests/bpf: Add test for unstable CT lookup API"
Paulo Alcantara <pc@cjr.nz>
cifs: fix oops during encryption
Miaoqian Lin <linmq006@gmail.com>
usb: dwc3: qcom: Fix memory leak in dwc3_qcom_interconnect_init
-------------
Diffstat:
Makefile | 4 +-
arch/arm/include/asm/thread_info.h | 13 +-
arch/arm/nwfpe/Makefile | 6 +
arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 5 +-
.../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 6 +-
arch/powerpc/kernel/rtas.c | 20 +-
arch/riscv/include/asm/mmu.h | 2 +
arch/riscv/include/asm/pgtable.h | 2 +-
arch/riscv/include/asm/tlbflush.h | 18 ++
arch/riscv/include/asm/uaccess.h | 2 +-
arch/riscv/kernel/probes/simulate-insn.h | 4 +-
arch/riscv/kernel/stacktrace.c | 2 +-
arch/riscv/mm/context.c | 10 +
arch/riscv/mm/tlbflush.c | 28 +-
arch/x86/events/intel/uncore.h | 1 +
arch/x86/events/intel/uncore_snbep.c | 22 +-
arch/x86/kernel/cpu/bugs.c | 2 +
arch/x86/kernel/cpu/mce/amd.c | 37 +--
arch/x86/kernel/cpu/mce/core.c | 95 +++----
arch/x86/kernel/cpu/mce/internal.h | 12 +-
arch/x86/kernel/cpu/microcode/intel.c | 8 +-
arch/x86/kernel/crash.c | 4 +-
arch/x86/kernel/ftrace.c | 2 +
arch/x86/kernel/kprobes/core.c | 10 +-
arch/x86/kernel/kprobes/opt.c | 28 +-
arch/x86/kvm/vmx/nested.c | 47 +++-
arch/x86/kvm/vmx/sgx.c | 4 +-
block/bfq-iosched.c | 2 +-
block/blk-merge.c | 10 +
block/mq-deadline.c | 84 +++++-
drivers/acpi/resource.c | 78 +++++-
drivers/acpi/x86/s2idle.c | 10 +-
drivers/ata/ahci.c | 32 ++-
drivers/base/dd.c | 6 +-
drivers/char/ipmi/ipmi_msghandler.c | 4 +-
drivers/char/ipmi/ipmi_si_intf.c | 27 +-
drivers/char/tpm/eventlog/acpi.c | 12 +-
drivers/char/tpm/tpm_crb.c | 29 ++-
drivers/char/tpm/tpm_tis.c | 9 +-
drivers/cpufreq/cpufreq.c | 2 +-
drivers/crypto/ccp/sp-pci.c | 11 +-
drivers/crypto/n2_core.c | 6 +
drivers/devfreq/devfreq.c | 6 +-
drivers/devfreq/governor_userspace.c | 12 +-
drivers/firmware/efi/efi.c | 4 +-
drivers/firmware/efi/libstub/efistub.h | 2 +
drivers/firmware/efi/libstub/random.c | 42 ++-
drivers/gpio/gpio-sifive.c | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 13 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 +-
drivers/gpu/drm/drm_connector.c | 3 +
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 4 +-
drivers/gpu/drm/i915/gt/intel_migrate.c | 8 +-
drivers/gpu/drm/i915/gvt/debugfs.c | 17 +-
drivers/gpu/drm/i915/gvt/scheduler.c | 1 +
drivers/gpu/drm/imx/ipuv3-plane.c | 14 +-
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 6 +-
drivers/gpu/drm/meson/meson_viu.c | 5 +-
drivers/gpu/drm/mgag200/mgag200_pll.c | 3 +-
drivers/gpu/drm/panfrost/panfrost_drv.c | 27 +-
drivers/gpu/drm/panfrost/panfrost_gem.c | 16 +-
drivers/gpu/drm/panfrost/panfrost_gem.h | 5 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +-
drivers/hid/hid-ids.h | 3 +
drivers/hid/hid-multitouch.c | 4 +
drivers/hid/hid-plantronics.c | 9 +
drivers/infiniband/hw/mlx5/counters.c | 6 +-
drivers/infiniband/hw/mlx5/qp.c | 49 +++-
drivers/iommu/amd/init.c | 7 +
drivers/md/dm-cache-metadata.c | 54 +++-
drivers/md/dm-cache-target.c | 11 +-
drivers/md/dm-clone-target.c | 1 +
drivers/md/dm-integrity.c | 2 +
drivers/md/dm-thin-metadata.c | 60 ++++-
drivers/md/dm-thin.c | 18 +-
drivers/md/md-bitmap.c | 20 +-
drivers/md/md.c | 9 +-
drivers/media/dvb-core/dmxdev.c | 8 +
drivers/media/dvb-core/dvbdev.c | 1 +
drivers/media/dvb-frontends/stv0288.c | 5 +-
drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c | 4 +-
drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 12 +-
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c | 14 +-
drivers/mfd/mt6360-core.c | 14 +-
drivers/mmc/host/sdhci-sprd.c | 16 +-
drivers/mmc/host/vub300.c | 2 +
drivers/mtd/spi-nor/core.c | 2 +
drivers/net/bonding/bond_3ad.c | 1 +
drivers/net/dsa/mv88e6xxx/Kconfig | 4 +-
drivers/net/ethernet/amazon/ena/ena_com.c | 29 +--
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 6 +-
drivers/net/ethernet/amazon/ena/ena_netdev.c | 83 ++++--
drivers/net/ethernet/amazon/ena/ena_netdev.h | 17 +-
drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 3 +
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c | 4 +-
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 4 +-
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 178 +++++--------
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 7 +
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 75 +++---
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 3 +-
.../ethernet/marvell/octeontx2/nic/otx2_common.c | 30 ++-
.../ethernet/mellanox/mlx5/core/en/tc_tun_encap.c | 11 +-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 12 +-
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h | 4 +-
.../mellanox/mlx5/core/esw/acl/egress_lgcy.c | 7 +-
.../mellanox/mlx5/core/esw/acl/ingress_lgcy.c | 33 ++-
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 30 ++-
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 6 +
drivers/net/ethernet/mellanox/mlx5/core/health.c | 6 +
.../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 4 +
drivers/net/ethernet/mellanox/mlx5/core/main.c | 2 +
.../net/ethernet/microchip/sparx5/sparx5_main.c | 2 +-
.../net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 8 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 8 +-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
drivers/net/phy/xilinx_gmii2rgmii.c | 1 +
drivers/net/usb/rndis_host.c | 3 +-
drivers/net/veth.c | 5 +-
drivers/net/vmxnet3/vmxnet3_drv.c | 8 +
drivers/net/wireless/microchip/wilc1000/sdio.c | 1 +
drivers/nvme/host/core.c | 32 ++-
drivers/nvme/host/nvme.h | 2 +-
drivers/nvme/host/pci.c | 37 +--
drivers/nvme/target/admin-cmd.c | 35 +--
drivers/nvme/target/passthru.c | 11 +-
drivers/of/kexec.c | 10 +-
drivers/parisc/led.c | 3 +
drivers/pci/pci-sysfs.c | 13 +-
drivers/pci/pci.c | 2 +
drivers/phy/qualcomm/phy-qcom-qmp.c | 8 +-
drivers/remoteproc/remoteproc_core.c | 9 +-
drivers/rtc/rtc-ds1347.c | 2 +-
drivers/soc/qcom/Kconfig | 1 +
drivers/soc/ux500/ux500-soc-id.c | 10 +-
drivers/soundwire/dmi-quirks.c | 8 +
drivers/soundwire/intel.c | 8 +-
drivers/soundwire/qcom.c | 8 +-
drivers/soundwire/stream.c | 4 +-
drivers/staging/media/ipu3/ipu3-v4l2.c | 57 +++--
drivers/staging/media/tegra-video/csi.c | 4 +-
drivers/staging/media/tegra-video/csi.h | 2 +-
.../intel/int340x_thermal/processor_thermal_rfim.c | 4 +
drivers/usb/dwc3/dwc3-qcom.c | 13 +-
drivers/vdpa/vdpa_sim/vdpa_sim.c | 3 +-
drivers/vdpa/vdpa_sim/vdpa_sim_blk.c | 4 +-
drivers/vdpa/vdpa_sim/vdpa_sim_net.c | 4 +-
drivers/vhost/vhost.c | 4 +-
drivers/vhost/vringh.c | 5 +-
drivers/vhost/vsock.c | 9 +-
drivers/video/fbdev/matrox/matroxfb_base.c | 4 +-
fs/binfmt_elf_fdpic.c | 5 +-
fs/btrfs/backref.c | 4 +
fs/btrfs/disk-io.c | 35 ++-
fs/btrfs/disk-io.h | 6 +-
fs/btrfs/ioctl.c | 9 +-
fs/btrfs/rcu-string.h | 6 +-
fs/btrfs/super.c | 76 ++++++
fs/btrfs/tree-defrag.c | 6 +-
fs/btrfs/volumes.c | 43 ++--
fs/ceph/caps.c | 2 +-
fs/ceph/locks.c | 4 -
fs/ceph/super.h | 1 -
fs/cifs/cifsfs.c | 8 +-
fs/cifs/cifsglob.h | 69 +++++
fs/cifs/cifsproto.h | 4 +-
fs/cifs/connect.c | 4 +-
fs/cifs/misc.c | 4 +-
fs/cifs/smb2ops.c | 143 +++++------
fs/dlm/lowcomms.c | 9 +-
fs/ext4/balloc.c | 2 +-
fs/ext4/ext4.h | 9 +-
fs/ext4/ext4_jbd2.c | 3 +-
fs/ext4/extents.c | 8 +
fs/ext4/extents_status.c | 3 +-
fs/ext4/fast_commit.c | 285 ++++++++++++---------
fs/ext4/fast_commit.h | 7 +-
fs/ext4/indirect.c | 13 +-
fs/ext4/inode.c | 50 +++-
fs/ext4/ioctl.c | 13 +-
fs/ext4/namei.c | 47 ++--
fs/ext4/orphan.c | 26 +-
fs/ext4/resize.c | 6 +-
fs/ext4/super.c | 52 +++-
fs/ext4/verity.c | 2 +-
fs/ext4/xattr.c | 19 +-
fs/f2fs/gc.c | 1 +
fs/f2fs/node.c | 3 +-
fs/hfs/inode.c | 13 +-
fs/hfsplus/hfsplus_fs.h | 2 +
fs/hfsplus/inode.c | 16 +-
fs/hfsplus/options.c | 4 +
fs/ksmbd/auth.c | 3 +-
fs/ksmbd/connection.c | 7 +-
fs/ksmbd/transport_tcp.c | 5 +-
fs/locks.c | 23 ++
fs/mbcache.c | 121 ++++-----
fs/nfsd/nfs4xdr.c | 11 +
fs/nfsd/nfssvc.c | 2 +-
fs/ntfs3/attrib.c | 18 ++
fs/ntfs3/attrlist.c | 5 +
fs/ntfs3/bitmap.c | 2 +-
fs/ntfs3/file.c | 4 +-
fs/ntfs3/frecord.c | 14 +
fs/ntfs3/fslog.c | 35 +--
fs/ntfs3/fsntfs.c | 10 +-
fs/ntfs3/index.c | 6 +
fs/ntfs3/inode.c | 9 +
fs/ntfs3/record.c | 10 +
fs/ntfs3/super.c | 9 +-
fs/overlayfs/dir.c | 46 ++--
fs/pnode.c | 2 +-
fs/pstore/ram.c | 2 +-
fs/pstore/zone.c | 2 +-
fs/quota/dquot.c | 2 +
fs/udf/inode.c | 2 +-
include/linux/devfreq.h | 7 +-
include/linux/efi.h | 2 -
include/linux/fs.h | 6 +
include/linux/mbcache.h | 33 ++-
include/linux/mlx5/device.h | 5 +
include/linux/mlx5/mlx5_ifc.h | 3 +-
include/linux/netfilter/ipset/ip_set.h | 2 +-
include/linux/nvme.h | 3 +-
include/linux/sunrpc/rpc_pipe_fs.h | 5 +
include/net/mptcp.h | 12 +-
include/net/netfilter/nf_tables.h | 25 +-
include/sound/soc-dai.h | 32 +--
include/trace/events/ext4.h | 7 +-
include/trace/events/jbd2.h | 44 ++--
io_uring/io_uring.c | 13 +-
kernel/events/core.c | 6 +-
kernel/kcsan/core.c | 50 ++++
kernel/rcu/tasks.h | 20 +-
kernel/trace/Kconfig | 2 +
kernel/trace/trace.c | 38 ++-
kernel/trace/trace.h | 27 +-
kernel/trace/trace_eprobe.c | 3 +
kernel/trace/trace_events_hist.c | 11 +-
kernel/trace/trace_events_synth.c | 2 +-
kernel/trace/trace_probe.c | 2 +-
mm/compaction.c | 18 +-
net/caif/cfctrl.c | 6 +-
net/core/filter.c | 7 +-
net/ipv4/syncookies.c | 7 +-
net/mptcp/subflow.c | 76 ++++--
net/netfilter/ipset/ip_set_core.c | 7 +-
net/netfilter/ipset/ip_set_hash_ip.c | 14 +-
net/netfilter/ipset/ip_set_hash_ipmark.c | 13 +-
net/netfilter/ipset/ip_set_hash_ipport.c | 13 +-
net/netfilter/ipset/ip_set_hash_ipportip.c | 13 +-
net/netfilter/ipset/ip_set_hash_ipportnet.c | 13 +-
net/netfilter/ipset/ip_set_hash_net.c | 17 +-
net/netfilter/ipset/ip_set_hash_netiface.c | 15 +-
net/netfilter/ipset/ip_set_hash_netnet.c | 23 +-
net/netfilter/ipset/ip_set_hash_netport.c | 19 +-
net/netfilter/ipset/ip_set_hash_netportnet.c | 40 +--
net/netfilter/nf_tables_api.c | 261 ++++++++++++-------
net/nfc/netlink.c | 52 +++-
net/packet/af_packet.c | 20 +-
net/sched/cls_tcindex.c | 12 +-
net/sched/sch_atm.c | 5 +-
net/sched/sch_cbq.c | 4 +-
net/sunrpc/auth_gss/auth_gss.c | 19 +-
net/sunrpc/auth_gss/svcauth_gss.c | 9 +-
security/device_cgroup.c | 33 ++-
security/integrity/ima/ima_template.c | 5 +-
security/integrity/platform_certs/load_uefi.c | 1 +
sound/pci/hda/patch_realtek.c | 50 ++++
sound/soc/codecs/hdac_hda.c | 22 +-
sound/soc/codecs/max98373-sdw.c | 2 +-
sound/soc/codecs/rt1308-sdw.c | 2 +-
sound/soc/codecs/rt1316-sdw.c | 2 +-
sound/soc/codecs/rt5682-sdw.c | 2 +-
sound/soc/codecs/rt700.c | 2 +-
sound/soc/codecs/rt711-sdca.c | 2 +-
sound/soc/codecs/rt711.c | 2 +-
sound/soc/codecs/rt715-sdca.c | 2 +-
sound/soc/codecs/rt715.c | 2 +-
sound/soc/codecs/sdw-mockup.c | 2 +-
sound/soc/codecs/wcd938x.c | 2 +-
sound/soc/codecs/wsa881x.c | 2 +-
sound/soc/intel/boards/bytcr_rt5640.c | 15 ++
sound/soc/intel/boards/sof_sdw.c | 6 +-
sound/soc/intel/skylake/skl-pcm.c | 7 +-
sound/soc/jz4740/jz4740-i2s.c | 39 ++-
sound/soc/qcom/sdm845.c | 4 +-
sound/soc/qcom/sm8250.c | 4 +-
sound/soc/sof/intel/hda-dai.c | 7 +-
sound/usb/line6/driver.c | 3 +-
sound/usb/line6/midi.c | 6 +-
sound/usb/line6/midibuf.c | 25 +-
sound/usb/line6/midibuf.h | 5 +-
sound/usb/line6/pod.c | 3 +-
tools/objtool/check.c | 2 +-
tools/perf/util/cgroup.c | 23 +-
tools/perf/util/data.c | 2 +
tools/perf/util/dwarf-aux.c | 23 +-
tools/testing/ktest/ktest.pl | 23 +-
tools/testing/selftests/Makefile | 26 +-
tools/testing/selftests/bpf/config | 4 -
tools/testing/selftests/bpf/prog_tests/bpf_nf.c | 48 ----
tools/testing/selftests/bpf/progs/test_bpf_nf.c | 109 --------
tools/testing/selftests/lib.mk | 5 +
305 files changed, 3239 insertions(+), 1867 deletions(-)
^ permalink raw reply [relevance 1%]
* Re: [PATCH 6.0 000/177] 6.0.18-rc1 review
2023-01-04 16:04 1% [PATCH 6.0 000/177] 6.0.18-rc1 review Greg Kroah-Hartman
@ 2023-01-06 14:27 0% ` Georg Müller
0 siblings, 0 replies; 200+ results
From: Georg Müller @ 2023-01-06 14:27 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable
Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow
Hi Greg,
Am 04.01.23 um 17:04 schrieb Greg Kroah-Hartman:
> This is the start of the stable review cycle for the 6.0.18 release.
> There are 177 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Fri, 06 Jan 2023 16:04:29 +0000.
> Anything received after that time might be too late.
There is an easy-to-trigger kernel panic in cifs which was introduced in 6.0.16 and could be fixed by backporting the following commit:
9ee2afe5207b ("cifs: prevent copying past input buffer boundaries")
Please see https://bugzilla.kernel.org/show_bug.cgi?id=216895 for the details
Could this commit be added as well to 6.0.18?
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.0.18-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.0.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
> -------------
> Pseudo-Shortlog of commits:
>
> Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Linux 6.0.18-rc1
>
> Evan Quan <evan.quan@amd.com>
> drm/amd/pm: correct the fan speed retrieving in PWM for some SMU13 asics
>
> Evan Quan <evan.quan@amd.com>
> drm/amd/pm: bump SMU13.0.0 driver_if header to version 0x34
>
> Evan Quan <evan.quan@amd.com>
> drm/amd/pm: add missing SMU13.0.7 mm_dpm feature mapping
>
> Evan Quan <evan.quan@amd.com>
> drm/amd/pm: add missing SMU13.0.0 mm_dpm feature mapping
>
> Chris Wilson <chris.p.wilson@intel.com>
> drm/i915/migrate: Account for the reserved_space
>
> Matthew Auld <matthew.auld@intel.com>
> drm/i915: improve the catch-all evict to handle lock contention
>
> Alex Deucher <alexander.deucher@amd.com>
> drm/amdgpu: make display pinning more flexible (v2)
>
> Alex Deucher <alexander.deucher@amd.com>
> drm/amdgpu: handle polaris10/11 overlap asics (v2)
>
> Yifan Zhang <yifan1.zhang@amd.com>
> drm/amd/display: Add DCN314 display SG Support
>
> Matthew Auld <matthew.auld@intel.com>
> drm/i915/ttm: consider CCS for backup objects
>
> Ye Bin <yebin10@huawei.com>
> ext4: allocate extended attribute value in vmalloc area
>
> Jan Kara <jack@suse.cz>
> ext4: avoid unaccounted block allocation when expanding inode
>
> Jan Kara <jack@suse.cz>
> ext4: initialize quota before expanding inode in setproject ioctl
>
> Ye Bin <yebin10@huawei.com>
> ext4: fix inode leak in ext4_xattr_inode_create() on an error path
>
> Ye Bin <yebin10@huawei.com>
> ext4: fix kernel BUG in 'ext4_write_inline_data_end()'
>
> Jan Kara <jack@suse.cz>
> ext4: fix deadlock due to mbcache entry corruption
>
> Jan Kara <jack@suse.cz>
> ext4: avoid BUG_ON when creating xattrs
>
> Baokun Li <libaokun1@huawei.com>
> ext4: fix corrupt backup group descriptors after online resize
>
> Darrick J. Wong <djwong@kernel.org>
> ext4: dont return EINVAL from GETFSUUID when reporting UUID length
>
> Baokun Li <libaokun1@huawei.com>
> ext4: fix bad checksum after online resize
>
> Luís Henriques <lhenriques@suse.de>
> ext4: fix error code return to user-space in ext4_get_branch()
>
> Baokun Li <libaokun1@huawei.com>
> ext4: fix corruption when online resizing a 1K bigalloc fs
>
> Eric Whitney <enwlinux@gmail.com>
> ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
>
> Darrick J. Wong <djwong@kernel.org>
> ext4: don't fail GETFSUUID when the caller provides a long buffer
>
> Ye Bin <yebin10@huawei.com>
> ext4: init quota for 'old.inode' in 'ext4_rename'
>
> Ye Bin <yebin10@huawei.com>
> ext4: fix uninititialized value in 'ext4_evict_inode'
>
> Eric Biggers <ebiggers@google.com>
> ext4: fix off-by-one errors in fast-commit block filling
>
> Eric Biggers <ebiggers@google.com>
> ext4: fix unaligned memory access in ext4_fc_reserve_space()
>
> Eric Biggers <ebiggers@google.com>
> ext4: add missing validation of fast-commit record lengths
>
> Eric Biggers <ebiggers@google.com>
> ext4: don't set up encryption key during jbd2 transaction
>
> Eric Biggers <ebiggers@google.com>
> ext4: fix leaking uninitialized memory in fast-commit journal
>
> Eric Biggers <ebiggers@google.com>
> ext4: disable fast-commit of encrypted dir operations
>
> Eric Biggers <ebiggers@google.com>
> ext4: don't allow journal inode to have encrypt flag
>
> Baokun Li <libaokun1@huawei.com>
> ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
>
> Zhang Yi <yi.zhang@huawei.com>
> ext4: check and assert if marking an no_delete evicting inode dirty
>
> Lukas Czerner <lczerner@redhat.com>
> ext4: journal_path mount options should follow links
>
> Ye Bin <yebin10@huawei.com>
> ext4: fix reserved cluster accounting in __es_remove_extent()
>
> Baokun Li <libaokun1@huawei.com>
> ext4: fix bug_on in __es_tree_search caused by bad quota inode
>
> Baokun Li <libaokun1@huawei.com>
> ext4: add helper to check quota inums
>
> Baokun Li <libaokun1@huawei.com>
> ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
>
> Gaosheng Cui <cuigaosheng1@huawei.com>
> ext4: fix undefined behavior in bit shift for ext4_check_flag_values
>
> Baokun Li <libaokun1@huawei.com>
> ext4: fix use-after-free in ext4_orphan_cleanup
>
> Alexander Potapenko <glider@google.com>
> fs: ext4: initialize fsdata in pagecache_write()
>
> Luís Henriques <lhenriques@suse.de>
> ext4: remove trailing newline from ext4_msg() message
>
> Baokun Li <libaokun1@huawei.com>
> ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
>
> Zhang Yi <yi.zhang@huawei.com>
> ext4: silence the warning when evicting inode with dioread_nolock
>
> Ard Biesheuvel <ardb@kernel.org>
> arm64: efi: Execute runtime services from a dedicated stack
>
> Lucas Stach <l.stach@pengutronix.de>
> drm/etnaviv: reap idle mapping if it doesn't match the softpin address
>
> Yuan Can <yuancan@huawei.com>
> drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init()
>
> Mikko Kovanen <mikko.kovanen@aavamobile.com>
> drm/i915/dsi: fix VBT send packet port selection for dual link DSI
>
> Lucas Stach <l.stach@pengutronix.de>
> drm/etnaviv: move idle mapping reaping into separate function
>
> Zack Rusin <zackr@vmware.com>
> drm/vmwgfx: Validate the box size for the snooped cursor
>
> Simon Ser <contact@emersion.fr>
> drm/connector: send hotplug uevent on connector cleanup
>
> Wang Weiyang <wangweiyang2@huawei.com>
> device_cgroup: Roll back to original exceptions after copy failure
>
> Helge Deller <deller@gmx.de>
> parisc: Drop PMD_SHIFT from calculation in pgtable.h
>
> Helge Deller <deller@gmx.de>
> parisc: Add missing FORCE prerequisites in Makefile
>
> Helge Deller <deller@gmx.de>
> parisc: Fix locking in pdc_iodc_print() firmware call
>
> Shang XiaoJing <shangxiaojing@huawei.com>
> parisc: led: Fix potential null-ptr-deref in start_task()
>
> Peng Fan <peng.fan@nxp.com>
> remoteproc: imx_rproc: Correct i.MX93 DRAM mapping
>
> Maria Yu <quic_aiquny@quicinc.com>
> remoteproc: core: Do pm_relax when in RPROC_OFFLINE state
>
> Shengjiu Wang <shengjiu.wang@nxp.com>
> remoteproc: imx_dsp_rproc: Add mutex protection for workqueue
>
> Li Hua <hucool.lihua@huawei.com>
> test_kprobes: Fix implicit declaration error of test_kprobes
>
> Kim Phillips <kim.phillips@amd.com>
> iommu/amd: Fix ill-formed ivrs_ioapic, ivrs_hpet and ivrs_acpihid options
>
> Kim Phillips <kim.phillips@amd.com>
> iommu/amd: Fix ivrs_acpihid cmdline parsing code
>
> Johan Hovold <johan+linaro@kernel.org>
> phy: qcom-qmp-combo: fix sc8180x reset
>
> Qiang Yu <quic_qianyu@quicinc.com>
> bus: mhi: host: Fix race between channel preparation and M0 event
>
> Isaac J. Manjarres <isaacmanjarres@google.com>
> driver core: Fix bus_type.match() error handling in __driver_attach()
>
> Mario Limonciello <mario.limonciello@amd.com>
> crypto: ccp - Add support for TEE for PCI ID 0x14CA
>
> Corentin Labbe <clabbe@baylibre.com>
> crypto: n2 - add missing hash statesize
>
> Sergey Matyukevich <sergey.matyukevich@syntacore.com>
> riscv: mm: notify remote harts about mmu cache updates
>
> Guo Ren <guoren@kernel.org>
> riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument
>
> Li Huafei <lihuafei1@huawei.com>
> RISC-V: kexec: Fix memory leak of elf header buffer
>
> Guo Ren <guoren@kernel.org>
> riscv: Fixup compile error with !MMU
>
> Li Huafei <lihuafei1@huawei.com>
> RISC-V: kexec: Fix memory leak of fdt buffer
>
> Sascha Hauer <s.hauer@pengutronix.de>
> PCI/sysfs: Fix double free in error path
>
> Michael S. Tsirkin <mst@redhat.com>
> PCI: Fix pci_device_is_present() for VFs by checking PF
>
> Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
> crypto: ccree,hisilicon - Fix dependencies to correct algorithm
>
> Roberto Sassu <roberto.sassu@huawei.com>
> ima: Fix memory leak in __ima_inode_hash()
>
> Yaliang Wang <Yaliang.Wang@windriver.com>
> mtd: spi-nor: gigadevice: gd25q256: replace gd25q256_default_init with gd25q256_post_bfpt
>
> Dan Carpenter <error27@gmail.com>
> ipmi: fix use after free in _ipmi_destroy_user()
>
> Huaxin Lu <luhuaxin1@huawei.com>
> ima: Fix a potential NULL pointer access in ima_restore_measurement_list
>
> Alexander Sverdlin <alexander.sverdlin@nokia.com>
> mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
>
> Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
> ipmi: fix long wait in unload when IPMI disconnect
>
> Maximilian Luz <luzmaximilian@gmail.com>
> ipu3-imgu: Fix NULL pointer dereference in imgu_subdev_set_selection()
>
> Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
> ASoC: jz4740-i2s: Handle independent FIFO flush bits
>
> Michael Walle <michael@walle.cc>
> wifi: wilc1000: sdio: fix module autoloading
>
> Aditya Garg <gargaditya08@live.com>
> efi: Add iMac Pro 2017 to uefi skip cert quirk
>
> Florian-Ewald Mueller <florian-ewald.mueller@ionos.com>
> md/bitmap: Fix bitmap chunk size overflow issues
>
> Damien Le Moal <damien.lemoal@opensource.wdc.com>
> block: mq-deadline: Do not break sequential write streams to zoned HDDs
>
> Damien Le Moal <damien.lemoal@opensource.wdc.com>
> block: mq-deadline: Fix dd_finish_request() for zoned devices
>
> Yang Wang <KevinYang.Wang@amd.com>
> drm/amdgpu: fix mmhub register base coding error
>
> Ian Abbott <abbotti@mev.co.uk>
> rtc: ds1347: fix value written to century register
>
> Biju Das <biju.das.jz@bp.renesas.com>
> ravb: Fix "failed to switch device to config mode" message during unbind
>
> Paulo Alcantara <pc@cjr.nz>
> cifs: set correct status of tcon ipc when reconnecting
>
> Paulo Alcantara <pc@cjr.nz>
> cifs: set correct ipc status after initial tree connect
>
> Paulo Alcantara <pc@cjr.nz>
> cifs: set correct tcon status after initial tree connect
>
> Steve French <stfrench@microsoft.com>
> cifs: fix missing display of three mount options
>
> Paulo Alcantara <pc@cjr.nz>
> cifs: fix confusing debug message
>
> Takashi Iwai <tiwai@suse.de>
> media: dvb-core: Fix UAF due to refcount races at releasing
>
> Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
> media: dvb-core: Fix double free in dvb_register_device()
>
> Nick Desaulniers <ndesaulniers@google.com>
> ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
>
> Macpaul Lin <macpaul.lin@mediatek.com>
> arm64: dts: mediatek: mt8195-demo: fix the memory size of node secmon
>
> Luca Ceresoli <luca.ceresoli@bootlin.com>
> staging: media: tegra-video: fix device_node use after free
>
> Luca Ceresoli <luca.ceresoli@bootlin.com>
> staging: media: tegra-video: fix chan->mipi value on error
>
> Yang Jihong <yangjihong1@huawei.com>
> tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
>
> Zheng Yejian <zhengyejian1@huawei.com>
> tracing: Fix issue of missing one synthetic field
>
> Steven Rostedt (Google) <rostedt@goodmis.org>
> tracing/probes: Handle system names with hyphens
>
> Zheng Yejian <zhengyejian1@huawei.com>
> tracing/hist: Fix wrong return value in parse_action_params()
>
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
> tracing: Fix complicated dependency of CONFIG_TRACER_MAX_TRACE
>
> Michael Jeanson <mjeanson@efficios.com>
> powerpc/ftrace: fix syscall tracing on PPC64_ELF_ABI_V1
>
> Steven Rostedt (Google) <rostedt@goodmis.org>
> tracing: Fix race where eprobes can be called before the event
>
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
> x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK
>
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
> x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK
>
> Steven Rostedt (Google) <rostedt@goodmis.org>
> ftrace/x86: Add back ftrace_expected for ftrace bug reports
>
> Ashok Raj <ashok.raj@intel.com>
> x86/microcode/intel: Do not retry microcode reloading on the APs
>
> Sean Christopherson <seanjc@google.com>
> KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1
>
> Yuan ZhaoXiong <yuanzhaoxiong@baidu.com>
> KVM: x86: fix APICv/x2AVIC disabled when vm reboot by itself
>
> Sean Christopherson <seanjc@google.com>
> KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails
>
> Sean Christopherson <seanjc@google.com>
> KVM: VMX: Resume guest immediately when injecting #GP on ECREATE
>
> Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
> ima: Fix hash dependency to correct algorithm
>
> Rob Herring <robh@kernel.org>
> of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values
>
> Max Filippov <jcmvbkbc@gmail.com>
> xtensa: add __umulsidi3 helper
>
> Namhyung Kim <namhyung@kernel.org>
> perf/core: Call LSM hook after copying perf_event_attr
>
> Zheng Yejian <zhengyejian1@huawei.com>
> tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx'
>
> Li Ming <ming4.li@intel.com>
> PCI/DOE: Fix maximum data object length miscalculation
>
> Mike Snitzer <snitzer@kernel.org>
> dm cache: set needs_check flag after aborting metadata
>
> Luo Meng <luomeng12@huawei.com>
> dm cache: Fix UAF in destroy()
>
> Luo Meng <luomeng12@huawei.com>
> dm clone: Fix UAF in clone_dtr()
>
> Luo Meng <luomeng12@huawei.com>
> dm integrity: Fix UAF in dm_integrity_dtr()
>
> Luo Meng <luomeng12@huawei.com>
> dm thin: Fix UAF in run_timer_softirq()
>
> Luo Meng <luomeng12@huawei.com>
> dm thin: resume even if in FAIL mode
>
> Zhihao Cheng <chengzhihao1@huawei.com>
> dm thin: Use last transaction's pmd->root when commit failed
>
> Zhihao Cheng <chengzhihao1@huawei.com>
> dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata
>
> Mike Snitzer <snitzer@kernel.org>
> dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
>
> Matthieu Baerts <matthieu.baerts@tessares.net>
> mptcp: use proper req destructor for IPv6
>
> Matthieu Baerts <matthieu.baerts@tessares.net>
> mptcp: dedicated request sock for subflow in v6
>
> Matthieu Baerts <matthieu.baerts@tessares.net>
> mptcp: remove MPTCP 'ifdef' in TCP SYN cookies
>
> Wei Yongjun <weiyongjun1@huawei.com>
> mptcp: netlink: fix some error return code
>
> Alexander Aring <aahringo@redhat.com>
> fs: dlm: retry accept() until -EAGAIN or error returns
>
> Alexander Aring <aahringo@redhat.com>
> fs: dlm: fix sock release if listen fails
>
> Chris Chiu <chris.chiu@canonical.com>
> ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops
>
> Philipp Jungkamp <p.jungkamp@gmx.net>
> ALSA: patch_realtek: Fix Dell Inspiron Plus 16
>
> Toke Høiland-Jørgensen <toke@redhat.com>
> bpf: Resolve fext program type when checking map compatibility
>
> Smitha T Murthy <smitha.t@samsung.com>
> media: s5p-mfc: Fix in register read and write for H264
>
> Smitha T Murthy <smitha.t@samsung.com>
> media: s5p-mfc: Clear workbit to handle error condition
>
> Smitha T Murthy <smitha.t@samsung.com>
> media: s5p-mfc: Fix to handle reference queue during finishing
>
> Al Viro <viro@zeniv.linux.org.uk>
> ext2: unbugger ext2_empty_dir()
>
> Yongqiang Liu <liuyongqiang13@huawei.com>
> cpufreq: Init completion before kobject_init_and_add()
>
> Kant Fan <kant@allwinnertech.com>
> PM/devfreq: governor: Add a private governor_data for governor
>
> Yazen Ghannam <yazen.ghannam@amd.com>
> x86/MCE/AMD: Clear DFR errors found in THR handler
>
> Mickaël Salaün <mic@digikod.net>
> selftests: Use optional USERCFLAGS and USERLDFLAGS
>
> Yazen Ghannam <yazen.ghannam@amd.com>
> EDAC/mc_sysfs: Increase legacy channel support to 12
>
> Dan Williams <dan.j.williams@intel.com>
> cxl/region: Fix missing probe failure
>
> Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
>
> Andrew Cooper <andrew.cooper3@citrix.com>
> x86/fpu/xstate: Fix XSTATE_WARN_ON() to emit relevant diagnostics
>
> Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> arm64: dts: qcom: sdm850-samsung-w737: correct I2C12 pins drive strength
>
> Jason A. Donenfeld <Jason@zx2c4.com>
> ARM: ux500: do not directly dereference __iomem
>
> Boris Burkov <boris@bur.io>
> btrfs: fix resolving backrefs for inline extent followed by prealloc
>
> void0red <void0red@gmail.com>
> btrfs: fix extent map use-after-free when handling missing device in read_one_chunk
>
> Evan Quan <evan.quan@amd.com>
> drm/amd/pm: correct SMU13.0.0 pstate profiling clock settings
>
> Evan Quan <evan.quan@amd.com>
> drm/amd/pm: update SMU13.0.0 reported maximum shader clock
>
> Johan Hovold <johan+linaro@kernel.org>
> phy: qcom-qmp-combo: fix out-of-bounds clock access
>
> Wenchao Chen <wenchao.chen@unisoc.com>
> mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
>
> Johan Hovold <johan+linaro@kernel.org>
> arm64: dts: qcom: sc8280xp: fix UFS reference clocks
>
> Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength
>
> Alexander Antonov <alexander.antonov@linux.intel.com>
> perf/x86/intel/uncore: Clear attr_update properly
>
> Alexander Antonov <alexander.antonov@linux.intel.com>
> perf/x86/intel/uncore: Disable I/O stacks to PMU mapping on ICX-D
>
> Bixuan Cui <cuibixuan@linux.alibaba.com>
> jbd2: use the correct print format
>
> Steven Rostedt <rostedt@goodmis.org>
> ktest.pl minconfig: Unset configs instead of just removing them
>
> Steven Rostedt <rostedt@goodmis.org>
> kest.pl: Fix grub2 menu handling for rebooting
>
> Manivannan Sadhasivam <mani@kernel.org>
> soc: qcom: Select REMAP_MMIO for ICC_BWMON driver
>
> Manivannan Sadhasivam <mani@kernel.org>
> soc: qcom: Select REMAP_MMIO for LLCC driver
>
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
> arm64: Prohibit instrumentation on arch_stack_walk()
>
> Johan Hovold <johan+linaro@kernel.org>
> arm64: dts: qcom: sc8280xp: fix UFS DMA coherency
>
> Fan Ni <fan.ni@samsung.com>
> cxl/region: Fix memdev reuse check
>
> Jason A. Donenfeld <Jason@zx2c4.com>
> media: stv0288: use explicitly signed char
>
> Alex Deucher <alexander.deucher@amd.com>
> drm/amdgpu: skip MES for S0ix as well since it's part of GFX
>
>
> -------------
>
> Diffstat:
>
> Documentation/admin-guide/kernel-parameters.txt | 27 ++-
> Documentation/filesystems/mount_api.rst | 1 +
> Makefile | 4 +-
> arch/arm/nwfpe/Makefile | 6 +
> arch/arm64/boot/dts/mediatek/mt8195-demo.dts | 4 +-
> arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 10 +-
> arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 5 +-
> .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 6 +-
> arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts | 6 +-
> arch/arm64/include/asm/efi.h | 3 +
> arch/arm64/kernel/efi-rt-wrapper.S | 13 +-
> arch/arm64/kernel/efi.c | 27 +++
> arch/arm64/kernel/stacktrace.c | 10 +-
> arch/parisc/include/asm/pgtable.h | 4 +-
> arch/parisc/kernel/firmware.c | 24 ++-
> arch/parisc/kernel/vdso32/Makefile | 4 +-
> arch/parisc/kernel/vdso64/Makefile | 4 +-
> arch/powerpc/include/asm/ftrace.h | 12 --
> arch/riscv/Kconfig | 2 +-
> arch/riscv/include/asm/kexec.h | 5 +
> arch/riscv/include/asm/mmu.h | 2 +
> arch/riscv/include/asm/pgtable.h | 2 +-
> arch/riscv/include/asm/tlbflush.h | 18 ++
> arch/riscv/kernel/elf_kexec.c | 14 ++
> arch/riscv/kernel/stacktrace.c | 2 +-
> arch/riscv/mm/context.c | 10 +
> arch/riscv/mm/tlbflush.c | 28 +--
> arch/x86/events/intel/uncore.h | 1 +
> arch/x86/events/intel/uncore_snbep.c | 22 +-
> arch/x86/kernel/cpu/mce/amd.c | 33 +--
> arch/x86/kernel/cpu/microcode/intel.c | 8 +-
> arch/x86/kernel/fpu/xstate.c | 12 +-
> arch/x86/kernel/ftrace.c | 2 +
> arch/x86/kernel/kprobes/core.c | 10 +-
> arch/x86/kernel/kprobes/opt.c | 28 +--
> arch/x86/kvm/lapic.c | 5 +-
> arch/x86/kvm/vmx/nested.c | 47 +++--
> arch/x86/kvm/vmx/sgx.c | 4 +-
> arch/xtensa/kernel/xtensa_ksyms.c | 2 +
> arch/xtensa/lib/Makefile | 2 +-
> arch/xtensa/lib/umulsidi3.S | 230 +++++++++++++++++++++
> block/mq-deadline.c | 83 +++++++-
> drivers/base/dd.c | 6 +-
> drivers/bus/mhi/host/pm.c | 3 +-
> drivers/char/ipmi/ipmi_msghandler.c | 4 +-
> drivers/char/ipmi/ipmi_si_intf.c | 27 ++-
> drivers/cpufreq/cpufreq.c | 2 +-
> drivers/crypto/Kconfig | 4 +-
> drivers/crypto/ccp/sp-pci.c | 11 +-
> drivers/crypto/hisilicon/Kconfig | 2 +-
> drivers/crypto/n2_core.c | 6 +
> drivers/cxl/core/region.c | 5 +-
> drivers/devfreq/devfreq.c | 6 +-
> drivers/devfreq/governor_userspace.c | 12 +-
> drivers/edac/edac_mc_sysfs.c | 24 +++
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 5 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 13 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 +-
> drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.c | 2 +-
> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 +
> .../pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_0.h | 2 +-
> drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h | 1 +
> drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 2 +
> .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 111 +++++++++-
> .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 19 +-
> drivers/gpu/drm/drm_connector.c | 3 +
> drivers/gpu/drm/etnaviv/etnaviv_gem.c | 7 +-
> drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 23 ++-
> drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 1 +
> drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 4 +-
> drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 59 +++++-
> drivers/gpu/drm/i915/gem/i915_gem_mman.c | 2 +-
> drivers/gpu/drm/i915/gem/i915_gem_object.c | 3 +
> drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 10 +-
> drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c | 18 +-
> drivers/gpu/drm/i915/gt/intel_migrate.c | 16 +-
> drivers/gpu/drm/i915/i915_gem_evict.c | 37 +++-
> drivers/gpu/drm/i915/i915_gem_evict.h | 4 +-
> drivers/gpu/drm/i915/i915_vma.c | 2 +-
> drivers/gpu/drm/i915/selftests/i915_gem_evict.c | 4 +-
> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 6 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +-
> drivers/iommu/amd/init.c | 86 +++++---
> drivers/md/dm-cache-metadata.c | 54 ++++-
> drivers/md/dm-cache-target.c | 11 +-
> drivers/md/dm-clone-target.c | 1 +
> drivers/md/dm-integrity.c | 2 +
> drivers/md/dm-thin-metadata.c | 60 +++++-
> drivers/md/dm-thin.c | 18 +-
> drivers/md/md-bitmap.c | 20 +-
> drivers/media/dvb-core/dmxdev.c | 8 +
> drivers/media/dvb-core/dvbdev.c | 1 +
> drivers/media/dvb-frontends/stv0288.c | 5 +-
> .../media/platform/samsung/s5p-mfc/s5p_mfc_ctrl.c | 4 +-
> .../media/platform/samsung/s5p-mfc/s5p_mfc_enc.c | 12 +-
> .../platform/samsung/s5p-mfc/s5p_mfc_opr_v6.c | 14 +-
> drivers/mmc/host/sdhci-sprd.c | 16 +-
> drivers/mtd/spi-nor/core.c | 2 +
> drivers/mtd/spi-nor/gigadevice.c | 24 ++-
> drivers/net/ethernet/renesas/ravb_main.c | 2 +-
> drivers/net/wireless/microchip/wilc1000/sdio.c | 1 +
> drivers/of/kexec.c | 10 +-
> drivers/parisc/led.c | 3 +
> drivers/pci/doe.c | 20 +-
> drivers/pci/pci-sysfs.c | 13 +-
> drivers/pci/pci.c | 2 +
> drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 8 +-
> drivers/remoteproc/imx_dsp_rproc.c | 12 +-
> drivers/remoteproc/imx_rproc.c | 4 +-
> drivers/remoteproc/remoteproc_core.c | 9 +-
> drivers/rtc/rtc-ds1347.c | 2 +-
> drivers/soc/qcom/Kconfig | 2 +
> drivers/soc/ux500/ux500-soc-id.c | 10 +-
> drivers/staging/media/ipu3/ipu3-v4l2.c | 57 ++---
> drivers/staging/media/tegra-video/csi.c | 4 +-
> drivers/staging/media/tegra-video/csi.h | 2 +-
> fs/btrfs/backref.c | 4 +
> fs/btrfs/volumes.c | 3 +-
> fs/cifs/cifsfs.c | 8 +-
> fs/cifs/connect.c | 16 +-
> fs/dlm/lowcomms.c | 9 +-
> fs/ext2/dir.c | 2 +-
> fs/ext4/ext4.h | 9 +-
> fs/ext4/extents.c | 8 +
> fs/ext4/extents_status.c | 3 +-
> fs/ext4/fast_commit.c | 171 ++++++++-------
> fs/ext4/fast_commit.h | 3 +-
> fs/ext4/indirect.c | 9 +-
> fs/ext4/inode.c | 48 ++++-
> fs/ext4/ioctl.c | 24 ++-
> fs/ext4/namei.c | 47 +++--
> fs/ext4/orphan.c | 2 +-
> fs/ext4/resize.c | 32 +--
> fs/ext4/super.c | 33 ++-
> fs/ext4/verity.c | 2 +-
> fs/ext4/xattr.c | 19 +-
> fs/fs_parser.c | 3 +-
> fs/mbcache.c | 14 +-
> fs/quota/dquot.c | 2 +
> include/linux/bpf_verifier.h | 2 +-
> include/linux/devfreq.h | 7 +-
> include/linux/fs_parser.h | 1 +
> include/linux/mbcache.h | 9 +-
> include/net/mptcp.h | 12 +-
> include/trace/events/ext4.h | 7 +-
> include/trace/events/jbd2.h | 44 ++--
> kernel/bpf/core.c | 5 +-
> kernel/events/core.c | 6 +-
> kernel/trace/Kconfig | 2 +
> kernel/trace/trace.c | 38 +++-
> kernel/trace/trace.h | 27 ++-
> kernel/trace/trace_eprobe.c | 3 +
> kernel/trace/trace_events_hist.c | 11 +-
> kernel/trace/trace_events_synth.c | 2 +-
> kernel/trace/trace_probe.c | 2 +-
> lib/Kconfig.debug | 1 +
> net/ipv4/syncookies.c | 7 +-
> net/mptcp/pm_userspace.c | 4 +
> net/mptcp/subflow.c | 61 +++++-
> security/device_cgroup.c | 33 ++-
> security/integrity/ima/Kconfig | 2 +-
> security/integrity/ima/ima_main.c | 7 +-
> security/integrity/ima/ima_template.c | 5 +-
> security/integrity/platform_certs/load_uefi.c | 1 +
> sound/pci/hda/patch_realtek.c | 50 +++++
> sound/soc/jz4740/jz4740-i2s.c | 39 +++-
> tools/testing/ktest/ktest.pl | 23 ++-
> tools/testing/selftests/lib.mk | 5 +
> 172 files changed, 1961 insertions(+), 648 deletions(-)
>
Best regards, Georg
^ permalink raw reply [relevance 0%]
* [PATCH 6.0 000/177] 6.0.18-rc1 review
@ 2023-01-04 16:04 1% Greg Kroah-Hartman
2023-01-06 14:27 0% ` Georg Müller
0 siblings, 1 reply; 200+ results
From: Greg Kroah-Hartman @ 2023-01-04 16:04 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow
This is the start of the stable review cycle for the 6.0.18 release.
There are 177 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Fri, 06 Jan 2023 16:04:29 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.0.18-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.0.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 6.0.18-rc1
Evan Quan <evan.quan@amd.com>
drm/amd/pm: correct the fan speed retrieving in PWM for some SMU13 asics
Evan Quan <evan.quan@amd.com>
drm/amd/pm: bump SMU13.0.0 driver_if header to version 0x34
Evan Quan <evan.quan@amd.com>
drm/amd/pm: add missing SMU13.0.7 mm_dpm feature mapping
Evan Quan <evan.quan@amd.com>
drm/amd/pm: add missing SMU13.0.0 mm_dpm feature mapping
Chris Wilson <chris.p.wilson@intel.com>
drm/i915/migrate: Account for the reserved_space
Matthew Auld <matthew.auld@intel.com>
drm/i915: improve the catch-all evict to handle lock contention
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: make display pinning more flexible (v2)
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: handle polaris10/11 overlap asics (v2)
Yifan Zhang <yifan1.zhang@amd.com>
drm/amd/display: Add DCN314 display SG Support
Matthew Auld <matthew.auld@intel.com>
drm/i915/ttm: consider CCS for backup objects
Ye Bin <yebin10@huawei.com>
ext4: allocate extended attribute value in vmalloc area
Jan Kara <jack@suse.cz>
ext4: avoid unaccounted block allocation when expanding inode
Jan Kara <jack@suse.cz>
ext4: initialize quota before expanding inode in setproject ioctl
Ye Bin <yebin10@huawei.com>
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
Ye Bin <yebin10@huawei.com>
ext4: fix kernel BUG in 'ext4_write_inline_data_end()'
Jan Kara <jack@suse.cz>
ext4: fix deadlock due to mbcache entry corruption
Jan Kara <jack@suse.cz>
ext4: avoid BUG_ON when creating xattrs
Baokun Li <libaokun1@huawei.com>
ext4: fix corrupt backup group descriptors after online resize
Darrick J. Wong <djwong@kernel.org>
ext4: dont return EINVAL from GETFSUUID when reporting UUID length
Baokun Li <libaokun1@huawei.com>
ext4: fix bad checksum after online resize
Luís Henriques <lhenriques@suse.de>
ext4: fix error code return to user-space in ext4_get_branch()
Baokun Li <libaokun1@huawei.com>
ext4: fix corruption when online resizing a 1K bigalloc fs
Eric Whitney <enwlinux@gmail.com>
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
Darrick J. Wong <djwong@kernel.org>
ext4: don't fail GETFSUUID when the caller provides a long buffer
Ye Bin <yebin10@huawei.com>
ext4: init quota for 'old.inode' in 'ext4_rename'
Ye Bin <yebin10@huawei.com>
ext4: fix uninititialized value in 'ext4_evict_inode'
Eric Biggers <ebiggers@google.com>
ext4: fix off-by-one errors in fast-commit block filling
Eric Biggers <ebiggers@google.com>
ext4: fix unaligned memory access in ext4_fc_reserve_space()
Eric Biggers <ebiggers@google.com>
ext4: add missing validation of fast-commit record lengths
Eric Biggers <ebiggers@google.com>
ext4: don't set up encryption key during jbd2 transaction
Eric Biggers <ebiggers@google.com>
ext4: fix leaking uninitialized memory in fast-commit journal
Eric Biggers <ebiggers@google.com>
ext4: disable fast-commit of encrypted dir operations
Eric Biggers <ebiggers@google.com>
ext4: don't allow journal inode to have encrypt flag
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
Zhang Yi <yi.zhang@huawei.com>
ext4: check and assert if marking an no_delete evicting inode dirty
Lukas Czerner <lczerner@redhat.com>
ext4: journal_path mount options should follow links
Ye Bin <yebin10@huawei.com>
ext4: fix reserved cluster accounting in __es_remove_extent()
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad quota inode
Baokun Li <libaokun1@huawei.com>
ext4: add helper to check quota inums
Baokun Li <libaokun1@huawei.com>
ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
Gaosheng Cui <cuigaosheng1@huawei.com>
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
Baokun Li <libaokun1@huawei.com>
ext4: fix use-after-free in ext4_orphan_cleanup
Alexander Potapenko <glider@google.com>
fs: ext4: initialize fsdata in pagecache_write()
Luís Henriques <lhenriques@suse.de>
ext4: remove trailing newline from ext4_msg() message
Baokun Li <libaokun1@huawei.com>
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
Zhang Yi <yi.zhang@huawei.com>
ext4: silence the warning when evicting inode with dioread_nolock
Ard Biesheuvel <ardb@kernel.org>
arm64: efi: Execute runtime services from a dedicated stack
Lucas Stach <l.stach@pengutronix.de>
drm/etnaviv: reap idle mapping if it doesn't match the softpin address
Yuan Can <yuancan@huawei.com>
drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init()
Mikko Kovanen <mikko.kovanen@aavamobile.com>
drm/i915/dsi: fix VBT send packet port selection for dual link DSI
Lucas Stach <l.stach@pengutronix.de>
drm/etnaviv: move idle mapping reaping into separate function
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Validate the box size for the snooped cursor
Simon Ser <contact@emersion.fr>
drm/connector: send hotplug uevent on connector cleanup
Wang Weiyang <wangweiyang2@huawei.com>
device_cgroup: Roll back to original exceptions after copy failure
Helge Deller <deller@gmx.de>
parisc: Drop PMD_SHIFT from calculation in pgtable.h
Helge Deller <deller@gmx.de>
parisc: Add missing FORCE prerequisites in Makefile
Helge Deller <deller@gmx.de>
parisc: Fix locking in pdc_iodc_print() firmware call
Shang XiaoJing <shangxiaojing@huawei.com>
parisc: led: Fix potential null-ptr-deref in start_task()
Peng Fan <peng.fan@nxp.com>
remoteproc: imx_rproc: Correct i.MX93 DRAM mapping
Maria Yu <quic_aiquny@quicinc.com>
remoteproc: core: Do pm_relax when in RPROC_OFFLINE state
Shengjiu Wang <shengjiu.wang@nxp.com>
remoteproc: imx_dsp_rproc: Add mutex protection for workqueue
Li Hua <hucool.lihua@huawei.com>
test_kprobes: Fix implicit declaration error of test_kprobes
Kim Phillips <kim.phillips@amd.com>
iommu/amd: Fix ill-formed ivrs_ioapic, ivrs_hpet and ivrs_acpihid options
Kim Phillips <kim.phillips@amd.com>
iommu/amd: Fix ivrs_acpihid cmdline parsing code
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp-combo: fix sc8180x reset
Qiang Yu <quic_qianyu@quicinc.com>
bus: mhi: host: Fix race between channel preparation and M0 event
Isaac J. Manjarres <isaacmanjarres@google.com>
driver core: Fix bus_type.match() error handling in __driver_attach()
Mario Limonciello <mario.limonciello@amd.com>
crypto: ccp - Add support for TEE for PCI ID 0x14CA
Corentin Labbe <clabbe@baylibre.com>
crypto: n2 - add missing hash statesize
Sergey Matyukevich <sergey.matyukevich@syntacore.com>
riscv: mm: notify remote harts about mmu cache updates
Guo Ren <guoren@kernel.org>
riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument
Li Huafei <lihuafei1@huawei.com>
RISC-V: kexec: Fix memory leak of elf header buffer
Guo Ren <guoren@kernel.org>
riscv: Fixup compile error with !MMU
Li Huafei <lihuafei1@huawei.com>
RISC-V: kexec: Fix memory leak of fdt buffer
Sascha Hauer <s.hauer@pengutronix.de>
PCI/sysfs: Fix double free in error path
Michael S. Tsirkin <mst@redhat.com>
PCI: Fix pci_device_is_present() for VFs by checking PF
Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
crypto: ccree,hisilicon - Fix dependencies to correct algorithm
Roberto Sassu <roberto.sassu@huawei.com>
ima: Fix memory leak in __ima_inode_hash()
Yaliang Wang <Yaliang.Wang@windriver.com>
mtd: spi-nor: gigadevice: gd25q256: replace gd25q256_default_init with gd25q256_post_bfpt
Dan Carpenter <error27@gmail.com>
ipmi: fix use after free in _ipmi_destroy_user()
Huaxin Lu <luhuaxin1@huawei.com>
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
Alexander Sverdlin <alexander.sverdlin@nokia.com>
mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix long wait in unload when IPMI disconnect
Maximilian Luz <luzmaximilian@gmail.com>
ipu3-imgu: Fix NULL pointer dereference in imgu_subdev_set_selection()
Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
ASoC: jz4740-i2s: Handle independent FIFO flush bits
Michael Walle <michael@walle.cc>
wifi: wilc1000: sdio: fix module autoloading
Aditya Garg <gargaditya08@live.com>
efi: Add iMac Pro 2017 to uefi skip cert quirk
Florian-Ewald Mueller <florian-ewald.mueller@ionos.com>
md/bitmap: Fix bitmap chunk size overflow issues
Damien Le Moal <damien.lemoal@opensource.wdc.com>
block: mq-deadline: Do not break sequential write streams to zoned HDDs
Damien Le Moal <damien.lemoal@opensource.wdc.com>
block: mq-deadline: Fix dd_finish_request() for zoned devices
Yang Wang <KevinYang.Wang@amd.com>
drm/amdgpu: fix mmhub register base coding error
Ian Abbott <abbotti@mev.co.uk>
rtc: ds1347: fix value written to century register
Biju Das <biju.das.jz@bp.renesas.com>
ravb: Fix "failed to switch device to config mode" message during unbind
Paulo Alcantara <pc@cjr.nz>
cifs: set correct status of tcon ipc when reconnecting
Paulo Alcantara <pc@cjr.nz>
cifs: set correct ipc status after initial tree connect
Paulo Alcantara <pc@cjr.nz>
cifs: set correct tcon status after initial tree connect
Steve French <stfrench@microsoft.com>
cifs: fix missing display of three mount options
Paulo Alcantara <pc@cjr.nz>
cifs: fix confusing debug message
Takashi Iwai <tiwai@suse.de>
media: dvb-core: Fix UAF due to refcount races at releasing
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
media: dvb-core: Fix double free in dvb_register_device()
Nick Desaulniers <ndesaulniers@google.com>
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
Macpaul Lin <macpaul.lin@mediatek.com>
arm64: dts: mediatek: mt8195-demo: fix the memory size of node secmon
Luca Ceresoli <luca.ceresoli@bootlin.com>
staging: media: tegra-video: fix device_node use after free
Luca Ceresoli <luca.ceresoli@bootlin.com>
staging: media: tegra-video: fix chan->mipi value on error
Yang Jihong <yangjihong1@huawei.com>
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
Zheng Yejian <zhengyejian1@huawei.com>
tracing: Fix issue of missing one synthetic field
Steven Rostedt (Google) <rostedt@goodmis.org>
tracing/probes: Handle system names with hyphens
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix wrong return value in parse_action_params()
Masami Hiramatsu (Google) <mhiramat@kernel.org>
tracing: Fix complicated dependency of CONFIG_TRACER_MAX_TRACE
Michael Jeanson <mjeanson@efficios.com>
powerpc/ftrace: fix syscall tracing on PPC64_ELF_ABI_V1
Steven Rostedt (Google) <rostedt@goodmis.org>
tracing: Fix race where eprobes can be called before the event
Masami Hiramatsu (Google) <mhiramat@kernel.org>
x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK
Masami Hiramatsu (Google) <mhiramat@kernel.org>
x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK
Steven Rostedt (Google) <rostedt@goodmis.org>
ftrace/x86: Add back ftrace_expected for ftrace bug reports
Ashok Raj <ashok.raj@intel.com>
x86/microcode/intel: Do not retry microcode reloading on the APs
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1
Yuan ZhaoXiong <yuanzhaoxiong@baidu.com>
KVM: x86: fix APICv/x2AVIC disabled when vm reboot by itself
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails
Sean Christopherson <seanjc@google.com>
KVM: VMX: Resume guest immediately when injecting #GP on ECREATE
Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
ima: Fix hash dependency to correct algorithm
Rob Herring <robh@kernel.org>
of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values
Max Filippov <jcmvbkbc@gmail.com>
xtensa: add __umulsidi3 helper
Namhyung Kim <namhyung@kernel.org>
perf/core: Call LSM hook after copying perf_event_attr
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx'
Li Ming <ming4.li@intel.com>
PCI/DOE: Fix maximum data object length miscalculation
Mike Snitzer <snitzer@kernel.org>
dm cache: set needs_check flag after aborting metadata
Luo Meng <luomeng12@huawei.com>
dm cache: Fix UAF in destroy()
Luo Meng <luomeng12@huawei.com>
dm clone: Fix UAF in clone_dtr()
Luo Meng <luomeng12@huawei.com>
dm integrity: Fix UAF in dm_integrity_dtr()
Luo Meng <luomeng12@huawei.com>
dm thin: Fix UAF in run_timer_softirq()
Luo Meng <luomeng12@huawei.com>
dm thin: resume even if in FAIL mode
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Use last transaction's pmd->root when commit failed
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata
Mike Snitzer <snitzer@kernel.org>
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: use proper req destructor for IPv6
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: dedicated request sock for subflow in v6
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: remove MPTCP 'ifdef' in TCP SYN cookies
Wei Yongjun <weiyongjun1@huawei.com>
mptcp: netlink: fix some error return code
Alexander Aring <aahringo@redhat.com>
fs: dlm: retry accept() until -EAGAIN or error returns
Alexander Aring <aahringo@redhat.com>
fs: dlm: fix sock release if listen fails
Chris Chiu <chris.chiu@canonical.com>
ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops
Philipp Jungkamp <p.jungkamp@gmx.net>
ALSA: patch_realtek: Fix Dell Inspiron Plus 16
Toke Høiland-Jørgensen <toke@redhat.com>
bpf: Resolve fext program type when checking map compatibility
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix in register read and write for H264
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Clear workbit to handle error condition
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix to handle reference queue during finishing
Al Viro <viro@zeniv.linux.org.uk>
ext2: unbugger ext2_empty_dir()
Yongqiang Liu <liuyongqiang13@huawei.com>
cpufreq: Init completion before kobject_init_and_add()
Kant Fan <kant@allwinnertech.com>
PM/devfreq: governor: Add a private governor_data for governor
Yazen Ghannam <yazen.ghannam@amd.com>
x86/MCE/AMD: Clear DFR errors found in THR handler
Mickaël Salaün <mic@digikod.net>
selftests: Use optional USERCFLAGS and USERLDFLAGS
Yazen Ghannam <yazen.ghannam@amd.com>
EDAC/mc_sysfs: Increase legacy channel support to 12
Dan Williams <dan.j.williams@intel.com>
cxl/region: Fix missing probe failure
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
Andrew Cooper <andrew.cooper3@citrix.com>
x86/fpu/xstate: Fix XSTATE_WARN_ON() to emit relevant diagnostics
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm850-samsung-w737: correct I2C12 pins drive strength
Jason A. Donenfeld <Jason@zx2c4.com>
ARM: ux500: do not directly dereference __iomem
Boris Burkov <boris@bur.io>
btrfs: fix resolving backrefs for inline extent followed by prealloc
void0red <void0red@gmail.com>
btrfs: fix extent map use-after-free when handling missing device in read_one_chunk
Evan Quan <evan.quan@amd.com>
drm/amd/pm: correct SMU13.0.0 pstate profiling clock settings
Evan Quan <evan.quan@amd.com>
drm/amd/pm: update SMU13.0.0 reported maximum shader clock
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp-combo: fix out-of-bounds clock access
Wenchao Chen <wenchao.chen@unisoc.com>
mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
Johan Hovold <johan+linaro@kernel.org>
arm64: dts: qcom: sc8280xp: fix UFS reference clocks
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength
Alexander Antonov <alexander.antonov@linux.intel.com>
perf/x86/intel/uncore: Clear attr_update properly
Alexander Antonov <alexander.antonov@linux.intel.com>
perf/x86/intel/uncore: Disable I/O stacks to PMU mapping on ICX-D
Bixuan Cui <cuibixuan@linux.alibaba.com>
jbd2: use the correct print format
Steven Rostedt <rostedt@goodmis.org>
ktest.pl minconfig: Unset configs instead of just removing them
Steven Rostedt <rostedt@goodmis.org>
kest.pl: Fix grub2 menu handling for rebooting
Manivannan Sadhasivam <mani@kernel.org>
soc: qcom: Select REMAP_MMIO for ICC_BWMON driver
Manivannan Sadhasivam <mani@kernel.org>
soc: qcom: Select REMAP_MMIO for LLCC driver
Masami Hiramatsu (Google) <mhiramat@kernel.org>
arm64: Prohibit instrumentation on arch_stack_walk()
Johan Hovold <johan+linaro@kernel.org>
arm64: dts: qcom: sc8280xp: fix UFS DMA coherency
Fan Ni <fan.ni@samsung.com>
cxl/region: Fix memdev reuse check
Jason A. Donenfeld <Jason@zx2c4.com>
media: stv0288: use explicitly signed char
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: skip MES for S0ix as well since it's part of GFX
-------------
Diffstat:
Documentation/admin-guide/kernel-parameters.txt | 27 ++-
Documentation/filesystems/mount_api.rst | 1 +
Makefile | 4 +-
arch/arm/nwfpe/Makefile | 6 +
arch/arm64/boot/dts/mediatek/mt8195-demo.dts | 4 +-
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 10 +-
arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 5 +-
.../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 6 +-
arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts | 6 +-
arch/arm64/include/asm/efi.h | 3 +
arch/arm64/kernel/efi-rt-wrapper.S | 13 +-
arch/arm64/kernel/efi.c | 27 +++
arch/arm64/kernel/stacktrace.c | 10 +-
arch/parisc/include/asm/pgtable.h | 4 +-
arch/parisc/kernel/firmware.c | 24 ++-
arch/parisc/kernel/vdso32/Makefile | 4 +-
arch/parisc/kernel/vdso64/Makefile | 4 +-
arch/powerpc/include/asm/ftrace.h | 12 --
arch/riscv/Kconfig | 2 +-
arch/riscv/include/asm/kexec.h | 5 +
arch/riscv/include/asm/mmu.h | 2 +
arch/riscv/include/asm/pgtable.h | 2 +-
arch/riscv/include/asm/tlbflush.h | 18 ++
arch/riscv/kernel/elf_kexec.c | 14 ++
arch/riscv/kernel/stacktrace.c | 2 +-
arch/riscv/mm/context.c | 10 +
arch/riscv/mm/tlbflush.c | 28 +--
arch/x86/events/intel/uncore.h | 1 +
arch/x86/events/intel/uncore_snbep.c | 22 +-
arch/x86/kernel/cpu/mce/amd.c | 33 +--
arch/x86/kernel/cpu/microcode/intel.c | 8 +-
arch/x86/kernel/fpu/xstate.c | 12 +-
arch/x86/kernel/ftrace.c | 2 +
arch/x86/kernel/kprobes/core.c | 10 +-
arch/x86/kernel/kprobes/opt.c | 28 +--
arch/x86/kvm/lapic.c | 5 +-
arch/x86/kvm/vmx/nested.c | 47 +++--
arch/x86/kvm/vmx/sgx.c | 4 +-
arch/xtensa/kernel/xtensa_ksyms.c | 2 +
arch/xtensa/lib/Makefile | 2 +-
arch/xtensa/lib/umulsidi3.S | 230 +++++++++++++++++++++
block/mq-deadline.c | 83 +++++++-
drivers/base/dd.c | 6 +-
drivers/bus/mhi/host/pm.c | 3 +-
drivers/char/ipmi/ipmi_msghandler.c | 4 +-
drivers/char/ipmi/ipmi_si_intf.c | 27 ++-
drivers/cpufreq/cpufreq.c | 2 +-
drivers/crypto/Kconfig | 4 +-
drivers/crypto/ccp/sp-pci.c | 11 +-
drivers/crypto/hisilicon/Kconfig | 2 +-
drivers/crypto/n2_core.c | 6 +
drivers/cxl/core/region.c | 5 +-
drivers/devfreq/devfreq.c | 6 +-
drivers/devfreq/governor_userspace.c | 12 +-
drivers/edac/edac_mc_sysfs.c | 24 +++
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 5 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 13 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c | 2 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c | 2 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.c | 2 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.c | 2 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.c | 2 +-
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 +
.../pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_0.h | 2 +-
drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h | 1 +
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 2 +
.../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 111 +++++++++-
.../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 19 +-
drivers/gpu/drm/drm_connector.c | 3 +
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 7 +-
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 23 ++-
drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 1 +
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 4 +-
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 59 +++++-
drivers/gpu/drm/i915/gem/i915_gem_mman.c | 2 +-
drivers/gpu/drm/i915/gem/i915_gem_object.c | 3 +
drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 10 +-
drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c | 18 +-
drivers/gpu/drm/i915/gt/intel_migrate.c | 16 +-
drivers/gpu/drm/i915/i915_gem_evict.c | 37 +++-
drivers/gpu/drm/i915/i915_gem_evict.h | 4 +-
drivers/gpu/drm/i915/i915_vma.c | 2 +-
drivers/gpu/drm/i915/selftests/i915_gem_evict.c | 4 +-
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 6 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +-
drivers/iommu/amd/init.c | 86 +++++---
drivers/md/dm-cache-metadata.c | 54 ++++-
drivers/md/dm-cache-target.c | 11 +-
drivers/md/dm-clone-target.c | 1 +
drivers/md/dm-integrity.c | 2 +
drivers/md/dm-thin-metadata.c | 60 +++++-
drivers/md/dm-thin.c | 18 +-
drivers/md/md-bitmap.c | 20 +-
drivers/media/dvb-core/dmxdev.c | 8 +
drivers/media/dvb-core/dvbdev.c | 1 +
drivers/media/dvb-frontends/stv0288.c | 5 +-
.../media/platform/samsung/s5p-mfc/s5p_mfc_ctrl.c | 4 +-
.../media/platform/samsung/s5p-mfc/s5p_mfc_enc.c | 12 +-
.../platform/samsung/s5p-mfc/s5p_mfc_opr_v6.c | 14 +-
drivers/mmc/host/sdhci-sprd.c | 16 +-
drivers/mtd/spi-nor/core.c | 2 +
drivers/mtd/spi-nor/gigadevice.c | 24 ++-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
drivers/net/wireless/microchip/wilc1000/sdio.c | 1 +
drivers/of/kexec.c | 10 +-
drivers/parisc/led.c | 3 +
drivers/pci/doe.c | 20 +-
drivers/pci/pci-sysfs.c | 13 +-
drivers/pci/pci.c | 2 +
drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 8 +-
drivers/remoteproc/imx_dsp_rproc.c | 12 +-
drivers/remoteproc/imx_rproc.c | 4 +-
drivers/remoteproc/remoteproc_core.c | 9 +-
drivers/rtc/rtc-ds1347.c | 2 +-
drivers/soc/qcom/Kconfig | 2 +
drivers/soc/ux500/ux500-soc-id.c | 10 +-
drivers/staging/media/ipu3/ipu3-v4l2.c | 57 ++---
drivers/staging/media/tegra-video/csi.c | 4 +-
drivers/staging/media/tegra-video/csi.h | 2 +-
fs/btrfs/backref.c | 4 +
fs/btrfs/volumes.c | 3 +-
fs/cifs/cifsfs.c | 8 +-
fs/cifs/connect.c | 16 +-
fs/dlm/lowcomms.c | 9 +-
fs/ext2/dir.c | 2 +-
fs/ext4/ext4.h | 9 +-
fs/ext4/extents.c | 8 +
fs/ext4/extents_status.c | 3 +-
fs/ext4/fast_commit.c | 171 ++++++++-------
fs/ext4/fast_commit.h | 3 +-
fs/ext4/indirect.c | 9 +-
fs/ext4/inode.c | 48 ++++-
fs/ext4/ioctl.c | 24 ++-
fs/ext4/namei.c | 47 +++--
fs/ext4/orphan.c | 2 +-
fs/ext4/resize.c | 32 +--
fs/ext4/super.c | 33 ++-
fs/ext4/verity.c | 2 +-
fs/ext4/xattr.c | 19 +-
fs/fs_parser.c | 3 +-
fs/mbcache.c | 14 +-
fs/quota/dquot.c | 2 +
include/linux/bpf_verifier.h | 2 +-
include/linux/devfreq.h | 7 +-
include/linux/fs_parser.h | 1 +
include/linux/mbcache.h | 9 +-
include/net/mptcp.h | 12 +-
include/trace/events/ext4.h | 7 +-
include/trace/events/jbd2.h | 44 ++--
kernel/bpf/core.c | 5 +-
kernel/events/core.c | 6 +-
kernel/trace/Kconfig | 2 +
kernel/trace/trace.c | 38 +++-
kernel/trace/trace.h | 27 ++-
kernel/trace/trace_eprobe.c | 3 +
kernel/trace/trace_events_hist.c | 11 +-
kernel/trace/trace_events_synth.c | 2 +-
kernel/trace/trace_probe.c | 2 +-
lib/Kconfig.debug | 1 +
net/ipv4/syncookies.c | 7 +-
net/mptcp/pm_userspace.c | 4 +
net/mptcp/subflow.c | 61 +++++-
security/device_cgroup.c | 33 ++-
security/integrity/ima/Kconfig | 2 +-
security/integrity/ima/ima_main.c | 7 +-
security/integrity/ima/ima_template.c | 5 +-
security/integrity/platform_certs/load_uefi.c | 1 +
sound/pci/hda/patch_realtek.c | 50 +++++
sound/soc/jz4740/jz4740-i2s.c | 39 +++-
tools/testing/ktest/ktest.pl | 23 ++-
tools/testing/selftests/lib.mk | 5 +
172 files changed, 1961 insertions(+), 648 deletions(-)
^ permalink raw reply [relevance 1%]
* [PATCH 6.1 000/207] 6.1.4-rc1 review
@ 2023-01-04 16:04 1% Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2023-01-04 16:04 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow
This is the start of the stable review cycle for the 6.1.4 release.
There are 207 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Fri, 06 Jan 2023 16:04:29 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.4-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 6.1.4-rc1
Evan Quan <evan.quan@amd.com>
drm/amd/pm: correct the fan speed retrieving in PWM for some SMU13 asics
Evan Quan <evan.quan@amd.com>
drm/amd/pm: bump SMU13.0.0 driver_if header to version 0x34
Evan Quan <evan.quan@amd.com>
drm/amd/pm: add missing SMU13.0.7 mm_dpm feature mapping
Evan Quan <evan.quan@amd.com>
drm/amd/pm: add missing SMU13.0.0 mm_dpm feature mapping
Chris Wilson <chris.p.wilson@intel.com>
drm/i915/migrate: Account for the reserved_space
Matthew Auld <matthew.auld@intel.com>
drm/i915: improve the catch-all evict to handle lock contention
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: make display pinning more flexible (v2)
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: handle polaris10/11 overlap asics (v2)
Yifan Zhang <yifan1.zhang@amd.com>
drm/amd/display: Add DCN314 display SG Support
Matthew Auld <matthew.auld@intel.com>
drm/i915/ttm: consider CCS for backup objects
Ye Bin <yebin10@huawei.com>
ext4: allocate extended attribute value in vmalloc area
Jan Kara <jack@suse.cz>
ext4: avoid unaccounted block allocation when expanding inode
Jan Kara <jack@suse.cz>
ext4: initialize quota before expanding inode in setproject ioctl
Ye Bin <yebin10@huawei.com>
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
Ye Bin <yebin10@huawei.com>
ext4: fix kernel BUG in 'ext4_write_inline_data_end()'
Jan Kara <jack@suse.cz>
ext4: fix deadlock due to mbcache entry corruption
Jan Kara <jack@suse.cz>
ext4: avoid BUG_ON when creating xattrs
Baokun Li <libaokun1@huawei.com>
ext4: fix corrupt backup group descriptors after online resize
Darrick J. Wong <djwong@kernel.org>
ext4: dont return EINVAL from GETFSUUID when reporting UUID length
Baokun Li <libaokun1@huawei.com>
ext4: fix bad checksum after online resize
Luís Henriques <lhenriques@suse.de>
ext4: fix error code return to user-space in ext4_get_branch()
Baokun Li <libaokun1@huawei.com>
ext4: fix corruption when online resizing a 1K bigalloc fs
Eric Whitney <enwlinux@gmail.com>
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
Darrick J. Wong <djwong@kernel.org>
ext4: don't fail GETFSUUID when the caller provides a long buffer
Ye Bin <yebin10@huawei.com>
ext4: init quota for 'old.inode' in 'ext4_rename'
Ye Bin <yebin10@huawei.com>
ext4: fix uninititialized value in 'ext4_evict_inode'
Eric Biggers <ebiggers@google.com>
ext4: fix off-by-one errors in fast-commit block filling
Eric Biggers <ebiggers@google.com>
ext4: fix unaligned memory access in ext4_fc_reserve_space()
Eric Biggers <ebiggers@google.com>
ext4: add missing validation of fast-commit record lengths
Eric Biggers <ebiggers@google.com>
ext4: don't set up encryption key during jbd2 transaction
Eric Biggers <ebiggers@google.com>
ext4: fix leaking uninitialized memory in fast-commit journal
Eric Biggers <ebiggers@google.com>
ext4: disable fast-commit of encrypted dir operations
Eric Biggers <ebiggers@google.com>
ext4: don't allow journal inode to have encrypt flag
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
Zhang Yi <yi.zhang@huawei.com>
ext4: check and assert if marking an no_delete evicting inode dirty
Lukas Czerner <lczerner@redhat.com>
ext4: journal_path mount options should follow links
Ye Bin <yebin10@huawei.com>
ext4: fix reserved cluster accounting in __es_remove_extent()
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search caused by bad quota inode
Baokun Li <libaokun1@huawei.com>
ext4: add helper to check quota inums
Baokun Li <libaokun1@huawei.com>
ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
Gaosheng Cui <cuigaosheng1@huawei.com>
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
Baokun Li <libaokun1@huawei.com>
ext4: fix use-after-free in ext4_orphan_cleanup
Alexander Potapenko <glider@google.com>
fs: ext4: initialize fsdata in pagecache_write()
Baokun Li <libaokun1@huawei.com>
ext4: correct inconsistent error msg in nojournal mode
Luís Henriques <lhenriques@suse.de>
ext4: remove trailing newline from ext4_msg() message
Baokun Li <libaokun1@huawei.com>
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
Zhang Yi <yi.zhang@huawei.com>
ext4: silence the warning when evicting inode with dioread_nolock
Ard Biesheuvel <ardb@kernel.org>
arm64: efi: Execute runtime services from a dedicated stack
Lucas Stach <l.stach@pengutronix.de>
drm/etnaviv: reap idle mapping if it doesn't match the softpin address
Yuan Can <yuancan@huawei.com>
drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init()
Mikko Kovanen <mikko.kovanen@aavamobile.com>
drm/i915/dsi: fix VBT send packet port selection for dual link DSI
Lucas Stach <l.stach@pengutronix.de>
drm/etnaviv: move idle mapping reaping into separate function
Jocelyn Falempe <jfalempe@redhat.com>
drm/mgag200: Fix PLL setup for G200_SE_A rev >=4
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Validate the box size for the snooped cursor
Simon Ser <contact@emersion.fr>
drm/connector: send hotplug uevent on connector cleanup
Wang Weiyang <wangweiyang2@huawei.com>
device_cgroup: Roll back to original exceptions after copy failure
Helge Deller <deller@gmx.de>
parisc: Drop PMD_SHIFT from calculation in pgtable.h
Helge Deller <deller@gmx.de>
parisc: Drop duplicate kgdb_pdc console
Helge Deller <deller@gmx.de>
parisc: Add missing FORCE prerequisites in Makefile
Helge Deller <deller@gmx.de>
parisc: Fix locking in pdc_iodc_print() firmware call
Helge Deller <deller@gmx.de>
parisc: Drop locking in pdc console code
Shang XiaoJing <shangxiaojing@huawei.com>
parisc: led: Fix potential null-ptr-deref in start_task()
Peng Fan <peng.fan@nxp.com>
remoteproc: imx_rproc: Correct i.MX93 DRAM mapping
Maria Yu <quic_aiquny@quicinc.com>
remoteproc: core: Do pm_relax when in RPROC_OFFLINE state
Shengjiu Wang <shengjiu.wang@nxp.com>
remoteproc: imx_dsp_rproc: Add mutex protection for workqueue
Mike Kravetz <mike.kravetz@oracle.com>
hugetlb: really allocate vma lock for all sharable vmas
Li Hua <hucool.lihua@huawei.com>
test_kprobes: Fix implicit declaration error of test_kprobes
Kim Phillips <kim.phillips@amd.com>
iommu/amd: Fix ill-formed ivrs_ioapic, ivrs_hpet and ivrs_acpihid options
Kim Phillips <kim.phillips@amd.com>
iommu/amd: Fix ivrs_acpihid cmdline parsing code
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp-combo: fix sc8180x reset
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp-combo: fix sdm845 reset
Qiang Yu <quic_qianyu@quicinc.com>
bus: mhi: host: Fix race between channel preparation and M0 event
Isaac J. Manjarres <isaacmanjarres@google.com>
driver core: Fix bus_type.match() error handling in __driver_attach()
Mario Limonciello <mario.limonciello@amd.com>
crypto: ccp - Add support for TEE for PCI ID 0x14CA
Corentin Labbe <clabbe@baylibre.com>
crypto: n2 - add missing hash statesize
Sergey Matyukevich <sergey.matyukevich@syntacore.com>
riscv: mm: notify remote harts about mmu cache updates
Guo Ren <guoren@kernel.org>
riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument
Li Huafei <lihuafei1@huawei.com>
RISC-V: kexec: Fix memory leak of elf header buffer
Guo Ren <guoren@kernel.org>
riscv: Fixup compile error with !MMU
Li Huafei <lihuafei1@huawei.com>
RISC-V: kexec: Fix memory leak of fdt buffer
Sascha Hauer <s.hauer@pengutronix.de>
PCI/sysfs: Fix double free in error path
Michael S. Tsirkin <mst@redhat.com>
PCI: Fix pci_device_is_present() for VFs by checking PF
Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
crypto: ccree,hisilicon - Fix dependencies to correct algorithm
Kees Cook <keescook@chromium.org>
um: virt-pci: Avoid GCC non-NULL warning
Roberto Sassu <roberto.sassu@huawei.com>
ima: Fix memory leak in __ima_inode_hash()
Yaliang Wang <Yaliang.Wang@windriver.com>
mtd: spi-nor: gigadevice: gd25q256: replace gd25q256_default_init with gd25q256_post_bfpt
Dan Carpenter <error27@gmail.com>
ipmi: fix use after free in _ipmi_destroy_user()
Huaxin Lu <luhuaxin1@huawei.com>
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
Alexander Sverdlin <alexander.sverdlin@nokia.com>
mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
Zhang Yuchen <zhangyuchen.lcr@bytedance.com>
ipmi: fix long wait in unload when IPMI disconnect
Maximilian Luz <luzmaximilian@gmail.com>
ipu3-imgu: Fix NULL pointer dereference in imgu_subdev_set_selection()
Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
ASoC: jz4740-i2s: Handle independent FIFO flush bits
Michael Walle <michael@walle.cc>
wifi: wilc1000: sdio: fix module autoloading
Aditya Garg <gargaditya08@live.com>
efi: Add iMac Pro 2017 to uefi skip cert quirk
Florian-Ewald Mueller <florian-ewald.mueller@ionos.com>
md/bitmap: Fix bitmap chunk size overflow issues
Damien Le Moal <damien.lemoal@opensource.wdc.com>
block: mq-deadline: Do not break sequential write streams to zoned HDDs
Damien Le Moal <damien.lemoal@opensource.wdc.com>
block: mq-deadline: Fix dd_finish_request() for zoned devices
Yang Wang <KevinYang.Wang@amd.com>
drm/amdgpu: fix mmhub register base coding error
Ian Abbott <abbotti@mev.co.uk>
rtc: ds1347: fix value written to century register
Biju Das <biju.das.jz@bp.renesas.com>
ravb: Fix "failed to switch device to config mode" message during unbind
Paulo Alcantara <pc@cjr.nz>
cifs: set correct status of tcon ipc when reconnecting
Paulo Alcantara <pc@cjr.nz>
cifs: set correct ipc status after initial tree connect
Paulo Alcantara <pc@cjr.nz>
cifs: set correct tcon status after initial tree connect
Steve French <stfrench@microsoft.com>
cifs: fix missing display of three mount options
Paulo Alcantara <pc@cjr.nz>
cifs: fix confusing debug message
Takashi Iwai <tiwai@suse.de>
media: dvb-core: Fix UAF due to refcount races at releasing
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
media: dvb-core: Fix double free in dvb_register_device()
Nick Desaulniers <ndesaulniers@google.com>
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
Macpaul Lin <macpaul.lin@mediatek.com>
arm64: dts: mediatek: mt8195-demo: fix the memory size of node secmon
Luca Ceresoli <luca.ceresoli@bootlin.com>
staging: media: tegra-video: fix device_node use after free
Luca Ceresoli <luca.ceresoli@bootlin.com>
staging: media: tegra-video: fix chan->mipi value on error
Yang Jihong <yangjihong1@huawei.com>
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
Zheng Yejian <zhengyejian1@huawei.com>
tracing: Fix issue of missing one synthetic field
Steven Rostedt (Google) <rostedt@goodmis.org>
tracing/probes: Handle system names with hyphens
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix wrong return value in parse_action_params()
Masami Hiramatsu (Google) <mhiramat@kernel.org>
tracing: Fix complicated dependency of CONFIG_TRACER_MAX_TRACE
Michael Jeanson <mjeanson@efficios.com>
powerpc/ftrace: fix syscall tracing on PPC64_ELF_ABI_V1
Steven Rostedt (Google) <rostedt@goodmis.org>
tracing: Fix race where eprobes can be called before the event
Masami Hiramatsu (Google) <mhiramat@kernel.org>
x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK
Masami Hiramatsu (Google) <mhiramat@kernel.org>
x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK
Steven Rostedt (Google) <rostedt@goodmis.org>
ftrace/x86: Add back ftrace_expected for ftrace bug reports
Ashok Raj <ashok.raj@intel.com>
x86/microcode/intel: Do not retry microcode reloading on the APs
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1
Yuan ZhaoXiong <yuanzhaoxiong@baidu.com>
KVM: x86: fix APICv/x2AVIC disabled when vm reboot by itself
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails
Sean Christopherson <seanjc@google.com>
KVM: VMX: Resume guest immediately when injecting #GP on ECREATE
Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
ima: Fix hash dependency to correct algorithm
Rob Herring <robh@kernel.org>
of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values
Max Filippov <jcmvbkbc@gmail.com>
xtensa: add __umulsidi3 helper
Namhyung Kim <namhyung@kernel.org>
perf/core: Call LSM hook after copying perf_event_attr
Zheng Yejian <zhengyejian1@huawei.com>
tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx'
Li Ming <ming4.li@intel.com>
PCI/DOE: Fix maximum data object length miscalculation
Arnd Bergmann <arnd@arndb.de>
ata: ahci: fix enum constants for gcc-13
Mike Snitzer <snitzer@kernel.org>
dm cache: set needs_check flag after aborting metadata
Luo Meng <luomeng12@huawei.com>
dm cache: Fix UAF in destroy()
Luo Meng <luomeng12@huawei.com>
dm clone: Fix UAF in clone_dtr()
Luo Meng <luomeng12@huawei.com>
dm integrity: Fix UAF in dm_integrity_dtr()
Luo Meng <luomeng12@huawei.com>
dm thin: Fix UAF in run_timer_softirq()
Luo Meng <luomeng12@huawei.com>
dm thin: resume even if in FAIL mode
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Use last transaction's pmd->root when commit failed
Zhihao Cheng <chengzhihao1@huawei.com>
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata
Mike Snitzer <snitzer@kernel.org>
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: use proper req destructor for IPv6
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: dedicated request sock for subflow in v6
Matthieu Baerts <matthieu.baerts@tessares.net>
mptcp: remove MPTCP 'ifdef' in TCP SYN cookies
Wei Yongjun <weiyongjun1@huawei.com>
mptcp: netlink: fix some error return code
Alexander Aring <aahringo@redhat.com>
fs: dlm: retry accept() until -EAGAIN or error returns
Alexander Aring <aahringo@redhat.com>
fs: dlm: fix sock release if listen fails
Jaroslav Kysela <perex@perex.cz>
ALSA: usb-audio: Add new quirk FIXED_RATE for JBL Quantum810 Wireless
José Expósito <jose.exposito89@gmail.com>
HID: Ignore HP Envy x360 eu0009nv stylus battery
Hans de Goede <hdegoede@redhat.com>
platform/x86: x86-android-tablets: Add Advantech MICA-071 extra button
Hans de Goede <hdegoede@redhat.com>
platform/x86: x86-android-tablets: Add Lenovo Yoga Tab 3 (YT3-X90F) charger + fuel-gauge data
Hans de Goede <hdegoede@redhat.com>
platform/x86: x86-android-tablets: Add Medion Lifetab S10346 data
Vitaly Rodionov <vitalyr@opensource.cirrus.com>
ALSA: hda/cirrus: Add extra 10 ms delay to allow PLL settle and lock.
Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
platform/x86: intel-uncore-freq: add Emerald Rapids support
Hans de Goede <hdegoede@redhat.com>
platform/x86: ideapad-laptop: Stop writing VPCCMD_W_TOUCHPAD at probe time
Hans de Goede <hdegoede@redhat.com>
platform/x86: ideapad-laptop: Send KEY_TOUCHPAD_TOGGLE on some models
Hans de Goede <hdegoede@redhat.com>
platform/x86: ideapad-laptop: Only toggle ps2 aux port on/off on select models
Hans de Goede <hdegoede@redhat.com>
platform/x86: ideapad-laptop: Do not send KEY_TOUCHPAD* events on probe / resume
Hans de Goede <hdegoede@redhat.com>
platform/x86: ideapad-laptop: Refactor ideapad_sync_touchpad_state()
Hans de Goede <hdegoede@redhat.com>
ACPI: video: Prefer native over vendor
Hans de Goede <hdegoede@redhat.com>
ACPI: video: Simplify __acpi_video_get_backlight_type()
Philipp Jungkamp <p.jungkamp@gmx.net>
platform/x86: ideapad-laptop: support for more special keys in WMI
Eray Orçunus <erayorcunus@gmail.com>
platform/x86: ideapad-laptop: Add new _CFG bit numbers for future use
Eray Orçunus <erayorcunus@gmail.com>
platform/x86: ideapad-laptop: Revert "check for touchpad support in _CFG"
Hans de Goede <hdegoede@redhat.com>
platform/x86: thinkpad_acpi: Fix max_brightness of thinklight
Chris Chiu <chris.chiu@canonical.com>
ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops
Philipp Jungkamp <p.jungkamp@gmx.net>
ALSA: patch_realtek: Fix Dell Inspiron Plus 16
Toke Høiland-Jørgensen <toke@redhat.com>
bpf: Resolve fext program type when checking map compatibility
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix in register read and write for H264
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Clear workbit to handle error condition
Smitha T Murthy <smitha.t@samsung.com>
media: s5p-mfc: Fix to handle reference queue during finishing
Al Viro <viro@zeniv.linux.org.uk>
ext2: unbugger ext2_empty_dir()
Yongqiang Liu <liuyongqiang13@huawei.com>
cpufreq: Init completion before kobject_init_and_add()
Kant Fan <kant@allwinnertech.com>
PM/devfreq: governor: Add a private governor_data for governor
Jason A. Donenfeld <Jason@zx2c4.com>
random: add helpers for random numbers with given floor or range
Yazen Ghannam <yazen.ghannam@amd.com>
x86/MCE/AMD: Clear DFR errors found in THR handler
Mickaël Salaün <mic@digikod.net>
selftests: Use optional USERCFLAGS and USERLDFLAGS
Yazen Ghannam <yazen.ghannam@amd.com>
EDAC/mc_sysfs: Increase legacy channel support to 12
Dan Williams <dan.j.williams@intel.com>
cxl/region: Fix missing probe failure
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
Andrew Cooper <andrew.cooper3@citrix.com>
x86/fpu/xstate: Fix XSTATE_WARN_ON() to emit relevant diagnostics
Jason A. Donenfeld <Jason@zx2c4.com>
random: use rejection sampling for uniform bounded random integers
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm850-samsung-w737: correct I2C12 pins drive strength
Jason A. Donenfeld <Jason@zx2c4.com>
ARM: ux500: do not directly dereference __iomem
Boris Burkov <boris@bur.io>
btrfs: fix resolving backrefs for inline extent followed by prealloc
void0red <void0red@gmail.com>
btrfs: fix extent map use-after-free when handling missing device in read_one_chunk
Josef Bacik <josef@toxicpanda.com>
btrfs: fix uninitialized parent in insert_state
Evan Quan <evan.quan@amd.com>
drm/amd/pm: correct SMU13.0.0 pstate profiling clock settings
Evan Quan <evan.quan@amd.com>
drm/amd/pm: update SMU13.0.0 reported maximum shader clock
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp-combo: fix out-of-bounds clock access
Wenchao Chen <wenchao.chen@unisoc.com>
mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
Johan Hovold <johan+linaro@kernel.org>
arm64: dts: qcom: sc8280xp: fix UFS reference clocks
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength
Alexander Antonov <alexander.antonov@linux.intel.com>
perf/x86/intel/uncore: Clear attr_update properly
Alexander Antonov <alexander.antonov@linux.intel.com>
perf/x86/intel/uncore: Disable I/O stacks to PMU mapping on ICX-D
Bixuan Cui <cuibixuan@linux.alibaba.com>
jbd2: use the correct print format
Steven Rostedt <rostedt@goodmis.org>
ktest.pl minconfig: Unset configs instead of just removing them
Steven Rostedt <rostedt@goodmis.org>
kest.pl: Fix grub2 menu handling for rebooting
Manivannan Sadhasivam <mani@kernel.org>
soc: qcom: Select REMAP_MMIO for ICC_BWMON driver
Manivannan Sadhasivam <mani@kernel.org>
soc: qcom: Select REMAP_MMIO for LLCC driver
Masami Hiramatsu (Google) <mhiramat@kernel.org>
arm64: Prohibit instrumentation on arch_stack_walk()
Johan Hovold <johan+linaro@kernel.org>
arm64: dts: qcom: sc8280xp: fix UFS DMA coherency
Fan Ni <fan.ni@samsung.com>
cxl/region: Fix memdev reuse check
Jason A. Donenfeld <Jason@zx2c4.com>
media: stv0288: use explicitly signed char
Tim Huang <tim.huang@amd.com>
drm/amdgpu: skip mes self test after s0i3 resume for MES IP v11.0
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: skip MES for S0ix as well since it's part of GFX
-------------
Diffstat:
Documentation/admin-guide/kernel-parameters.txt | 27 +-
Documentation/filesystems/mount_api.rst | 1 +
Makefile | 4 +-
arch/arm/nwfpe/Makefile | 6 +
arch/arm64/boot/dts/mediatek/mt8195-demo.dts | 4 +-
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 10 +-
arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 5 +-
.../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 6 +-
arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts | 6 +-
arch/arm64/include/asm/efi.h | 3 +
arch/arm64/kernel/efi-rt-wrapper.S | 13 +-
arch/arm64/kernel/efi.c | 27 ++
arch/arm64/kernel/stacktrace.c | 10 +-
arch/parisc/include/asm/pgtable.h | 4 +-
arch/parisc/kernel/firmware.c | 24 +-
arch/parisc/kernel/kgdb.c | 20 --
arch/parisc/kernel/pdc_cons.c | 16 +-
arch/parisc/kernel/vdso32/Makefile | 4 +-
arch/parisc/kernel/vdso64/Makefile | 4 +-
arch/powerpc/include/asm/ftrace.h | 12 -
arch/riscv/Kconfig | 2 +-
arch/riscv/include/asm/kexec.h | 5 +
arch/riscv/include/asm/mmu.h | 2 +
arch/riscv/include/asm/pgtable.h | 2 +-
arch/riscv/include/asm/tlbflush.h | 18 +
arch/riscv/kernel/elf_kexec.c | 14 +
arch/riscv/kernel/stacktrace.c | 2 +-
arch/riscv/mm/context.c | 10 +
arch/riscv/mm/tlbflush.c | 28 +-
arch/um/drivers/virt-pci.c | 9 +-
arch/x86/events/intel/uncore.h | 1 +
arch/x86/events/intel/uncore_snbep.c | 22 +-
arch/x86/kernel/cpu/mce/amd.c | 33 +-
arch/x86/kernel/cpu/microcode/intel.c | 8 +-
arch/x86/kernel/fpu/xstate.c | 12 +-
arch/x86/kernel/ftrace.c | 2 +
arch/x86/kernel/kprobes/core.c | 10 +-
arch/x86/kernel/kprobes/opt.c | 28 +-
arch/x86/kvm/lapic.c | 5 +-
arch/x86/kvm/vmx/nested.c | 47 ++-
arch/x86/kvm/vmx/sgx.c | 4 +-
arch/xtensa/kernel/xtensa_ksyms.c | 2 +
arch/xtensa/lib/Makefile | 2 +-
arch/xtensa/lib/umulsidi3.S | 230 +++++++++++++
block/mq-deadline.c | 83 ++++-
drivers/acpi/video_detect.c | 52 ++-
drivers/ata/ahci.h | 245 +++++++-------
drivers/base/dd.c | 6 +-
drivers/bus/mhi/host/pm.c | 3 +-
drivers/char/ipmi/ipmi_msghandler.c | 4 +-
drivers/char/ipmi/ipmi_si_intf.c | 27 +-
drivers/char/random.c | 38 +++
drivers/cpufreq/cpufreq.c | 2 +-
drivers/crypto/Kconfig | 4 +-
drivers/crypto/ccp/sp-pci.c | 11 +-
drivers/crypto/hisilicon/Kconfig | 2 +-
drivers/crypto/n2_core.c | 6 +
drivers/cxl/core/region.c | 5 +-
drivers/devfreq/devfreq.c | 6 +-
drivers/devfreq/governor_userspace.c | 12 +-
drivers/edac/edac_mc_sysfs.c | 24 ++
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 5 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 13 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 +-
drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 3 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c | 2 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c | 2 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.c | 2 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.c | 2 +-
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.c | 2 +-
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 +
.../pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_0.h | 2 +-
drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h | 1 +
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 2 +
.../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 111 +++++-
.../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 19 +-
drivers/gpu/drm/drm_connector.c | 3 +
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 7 +-
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 23 +-
drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 1 +
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 4 +-
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 59 +++-
drivers/gpu/drm/i915/gem/i915_gem_mman.c | 2 +-
drivers/gpu/drm/i915/gem/i915_gem_object.c | 3 +
drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 10 +-
drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c | 18 +-
drivers/gpu/drm/i915/gt/intel_migrate.c | 16 +-
drivers/gpu/drm/i915/i915_gem_evict.c | 37 +-
drivers/gpu/drm/i915/i915_gem_evict.h | 4 +-
drivers/gpu/drm/i915/i915_vma.c | 2 +-
drivers/gpu/drm/i915/selftests/i915_gem_evict.c | 4 +-
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 6 +-
drivers/gpu/drm/mgag200/mgag200_g200se.c | 3 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +-
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-input.c | 2 +
drivers/iommu/amd/init.c | 86 +++--
drivers/md/dm-cache-metadata.c | 54 ++-
drivers/md/dm-cache-target.c | 11 +-
drivers/md/dm-clone-target.c | 1 +
drivers/md/dm-integrity.c | 2 +
drivers/md/dm-thin-metadata.c | 60 +++-
drivers/md/dm-thin.c | 18 +-
drivers/md/md-bitmap.c | 20 +-
drivers/media/dvb-core/dmxdev.c | 8 +
drivers/media/dvb-core/dvbdev.c | 1 +
drivers/media/dvb-frontends/stv0288.c | 5 +-
.../media/platform/samsung/s5p-mfc/s5p_mfc_ctrl.c | 4 +-
.../media/platform/samsung/s5p-mfc/s5p_mfc_enc.c | 12 +-
.../platform/samsung/s5p-mfc/s5p_mfc_opr_v6.c | 14 +-
drivers/mmc/host/sdhci-sprd.c | 16 +-
drivers/mtd/spi-nor/core.c | 2 +
drivers/mtd/spi-nor/gigadevice.c | 24 +-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
drivers/net/wireless/microchip/wilc1000/sdio.c | 1 +
drivers/of/kexec.c | 10 +-
drivers/parisc/led.c | 3 +
drivers/pci/doe.c | 20 +-
drivers/pci/pci-sysfs.c | 13 +-
drivers/pci/pci.c | 2 +
drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 47 ++-
drivers/platform/x86/ideapad-laptop.c | 371 ++++++++++++++++-----
.../x86/intel/uncore-frequency/uncore-frequency.c | 1 +
drivers/platform/x86/thinkpad_acpi.c | 1 +
drivers/platform/x86/x86-android-tablets.c | 285 +++++++++++++++-
drivers/remoteproc/imx_dsp_rproc.c | 12 +-
drivers/remoteproc/imx_rproc.c | 4 +-
drivers/remoteproc/remoteproc_core.c | 9 +-
drivers/rtc/rtc-ds1347.c | 2 +-
drivers/soc/qcom/Kconfig | 2 +
drivers/soc/ux500/ux500-soc-id.c | 10 +-
drivers/staging/media/ipu3/ipu3-v4l2.c | 57 ++--
drivers/staging/media/tegra-video/csi.c | 4 +-
drivers/staging/media/tegra-video/csi.h | 2 +-
fs/btrfs/backref.c | 4 +
fs/btrfs/extent-io-tree.c | 2 +-
fs/btrfs/volumes.c | 3 +-
fs/cifs/cifsfs.c | 8 +-
fs/cifs/connect.c | 16 +-
fs/dlm/lowcomms.c | 9 +-
fs/ext2/dir.c | 2 +-
fs/ext4/ext4.h | 9 +-
fs/ext4/extents.c | 8 +
fs/ext4/extents_status.c | 3 +-
fs/ext4/fast_commit.c | 171 +++++-----
fs/ext4/fast_commit.h | 3 +-
fs/ext4/indirect.c | 9 +-
fs/ext4/inode.c | 48 ++-
fs/ext4/ioctl.c | 24 +-
fs/ext4/namei.c | 47 +--
fs/ext4/orphan.c | 2 +-
fs/ext4/resize.c | 32 +-
fs/ext4/super.c | 42 ++-
fs/ext4/verity.c | 2 +-
fs/ext4/xattr.c | 19 +-
fs/fs_parser.c | 3 +-
fs/mbcache.c | 14 +-
fs/quota/dquot.c | 2 +
include/linux/bpf_verifier.h | 2 +-
include/linux/devfreq.h | 7 +-
include/linux/fs_parser.h | 1 +
include/linux/mbcache.h | 9 +-
include/linux/prandom.h | 18 +-
include/linux/random.h | 65 ++++
include/net/mptcp.h | 12 +-
include/trace/events/ext4.h | 7 +-
include/trace/events/jbd2.h | 44 +--
kernel/bpf/core.c | 5 +-
kernel/events/core.c | 6 +-
kernel/trace/Kconfig | 2 +
kernel/trace/trace.c | 38 ++-
kernel/trace/trace.h | 27 +-
kernel/trace/trace_eprobe.c | 3 +
kernel/trace/trace_events_hist.c | 11 +-
kernel/trace/trace_events_synth.c | 2 +-
kernel/trace/trace_probe.c | 2 +-
lib/Kconfig.debug | 1 +
mm/hugetlb.c | 333 ++++++++----------
net/ipv4/syncookies.c | 7 +-
net/mptcp/pm_userspace.c | 4 +
net/mptcp/subflow.c | 61 +++-
security/device_cgroup.c | 33 +-
security/integrity/ima/Kconfig | 2 +-
security/integrity/ima/ima_main.c | 7 +-
security/integrity/ima/ima_template.c | 5 +-
security/integrity/platform_certs/load_uefi.c | 1 +
sound/pci/hda/patch_cs8409.c | 2 +-
sound/pci/hda/patch_realtek.c | 50 +++
sound/soc/jz4740/jz4740-i2s.c | 39 ++-
sound/usb/card.h | 1 +
sound/usb/endpoint.c | 16 +-
sound/usb/endpoint.h | 3 +-
sound/usb/implicit.c | 6 +-
sound/usb/implicit.h | 2 +-
sound/usb/pcm.c | 36 +-
sound/usb/pcm.h | 2 +
sound/usb/quirks.c | 2 +
sound/usb/usbaudio.h | 4 +
tools/testing/ktest/ktest.pl | 23 +-
tools/testing/selftests/lib.mk | 5 +
200 files changed, 3052 insertions(+), 1144 deletions(-)
^ permalink raw reply [relevance 1%]
* [PATCH v10 05/13] kbuild: remove MODULE_LICENSE/AUTHOR/DESCRIPTION in non-modules
@ 2022-12-05 16:31 1% ` Nick Alcock
0 siblings, 0 replies; 200+ results
From: Nick Alcock @ 2022-12-05 16:31 UTC (permalink / raw)
To: mcgrof, masahiroy
Cc: linux-modules, linux-trace-kernel, linux-kernel, arnd, akpm,
eugene.loh, kris.van.hees
Since commit 8b41fc4454e ("kbuild: create modules.builtin without
Makefile.modbuiltin or tristate.conf"), MODULE_LICENSE declarations in
non-modules will cause modprobe to misidentify their containing object
file as a module when it is not, which might cause it to spuriously fail
when trying to load something that is built in to the kernel. They
also cause misconstruction of modules.builtin.objs, leading to incorrect
output in kallmodsyms (notating things as being in modules when they
actually cannot be built as a module at all).
Automatically identified with the new tristate checker, and purged with
sed and a subsequent make allmodconfig to double-check.
Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
---
Notes:
v10: new.
arch/x86/crypto/blake2s-glue.c | 1 -
arch/x86/mm/debug_pagetables.c | 3 ---
crypto/asymmetric_keys/asymmetric_type.c | 1 -
drivers/accessibility/braille/braille_console.c | 4 ----
drivers/amba/tegra-ahb.c | 3 ---
drivers/android/binder.c | 1 -
drivers/bus/arm-cci.c | 2 --
drivers/bus/arm-integrator-lm.c | 3 ---
drivers/bus/bt1-apb.c | 3 ---
drivers/bus/bt1-axi.c | 3 ---
drivers/bus/imx-weim.c | 3 ---
drivers/bus/intel-ixp4xx-eb.c | 3 ---
drivers/bus/qcom-ebi2.c | 3 ---
drivers/bus/qcom-ssc-block-bus.c | 3 ---
drivers/bus/simple-pm-bus.c | 3 ---
drivers/clk/bcm/clk-bcm2835-aux.c | 3 ---
drivers/clk/bcm/clk-bcm2835.c | 3 ---
drivers/clk/clk-bm1880.c | 3 ---
drivers/clk/clk-fixed-mmio.c | 3 ---
drivers/clk/clk-fsl-sai.c | 3 ---
drivers/clk/hisilicon/clk-hi3559a.c | 2 --
drivers/clk/microchip/clk-mpfs-ccc.c | 3 ---
drivers/clk/microchip/clk-mpfs.c | 5 -----
drivers/clk/renesas/rcar-usb2-clock-sel.c | 2 --
drivers/clk/renesas/renesas-cpg-mssr.c | 2 --
drivers/clk/renesas/rzg2l-cpg.c | 2 --
drivers/clocksource/em_sti.c | 3 ---
drivers/clocksource/sh_cmt.c | 3 ---
drivers/clocksource/sh_mtu2.c | 3 ---
drivers/clocksource/sh_tmu.c | 3 ---
drivers/clocksource/timer-stm32-lp.c | 2 --
drivers/clocksource/timer-tegra186.c | 3 ---
drivers/clocksource/timer-ti-dm.c | 3 ---
drivers/cpufreq/freq_table.c | 3 ---
drivers/cpufreq/intel_pstate.c | 3 ---
drivers/cpufreq/tegra124-cpufreq.c | 3 ---
drivers/dma-buf/heaps/cma_heap.c | 2 --
drivers/dma-buf/heaps/system_heap.c | 1 -
drivers/dma-buf/udmabuf.c | 2 --
drivers/dma/ep93xx_dma.c | 3 ---
drivers/dma/ipu/ipu_idmac.c | 3 ---
drivers/dma/mv_xor_v2.c | 2 --
drivers/dma/s3c24xx-dma.c | 3 ---
drivers/dma/sh/shdma-base.c | 3 ---
drivers/dma/stm32-dmamux.c | 4 ----
drivers/dma/stm32-mdma.c | 4 ----
drivers/edac/altera_edac.c | 3 ---
drivers/firmware/broadcom/bcm47xx_nvram.c | 1 -
drivers/firmware/imx/imx-scu.c | 3 ---
drivers/firmware/imx/scu-pd.c | 3 ---
drivers/gpio/gpio-aspeed-sgpio.c | 2 --
drivers/gpio/gpio-imx-scu.c | 3 ---
drivers/gpio/gpio-mxs.c | 6 ------
drivers/gpio/gpio-rda.c | 3 ---
drivers/gpu/drm/drm_mipi_dsi.c | 3 ---
drivers/hwspinlock/hwspinlock_core.c | 3 ---
drivers/interconnect/core.c | 3 ---
drivers/iommu/sun50i-iommu.c | 4 ----
drivers/irqchip/irq-al-fic.c | 3 ---
drivers/irqchip/irq-ls-scfg-msi.c | 3 ---
drivers/irqchip/irq-mbigen.c | 4 ----
drivers/irqchip/irq-mchp-eic.c | 3 ---
drivers/irqchip/irq-mvebu-pic.c | 3 ---
drivers/irqchip/irq-renesas-intc-irqpin.c | 3 ---
drivers/irqchip/irq-renesas-irqc.c | 3 ---
drivers/irqchip/irq-renesas-rza1.c | 3 ---
drivers/irqchip/irq-renesas-rzg2l.c | 3 ---
drivers/irqchip/irq-sl28cpld.c | 3 ---
drivers/irqchip/irq-ti-sci-inta.c | 3 ---
drivers/irqchip/irq-ti-sci-intr.c | 3 ---
drivers/leds/leds-asic3.c | 3 ---
drivers/mailbox/rockchip-mailbox.c | 4 ----
drivers/mailbox/zynqmp-ipi-mailbox.c | 3 ---
drivers/memory/bt1-l2-ctl.c | 3 ---
drivers/memory/da8xx-ddrctl.c | 3 ---
drivers/memory/fsl_ifc.c | 3 ---
drivers/memory/mvebu-devbus.c | 3 ---
drivers/memory/tegra/mc.c | 3 ---
drivers/memory/tegra/tegra186-emc.c | 3 ---
drivers/mfd/88pm860x-core.c | 3 ---
drivers/mfd/altera-sysmgr.c | 3 ---
drivers/mfd/bcm2835-pm.c | 3 ---
drivers/mfd/da903x.c | 4 ----
drivers/mfd/da9052-core.c | 3 ---
drivers/mfd/da9052-i2c.c | 3 ---
drivers/mfd/da9052-spi.c | 3 ---
drivers/mfd/da9055-core.c | 3 ---
drivers/mfd/da9055-i2c.c | 3 ---
drivers/mfd/ezx-pcap.c | 3 ---
drivers/mfd/intel_soc_pmic_crc.c | 4 ----
drivers/mfd/lp8788.c | 3 ---
drivers/mfd/omap-usb-host.c | 4 ----
drivers/mfd/omap-usb-tll.c | 4 ----
drivers/mfd/palmas.c | 3 ---
drivers/mfd/stmpe-i2c.c | 3 ---
drivers/mfd/stmpe-spi.c | 3 ---
drivers/mfd/tc3589x.c | 3 ---
drivers/mfd/tps6586x.c | 3 ---
drivers/mfd/twl4030-audio.c | 3 ---
drivers/mfd/twl6040.c | 4 ----
drivers/mtd/parsers/bcm63xxpart.c | 6 ------
drivers/nvmem/core.c | 4 ----
drivers/nvmem/zynqmp_nvmem.c | 3 ---
drivers/pci/controller/dwc/pcie-histb.c | 2 --
drivers/pci/controller/mobiveil/pcie-mobiveil-plat.c | 3 ---
drivers/pci/controller/pci-tegra.c | 1 -
drivers/pci/controller/pci-versatile.c | 2 --
drivers/pci/controller/pcie-hisi-error.c | 2 --
drivers/pci/controller/pcie-microchip-host.c | 3 ---
drivers/pci/endpoint/pci-ep-cfs.c | 3 ---
drivers/pci/endpoint/pci-epc-core.c | 3 ---
drivers/pci/endpoint/pci-epc-mem.c | 3 ---
drivers/pci/endpoint/pci-epf-core.c | 3 ---
drivers/pci/hotplug/acpiphp_core.c | 3 ---
drivers/pci/hotplug/shpchp_core.c | 3 ---
drivers/perf/apple_m1_cpu_pmu.c | 1 -
drivers/phy/intel/phy-intel-lgm-combo.c | 2 --
drivers/pinctrl/actions/pinctrl-s500.c | 4 ----
drivers/pinctrl/actions/pinctrl-s700.c | 3 ---
drivers/pinctrl/actions/pinctrl-s900.c | 4 ----
drivers/pinctrl/bcm/pinctrl-ns.c | 2 --
drivers/pinctrl/mediatek/pinctrl-mt8188.c | 2 --
drivers/pinctrl/mediatek/pinctrl-mt8192.c | 2 --
drivers/pinctrl/mediatek/pinctrl-mt8365.c | 3 ---
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 4 ----
drivers/pinctrl/pinctrl-amd.c | 3 ---
drivers/pinctrl/renesas/pinctrl-rza1.c | 3 ---
drivers/pinctrl/renesas/pinctrl-rza2.c | 3 ---
drivers/pinctrl/renesas/pinctrl-rzg2l.c | 3 ---
drivers/pinctrl/renesas/pinctrl-rzn1.c | 3 ---
drivers/pinctrl/renesas/pinctrl-rzv2m.c | 3 ---
drivers/power/reset/as3722-poweroff.c | 3 ---
drivers/power/reset/gpio-poweroff.c | 3 ---
drivers/power/reset/gpio-restart.c | 3 ---
drivers/power/reset/keystone-reset.c | 3 ---
drivers/power/reset/ltc2952-poweroff.c | 3 ---
drivers/power/reset/mt6323-poweroff.c | 3 ---
drivers/power/reset/regulator-poweroff.c | 3 ---
drivers/power/reset/restart-poweroff.c | 3 ---
drivers/power/reset/tps65086-restart.c | 3 ---
drivers/power/supply/power_supply_core.c | 6 ------
drivers/power/supply/wm97xx_battery.c | 3 ---
drivers/powercap/powercap_sys.c | 3 ---
drivers/regulator/stm32-pwr.c | 3 ---
drivers/remoteproc/remoteproc_core.c | 2 --
drivers/reset/reset-axs10x.c | 3 ---
drivers/reset/reset-hsdk.c | 3 ---
drivers/reset/reset-lantiq.c | 3 ---
drivers/reset/reset-microchip-sparx5.c | 3 ---
drivers/reset/reset-mpfs.c | 3 ---
drivers/soc/apple/apple-pmgr-pwrstate.c | 3 ---
drivers/soc/bcm/bcm2835-power.c | 3 ---
drivers/soc/bcm/raspberrypi-power.c | 4 ----
drivers/soc/fujitsu/a64fx-diag.c | 3 ---
drivers/soc/sunxi/sunxi_sram.c | 3 ---
drivers/soc/tegra/cbb/tegra194-cbb.c | 3 ---
drivers/soc/tegra/cbb/tegra234-cbb.c | 2 --
drivers/tty/n_null.c | 3 ---
drivers/tty/serial/imx_earlycon.c | 3 ---
drivers/tty/serial/rda-uart.c | 3 ---
drivers/video/console/vgacon.c | 1 -
drivers/video/fbdev/asiliantfb.c | 1 -
drivers/video/fbdev/gbefb.c | 1 -
drivers/video/fbdev/imsttfb.c | 1 -
drivers/video/fbdev/mmp/hw/mmp_ctrl.c | 3 ---
drivers/video/fbdev/mmp/panel/tpo_tj032md01bw.c | 3 ---
drivers/video/fbdev/vesafb.c | 1 -
drivers/video/fbdev/wm8505fb.c | 3 ---
drivers/video/fbdev/wmt_ge_rops.c | 4 ----
drivers/xen/grant-dma-ops.c | 3 ---
drivers/xen/xenbus/xenbus_probe.c | 1 -
fs/binfmt_elf.c | 1 -
fs/nfs_common/nfs_ssc.c | 1 -
fs/unicode/utf8-core.c | 1 -
kernel/dma/map_benchmark.c | 3 ---
kernel/events/hw_breakpoint_test.c | 2 --
kernel/trace/rv/reactor_panic.c | 3 ---
kernel/trace/rv/reactor_printk.c | 3 ---
kernel/watch_queue.c | 3 ---
lib/btree.c | 3 ---
lib/crypto/blake2s-generic.c | 3 ---
lib/crypto/blake2s.c | 3 ---
lib/glob.c | 2 --
lib/packing.c | 2 --
lib/pldmfw/pldmfw.c | 3 ---
lib/test_fprobe.c | 1 -
mm/zpool.c | 3 ---
mm/zswap.c | 3 ---
net/mctp/af_mctp.c | 3 ---
189 files changed, 539 deletions(-)
diff --git a/arch/x86/crypto/blake2s-glue.c b/arch/x86/crypto/blake2s-glue.c
index aaba21230528..0df9ec15643a 100644
--- a/arch/x86/crypto/blake2s-glue.c
+++ b/arch/x86/crypto/blake2s-glue.c
@@ -74,4 +74,3 @@ static int __init blake2s_mod_init(void)
module_init(blake2s_mod_init);
-MODULE_LICENSE("GPL v2");
diff --git a/arch/x86/mm/debug_pagetables.c b/arch/x86/mm/debug_pagetables.c
index 092ea436c7e6..ad25ad29aa10 100644
--- a/arch/x86/mm/debug_pagetables.c
+++ b/arch/x86/mm/debug_pagetables.c
@@ -71,6 +71,3 @@ static void __exit pt_dump_debug_exit(void)
module_init(pt_dump_debug_init);
module_exit(pt_dump_debug_exit);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Arjan van de Ven <arjan@linux.intel.com>");
-MODULE_DESCRIPTION("Kernel debugging helper that dumps pagetables");
diff --git a/crypto/asymmetric_keys/asymmetric_type.c b/crypto/asymmetric_keys/asymmetric_type.c
index 41a2f0eb4ce4..a5da8ccd353e 100644
--- a/crypto/asymmetric_keys/asymmetric_type.c
+++ b/crypto/asymmetric_keys/asymmetric_type.c
@@ -17,7 +17,6 @@
#include <keys/user-type.h>
#include "asymmetric_keys.h"
-MODULE_LICENSE("GPL");
const char *const key_being_used_for[NR__KEY_BEING_USED_FOR] = {
[VERIFYING_MODULE_SIGNATURE] = "mod sig",
diff --git a/drivers/accessibility/braille/braille_console.c b/drivers/accessibility/braille/braille_console.c
index c4d54a5326b1..4ea6893659af 100644
--- a/drivers/accessibility/braille/braille_console.c
+++ b/drivers/accessibility/braille/braille_console.c
@@ -22,10 +22,6 @@
#include <linux/kbd_kern.h>
#include <linux/input.h>
-MODULE_AUTHOR("samuel.thibault@ens-lyon.org");
-MODULE_DESCRIPTION("braille device");
-MODULE_LICENSE("GPL");
-
/*
* Braille device support part.
*/
diff --git a/drivers/amba/tegra-ahb.c b/drivers/amba/tegra-ahb.c
index 0b2c20fddb7c..084ac10c4286 100644
--- a/drivers/amba/tegra-ahb.c
+++ b/drivers/amba/tegra-ahb.c
@@ -283,7 +283,4 @@ static struct platform_driver tegra_ahb_driver = {
};
module_platform_driver(tegra_ahb_driver);
-MODULE_AUTHOR("Hiroshi DOYU <hdoyu@nvidia.com>");
-MODULE_DESCRIPTION("Tegra AHB driver");
-MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:" DRV_NAME);
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 880224ec6abb..e36164108da6 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -6597,4 +6597,3 @@ device_initcall(binder_init);
#define CREATE_TRACE_POINTS
#include "binder_trace.h"
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c
index b8184a903583..6702bee4ca5c 100644
--- a/drivers/bus/arm-cci.c
+++ b/drivers/bus/arm-cci.c
@@ -583,5 +583,3 @@ EXPORT_SYMBOL_GPL(cci_probed);
early_initcall(cci_init);
core_initcall(cci_platform_init);
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("ARM CCI support");
diff --git a/drivers/bus/arm-integrator-lm.c b/drivers/bus/arm-integrator-lm.c
index 2344d560b144..61a649acdfef 100644
--- a/drivers/bus/arm-integrator-lm.c
+++ b/drivers/bus/arm-integrator-lm.c
@@ -124,6 +124,3 @@ static struct platform_driver integrator_ap_lm_driver = {
},
};
module_platform_driver(integrator_ap_lm_driver);
-MODULE_AUTHOR("Linus Walleij <linus.walleij@linaro.org>");
-MODULE_DESCRIPTION("Integrator AP Logical Module driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/bus/bt1-apb.c b/drivers/bus/bt1-apb.c
index 63b1b4a76671..1d4e509b195b 100644
--- a/drivers/bus/bt1-apb.c
+++ b/drivers/bus/bt1-apb.c
@@ -414,6 +414,3 @@ static struct platform_driver bt1_apb_driver = {
};
module_platform_driver(bt1_apb_driver);
-MODULE_AUTHOR("Serge Semin <Sergey.Semin@baikalelectronics.ru>");
-MODULE_DESCRIPTION("Baikal-T1 APB-bus driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/bus/bt1-axi.c b/drivers/bus/bt1-axi.c
index 70e49a6e5374..9b4461ec8084 100644
--- a/drivers/bus/bt1-axi.c
+++ b/drivers/bus/bt1-axi.c
@@ -307,6 +307,3 @@ static struct platform_driver bt1_axi_driver = {
};
module_platform_driver(bt1_axi_driver);
-MODULE_AUTHOR("Serge Semin <Sergey.Semin@baikalelectronics.ru>");
-MODULE_DESCRIPTION("Baikal-T1 AXI-bus driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/bus/imx-weim.c b/drivers/bus/imx-weim.c
index 828c66bbaa67..b8519526dd24 100644
--- a/drivers/bus/imx-weim.c
+++ b/drivers/bus/imx-weim.c
@@ -403,6 +403,3 @@ static void __exit weim_exit(void)
}
module_exit(weim_exit);
-MODULE_AUTHOR("Freescale Semiconductor Inc.");
-MODULE_DESCRIPTION("i.MX EIM Controller Driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/bus/intel-ixp4xx-eb.c b/drivers/bus/intel-ixp4xx-eb.c
index a4388440aca7..6e02369aedeb 100644
--- a/drivers/bus/intel-ixp4xx-eb.c
+++ b/drivers/bus/intel-ixp4xx-eb.c
@@ -424,6 +424,3 @@ static struct platform_driver ixp4xx_exp_driver = {
},
};
module_platform_driver(ixp4xx_exp_driver);
-MODULE_AUTHOR("Linus Walleij <linus.walleij@linaro.org>");
-MODULE_DESCRIPTION("Intel IXP4xx external bus driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/bus/qcom-ebi2.c b/drivers/bus/qcom-ebi2.c
index 663c82749222..5846c2ffe99c 100644
--- a/drivers/bus/qcom-ebi2.c
+++ b/drivers/bus/qcom-ebi2.c
@@ -401,6 +401,3 @@ static struct platform_driver qcom_ebi2_driver = {
},
};
module_platform_driver(qcom_ebi2_driver);
-MODULE_AUTHOR("Linus Walleij <linus.walleij@linaro.org>");
-MODULE_DESCRIPTION("Qualcomm EBI2 driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/bus/qcom-ssc-block-bus.c b/drivers/bus/qcom-ssc-block-bus.c
index eedeb29a5ff3..040f3432b989 100644
--- a/drivers/bus/qcom-ssc-block-bus.c
+++ b/drivers/bus/qcom-ssc-block-bus.c
@@ -384,6 +384,3 @@ static struct platform_driver qcom_ssc_block_bus_driver = {
module_platform_driver(qcom_ssc_block_bus_driver);
-MODULE_DESCRIPTION("A driver for handling the init sequence needed for accessing the SSC block on (some) qcom SoCs over AHB");
-MODULE_AUTHOR("Michael Srba <Michael.Srba@seznam.cz>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/bus/simple-pm-bus.c b/drivers/bus/simple-pm-bus.c
index 6b8d6257ed8a..22fe6478e7b5 100644
--- a/drivers/bus/simple-pm-bus.c
+++ b/drivers/bus/simple-pm-bus.c
@@ -90,6 +90,3 @@ static struct platform_driver simple_pm_bus_driver = {
module_platform_driver(simple_pm_bus_driver);
-MODULE_DESCRIPTION("Simple Power-Managed Bus Driver");
-MODULE_AUTHOR("Geert Uytterhoeven <geert+renesas@glider.be>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/bcm/clk-bcm2835-aux.c b/drivers/clk/bcm/clk-bcm2835-aux.c
index 290a2846a86b..9aeeee6096a8 100644
--- a/drivers/clk/bcm/clk-bcm2835-aux.c
+++ b/drivers/clk/bcm/clk-bcm2835-aux.c
@@ -67,6 +67,3 @@ static struct platform_driver bcm2835_aux_clk_driver = {
};
builtin_platform_driver(bcm2835_aux_clk_driver);
-MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
-MODULE_DESCRIPTION("BCM2835 auxiliary peripheral clock driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
index e74fe6219d14..eec7146b12a0 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
@@ -2348,6 +2348,3 @@ static struct platform_driver bcm2835_clk_driver = {
builtin_platform_driver(bcm2835_clk_driver);
-MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
-MODULE_DESCRIPTION("BCM2835 clock driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/clk/clk-bm1880.c b/drivers/clk/clk-bm1880.c
index fad78a22218e..67aace6d4e2a 100644
--- a/drivers/clk/clk-bm1880.c
+++ b/drivers/clk/clk-bm1880.c
@@ -947,6 +947,3 @@ static struct platform_driver bm1880_clk_driver = {
};
module_platform_driver(bm1880_clk_driver);
-MODULE_AUTHOR("Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>");
-MODULE_DESCRIPTION("Clock driver for Bitmain BM1880 SoC");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/clk-fixed-mmio.c b/drivers/clk/clk-fixed-mmio.c
index 5225d17d6b3f..b4d51972357e 100644
--- a/drivers/clk/clk-fixed-mmio.c
+++ b/drivers/clk/clk-fixed-mmio.c
@@ -97,6 +97,3 @@ static struct platform_driver of_fixed_mmio_clk_driver = {
};
module_platform_driver(of_fixed_mmio_clk_driver);
-MODULE_AUTHOR("Jan Kotas <jank@cadence.com>");
-MODULE_DESCRIPTION("Memory Mapped IO Fixed clock driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/clk-fsl-sai.c b/drivers/clk/clk-fsl-sai.c
index 6238fcea0467..c2cb71d474d2 100644
--- a/drivers/clk/clk-fsl-sai.c
+++ b/drivers/clk/clk-fsl-sai.c
@@ -86,7 +86,4 @@ static struct platform_driver fsl_sai_clk_driver = {
};
module_platform_driver(fsl_sai_clk_driver);
-MODULE_DESCRIPTION("Freescale SAI bitclock-as-a-clock driver");
-MODULE_AUTHOR("Michael Walle <michael@walle.cc>");
-MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:fsl-sai-clk");
diff --git a/drivers/clk/hisilicon/clk-hi3559a.c b/drivers/clk/hisilicon/clk-hi3559a.c
index 9ea1a80acbe8..f56c837811ae 100644
--- a/drivers/clk/hisilicon/clk-hi3559a.c
+++ b/drivers/clk/hisilicon/clk-hi3559a.c
@@ -841,5 +841,3 @@ static void __exit hi3559av100_crg_exit(void)
module_exit(hi3559av100_crg_exit);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("HiSilicon Hi3559AV100 CRG Driver");
diff --git a/drivers/clk/microchip/clk-mpfs-ccc.c b/drivers/clk/microchip/clk-mpfs-ccc.c
index 7be028dced63..cce7d9689859 100644
--- a/drivers/clk/microchip/clk-mpfs-ccc.c
+++ b/drivers/clk/microchip/clk-mpfs-ccc.c
@@ -285,6 +285,3 @@ static void __exit clk_ccc_exit(void)
}
module_exit(clk_ccc_exit);
-MODULE_DESCRIPTION("Microchip PolarFire SoC Clock Conditioning Circuitry Driver");
-MODULE_AUTHOR("Conor Dooley <conor.dooley@microchip.com>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/clk/microchip/clk-mpfs.c b/drivers/clk/microchip/clk-mpfs.c
index 4f0a19db7ed7..1433e467cab9 100644
--- a/drivers/clk/microchip/clk-mpfs.c
+++ b/drivers/clk/microchip/clk-mpfs.c
@@ -509,8 +509,3 @@ static void __exit clk_mpfs_exit(void)
}
module_exit(clk_mpfs_exit);
-MODULE_DESCRIPTION("Microchip PolarFire SoC Clock Driver");
-MODULE_AUTHOR("Padmarao Begari <padmarao.begari@microchip.com>");
-MODULE_AUTHOR("Daire McNamara <daire.mcnamara@microchip.com>");
-MODULE_AUTHOR("Conor Dooley <conor.dooley@microchip.com>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/clk/renesas/rcar-usb2-clock-sel.c b/drivers/clk/renesas/rcar-usb2-clock-sel.c
index 684d8937965e..2968c9b1aaa5 100644
--- a/drivers/clk/renesas/rcar-usb2-clock-sel.c
+++ b/drivers/clk/renesas/rcar-usb2-clock-sel.c
@@ -219,5 +219,3 @@ static struct platform_driver rcar_usb2_clock_sel_driver = {
};
builtin_platform_driver(rcar_usb2_clock_sel_driver);
-MODULE_DESCRIPTION("Renesas R-Car USB2 clock selector Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/renesas/renesas-cpg-mssr.c b/drivers/clk/renesas/renesas-cpg-mssr.c
index 1a0cdf001b2f..a4f4f1fee9d3 100644
--- a/drivers/clk/renesas/renesas-cpg-mssr.c
+++ b/drivers/clk/renesas/renesas-cpg-mssr.c
@@ -1153,5 +1153,3 @@ void __init mssr_mod_reparent(struct mssr_mod_clk *mod_clks,
}
}
-MODULE_DESCRIPTION("Renesas CPG/MSSR Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/renesas/rzg2l-cpg.c b/drivers/clk/renesas/rzg2l-cpg.c
index 3ff6ecd61756..8f530972ccf7 100644
--- a/drivers/clk/renesas/rzg2l-cpg.c
+++ b/drivers/clk/renesas/rzg2l-cpg.c
@@ -1430,5 +1430,3 @@ static int __init rzg2l_cpg_init(void)
subsys_initcall(rzg2l_cpg_init);
-MODULE_DESCRIPTION("Renesas RZ/G2L CPG Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clocksource/em_sti.c b/drivers/clocksource/em_sti.c
index ab190dffb1ed..6eaa6620a330 100644
--- a/drivers/clocksource/em_sti.c
+++ b/drivers/clocksource/em_sti.c
@@ -366,6 +366,3 @@ static void __exit em_sti_exit(void)
subsys_initcall(em_sti_init);
module_exit(em_sti_exit);
-MODULE_AUTHOR("Magnus Damm");
-MODULE_DESCRIPTION("Renesas Emma Mobile STI Timer Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clocksource/sh_cmt.c b/drivers/clocksource/sh_cmt.c
index 64dcb082d4cf..cec602c91499 100644
--- a/drivers/clocksource/sh_cmt.c
+++ b/drivers/clocksource/sh_cmt.c
@@ -1155,6 +1155,3 @@ sh_early_platform_init("earlytimer", &sh_cmt_device_driver);
subsys_initcall(sh_cmt_init);
module_exit(sh_cmt_exit);
-MODULE_AUTHOR("Magnus Damm");
-MODULE_DESCRIPTION("SuperH CMT Timer Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clocksource/sh_mtu2.c b/drivers/clocksource/sh_mtu2.c
index 169a1fccc497..b71d634464c7 100644
--- a/drivers/clocksource/sh_mtu2.c
+++ b/drivers/clocksource/sh_mtu2.c
@@ -528,6 +528,3 @@ sh_early_platform_init("earlytimer", &sh_mtu2_device_driver);
subsys_initcall(sh_mtu2_init);
module_exit(sh_mtu2_exit);
-MODULE_AUTHOR("Magnus Damm");
-MODULE_DESCRIPTION("SuperH MTU2 Timer Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clocksource/sh_tmu.c b/drivers/clocksource/sh_tmu.c
index b00dec0655cb..b92f1d3f53e9 100644
--- a/drivers/clocksource/sh_tmu.c
+++ b/drivers/clocksource/sh_tmu.c
@@ -677,6 +677,3 @@ sh_early_platform_init("earlytimer", &sh_tmu_device_driver);
subsys_initcall(sh_tmu_init);
module_exit(sh_tmu_exit);
-MODULE_AUTHOR("Magnus Damm");
-MODULE_DESCRIPTION("SuperH TMU Timer Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clocksource/timer-stm32-lp.c b/drivers/clocksource/timer-stm32-lp.c
index db2841d0beb8..54ab3db7de55 100644
--- a/drivers/clocksource/timer-stm32-lp.c
+++ b/drivers/clocksource/timer-stm32-lp.c
@@ -217,5 +217,3 @@ static struct platform_driver stm32_clkevent_lp_driver = {
module_platform_driver(stm32_clkevent_lp_driver);
MODULE_ALIAS("platform:stm32-lptimer-timer");
-MODULE_DESCRIPTION("STMicroelectronics STM32 clockevent low power driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clocksource/timer-tegra186.c b/drivers/clocksource/timer-tegra186.c
index ea742889ee06..d87e2ed2c5bf 100644
--- a/drivers/clocksource/timer-tegra186.c
+++ b/drivers/clocksource/timer-tegra186.c
@@ -509,6 +509,3 @@ static struct platform_driver tegra186_wdt_driver = {
};
module_platform_driver(tegra186_wdt_driver);
-MODULE_AUTHOR("Thierry Reding <treding@nvidia.com>");
-MODULE_DESCRIPTION("NVIDIA Tegra186 timers driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/clocksource/timer-ti-dm.c b/drivers/clocksource/timer-ti-dm.c
index cad29ded3a48..85842520065f 100644
--- a/drivers/clocksource/timer-ti-dm.c
+++ b/drivers/clocksource/timer-ti-dm.c
@@ -1265,6 +1265,3 @@ static struct platform_driver omap_dm_timer_driver = {
module_platform_driver(omap_dm_timer_driver);
-MODULE_DESCRIPTION("OMAP Dual-Mode Timer Driver");
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Texas Instruments Inc");
diff --git a/drivers/cpufreq/freq_table.c b/drivers/cpufreq/freq_table.c
index 67e56cf638ef..c34d813e4687 100644
--- a/drivers/cpufreq/freq_table.c
+++ b/drivers/cpufreq/freq_table.c
@@ -365,6 +365,3 @@ int cpufreq_table_validate_and_sort(struct cpufreq_policy *policy)
return set_freq_table_sorted(policy);
}
-MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
-MODULE_DESCRIPTION("CPUfreq frequency table helpers");
-MODULE_LICENSE("GPL");
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 6ff73c30769f..518febe0c9f4 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -3526,6 +3526,3 @@ static int __init intel_pstate_setup(char *str)
}
early_param("intel_pstate", intel_pstate_setup);
-MODULE_AUTHOR("Dirk Brandewie <dirk.j.brandewie@intel.com>");
-MODULE_DESCRIPTION("'intel_pstate' - P state driver Intel Core processors");
-MODULE_LICENSE("GPL");
diff --git a/drivers/cpufreq/tegra124-cpufreq.c b/drivers/cpufreq/tegra124-cpufreq.c
index 7a1ea6fdcab6..d41292a87b14 100644
--- a/drivers/cpufreq/tegra124-cpufreq.c
+++ b/drivers/cpufreq/tegra124-cpufreq.c
@@ -219,6 +219,3 @@ static int __init tegra_cpufreq_init(void)
}
module_init(tegra_cpufreq_init);
-MODULE_AUTHOR("Tuomas Tynkkynen <ttynkkynen@nvidia.com>");
-MODULE_DESCRIPTION("cpufreq driver for NVIDIA Tegra124");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c
index 28fb04eccdd0..6d6b92743613 100644
--- a/drivers/dma-buf/heaps/cma_heap.c
+++ b/drivers/dma-buf/heaps/cma_heap.c
@@ -403,5 +403,3 @@ static int add_default_cma_heap(void)
return ret;
}
module_init(add_default_cma_heap);
-MODULE_DESCRIPTION("DMA-BUF CMA Heap");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c
index fcf836ba9c1f..1b8d1db6ce23 100644
--- a/drivers/dma-buf/heaps/system_heap.c
+++ b/drivers/dma-buf/heaps/system_heap.c
@@ -437,4 +437,3 @@ static int system_heap_create(void)
return 0;
}
module_init(system_heap_create);
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c
index 2bcdb935a3ac..f3421e56c140 100644
--- a/drivers/dma-buf/udmabuf.c
+++ b/drivers/dma-buf/udmabuf.c
@@ -398,5 +398,3 @@ static void __exit udmabuf_dev_exit(void)
module_init(udmabuf_dev_init)
module_exit(udmabuf_dev_exit)
-MODULE_AUTHOR("Gerd Hoffmann <kraxel@redhat.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/dma/ep93xx_dma.c b/drivers/dma/ep93xx_dma.c
index d19ea885c63e..26c38657a079 100644
--- a/drivers/dma/ep93xx_dma.c
+++ b/drivers/dma/ep93xx_dma.c
@@ -1429,6 +1429,3 @@ static int __init ep93xx_dma_module_init(void)
}
subsys_initcall(ep93xx_dma_module_init);
-MODULE_AUTHOR("Mika Westerberg <mika.westerberg@iki.fi>");
-MODULE_DESCRIPTION("EP93xx DMA driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/dma/ipu/ipu_idmac.c b/drivers/dma/ipu/ipu_idmac.c
index baab1ca9f621..82a22ee145b1 100644
--- a/drivers/dma/ipu/ipu_idmac.c
+++ b/drivers/dma/ipu/ipu_idmac.c
@@ -1796,7 +1796,4 @@ static int __init ipu_init(void)
}
subsys_initcall(ipu_init);
-MODULE_DESCRIPTION("IPU core driver");
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Guennadi Liakhovetski <lg@denx.de>");
MODULE_ALIAS("platform:ipu-core");
diff --git a/drivers/dma/mv_xor_v2.c b/drivers/dma/mv_xor_v2.c
index 113834e1167b..c10f9959b7dd 100644
--- a/drivers/dma/mv_xor_v2.c
+++ b/drivers/dma/mv_xor_v2.c
@@ -919,5 +919,3 @@ static struct platform_driver mv_xor_v2_driver = {
module_platform_driver(mv_xor_v2_driver);
-MODULE_DESCRIPTION("DMA engine driver for Marvell's Version 2 of XOR engine");
-MODULE_LICENSE("GPL");
diff --git a/drivers/dma/s3c24xx-dma.c b/drivers/dma/s3c24xx-dma.c
index a09eeb545f7d..aa10b57560be 100644
--- a/drivers/dma/s3c24xx-dma.c
+++ b/drivers/dma/s3c24xx-dma.c
@@ -1423,6 +1423,3 @@ bool s3c24xx_dma_filter(struct dma_chan *chan, void *param)
}
EXPORT_SYMBOL(s3c24xx_dma_filter);
-MODULE_DESCRIPTION("S3C24XX DMA Driver");
-MODULE_AUTHOR("Heiko Stuebner");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c
index 158e5e7defae..8c3080997f07 100644
--- a/drivers/dma/sh/shdma-base.c
+++ b/drivers/dma/sh/shdma-base.c
@@ -1047,6 +1047,3 @@ static void __exit shdma_exit(void)
}
module_exit(shdma_exit);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("SH-DMA driver base library");
-MODULE_AUTHOR("Guennadi Liakhovetski <g.liakhovetski@gmx.de>");
diff --git a/drivers/dma/stm32-dmamux.c b/drivers/dma/stm32-dmamux.c
index ee3cbbf51006..67dafaf85c4b 100644
--- a/drivers/dma/stm32-dmamux.c
+++ b/drivers/dma/stm32-dmamux.c
@@ -397,7 +397,3 @@ static int __init stm32_dmamux_init(void)
}
arch_initcall(stm32_dmamux_init);
-MODULE_DESCRIPTION("DMA Router driver for STM32 DMA MUX");
-MODULE_AUTHOR("M'boumba Cedric Madianga <cedric.madianga@gmail.com>");
-MODULE_AUTHOR("Pierre-Yves Mordret <pierre-yves.mordret@st.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/dma/stm32-mdma.c b/drivers/dma/stm32-mdma.c
index b9d4c843635f..559576f197e3 100644
--- a/drivers/dma/stm32-mdma.c
+++ b/drivers/dma/stm32-mdma.c
@@ -1813,7 +1813,3 @@ static int __init stm32_mdma_init(void)
subsys_initcall(stm32_mdma_init);
-MODULE_DESCRIPTION("Driver for STM32 MDMA controller");
-MODULE_AUTHOR("M'boumba Cedric Madianga <cedric.madianga@gmail.com>");
-MODULE_AUTHOR("Pierre-Yves Mordret <pierre-yves.mordret@st.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c
index e7e8e624a436..17e3f788bcf5 100644
--- a/drivers/edac/altera_edac.c
+++ b/drivers/edac/altera_edac.c
@@ -2226,6 +2226,3 @@ static struct platform_driver altr_edac_a10_driver = {
};
module_platform_driver(altr_edac_a10_driver);
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Thor Thayer");
-MODULE_DESCRIPTION("EDAC Driver for Altera Memories");
diff --git a/drivers/firmware/broadcom/bcm47xx_nvram.c b/drivers/firmware/broadcom/bcm47xx_nvram.c
index bd235833b687..2f70c8814b73 100644
--- a/drivers/firmware/broadcom/bcm47xx_nvram.c
+++ b/drivers/firmware/broadcom/bcm47xx_nvram.c
@@ -237,4 +237,3 @@ char *bcm47xx_nvram_get_contents(size_t *nvram_size)
}
EXPORT_SYMBOL(bcm47xx_nvram_get_contents);
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/firmware/imx/imx-scu.c b/drivers/firmware/imx/imx-scu.c
index dca79caccd01..93d57a3b64fa 100644
--- a/drivers/firmware/imx/imx-scu.c
+++ b/drivers/firmware/imx/imx-scu.c
@@ -356,6 +356,3 @@ static struct platform_driver imx_scu_driver = {
};
builtin_platform_driver(imx_scu_driver);
-MODULE_AUTHOR("Dong Aisheng <aisheng.dong@nxp.com>");
-MODULE_DESCRIPTION("IMX SCU firmware protocol driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/firmware/imx/scu-pd.c b/drivers/firmware/imx/scu-pd.c
index af3d057e6421..83f7274a3fe5 100644
--- a/drivers/firmware/imx/scu-pd.c
+++ b/drivers/firmware/imx/scu-pd.c
@@ -418,6 +418,3 @@ static struct platform_driver imx_sc_pd_driver = {
};
builtin_platform_driver(imx_sc_pd_driver);
-MODULE_AUTHOR("Dong Aisheng <aisheng.dong@nxp.com>");
-MODULE_DESCRIPTION("IMX SCU Power Domain driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/gpio/gpio-aspeed-sgpio.c b/drivers/gpio/gpio-aspeed-sgpio.c
index 454cefbeecf0..e3f656945704 100644
--- a/drivers/gpio/gpio-aspeed-sgpio.c
+++ b/drivers/gpio/gpio-aspeed-sgpio.c
@@ -608,5 +608,3 @@ static struct platform_driver aspeed_sgpio_driver = {
};
module_platform_driver_probe(aspeed_sgpio_driver, aspeed_sgpio_probe);
-MODULE_DESCRIPTION("Aspeed Serial GPIO Driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/gpio/gpio-imx-scu.c b/drivers/gpio/gpio-imx-scu.c
index 17be21b8f3b7..45ce2785d487 100644
--- a/drivers/gpio/gpio-imx-scu.c
+++ b/drivers/gpio/gpio-imx-scu.c
@@ -134,6 +134,3 @@ static int __init _imx_scu_gpio_init(void)
subsys_initcall_sync(_imx_scu_gpio_init);
-MODULE_AUTHOR("Shenwei Wang <shenwei.wang@nxp.com>");
-MODULE_DESCRIPTION("NXP GPIO over IMX SCU API");
-MODULE_LICENSE("GPL");
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c
index 7f59e5d936c2..cacee67c0f8f 100644
--- a/drivers/gpio/gpio-mxs.c
+++ b/drivers/gpio/gpio-mxs.c
@@ -359,9 +359,3 @@ static int __init mxs_gpio_init(void)
return platform_driver_register(&mxs_gpio_driver);
}
postcore_initcall(mxs_gpio_init);
-
-MODULE_AUTHOR("Freescale Semiconductor, "
- "Daniel Mack <danielncaiaq.de>, "
- "Juergen Beisert <kernel@pengutronix.de>");
-MODULE_DESCRIPTION("Freescale MXS GPIO");
-MODULE_LICENSE("GPL");
diff --git a/drivers/gpio/gpio-rda.c b/drivers/gpio/gpio-rda.c
index 62ba18b3a602..568ba1c3601f 100644
--- a/drivers/gpio/gpio-rda.c
+++ b/drivers/gpio/gpio-rda.c
@@ -284,6 +284,3 @@ static struct platform_driver rda_gpio_driver = {
module_platform_driver_probe(rda_gpio_driver, rda_gpio_probe);
-MODULE_DESCRIPTION("RDA Micro GPIO driver");
-MODULE_AUTHOR("Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
index 3ec02748d56f..d5c0725045c8 100644
--- a/drivers/gpu/drm/drm_mipi_dsi.c
+++ b/drivers/gpu/drm/drm_mipi_dsi.c
@@ -1292,6 +1292,3 @@ static int __init mipi_dsi_bus_init(void)
}
postcore_initcall(mipi_dsi_bus_init);
-MODULE_AUTHOR("Andrzej Hajda <a.hajda@samsung.com>");
-MODULE_DESCRIPTION("MIPI DSI Bus");
-MODULE_LICENSE("GPL and additional rights");
diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c
index fd5f5c5a5244..2f32e4706ca8 100644
--- a/drivers/hwspinlock/hwspinlock_core.c
+++ b/drivers/hwspinlock/hwspinlock_core.c
@@ -949,6 +949,3 @@ struct hwspinlock *devm_hwspin_lock_request_specific(struct device *dev,
}
EXPORT_SYMBOL_GPL(devm_hwspin_lock_request_specific);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Hardware spinlock interface");
-MODULE_AUTHOR("Ohad Ben-Cohen <ohad@wizery.com>");
diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c
index 25debded65a8..764c92a06e68 100644
--- a/drivers/interconnect/core.c
+++ b/drivers/interconnect/core.c
@@ -1144,6 +1144,3 @@ static int __init icc_init(void)
device_initcall(icc_init);
-MODULE_AUTHOR("Georgi Djakov <georgi.djakov@linaro.org>");
-MODULE_DESCRIPTION("Interconnect Driver Core");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c
index cd9b74ee24de..a06e9ec880fa 100644
--- a/drivers/iommu/sun50i-iommu.c
+++ b/drivers/iommu/sun50i-iommu.c
@@ -997,7 +997,3 @@ static struct platform_driver sun50i_iommu_driver = {
};
builtin_platform_driver_probe(sun50i_iommu_driver, sun50i_iommu_probe);
-MODULE_DESCRIPTION("Allwinner H6 IOMMU driver");
-MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>");
-MODULE_AUTHOR("zhuxianbin <zhuxianbin@allwinnertech.com>");
-MODULE_LICENSE("Dual BSD/GPL");
diff --git a/drivers/irqchip/irq-al-fic.c b/drivers/irqchip/irq-al-fic.c
index 886de028a901..0b11f4881afe 100644
--- a/drivers/irqchip/irq-al-fic.c
+++ b/drivers/irqchip/irq-al-fic.c
@@ -24,9 +24,6 @@
#define NR_FIC_IRQS 32
-MODULE_AUTHOR("Talel Shenhar");
-MODULE_DESCRIPTION("Amazon's Annapurna Labs Interrupt Controller Driver");
-MODULE_LICENSE("GPL v2");
enum al_fic_state {
AL_FIC_UNCONFIGURED = 0,
diff --git a/drivers/irqchip/irq-ls-scfg-msi.c b/drivers/irqchip/irq-ls-scfg-msi.c
index 527c90e0920e..af9feb9beff3 100644
--- a/drivers/irqchip/irq-ls-scfg-msi.c
+++ b/drivers/irqchip/irq-ls-scfg-msi.c
@@ -428,6 +428,3 @@ static struct platform_driver ls_scfg_msi_driver = {
module_platform_driver(ls_scfg_msi_driver);
-MODULE_AUTHOR("Minghuan Lian <Minghuan.Lian@nxp.com>");
-MODULE_DESCRIPTION("Freescale Layerscape SCFG MSI controller driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/irqchip/irq-mbigen.c b/drivers/irqchip/irq-mbigen.c
index f3faf5c99770..98496aa0311e 100644
--- a/drivers/irqchip/irq-mbigen.c
+++ b/drivers/irqchip/irq-mbigen.c
@@ -387,7 +387,3 @@ static struct platform_driver mbigen_platform_driver = {
module_platform_driver(mbigen_platform_driver);
-MODULE_AUTHOR("Jun Ma <majun258@huawei.com>");
-MODULE_AUTHOR("Yun Wu <wuyun.wu@huawei.com>");
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("HiSilicon MBI Generator driver");
diff --git a/drivers/irqchip/irq-mchp-eic.c b/drivers/irqchip/irq-mchp-eic.c
index c726a19837d2..0aa28f4ae03b 100644
--- a/drivers/irqchip/irq-mchp-eic.c
+++ b/drivers/irqchip/irq-mchp-eic.c
@@ -275,6 +275,3 @@ IRQCHIP_PLATFORM_DRIVER_BEGIN(mchp_eic)
IRQCHIP_MATCH("microchip,sama7g5-eic", mchp_eic_init)
IRQCHIP_PLATFORM_DRIVER_END(mchp_eic)
-MODULE_DESCRIPTION("Microchip External Interrupt Controller");
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Claudiu Beznea <claudiu.beznea@microchip.com>");
diff --git a/drivers/irqchip/irq-mvebu-pic.c b/drivers/irqchip/irq-mvebu-pic.c
index ef3d3646ccc2..ea541b1fef5b 100644
--- a/drivers/irqchip/irq-mvebu-pic.c
+++ b/drivers/irqchip/irq-mvebu-pic.c
@@ -193,8 +193,5 @@ static struct platform_driver mvebu_pic_driver = {
};
module_platform_driver(mvebu_pic_driver);
-MODULE_AUTHOR("Yehuda Yitschak <yehuday@marvell.com>");
-MODULE_AUTHOR("Thomas Petazzoni <thomas.petazzoni@free-electrons.com>");
-MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:mvebu_pic");
diff --git a/drivers/irqchip/irq-renesas-intc-irqpin.c b/drivers/irqchip/irq-renesas-intc-irqpin.c
index e83756aca14e..5eacec89cdb4 100644
--- a/drivers/irqchip/irq-renesas-intc-irqpin.c
+++ b/drivers/irqchip/irq-renesas-intc-irqpin.c
@@ -606,6 +606,3 @@ static void __exit intc_irqpin_exit(void)
}
module_exit(intc_irqpin_exit);
-MODULE_AUTHOR("Magnus Damm");
-MODULE_DESCRIPTION("Renesas INTC External IRQ Pin Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/irqchip/irq-renesas-irqc.c b/drivers/irqchip/irq-renesas-irqc.c
index 1ee5e9941f67..d3e1394dfaa7 100644
--- a/drivers/irqchip/irq-renesas-irqc.c
+++ b/drivers/irqchip/irq-renesas-irqc.c
@@ -268,6 +268,3 @@ static void __exit irqc_exit(void)
}
module_exit(irqc_exit);
-MODULE_AUTHOR("Magnus Damm");
-MODULE_DESCRIPTION("Renesas IRQC Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/irqchip/irq-renesas-rza1.c b/drivers/irqchip/irq-renesas-rza1.c
index 72c06e883d1c..7340868edd9f 100644
--- a/drivers/irqchip/irq-renesas-rza1.c
+++ b/drivers/irqchip/irq-renesas-rza1.c
@@ -279,6 +279,3 @@ static void __exit rza1_irqc_exit(void)
}
module_exit(rza1_irqc_exit);
-MODULE_AUTHOR("Geert Uytterhoeven <geert+renesas@glider.be>");
-MODULE_DESCRIPTION("Renesas RZ/A1 IRQC Driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/irqchip/irq-renesas-rzg2l.c b/drivers/irqchip/irq-renesas-rzg2l.c
index 25fd8ee66565..80079ac40384 100644
--- a/drivers/irqchip/irq-renesas-rzg2l.c
+++ b/drivers/irqchip/irq-renesas-rzg2l.c
@@ -388,6 +388,3 @@ static int rzg2l_irqc_init(struct device_node *node, struct device_node *parent)
IRQCHIP_PLATFORM_DRIVER_BEGIN(rzg2l_irqc)
IRQCHIP_MATCH("renesas,rzg2l-irqc", rzg2l_irqc_init)
IRQCHIP_PLATFORM_DRIVER_END(rzg2l_irqc)
-MODULE_AUTHOR("Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>");
-MODULE_DESCRIPTION("Renesas RZ/G2L IRQC Driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/irqchip/irq-sl28cpld.c b/drivers/irqchip/irq-sl28cpld.c
index fbb354413ffa..24a68af87e59 100644
--- a/drivers/irqchip/irq-sl28cpld.c
+++ b/drivers/irqchip/irq-sl28cpld.c
@@ -91,6 +91,3 @@ static struct platform_driver sl28cpld_intc_driver = {
};
module_platform_driver(sl28cpld_intc_driver);
-MODULE_DESCRIPTION("sl28cpld Interrupt Controller Driver");
-MODULE_AUTHOR("Michael Walle <michael@walle.cc>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/irqchip/irq-ti-sci-inta.c b/drivers/irqchip/irq-ti-sci-inta.c
index 5fdbb4358dd0..63f003d36f3e 100644
--- a/drivers/irqchip/irq-ti-sci-inta.c
+++ b/drivers/irqchip/irq-ti-sci-inta.c
@@ -741,6 +741,3 @@ static struct platform_driver ti_sci_inta_irq_domain_driver = {
};
module_platform_driver(ti_sci_inta_irq_domain_driver);
-MODULE_AUTHOR("Lokesh Vutla <lokeshvutla@ti.com>");
-MODULE_DESCRIPTION("K3 Interrupt Aggregator driver over TI SCI protocol");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/irqchip/irq-ti-sci-intr.c b/drivers/irqchip/irq-ti-sci-intr.c
index fe8fad22bcf9..2d014fe02530 100644
--- a/drivers/irqchip/irq-ti-sci-intr.c
+++ b/drivers/irqchip/irq-ti-sci-intr.c
@@ -300,6 +300,3 @@ static struct platform_driver ti_sci_intr_irq_domain_driver = {
};
module_platform_driver(ti_sci_intr_irq_domain_driver);
-MODULE_AUTHOR("Lokesh Vutla <lokeshvutla@ticom>");
-MODULE_DESCRIPTION("K3 Interrupt Router driver over TI SCI protocol");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/leds/leds-asic3.c b/drivers/leds/leds-asic3.c
index 8cbc1b8bafa5..5929f3b3f0cb 100644
--- a/drivers/leds/leds-asic3.c
+++ b/drivers/leds/leds-asic3.c
@@ -171,7 +171,4 @@ static struct platform_driver asic3_led_driver = {
module_platform_driver(asic3_led_driver);
-MODULE_AUTHOR("Paul Parsons <lost.distance@yahoo.com>");
-MODULE_DESCRIPTION("HTC ASIC3 LED driver");
-MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:leds-asic3");
diff --git a/drivers/mailbox/rockchip-mailbox.c b/drivers/mailbox/rockchip-mailbox.c
index 979acc810f30..c80b2b8a162d 100644
--- a/drivers/mailbox/rockchip-mailbox.c
+++ b/drivers/mailbox/rockchip-mailbox.c
@@ -256,7 +256,3 @@ static struct platform_driver rockchip_mbox_driver = {
module_platform_driver(rockchip_mbox_driver);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Rockchip mailbox: communicate between CPU cores and MCU");
-MODULE_AUTHOR("Addy Ke <addy.ke@rock-chips.com>");
-MODULE_AUTHOR("Caesar Wang <wxt@rock-chips.com>");
diff --git a/drivers/mailbox/zynqmp-ipi-mailbox.c b/drivers/mailbox/zynqmp-ipi-mailbox.c
index 31a0fa914274..68d44ff802b8 100644
--- a/drivers/mailbox/zynqmp-ipi-mailbox.c
+++ b/drivers/mailbox/zynqmp-ipi-mailbox.c
@@ -716,6 +716,3 @@ static void __exit zynqmp_ipi_exit(void)
}
module_exit(zynqmp_ipi_exit);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Xilinx ZynqMP IPI Mailbox driver");
-MODULE_AUTHOR("Xilinx Inc.");
diff --git a/drivers/memory/bt1-l2-ctl.c b/drivers/memory/bt1-l2-ctl.c
index 85965fa26e0b..ecba9881e446 100644
--- a/drivers/memory/bt1-l2-ctl.c
+++ b/drivers/memory/bt1-l2-ctl.c
@@ -319,6 +319,3 @@ static struct platform_driver l2_ctl_driver = {
};
module_platform_driver(l2_ctl_driver);
-MODULE_AUTHOR("Serge Semin <Sergey.Semin@baikalelectronics.ru>");
-MODULE_DESCRIPTION("Baikal-T1 L2-cache driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/memory/da8xx-ddrctl.c b/drivers/memory/da8xx-ddrctl.c
index b32005bf269c..13c086579932 100644
--- a/drivers/memory/da8xx-ddrctl.c
+++ b/drivers/memory/da8xx-ddrctl.c
@@ -162,6 +162,3 @@ static struct platform_driver da8xx_ddrctl_driver = {
};
module_platform_driver(da8xx_ddrctl_driver);
-MODULE_AUTHOR("Bartosz Golaszewski <bgolaszewski@baylibre.com>");
-MODULE_DESCRIPTION("TI da8xx DDR2/mDDR controller driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c
index e83b61c925a4..4716f344559a 100644
--- a/drivers/memory/fsl_ifc.c
+++ b/drivers/memory/fsl_ifc.c
@@ -327,6 +327,3 @@ static int __init fsl_ifc_init(void)
}
subsys_initcall(fsl_ifc_init);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Freescale Semiconductor");
-MODULE_DESCRIPTION("Freescale Integrated Flash Controller driver");
diff --git a/drivers/memory/mvebu-devbus.c b/drivers/memory/mvebu-devbus.c
index 8450638e8670..95ec816352dc 100644
--- a/drivers/memory/mvebu-devbus.c
+++ b/drivers/memory/mvebu-devbus.c
@@ -342,6 +342,3 @@ static int __init mvebu_devbus_init(void)
}
module_init(mvebu_devbus_init);
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Ezequiel Garcia <ezequiel.garcia@free-electrons.com>");
-MODULE_DESCRIPTION("Marvell EBU SoC Device Bus controller");
diff --git a/drivers/memory/tegra/mc.c b/drivers/memory/tegra/mc.c
index 2f7a58a9df1a..9f02f72c2825 100644
--- a/drivers/memory/tegra/mc.c
+++ b/drivers/memory/tegra/mc.c
@@ -958,6 +958,3 @@ static int tegra_mc_init(void)
}
arch_initcall(tegra_mc_init);
-MODULE_AUTHOR("Thierry Reding <treding@nvidia.com>");
-MODULE_DESCRIPTION("NVIDIA Tegra Memory Controller driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/memory/tegra/tegra186-emc.c b/drivers/memory/tegra/tegra186-emc.c
index 54b47ca33483..139d01435ad1 100644
--- a/drivers/memory/tegra/tegra186-emc.c
+++ b/drivers/memory/tegra/tegra186-emc.c
@@ -291,6 +291,3 @@ static struct platform_driver tegra186_emc_driver = {
};
module_platform_driver(tegra186_emc_driver);
-MODULE_AUTHOR("Thierry Reding <treding@nvidia.com>");
-MODULE_DESCRIPTION("NVIDIA Tegra186 External Memory Controller driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/mfd/88pm860x-core.c b/drivers/mfd/88pm860x-core.c
index 5dc86dd66202..4997404ed4c6 100644
--- a/drivers/mfd/88pm860x-core.c
+++ b/drivers/mfd/88pm860x-core.c
@@ -1276,6 +1276,3 @@ static void __exit pm860x_i2c_exit(void)
}
module_exit(pm860x_i2c_exit);
-MODULE_DESCRIPTION("PMIC Driver for Marvell 88PM860x");
-MODULE_AUTHOR("Haojian Zhuang <haojian.zhuang@marvell.com>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/altera-sysmgr.c b/drivers/mfd/altera-sysmgr.c
index 5d3715a28b28..41fdb1bda3d6 100644
--- a/drivers/mfd/altera-sysmgr.c
+++ b/drivers/mfd/altera-sysmgr.c
@@ -196,6 +196,3 @@ static void __exit altr_sysmgr_exit(void)
}
module_exit(altr_sysmgr_exit);
-MODULE_AUTHOR("Thor Thayer <>");
-MODULE_DESCRIPTION("SOCFPGA System Manager driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/mfd/bcm2835-pm.c b/drivers/mfd/bcm2835-pm.c
index 49cd1f03884a..b277825be741 100644
--- a/drivers/mfd/bcm2835-pm.c
+++ b/drivers/mfd/bcm2835-pm.c
@@ -121,6 +121,3 @@ static struct platform_driver bcm2835_pm_driver = {
};
module_platform_driver(bcm2835_pm_driver);
-MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
-MODULE_DESCRIPTION("Driver for Broadcom BCM2835 PM MFD");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/da903x.c b/drivers/mfd/da903x.c
index 3f8f6ad3a98c..34d6df2dd7ca 100644
--- a/drivers/mfd/da903x.c
+++ b/drivers/mfd/da903x.c
@@ -560,7 +560,3 @@ static void __exit da903x_exit(void)
}
module_exit(da903x_exit);
-MODULE_DESCRIPTION("PMIC Driver for Dialog Semiconductor DA9034");
-MODULE_AUTHOR("Eric Miao <eric.miao@marvell.com>");
-MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/mfd/da9052-core.c b/drivers/mfd/da9052-core.c
index 8b42d2f7024f..c7d6dcfd35a4 100644
--- a/drivers/mfd/da9052-core.c
+++ b/drivers/mfd/da9052-core.c
@@ -651,6 +651,3 @@ void da9052_device_exit(struct da9052 *da9052)
da9052_irq_exit(da9052);
}
-MODULE_AUTHOR("David Dajun Chen <dchen@diasemi.com>");
-MODULE_DESCRIPTION("DA9052 MFD Core");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/da9052-i2c.c b/drivers/mfd/da9052-i2c.c
index 5a74696c8704..d964f26698a5 100644
--- a/drivers/mfd/da9052-i2c.c
+++ b/drivers/mfd/da9052-i2c.c
@@ -207,6 +207,3 @@ static void __exit da9052_i2c_exit(void)
}
module_exit(da9052_i2c_exit);
-MODULE_AUTHOR("David Dajun Chen <dchen@diasemi.com>");
-MODULE_DESCRIPTION("I2C driver for Dialog DA9052 PMIC");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/da9052-spi.c b/drivers/mfd/da9052-spi.c
index b79a57b45c1e..4e18fa1db842 100644
--- a/drivers/mfd/da9052-spi.c
+++ b/drivers/mfd/da9052-spi.c
@@ -100,6 +100,3 @@ static void __exit da9052_spi_exit(void)
}
module_exit(da9052_spi_exit);
-MODULE_AUTHOR("David Dajun Chen <dchen@diasemi.com>");
-MODULE_DESCRIPTION("SPI driver for Dialog DA9052 PMIC");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/da9055-core.c b/drivers/mfd/da9055-core.c
index c3bcbd8905c6..102a2c17fbfa 100644
--- a/drivers/mfd/da9055-core.c
+++ b/drivers/mfd/da9055-core.c
@@ -397,6 +397,3 @@ void da9055_device_exit(struct da9055 *da9055)
mfd_remove_devices(da9055->dev);
}
-MODULE_DESCRIPTION("Core support for the DA9055 PMIC");
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("David Dajun Chen <dchen@diasemi.com>");
diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c
index 276c7d1c509e..643dec98c9ac 100644
--- a/drivers/mfd/da9055-i2c.c
+++ b/drivers/mfd/da9055-i2c.c
@@ -96,6 +96,3 @@ static void __exit da9055_i2c_exit(void)
}
module_exit(da9055_i2c_exit);
-MODULE_AUTHOR("David Dajun Chen <dchen@diasemi.com>");
-MODULE_DESCRIPTION("I2C driver for Dialog DA9055 PMIC");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
index 3d5ce18aa9ae..13127d7b6598 100644
--- a/drivers/mfd/ezx-pcap.c
+++ b/drivers/mfd/ezx-pcap.c
@@ -528,7 +528,4 @@ static void __exit ezx_pcap_exit(void)
subsys_initcall(ezx_pcap_init);
module_exit(ezx_pcap_exit);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Daniel Ribeiro / Harald Welte");
-MODULE_DESCRIPTION("Motorola PCAP2 ASIC Driver");
MODULE_ALIAS("spi:ezx-pcap");
diff --git a/drivers/mfd/intel_soc_pmic_crc.c b/drivers/mfd/intel_soc_pmic_crc.c
index b1548a933dc3..0cbb990d01bd 100644
--- a/drivers/mfd/intel_soc_pmic_crc.c
+++ b/drivers/mfd/intel_soc_pmic_crc.c
@@ -270,7 +270,3 @@ static struct i2c_driver crystal_cove_i2c_driver = {
module_i2c_driver(crystal_cove_i2c_driver);
-MODULE_DESCRIPTION("I2C driver for Intel SoC PMIC");
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Yang, Bin <bin.yang@intel.com>");
-MODULE_AUTHOR("Zhu, Lejun <lejun.zhu@linux.intel.com>");
diff --git a/drivers/mfd/lp8788.c b/drivers/mfd/lp8788.c
index 724a5712b36b..4f85864b9511 100644
--- a/drivers/mfd/lp8788.c
+++ b/drivers/mfd/lp8788.c
@@ -242,6 +242,3 @@ static void __exit lp8788_exit(void)
}
module_exit(lp8788_exit);
-MODULE_DESCRIPTION("TI LP8788 MFD Driver");
-MODULE_AUTHOR("Milo Kim");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/omap-usb-host.c b/drivers/mfd/omap-usb-host.c
index 787d2ae86375..1d423cb01337 100644
--- a/drivers/mfd/omap-usb-host.c
+++ b/drivers/mfd/omap-usb-host.c
@@ -850,11 +850,7 @@ static struct platform_driver usbhs_omap_driver = {
.remove = usbhs_omap_remove,
};
-MODULE_AUTHOR("Keshava Munegowda <keshava_mgowda@ti.com>");
-MODULE_AUTHOR("Roger Quadros <rogerq@ti.com>");
MODULE_ALIAS("platform:" USBHS_DRIVER_NAME);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("usb host common core driver for omap EHCI and OHCI");
static int omap_usbhs_drvinit(void)
{
diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c
index 080d7970a377..5e5d077ac0c9 100644
--- a/drivers/mfd/omap-usb-tll.c
+++ b/drivers/mfd/omap-usb-tll.c
@@ -448,10 +448,6 @@ int omap_tll_disable(struct usbhs_omap_platform_data *pdata)
}
EXPORT_SYMBOL_GPL(omap_tll_disable);
-MODULE_AUTHOR("Keshava Munegowda <keshava_mgowda@ti.com>");
-MODULE_AUTHOR("Roger Quadros <rogerq@ti.com>");
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("usb tll driver for TI OMAP EHCI and OHCI controllers");
static int __init omap_usbtll_drvinit(void)
{
diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
index 8b7429bd2e3e..b677e38de7bb 100644
--- a/drivers/mfd/palmas.c
+++ b/drivers/mfd/palmas.c
@@ -750,6 +750,3 @@ static void __exit palmas_i2c_exit(void)
}
module_exit(palmas_i2c_exit);
-MODULE_AUTHOR("Graeme Gregory <gg@slimlogic.co.uk>");
-MODULE_DESCRIPTION("Palmas chip family multi-function driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/stmpe-i2c.c b/drivers/mfd/stmpe-i2c.c
index 4d55494a97c4..51da3a632adb 100644
--- a/drivers/mfd/stmpe-i2c.c
+++ b/drivers/mfd/stmpe-i2c.c
@@ -136,6 +136,3 @@ static void __exit stmpe_exit(void)
}
module_exit(stmpe_exit);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("STMPE MFD I2C Interface Driver");
-MODULE_AUTHOR("Rabin Vincent <rabin.vincent@stericsson.com>");
diff --git a/drivers/mfd/stmpe-spi.c b/drivers/mfd/stmpe-spi.c
index ad8055a0e286..98ee83f90d1a 100644
--- a/drivers/mfd/stmpe-spi.c
+++ b/drivers/mfd/stmpe-spi.c
@@ -156,6 +156,3 @@ static void __exit stmpe_exit(void)
}
module_exit(stmpe_exit);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("STMPE MFD SPI Interface Driver");
-MODULE_AUTHOR("Viresh Kumar <vireshk@kernel.org>");
diff --git a/drivers/mfd/tc3589x.c b/drivers/mfd/tc3589x.c
index d5d0ec117acb..f425f7a6d169 100644
--- a/drivers/mfd/tc3589x.c
+++ b/drivers/mfd/tc3589x.c
@@ -503,6 +503,3 @@ static void __exit tc3589x_exit(void)
}
module_exit(tc3589x_exit);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("TC3589x MFD core driver");
-MODULE_AUTHOR("Hanumath Prasad, Rabin Vincent");
diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c
index fb340da64bbc..97b32236ef15 100644
--- a/drivers/mfd/tps6586x.c
+++ b/drivers/mfd/tps6586x.c
@@ -641,6 +641,3 @@ static void __exit tps6586x_exit(void)
}
module_exit(tps6586x_exit);
-MODULE_DESCRIPTION("TPS6586X core driver");
-MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/twl4030-audio.c b/drivers/mfd/twl4030-audio.c
index 4536d829b43e..ed96b52cd799 100644
--- a/drivers/mfd/twl4030-audio.c
+++ b/drivers/mfd/twl4030-audio.c
@@ -283,7 +283,4 @@ static struct platform_driver twl4030_audio_driver = {
module_platform_driver(twl4030_audio_driver);
-MODULE_AUTHOR("Peter Ujfalusi <peter.ujfalusi@ti.com>");
-MODULE_DESCRIPTION("TWL4030 audio block MFD driver");
-MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:twl4030-audio");
diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c
index f429b8f00db6..5db429eafbb0 100644
--- a/drivers/mfd/twl6040.c
+++ b/drivers/mfd/twl6040.c
@@ -840,7 +840,3 @@ static struct i2c_driver twl6040_driver = {
module_i2c_driver(twl6040_driver);
-MODULE_DESCRIPTION("TWL6040 MFD");
-MODULE_AUTHOR("Misael Lopez Cruz <misael.lopez@ti.com>");
-MODULE_AUTHOR("Jorge Eduardo Candelaria <jorge.candelaria@ti.com>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mtd/parsers/bcm63xxpart.c b/drivers/mtd/parsers/bcm63xxpart.c
index b15bdadaedb5..f252e3eb017f 100644
--- a/drivers/mtd/parsers/bcm63xxpart.c
+++ b/drivers/mtd/parsers/bcm63xxpart.c
@@ -164,9 +164,3 @@ static struct mtd_part_parser bcm63xx_cfe_parser = {
};
module_mtd_part_parser(bcm63xx_cfe_parser);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Daniel Dickinson <openwrt@cshore.neomailbox.net>");
-MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
-MODULE_AUTHOR("Mike Albon <malbon@openwrt.org>");
-MODULE_AUTHOR("Jonas Gorski <jonas.gorski@gmail.com");
-MODULE_DESCRIPTION("MTD partitioning for BCM63XX CFE bootloaders");
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 321d7d63e068..386d5efa1b27 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -1952,7 +1952,3 @@ static void __exit nvmem_exit(void)
subsys_initcall(nvmem_init);
module_exit(nvmem_exit);
-MODULE_AUTHOR("Srinivas Kandagatla <srinivas.kandagatla@linaro.org");
-MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com");
-MODULE_DESCRIPTION("nvmem Driver Core");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/nvmem/zynqmp_nvmem.c b/drivers/nvmem/zynqmp_nvmem.c
index e28d7b133e11..d01d4fddf283 100644
--- a/drivers/nvmem/zynqmp_nvmem.c
+++ b/drivers/nvmem/zynqmp_nvmem.c
@@ -76,6 +76,3 @@ static struct platform_driver zynqmp_nvmem_driver = {
module_platform_driver(zynqmp_nvmem_driver);
-MODULE_AUTHOR("Michal Simek <michal.simek@xilinx.com>, Nava kishore Manne <navam@xilinx.com>");
-MODULE_DESCRIPTION("ZynqMP NVMEM driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/pci/controller/dwc/pcie-histb.c b/drivers/pci/controller/dwc/pcie-histb.c
index e2b80f10030d..2db5bc06d1be 100644
--- a/drivers/pci/controller/dwc/pcie-histb.c
+++ b/drivers/pci/controller/dwc/pcie-histb.c
@@ -450,5 +450,3 @@ static struct platform_driver histb_pcie_platform_driver = {
};
module_platform_driver(histb_pcie_platform_driver);
-MODULE_DESCRIPTION("HiSilicon STB PCIe host controller driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/controller/mobiveil/pcie-mobiveil-plat.c b/drivers/pci/controller/mobiveil/pcie-mobiveil-plat.c
index f6fcd95c2bf5..704bca668f76 100644
--- a/drivers/pci/controller/mobiveil/pcie-mobiveil-plat.c
+++ b/drivers/pci/controller/mobiveil/pcie-mobiveil-plat.c
@@ -56,6 +56,3 @@ static struct platform_driver mobiveil_pcie_driver = {
builtin_platform_driver(mobiveil_pcie_driver);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Mobiveil PCIe host controller driver");
-MODULE_AUTHOR("Subrahmanya Lingappa <l.subrahmanya@mobiveil.co.in>");
diff --git a/drivers/pci/controller/pci-tegra.c b/drivers/pci/controller/pci-tegra.c
index 8e323e93be91..378e56e9d414 100644
--- a/drivers/pci/controller/pci-tegra.c
+++ b/drivers/pci/controller/pci-tegra.c
@@ -2813,4 +2813,3 @@ static struct platform_driver tegra_pcie_driver = {
.remove = tegra_pcie_remove,
};
module_platform_driver(tegra_pcie_driver);
-MODULE_LICENSE("GPL");
diff --git a/drivers/pci/controller/pci-versatile.c b/drivers/pci/controller/pci-versatile.c
index 7991d334e0f1..73ca239096cc 100644
--- a/drivers/pci/controller/pci-versatile.c
+++ b/drivers/pci/controller/pci-versatile.c
@@ -168,5 +168,3 @@ static struct platform_driver versatile_pci_driver = {
};
module_platform_driver(versatile_pci_driver);
-MODULE_DESCRIPTION("Versatile PCI driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/controller/pcie-hisi-error.c b/drivers/pci/controller/pcie-hisi-error.c
index 7959c9c8d2bc..6866bc42da1b 100644
--- a/drivers/pci/controller/pcie-hisi-error.c
+++ b/drivers/pci/controller/pcie-hisi-error.c
@@ -323,5 +323,3 @@ static struct platform_driver hisi_pcie_error_handler_driver = {
};
module_platform_driver(hisi_pcie_error_handler_driver);
-MODULE_DESCRIPTION("HiSilicon HIP PCIe controller error handling driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/controller/pcie-microchip-host.c b/drivers/pci/controller/pcie-microchip-host.c
index 7263d175b5ad..b424bb1d13f5 100644
--- a/drivers/pci/controller/pcie-microchip-host.c
+++ b/drivers/pci/controller/pcie-microchip-host.c
@@ -1135,6 +1135,3 @@ static struct platform_driver mc_pcie_driver = {
};
builtin_platform_driver(mc_pcie_driver);
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("Microchip PCIe host controller driver");
-MODULE_AUTHOR("Daire McNamara <daire.mcnamara@microchip.com>");
diff --git a/drivers/pci/endpoint/pci-ep-cfs.c b/drivers/pci/endpoint/pci-ep-cfs.c
index d4850bdd837f..bb5c30cbdc2a 100644
--- a/drivers/pci/endpoint/pci-ep-cfs.c
+++ b/drivers/pci/endpoint/pci-ep-cfs.c
@@ -726,6 +726,3 @@ static void __exit pci_ep_cfs_exit(void)
}
module_exit(pci_ep_cfs_exit);
-MODULE_DESCRIPTION("PCI EP CONFIGFS");
-MODULE_AUTHOR("Kishon Vijay Abraham I <kishon@ti.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci-epc-core.c
index 3bc9273d0a08..e68c663a2072 100644
--- a/drivers/pci/endpoint/pci-epc-core.c
+++ b/drivers/pci/endpoint/pci-epc-core.c
@@ -854,6 +854,3 @@ static void __exit pci_epc_exit(void)
}
module_exit(pci_epc_exit);
-MODULE_DESCRIPTION("PCI EPC Library");
-MODULE_AUTHOR("Kishon Vijay Abraham I <kishon@ti.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/endpoint/pci-epc-mem.c b/drivers/pci/endpoint/pci-epc-mem.c
index a97b56a6d2db..2353249311ad 100644
--- a/drivers/pci/endpoint/pci-epc-mem.c
+++ b/drivers/pci/endpoint/pci-epc-mem.c
@@ -258,6 +258,3 @@ void pci_epc_mem_free_addr(struct pci_epc *epc, phys_addr_t phys_addr,
}
EXPORT_SYMBOL_GPL(pci_epc_mem_free_addr);
-MODULE_DESCRIPTION("PCI EPC Address Space Management");
-MODULE_AUTHOR("Kishon Vijay Abraham I <kishon@ti.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci-epf-core.c
index 9ed556936f48..682a69be2040 100644
--- a/drivers/pci/endpoint/pci-epf-core.c
+++ b/drivers/pci/endpoint/pci-epf-core.c
@@ -566,6 +566,3 @@ static void __exit pci_epf_exit(void)
}
module_exit(pci_epf_exit);
-MODULE_DESCRIPTION("PCI EPF Library");
-MODULE_AUTHOR("Kishon Vijay Abraham I <kishon@ti.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/hotplug/acpiphp_core.c b/drivers/pci/hotplug/acpiphp_core.c
index 853e04ad272c..fd8b98c5641a 100644
--- a/drivers/pci/hotplug/acpiphp_core.c
+++ b/drivers/pci/hotplug/acpiphp_core.c
@@ -43,9 +43,6 @@ static struct acpiphp_attention_info *attention_info;
#define DRIVER_AUTHOR "Greg Kroah-Hartman <gregkh@us.ibm.com>, Takayoshi Kochi <t-kochi@bq.jp.nec.com>, Matthew Wilcox <willy@infradead.org>"
#define DRIVER_DESC "ACPI Hot Plug PCI Controller Driver"
-MODULE_AUTHOR(DRIVER_AUTHOR);
-MODULE_DESCRIPTION(DRIVER_DESC);
-MODULE_LICENSE("GPL");
MODULE_PARM_DESC(disable, "disable acpiphp driver");
module_param_named(disable, acpiphp_disabled, bool, 0444);
diff --git a/drivers/pci/hotplug/shpchp_core.c b/drivers/pci/hotplug/shpchp_core.c
index 53692b048301..7610a3f6fb5a 100644
--- a/drivers/pci/hotplug/shpchp_core.c
+++ b/drivers/pci/hotplug/shpchp_core.c
@@ -30,9 +30,6 @@ int shpchp_poll_time;
#define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>"
#define DRIVER_DESC "Standard Hot Plug PCI Controller Driver"
-MODULE_AUTHOR(DRIVER_AUTHOR);
-MODULE_DESCRIPTION(DRIVER_DESC);
-MODULE_LICENSE("GPL");
module_param(shpchp_debug, bool, 0644);
module_param(shpchp_poll_mode, bool, 0644);
diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c
index 979a7c2b4f56..7123beeb992f 100644
--- a/drivers/perf/apple_m1_cpu_pmu.c
+++ b/drivers/perf/apple_m1_cpu_pmu.c
@@ -581,4 +581,3 @@ static struct platform_driver m1_pmu_driver = {
};
module_platform_driver(m1_pmu_driver);
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/phy/intel/phy-intel-lgm-combo.c b/drivers/phy/intel/phy-intel-lgm-combo.c
index 6010e246d52e..a15e73f5b1b2 100644
--- a/drivers/phy/intel/phy-intel-lgm-combo.c
+++ b/drivers/phy/intel/phy-intel-lgm-combo.c
@@ -615,5 +615,3 @@ static struct platform_driver intel_cbphy_driver = {
module_platform_driver(intel_cbphy_driver);
-MODULE_DESCRIPTION("Intel Combo-phy driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/actions/pinctrl-s500.c b/drivers/pinctrl/actions/pinctrl-s500.c
index ced778079b76..c944c68f22a8 100644
--- a/drivers/pinctrl/actions/pinctrl-s500.c
+++ b/drivers/pinctrl/actions/pinctrl-s500.c
@@ -1721,7 +1721,3 @@ static void __exit s500_pinctrl_exit(void)
}
module_exit(s500_pinctrl_exit);
-MODULE_AUTHOR("Actions Semi Inc.");
-MODULE_AUTHOR("Cristian Ciocaltea <cristian.ciocaltea@gmail.com>");
-MODULE_DESCRIPTION("Actions Semi S500 SoC Pinctrl Driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/pinctrl/actions/pinctrl-s700.c b/drivers/pinctrl/actions/pinctrl-s700.c
index fd00940a5799..391aaabdd527 100644
--- a/drivers/pinctrl/actions/pinctrl-s700.c
+++ b/drivers/pinctrl/actions/pinctrl-s700.c
@@ -1906,6 +1906,3 @@ static void __exit s700_pinctrl_exit(void)
}
module_exit(s700_pinctrl_exit);
-MODULE_AUTHOR("Actions Semi Inc.");
-MODULE_DESCRIPTION("Actions Semi S700 Soc Pinctrl Driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/pinctrl/actions/pinctrl-s900.c b/drivers/pinctrl/actions/pinctrl-s900.c
index 811249a8011e..baddcf15005c 100644
--- a/drivers/pinctrl/actions/pinctrl-s900.c
+++ b/drivers/pinctrl/actions/pinctrl-s900.c
@@ -1824,7 +1824,3 @@ static void __exit s900_pinctrl_exit(void)
}
module_exit(s900_pinctrl_exit);
-MODULE_AUTHOR("Actions Semi Inc.");
-MODULE_AUTHOR("Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>");
-MODULE_DESCRIPTION("Actions Semi S900 SoC Pinctrl Driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/pinctrl/bcm/pinctrl-ns.c b/drivers/pinctrl/bcm/pinctrl-ns.c
index 465cc96814a1..62879fadf2f0 100644
--- a/drivers/pinctrl/bcm/pinctrl-ns.c
+++ b/drivers/pinctrl/bcm/pinctrl-ns.c
@@ -298,6 +298,4 @@ static struct platform_driver ns_pinctrl_driver = {
module_platform_driver(ns_pinctrl_driver);
-MODULE_AUTHOR("Rafał Miłecki");
-MODULE_LICENSE("GPL v2");
MODULE_DEVICE_TABLE(of, ns_pinctrl_of_match_table);
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8188.c b/drivers/pinctrl/mediatek/pinctrl-mt8188.c
index d0e75c1b4417..3d811d83110a 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mt8188.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mt8188.c
@@ -1669,5 +1669,3 @@ static int __init mt8188_pinctrl_init(void)
arch_initcall(mt8188_pinctrl_init);
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("MediaTek MT8188 Pinctrl Driver");
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8192.c b/drivers/pinctrl/mediatek/pinctrl-mt8192.c
index 78c02b7c81f0..5204d87de9d3 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mt8192.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mt8192.c
@@ -1430,5 +1430,3 @@ static int __init mt8192_pinctrl_init(void)
}
arch_initcall(mt8192_pinctrl_init);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("MediaTek MT8192 Pinctrl Driver");
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8365.c b/drivers/pinctrl/mediatek/pinctrl-mt8365.c
index 57f37a294063..b591c54b5894 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mt8365.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mt8365.c
@@ -476,6 +476,3 @@ static int __init mtk_pinctrl_init(void)
}
arch_initcall(mtk_pinctrl_init);
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("MediaTek MT8365 Pinctrl Driver");
-MODULE_AUTHOR("Zhiyong Tao <zhiyong.tao@mediatek.com>");
diff --git a/drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c b/drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c
index 1c4e89b046de..2d95765e3b54 100644
--- a/drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c
+++ b/drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c
@@ -2043,7 +2043,3 @@ static int __init npcm7xx_pinctrl_register(void)
}
arch_initcall(npcm7xx_pinctrl_register);
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("jordan_hargrave@dell.com");
-MODULE_AUTHOR("tomer.maimon@nuvoton.com");
-MODULE_DESCRIPTION("Nuvoton NPCM7XX Pinctrl and GPIO driver");
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 6be896871718..215a4aab1283 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -1203,6 +1203,3 @@ static struct platform_driver amd_gpio_driver = {
module_platform_driver(amd_gpio_driver);
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Ken Xue <Ken.Xue@amd.com>, Jeff Wu <Jeff.Wu@amd.com>");
-MODULE_DESCRIPTION("AMD GPIO pinctrl driver");
diff --git a/drivers/pinctrl/renesas/pinctrl-rza1.c b/drivers/pinctrl/renesas/pinctrl-rza1.c
index 529c0fc4ec06..111eaf8951f8 100644
--- a/drivers/pinctrl/renesas/pinctrl-rza1.c
+++ b/drivers/pinctrl/renesas/pinctrl-rza1.c
@@ -1405,6 +1405,3 @@ static int __init rza1_pinctrl_init(void)
}
core_initcall(rza1_pinctrl_init);
-MODULE_AUTHOR("Jacopo Mondi <jacopo+renesas@jmondi.org");
-MODULE_DESCRIPTION("Pin and gpio controller driver for Reneas RZ/A1 SoC");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/renesas/pinctrl-rza2.c b/drivers/pinctrl/renesas/pinctrl-rza2.c
index c0a04f1ee994..ab6b9cd4c6fa 100644
--- a/drivers/pinctrl/renesas/pinctrl-rza2.c
+++ b/drivers/pinctrl/renesas/pinctrl-rza2.c
@@ -512,6 +512,3 @@ static int __init rza2_pinctrl_init(void)
}
core_initcall(rza2_pinctrl_init);
-MODULE_AUTHOR("Chris Brandt <chris.brandt@renesas.com>");
-MODULE_DESCRIPTION("Pin and gpio controller driver for RZ/A2 SoC");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/renesas/pinctrl-rzg2l.c b/drivers/pinctrl/renesas/pinctrl-rzg2l.c
index a43824fd9505..2f90c1fa52ee 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzg2l.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzg2l.c
@@ -1557,6 +1557,3 @@ static int __init rzg2l_pinctrl_init(void)
}
core_initcall(rzg2l_pinctrl_init);
-MODULE_AUTHOR("Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>");
-MODULE_DESCRIPTION("Pin and gpio controller driver for RZ/G2L family");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/renesas/pinctrl-rzn1.c b/drivers/pinctrl/renesas/pinctrl-rzn1.c
index 849d091205d4..bd60a640b6a3 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzn1.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzn1.c
@@ -946,6 +946,3 @@ static int __init _pinctrl_drv_register(void)
}
subsys_initcall(_pinctrl_drv_register);
-MODULE_AUTHOR("Phil Edworthy <phil.edworthy@renesas.com>");
-MODULE_DESCRIPTION("Renesas RZ/N1 pinctrl driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/renesas/pinctrl-rzv2m.c b/drivers/pinctrl/renesas/pinctrl-rzv2m.c
index e8c18198bebd..dbd842edcce8 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzv2m.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzv2m.c
@@ -1114,6 +1114,3 @@ static int __init rzv2m_pinctrl_init(void)
}
core_initcall(rzv2m_pinctrl_init);
-MODULE_AUTHOR("Phil Edworthy <phil.edworthy@renesas.com>");
-MODULE_DESCRIPTION("Pin and gpio controller driver for RZ/V2M");
-MODULE_LICENSE("GPL");
diff --git a/drivers/power/reset/as3722-poweroff.c b/drivers/power/reset/as3722-poweroff.c
index 661e1c67f82e..a2182470a5e1 100644
--- a/drivers/power/reset/as3722-poweroff.c
+++ b/drivers/power/reset/as3722-poweroff.c
@@ -81,7 +81,4 @@ static struct platform_driver as3722_poweroff_driver = {
module_platform_driver(as3722_poweroff_driver);
-MODULE_DESCRIPTION("Power off driver for ams AS3722 PMIC Device");
MODULE_ALIAS("platform:as3722-power-off");
-MODULE_AUTHOR("Laxman Dewangan <ldewangan@nvidia.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/power/reset/gpio-poweroff.c b/drivers/power/reset/gpio-poweroff.c
index 1c5af2fef142..b6c5cce9fe6c 100644
--- a/drivers/power/reset/gpio-poweroff.c
+++ b/drivers/power/reset/gpio-poweroff.c
@@ -103,7 +103,4 @@ static struct platform_driver gpio_poweroff_driver = {
module_platform_driver(gpio_poweroff_driver);
-MODULE_AUTHOR("Jamie Lentin <jm@lentin.co.uk>");
-MODULE_DESCRIPTION("GPIO poweroff driver");
-MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:poweroff-gpio");
diff --git a/drivers/power/reset/gpio-restart.c b/drivers/power/reset/gpio-restart.c
index 5466eeea261c..ee6ba7313e0e 100644
--- a/drivers/power/reset/gpio-restart.c
+++ b/drivers/power/reset/gpio-restart.c
@@ -137,6 +137,3 @@ static struct platform_driver gpio_restart_driver = {
module_platform_driver(gpio_restart_driver);
-MODULE_AUTHOR("David Riley <davidriley@chromium.org>");
-MODULE_DESCRIPTION("GPIO restart driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/power/reset/keystone-reset.c b/drivers/power/reset/keystone-reset.c
index c720112db704..cfacee839b10 100644
--- a/drivers/power/reset/keystone-reset.c
+++ b/drivers/power/reset/keystone-reset.c
@@ -167,7 +167,4 @@ static struct platform_driver rsctrl_driver = {
};
module_platform_driver(rsctrl_driver);
-MODULE_AUTHOR("Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>");
-MODULE_DESCRIPTION("Texas Instruments keystone reset driver");
-MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:" KBUILD_MODNAME);
diff --git a/drivers/power/reset/ltc2952-poweroff.c b/drivers/power/reset/ltc2952-poweroff.c
index 65d9528cc989..087533bfc752 100644
--- a/drivers/power/reset/ltc2952-poweroff.c
+++ b/drivers/power/reset/ltc2952-poweroff.c
@@ -315,6 +315,3 @@ static struct platform_driver ltc2952_poweroff_driver = {
module_platform_driver(ltc2952_poweroff_driver);
-MODULE_AUTHOR("René Moll <rene.moll@xsens.com>");
-MODULE_DESCRIPTION("LTC PowerPath power-off driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/power/reset/mt6323-poweroff.c b/drivers/power/reset/mt6323-poweroff.c
index d90e76fcb938..97e9de37bf07 100644
--- a/drivers/power/reset/mt6323-poweroff.c
+++ b/drivers/power/reset/mt6323-poweroff.c
@@ -95,6 +95,3 @@ static struct platform_driver mt6323_pwrc_driver = {
module_platform_driver(mt6323_pwrc_driver);
-MODULE_DESCRIPTION("Poweroff driver for MT6323 PMIC");
-MODULE_AUTHOR("Sean Wang <sean.wang@mediatek.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/power/reset/regulator-poweroff.c b/drivers/power/reset/regulator-poweroff.c
index 20701203935f..4787829875d4 100644
--- a/drivers/power/reset/regulator-poweroff.c
+++ b/drivers/power/reset/regulator-poweroff.c
@@ -77,7 +77,4 @@ static struct platform_driver regulator_poweroff_driver = {
module_platform_driver(regulator_poweroff_driver);
-MODULE_AUTHOR("Michael Klein <michael@fossekall.de>");
-MODULE_DESCRIPTION("Regulator poweroff driver");
-MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:poweroff-regulator");
diff --git a/drivers/power/reset/restart-poweroff.c b/drivers/power/reset/restart-poweroff.c
index 04d4228119b2..7adc454658ff 100644
--- a/drivers/power/reset/restart-poweroff.c
+++ b/drivers/power/reset/restart-poweroff.c
@@ -57,7 +57,4 @@ static struct platform_driver restart_poweroff_driver = {
};
module_platform_driver(restart_poweroff_driver);
-MODULE_AUTHOR("Andrew Lunn <andrew@lunn.ch");
-MODULE_DESCRIPTION("restart poweroff driver");
-MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:poweroff-restart");
diff --git a/drivers/power/reset/tps65086-restart.c b/drivers/power/reset/tps65086-restart.c
index 78b89f745a3d..866845a012c7 100644
--- a/drivers/power/reset/tps65086-restart.c
+++ b/drivers/power/reset/tps65086-restart.c
@@ -93,6 +93,3 @@ static struct platform_driver tps65086_restart_driver = {
};
module_platform_driver(tps65086_restart_driver);
-MODULE_AUTHOR("Emil Renner Berthing <kernel@esmil.dk>");
-MODULE_DESCRIPTION("TPS65086 restart driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index 4b5fb172fa99..b253fc0e401f 100644
--- a/drivers/power/supply/power_supply_core.c
+++ b/drivers/power/supply/power_supply_core.c
@@ -1569,9 +1569,3 @@ static void __exit power_supply_class_exit(void)
subsys_initcall(power_supply_class_init);
module_exit(power_supply_class_exit);
-
-MODULE_DESCRIPTION("Universal power supply monitor class");
-MODULE_AUTHOR("Ian Molton <spyro@f2s.com>, "
- "Szabolcs Gyurko, "
- "Anton Vorontsov <cbou@mail.ru>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/power/supply/wm97xx_battery.c b/drivers/power/supply/wm97xx_battery.c
index a0e1eaa25d93..73d9f7dc4945 100644
--- a/drivers/power/supply/wm97xx_battery.c
+++ b/drivers/power/supply/wm97xx_battery.c
@@ -271,6 +271,3 @@ static struct platform_driver wm97xx_bat_driver = {
module_platform_driver(wm97xx_bat_driver);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>");
-MODULE_DESCRIPTION("WM97xx battery driver");
diff --git a/drivers/powercap/powercap_sys.c b/drivers/powercap/powercap_sys.c
index f0654a932b37..73246663d614 100644
--- a/drivers/powercap/powercap_sys.c
+++ b/drivers/powercap/powercap_sys.c
@@ -672,6 +672,3 @@ static int __init powercap_init(void)
fs_initcall(powercap_init);
-MODULE_DESCRIPTION("PowerCap sysfs Driver");
-MODULE_AUTHOR("Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/regulator/stm32-pwr.c b/drivers/regulator/stm32-pwr.c
index 2a42acb7c24e..42e3a8860abc 100644
--- a/drivers/regulator/stm32-pwr.c
+++ b/drivers/regulator/stm32-pwr.c
@@ -181,6 +181,3 @@ static struct platform_driver stm32_pwr_driver = {
};
module_platform_driver(stm32_pwr_driver);
-MODULE_DESCRIPTION("STM32MP1 PWR voltage regulator driver");
-MODULE_AUTHOR("Pascal Paillet <p.paillet@st.com>");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index 8768cb64f560..1e2dac5e54ea 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -2752,5 +2752,3 @@ static void __exit remoteproc_exit(void)
}
module_exit(remoteproc_exit);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Generic Remote Processor Framework");
diff --git a/drivers/reset/reset-axs10x.c b/drivers/reset/reset-axs10x.c
index a854ef41364d..4f9bce547988 100644
--- a/drivers/reset/reset-axs10x.c
+++ b/drivers/reset/reset-axs10x.c
@@ -79,6 +79,3 @@ static struct platform_driver axs10x_reset_driver = {
};
builtin_platform_driver(axs10x_reset_driver);
-MODULE_AUTHOR("Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>");
-MODULE_DESCRIPTION("Synopsys AXS10x reset driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/reset/reset-hsdk.c b/drivers/reset/reset-hsdk.c
index 4c7b8647b49c..8b88aca4c4a4 100644
--- a/drivers/reset/reset-hsdk.c
+++ b/drivers/reset/reset-hsdk.c
@@ -133,6 +133,3 @@ static struct platform_driver hsdk_reset_driver = {
};
builtin_platform_driver(hsdk_reset_driver);
-MODULE_AUTHOR("Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>");
-MODULE_DESCRIPTION("Synopsys HSDK SDP reset driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/reset/reset-lantiq.c b/drivers/reset/reset-lantiq.c
index b936cfe85641..2ca9bd5930b8 100644
--- a/drivers/reset/reset-lantiq.c
+++ b/drivers/reset/reset-lantiq.c
@@ -205,6 +205,3 @@ static struct platform_driver lantiq_rcu_reset_driver = {
};
module_platform_driver(lantiq_rcu_reset_driver);
-MODULE_AUTHOR("Martin Blumenstingl <martin.blumenstingl@googlemail.com>");
-MODULE_DESCRIPTION("Lantiq XWAY RCU Reset Controller Driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/reset/reset-microchip-sparx5.c b/drivers/reset/reset-microchip-sparx5.c
index f3528dd1d084..47b9b43470a0 100644
--- a/drivers/reset/reset-microchip-sparx5.c
+++ b/drivers/reset/reset-microchip-sparx5.c
@@ -177,6 +177,3 @@ static int __init mchp_sparx5_reset_init(void)
*/
postcore_initcall(mchp_sparx5_reset_init);
-MODULE_DESCRIPTION("Microchip Sparx5 switch reset driver");
-MODULE_AUTHOR("Steen Hegelund <steen.hegelund@microchip.com>");
-MODULE_LICENSE("Dual MIT/GPL");
diff --git a/drivers/reset/reset-mpfs.c b/drivers/reset/reset-mpfs.c
index e003e50590ec..0735076f3c84 100644
--- a/drivers/reset/reset-mpfs.c
+++ b/drivers/reset/reset-mpfs.c
@@ -151,7 +151,4 @@ static struct auxiliary_driver mpfs_reset_driver = {
module_auxiliary_driver(mpfs_reset_driver);
-MODULE_DESCRIPTION("Microchip PolarFire SoC Reset Driver");
-MODULE_AUTHOR("Conor Dooley <conor.dooley@microchip.com>");
-MODULE_LICENSE("GPL");
MODULE_IMPORT_NS(MCHP_CLK_MPFS);
diff --git a/drivers/soc/apple/apple-pmgr-pwrstate.c b/drivers/soc/apple/apple-pmgr-pwrstate.c
index e1122288409a..968272e7a38a 100644
--- a/drivers/soc/apple/apple-pmgr-pwrstate.c
+++ b/drivers/soc/apple/apple-pmgr-pwrstate.c
@@ -317,8 +317,5 @@ static struct platform_driver apple_pmgr_ps_driver = {
},
};
-MODULE_AUTHOR("Hector Martin <marcan@marcan.st>");
-MODULE_DESCRIPTION("PMGR power state driver for Apple SoCs");
-MODULE_LICENSE("GPL v2");
module_platform_driver(apple_pmgr_ps_driver);
diff --git a/drivers/soc/bcm/bcm2835-power.c b/drivers/soc/bcm/bcm2835-power.c
index 5bcd047768b6..6ff7a4612c18 100644
--- a/drivers/soc/bcm/bcm2835-power.c
+++ b/drivers/soc/bcm/bcm2835-power.c
@@ -715,6 +715,3 @@ static struct platform_driver bcm2835_power_driver = {
};
module_platform_driver(bcm2835_power_driver);
-MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
-MODULE_DESCRIPTION("Driver for Broadcom BCM2835 PM power domains and reset");
-MODULE_LICENSE("GPL");
diff --git a/drivers/soc/bcm/raspberrypi-power.c b/drivers/soc/bcm/raspberrypi-power.c
index 068715d6e66d..40b05ea991a2 100644
--- a/drivers/soc/bcm/raspberrypi-power.c
+++ b/drivers/soc/bcm/raspberrypi-power.c
@@ -240,7 +240,3 @@ static struct platform_driver rpi_power_driver = {
};
builtin_platform_driver(rpi_power_driver);
-MODULE_AUTHOR("Alexander Aring <aar@pengutronix.de>");
-MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
-MODULE_DESCRIPTION("Raspberry Pi power domain driver");
-MODULE_LICENSE("GPL v2");
diff --git a/drivers/soc/fujitsu/a64fx-diag.c b/drivers/soc/fujitsu/a64fx-diag.c
index d87f348427bf..84ee52116cdb 100644
--- a/drivers/soc/fujitsu/a64fx-diag.c
+++ b/drivers/soc/fujitsu/a64fx-diag.c
@@ -149,6 +149,3 @@ static struct platform_driver a64fx_diag_driver = {
module_platform_driver(a64fx_diag_driver);
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Hitomi Hasegawa <hasegawa-hitomi@fujitsu.com>");
-MODULE_DESCRIPTION("A64FX diag driver");
diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi_sram.c
index 92f9186c1c42..d704c9d7eac6 100644
--- a/drivers/soc/sunxi/sunxi_sram.c
+++ b/drivers/soc/sunxi/sunxi_sram.c
@@ -419,6 +419,3 @@ static struct platform_driver sunxi_sram_driver = {
};
builtin_platform_driver_probe(sunxi_sram_driver, sunxi_sram_probe);
-MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com>");
-MODULE_DESCRIPTION("Allwinner sunXi SRAM Controller Driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/soc/tegra/cbb/tegra194-cbb.c b/drivers/soc/tegra/cbb/tegra194-cbb.c
index 1ae0bd9a1ac1..0fb96b72735d 100644
--- a/drivers/soc/tegra/cbb/tegra194-cbb.c
+++ b/drivers/soc/tegra/cbb/tegra194-cbb.c
@@ -2359,6 +2359,3 @@ static void __exit tegra194_cbb_exit(void)
}
module_exit(tegra194_cbb_exit);
-MODULE_AUTHOR("Sumit Gupta <sumitg@nvidia.com>");
-MODULE_DESCRIPTION("Control Backbone error handling driver for Tegra194");
-MODULE_LICENSE("GPL");
diff --git a/drivers/soc/tegra/cbb/tegra234-cbb.c b/drivers/soc/tegra/cbb/tegra234-cbb.c
index 3528f9e15d5c..69fdd547eb3d 100644
--- a/drivers/soc/tegra/cbb/tegra234-cbb.c
+++ b/drivers/soc/tegra/cbb/tegra234-cbb.c
@@ -1109,5 +1109,3 @@ static void __exit tegra234_cbb_exit(void)
}
module_exit(tegra234_cbb_exit);
-MODULE_DESCRIPTION("Control Backbone 2.0 error handling driver for Tegra234");
-MODULE_LICENSE("GPL");
diff --git a/drivers/tty/n_null.c b/drivers/tty/n_null.c
index f913b665af72..d8719740bd11 100644
--- a/drivers/tty/n_null.c
+++ b/drivers/tty/n_null.c
@@ -63,7 +63,4 @@ static void __exit n_null_exit(void)
module_init(n_null_init);
module_exit(n_null_exit);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Alan Cox");
MODULE_ALIAS_LDISC(N_NULL);
-MODULE_DESCRIPTION("Null ldisc driver");
diff --git a/drivers/tty/serial/imx_earlycon.c b/drivers/tty/serial/imx_earlycon.c
index 7aab38b2bd8c..e1f6e117c4c0 100644
--- a/drivers/tty/serial/imx_earlycon.c
+++ b/drivers/tty/serial/imx_earlycon.c
@@ -45,6 +45,3 @@ imx_console_early_setup(struct earlycon_device *dev, const char *opt)
OF_EARLYCON_DECLARE(ec_imx6q, "fsl,imx6q-uart", imx_console_early_setup);
OF_EARLYCON_DECLARE(ec_imx21, "fsl,imx21-uart", imx_console_early_setup);
-MODULE_AUTHOR("NXP");
-MODULE_DESCRIPTION("IMX earlycon driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/tty/serial/rda-uart.c b/drivers/tty/serial/rda-uart.c
index 0e387e2144fa..2fe38d6e513c 100644
--- a/drivers/tty/serial/rda-uart.c
+++ b/drivers/tty/serial/rda-uart.c
@@ -824,6 +824,3 @@ static void __exit rda_uart_exit(void)
module_init(rda_uart_init);
module_exit(rda_uart_exit);
-MODULE_AUTHOR("Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>");
-MODULE_DESCRIPTION("RDA8810PL serial device driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c
index fcdf017e2665..8e13af1f9042 100644
--- a/drivers/video/console/vgacon.c
+++ b/drivers/video/console/vgacon.c
@@ -1204,4 +1204,3 @@ const struct consw vga_con = {
};
EXPORT_SYMBOL(vga_con);
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbdev/asiliantfb.c b/drivers/video/fbdev/asiliantfb.c
index 3818437a8f69..f1992da7e64e 100644
--- a/drivers/video/fbdev/asiliantfb.c
+++ b/drivers/video/fbdev/asiliantfb.c
@@ -629,4 +629,3 @@ static void __exit asiliantfb_exit(void)
pci_unregister_driver(&asiliantfb_driver);
}
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbdev/gbefb.c b/drivers/video/fbdev/gbefb.c
index 000b4aa44241..39e89b9f8dca 100644
--- a/drivers/video/fbdev/gbefb.c
+++ b/drivers/video/fbdev/gbefb.c
@@ -1285,4 +1285,3 @@ static void __exit gbefb_exit(void)
module_init(gbefb_init);
module_exit(gbefb_exit);
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbdev/imsttfb.c b/drivers/video/fbdev/imsttfb.c
index d7edb9c5d3a3..39562b0449a0 100644
--- a/drivers/video/fbdev/imsttfb.c
+++ b/drivers/video/fbdev/imsttfb.c
@@ -1631,7 +1631,6 @@ static void __exit imsttfb_exit(void)
pci_unregister_driver(&imsttfb_pci_driver);
}
-MODULE_LICENSE("GPL");
module_init(imsttfb_init);
module_exit(imsttfb_exit);
diff --git a/drivers/video/fbdev/mmp/hw/mmp_ctrl.c b/drivers/video/fbdev/mmp/hw/mmp_ctrl.c
index a9df8ee79810..531db18df108 100644
--- a/drivers/video/fbdev/mmp/hw/mmp_ctrl.c
+++ b/drivers/video/fbdev/mmp/hw/mmp_ctrl.c
@@ -574,6 +574,3 @@ static int mmphw_init(void)
}
module_init(mmphw_init);
-MODULE_AUTHOR("Li Guoqing<ligq@marvell.com>");
-MODULE_DESCRIPTION("Framebuffer driver for mmp");
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbdev/mmp/panel/tpo_tj032md01bw.c b/drivers/video/fbdev/mmp/panel/tpo_tj032md01bw.c
index 34fae588e202..1b6bf02b1d70 100644
--- a/drivers/video/fbdev/mmp/panel/tpo_tj032md01bw.c
+++ b/drivers/video/fbdev/mmp/panel/tpo_tj032md01bw.c
@@ -167,6 +167,3 @@ static struct spi_driver panel_tpohvga_driver = {
};
module_spi_driver(panel_tpohvga_driver);
-MODULE_AUTHOR("Lisa Du<cldu@marvell.com>");
-MODULE_DESCRIPTION("Panel driver for tpohvga");
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c
index 929d4775cb4b..73b35fc67d8b 100644
--- a/drivers/video/fbdev/vesafb.c
+++ b/drivers/video/fbdev/vesafb.c
@@ -508,4 +508,3 @@ static struct platform_driver vesafb_driver = {
};
module_platform_driver(vesafb_driver);
-MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbdev/wm8505fb.c b/drivers/video/fbdev/wm8505fb.c
index 8f4d674fa0d0..373d6d35845d 100644
--- a/drivers/video/fbdev/wm8505fb.c
+++ b/drivers/video/fbdev/wm8505fb.c
@@ -405,7 +405,4 @@ static struct platform_driver wm8505fb_driver = {
module_platform_driver(wm8505fb_driver);
-MODULE_AUTHOR("Ed Spiridonov <edo.rus@gmail.com>");
-MODULE_DESCRIPTION("Framebuffer driver for WMT WM8505");
-MODULE_LICENSE("GPL v2");
MODULE_DEVICE_TABLE(of, wmt_dt_ids);
diff --git a/drivers/video/fbdev/wmt_ge_rops.c b/drivers/video/fbdev/wmt_ge_rops.c
index 42255d27a1db..922ec9b15da3 100644
--- a/drivers/video/fbdev/wmt_ge_rops.c
+++ b/drivers/video/fbdev/wmt_ge_rops.c
@@ -167,8 +167,4 @@ static struct platform_driver wmt_ge_rops_driver = {
module_platform_driver(wmt_ge_rops_driver);
-MODULE_AUTHOR("Alexey Charkov <alchark@gmail.com>");
-MODULE_DESCRIPTION("Accelerators for raster operations using "
- "WonderMedia Graphics Engine");
-MODULE_LICENSE("GPL v2");
MODULE_DEVICE_TABLE(of, wmt_dt_ids);
diff --git a/drivers/xen/grant-dma-ops.c b/drivers/xen/grant-dma-ops.c
index daa525df7bdc..92f0d3d16d96 100644
--- a/drivers/xen/grant-dma-ops.c
+++ b/drivers/xen/grant-dma-ops.c
@@ -400,6 +400,3 @@ bool xen_virtio_restricted_mem_acc(struct virtio_device *dev)
return ret;
}
-MODULE_DESCRIPTION("Xen grant DMA-mapping layer");
-MODULE_AUTHOR("Juergen Gross <jgross@suse.com>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c
index 58b732dcbfb8..86c04f239e87 100644
--- a/drivers/xen/xenbus/xenbus_probe.c
+++ b/drivers/xen/xenbus/xenbus_probe.c
@@ -1066,4 +1066,3 @@ static int __init xenbus_init(void)
postcore_initcall(xenbus_init);
-MODULE_LICENSE("GPL");
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 6a11025e5850..4bc7efece674 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -2344,7 +2344,6 @@ static void __exit exit_elf_binfmt(void)
core_initcall(init_elf_binfmt);
module_exit(exit_elf_binfmt);
-MODULE_LICENSE("GPL");
#ifdef CONFIG_BINFMT_ELF_KUNIT_TEST
#include "binfmt_elf_test.c"
diff --git a/fs/nfs_common/nfs_ssc.c b/fs/nfs_common/nfs_ssc.c
index 7c1509e968c8..832246b22c51 100644
--- a/fs/nfs_common/nfs_ssc.c
+++ b/fs/nfs_common/nfs_ssc.c
@@ -12,7 +12,6 @@
#include <linux/nfs_ssc.h>
#include "../nfs/nfs4_fs.h"
-MODULE_LICENSE("GPL");
struct nfs_ssc_client_ops_tbl nfs_ssc_client_tbl;
EXPORT_SYMBOL_GPL(nfs_ssc_client_tbl);
diff --git a/fs/unicode/utf8-core.c b/fs/unicode/utf8-core.c
index 67aaadc3ab07..8395066341a4 100644
--- a/fs/unicode/utf8-core.c
+++ b/fs/unicode/utf8-core.c
@@ -214,4 +214,3 @@ void utf8_unload(struct unicode_map *um)
}
EXPORT_SYMBOL(utf8_unload);
-MODULE_LICENSE("GPL v2");
diff --git a/kernel/dma/map_benchmark.c b/kernel/dma/map_benchmark.c
index 0520a8f4fb1d..44fdbb0de1f3 100644
--- a/kernel/dma/map_benchmark.c
+++ b/kernel/dma/map_benchmark.c
@@ -354,6 +354,3 @@ static void __exit map_benchmark_cleanup(void)
module_init(map_benchmark_init);
module_exit(map_benchmark_cleanup);
-MODULE_AUTHOR("Barry Song <song.bao.hua@hisilicon.com>");
-MODULE_DESCRIPTION("dma_map benchmark driver");
-MODULE_LICENSE("GPL");
diff --git a/kernel/events/hw_breakpoint_test.c b/kernel/events/hw_breakpoint_test.c
index c57610f52bb4..692bfe95f067 100644
--- a/kernel/events/hw_breakpoint_test.c
+++ b/kernel/events/hw_breakpoint_test.c
@@ -329,5 +329,3 @@ static struct kunit_suite hw_breakpoint_test_suite = {
kunit_test_suites(&hw_breakpoint_test_suite);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Marco Elver <elver@google.com>");
diff --git a/kernel/trace/rv/reactor_panic.c b/kernel/trace/rv/reactor_panic.c
index d65f6c25a87c..2ab57e6d12bd 100644
--- a/kernel/trace/rv/reactor_panic.c
+++ b/kernel/trace/rv/reactor_panic.c
@@ -38,6 +38,3 @@ static void __exit unregister_react_panic(void)
module_init(register_react_panic);
module_exit(unregister_react_panic);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Daniel Bristot de Oliveira");
-MODULE_DESCRIPTION("panic rv reactor: panic if an exception is found.");
diff --git a/kernel/trace/rv/reactor_printk.c b/kernel/trace/rv/reactor_printk.c
index 4b6b7106a477..c8e1b3f8bb4e 100644
--- a/kernel/trace/rv/reactor_printk.c
+++ b/kernel/trace/rv/reactor_printk.c
@@ -37,6 +37,3 @@ static void __exit unregister_react_printk(void)
module_init(register_react_printk);
module_exit(unregister_react_printk);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Daniel Bristot de Oliveira");
-MODULE_DESCRIPTION("printk rv reactor: printk if an exception is hit.");
diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c
index a6f9bdd956c3..f1b4df16a63b 100644
--- a/kernel/watch_queue.c
+++ b/kernel/watch_queue.c
@@ -27,9 +27,6 @@
#include <linux/watch_queue.h>
#include <linux/pipe_fs_i.h>
-MODULE_DESCRIPTION("Watch queue");
-MODULE_AUTHOR("Red Hat, Inc.");
-MODULE_LICENSE("GPL");
#define WATCH_QUEUE_NOTE_SIZE 128
#define WATCH_QUEUE_NOTES_PER_PAGE (PAGE_SIZE / WATCH_QUEUE_NOTE_SIZE)
diff --git a/lib/btree.c b/lib/btree.c
index a82100c73b55..201de7eb1bbd 100644
--- a/lib/btree.c
+++ b/lib/btree.c
@@ -792,6 +792,3 @@ static void __exit btree_module_exit(void)
module_init(btree_module_init);
module_exit(btree_module_exit);
-MODULE_AUTHOR("Joern Engel <joern@logfs.org>");
-MODULE_AUTHOR("Johannes Berg <johannes@sipsolutions.net>");
-MODULE_LICENSE("GPL");
diff --git a/lib/crypto/blake2s-generic.c b/lib/crypto/blake2s-generic.c
index 75ccb3e633e6..d9483fb0da5b 100644
--- a/lib/crypto/blake2s-generic.c
+++ b/lib/crypto/blake2s-generic.c
@@ -110,6 +110,3 @@ void blake2s_compress_generic(struct blake2s_state *state, const u8 *block,
EXPORT_SYMBOL(blake2s_compress_generic);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("BLAKE2s hash function");
-MODULE_AUTHOR("Jason A. Donenfeld <Jason@zx2c4.com>");
diff --git a/lib/crypto/blake2s.c b/lib/crypto/blake2s.c
index 98e688c6d891..3a55fc138399 100644
--- a/lib/crypto/blake2s.c
+++ b/lib/crypto/blake2s.c
@@ -67,6 +67,3 @@ static int __init blake2s_mod_init(void)
}
module_init(blake2s_mod_init);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("BLAKE2s hash function");
-MODULE_AUTHOR("Jason A. Donenfeld <Jason@zx2c4.com>");
diff --git a/lib/glob.c b/lib/glob.c
index 15b73f490720..5cad078f0b4f 100644
--- a/lib/glob.c
+++ b/lib/glob.c
@@ -6,8 +6,6 @@
* ATA code that depends on it can be as well. In practice, they're
* both usually compiled in and the module overhead goes away.
*/
-MODULE_DESCRIPTION("glob(7) matching");
-MODULE_LICENSE("Dual MIT/GPL");
/**
* glob_match - Shell-style pattern matching, like !fnmatch(pat, str, 0)
diff --git a/lib/packing.c b/lib/packing.c
index 9a72f4bbf0e2..cfa5167c84b1 100644
--- a/lib/packing.c
+++ b/lib/packing.c
@@ -210,5 +210,3 @@ int packing(void *pbuf, u64 *uval, int startbit, int endbit, size_t pbuflen,
}
EXPORT_SYMBOL(packing);
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("Generic bitfield packing and unpacking");
diff --git a/lib/pldmfw/pldmfw.c b/lib/pldmfw/pldmfw.c
index 6e77eb6d8e72..816c4c6f8a47 100644
--- a/lib/pldmfw/pldmfw.c
+++ b/lib/pldmfw/pldmfw.c
@@ -874,6 +874,3 @@ int pldmfw_flash_image(struct pldmfw *context, const struct firmware *fw)
}
EXPORT_SYMBOL(pldmfw_flash_image);
-MODULE_AUTHOR("Jacob Keller <jacob.e.keller@intel.com>");
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("PLDM firmware flash update library");
diff --git a/lib/test_fprobe.c b/lib/test_fprobe.c
index e0381b3ec410..692c1438ed58 100644
--- a/lib/test_fprobe.c
+++ b/lib/test_fprobe.c
@@ -171,4 +171,3 @@ static struct kunit_suite fprobe_test_suite = {
kunit_test_suites(&fprobe_test_suite);
-MODULE_LICENSE("GPL");
diff --git a/mm/zpool.c b/mm/zpool.c
index 68facc193496..03bf00a404c8 100644
--- a/mm/zpool.c
+++ b/mm/zpool.c
@@ -394,6 +394,3 @@ bool zpool_can_sleep_mapped(struct zpool *zpool)
return zpool->can_sleep_mapped;
}
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Dan Streetman <ddstreet@ieee.org>");
-MODULE_DESCRIPTION("Common API for compressed memory storage");
diff --git a/mm/zswap.c b/mm/zswap.c
index 2d48fd59cc7a..add3d5b55bd0 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -1537,6 +1537,3 @@ static int __init init_zswap(void)
/* must be late so crypto has time to come up */
late_initcall(init_zswap);
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Seth Jennings <sjennings@variantweb.net>");
-MODULE_DESCRIPTION("Compressed cache for swap pages");
diff --git a/net/mctp/af_mctp.c b/net/mctp/af_mctp.c
index fc9e728b6333..597ddd40645c 100644
--- a/net/mctp/af_mctp.c
+++ b/net/mctp/af_mctp.c
@@ -693,8 +693,5 @@ static __exit void mctp_exit(void)
subsys_initcall(mctp_init);
module_exit(mctp_exit);
-MODULE_DESCRIPTION("MCTP core");
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Jeremy Kerr <jk@codeconstruct.com.au>");
MODULE_ALIAS_NETPROTO(PF_MCTP);
--
2.38.0.266.g481848f278
^ permalink raw reply related [relevance 1%]
* [PATCH 5.4-] PM/devfreq: governor: Add a private governor_data for governor
@ 2022-12-02 2:38 15% Kant Fan
0 siblings, 0 replies; 200+ results
From: Kant Fan @ 2022-12-02 2:38 UTC (permalink / raw)
To: myungjoo.ham, kyungmin.park; +Cc: cw00.choi, linux-pm, linux-kernel, stable
Commit fbd567e56942ecc4da906c4f3f3652c94773af5b upstream.
The member void *data in the structure devfreq can be overwrite
by governor_userspace. For example:
1. The device driver assigned the devfreq governor to simple_ondemand
by the function devfreq_add_device() and init the devfreq member
void *data to a pointer of a static structure devfreq_simple_ondemand_data
by the function devfreq_add_device().
2. The user changed the devfreq governor to userspace by the command
"echo userspace > /sys/class/devfreq/.../governor".
3. The governor userspace alloced a dynamic memory for the struct
userspace_data and assigend the member void *data of devfreq to
this memory by the function userspace_init().
4. The user changed the devfreq governor back to simple_ondemand
by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
5. The governor userspace exited and assigned the member void *data
in the structure devfreq to NULL by the function userspace_exit().
6. The governor simple_ondemand fetched the static information of
devfreq_simple_ondemand_data in the function
devfreq_simple_ondemand_func() but the member void *data of devfreq was
assigned to NULL by the function userspace_exit().
7. The information of upthreshold and downdifferential is lost
and the governor simple_ondemand can't work correctly.
The member void *data in the structure devfreq is designed for
a static pointer used in a governor and inited by the function
devfreq_add_device(). This patch add an element named governor_data
in the devfreq structure which can be used by a governor(E.g userspace)
who want to assign a private data to do some private things.
Fixes: ce26c5bb9569 ("PM / devfreq: Add basic governors")
Cc: stable@vger.kernel.org # 5.4-
Signed-off-by: Kant Fan <kant@allwinnertech.com>
---
drivers/devfreq/devfreq.c | 6 ++----
drivers/devfreq/governor_userspace.c | 12 ++++++------
include/linux/devfreq.h | 7 ++++---
3 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index c79652ee94be..93efaf69d08e 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -603,8 +603,7 @@ static void devfreq_dev_release(struct device *dev)
* @dev: the device to add devfreq feature.
* @profile: device-specific profile to run devfreq.
* @governor_name: name of the policy to choose frequency.
- * @data: private data for the governor. The devfreq framework does not
- * touch this value.
+ * @data: devfreq driver pass to governors, governor should not change it.
*/
struct devfreq *devfreq_add_device(struct device *dev,
struct devfreq_dev_profile *profile,
@@ -788,8 +787,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)
* @dev: the device to add devfreq feature.
* @profile: device-specific profile to run devfreq.
* @governor_name: name of the policy to choose frequency.
- * @data: private data for the governor. The devfreq framework does not
- * touch this value.
+ * @data: devfreq driver pass to governors, governor should not change it.
*
* This function manages automatically the memory of devfreq device using device
* resource management and simplify the free operation for memory of devfreq
diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
index af94942fcf95..a3ae4dc4668b 100644
--- a/drivers/devfreq/governor_userspace.c
+++ b/drivers/devfreq/governor_userspace.c
@@ -21,7 +21,7 @@ struct userspace_data {
static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
{
- struct userspace_data *data = df->data;
+ struct userspace_data *data = df->governor_data;
if (data->valid)
*freq = data->user_frequency;
@@ -40,7 +40,7 @@ static ssize_t store_freq(struct device *dev, struct device_attribute *attr,
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
sscanf(buf, "%lu", &wanted);
data->user_frequency = wanted;
@@ -60,7 +60,7 @@ static ssize_t show_freq(struct device *dev, struct device_attribute *attr,
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
if (data->valid)
err = sprintf(buf, "%lu\n", data->user_frequency);
@@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
goto out;
}
data->valid = false;
- devfreq->data = data;
+ devfreq->governor_data = data;
err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
out:
@@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
if (devfreq->dev.kobj.sd)
sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
- kfree(devfreq->data);
- devfreq->data = NULL;
+ kfree(devfreq->governor_data);
+ devfreq->governor_data = NULL;
}
static int devfreq_userspace_handler(struct devfreq *devfreq,
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 2bae9ed3c783..6cbc6d1ae32f 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -121,8 +121,8 @@ struct devfreq_dev_profile {
* devfreq.nb to the corresponding register notifier call chain.
* @work: delayed work for load monitoring.
* @previous_freq: previously configured frequency value.
- * @data: Private data of the governor. The devfreq framework does not
- * touch this.
+ * @data: devfreq driver pass to governors, governor should not change it.
+ * @governor_data: private data for governors, devfreq core doesn't touch it.
* @min_freq: Limit minimum frequency requested by user (0: none)
* @max_freq: Limit maximum frequency requested by user (0: none)
* @scaling_min_freq: Limit minimum frequency requested by OPP interface
@@ -159,7 +159,8 @@ struct devfreq {
unsigned long previous_freq;
struct devfreq_dev_status last_status;
- void *data; /* private data for governors */
+ void *data;
+ void *governor_data;
unsigned long min_freq;
unsigned long max_freq;
--
2.29.0
^ permalink raw reply related [relevance 15%]
* Re: [PATCH v2] mmc:mmc-hsq:use fifo to dispatch mmc_request
2022-11-28 9:38 17% [PATCH v2] mmc:mmc-hsq:use fifo to dispatch mmc_request Michael Wu
@ 2022-11-29 12:54 6% ` Ulf Hansson
0 siblings, 0 replies; 200+ results
From: Ulf Hansson @ 2022-11-29 12:54 UTC (permalink / raw)
To: Michael Wu; +Cc: wenchao.chen, linux-mmc, linux-kernel
On Mon, 28 Nov 2022 at 10:38, Michael Wu <michael@allwinnertech.com> wrote:
>
> Current next_tag selection will cause a large delay in some requests and
> destroy the scheduling results of the block scheduling layer. Because the
> issued mrq tags cannot ensure that each time is sequential, especially when
> the IO load is heavy. In the fio performance test, we found that 4k random
> read data was sent to mmc_hsq to start calling request_atomic It takes
> nearly 200ms to process the request, while mmc_hsq has processed thousands
> of other requests. So we use fifo here to ensure the first in, first out
> feature of the request and avoid adding additional delay to the request.
>
> Reviewed-by: Wenchao Chen <wenchao.chen@unisoc.com>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
Applied for next, thanks!
Kind regards
Uffe
> ---
> drivers/mmc/host/mmc_hsq.c | 40 ++++++++++++++------------------------
> drivers/mmc/host/mmc_hsq.h | 5 +++++
> 2 files changed, 20 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/mmc/host/mmc_hsq.c b/drivers/mmc/host/mmc_hsq.c
> index 9d35453e7371..424dc7b07858 100644
> --- a/drivers/mmc/host/mmc_hsq.c
> +++ b/drivers/mmc/host/mmc_hsq.c
> @@ -13,9 +13,6 @@
>
> #include "mmc_hsq.h"
>
> -#define HSQ_NUM_SLOTS 64
> -#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
> -
> static void mmc_hsq_retry_handler(struct work_struct *work)
> {
> struct mmc_hsq *hsq = container_of(work, struct mmc_hsq, retry_work);
> @@ -73,7 +70,6 @@ static void mmc_hsq_pump_requests(struct mmc_hsq *hsq)
>
> static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
> {
> - struct hsq_slot *slot;
> int tag;
>
> /*
> @@ -82,29 +78,12 @@ static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
> */
> if (!remains) {
> hsq->next_tag = HSQ_INVALID_TAG;
> + hsq->tail_tag = HSQ_INVALID_TAG;
> return;
> }
>
> - /*
> - * Increasing the next tag and check if the corresponding request is
> - * available, if yes, then we found a candidate request.
> - */
> - if (++hsq->next_tag != HSQ_INVALID_TAG) {
> - slot = &hsq->slot[hsq->next_tag];
> - if (slot->mrq)
> - return;
> - }
> -
> - /* Othersie we should iterate all slots to find a available tag. */
> - for (tag = 0; tag < HSQ_NUM_SLOTS; tag++) {
> - slot = &hsq->slot[tag];
> - if (slot->mrq)
> - break;
> - }
> -
> - if (tag == HSQ_NUM_SLOTS)
> - tag = HSQ_INVALID_TAG;
> -
> + tag = hsq->tag_slot[hsq->next_tag];
> + hsq->tag_slot[hsq->next_tag] = HSQ_INVALID_TAG;
> hsq->next_tag = tag;
> }
>
> @@ -233,8 +212,14 @@ static int mmc_hsq_request(struct mmc_host *mmc, struct mmc_request *mrq)
> * Set the next tag as current request tag if no available
> * next tag.
> */
> - if (hsq->next_tag == HSQ_INVALID_TAG)
> + if (hsq->next_tag == HSQ_INVALID_TAG) {
> hsq->next_tag = tag;
> + hsq->tail_tag = tag;
> + hsq->tag_slot[hsq->tail_tag] = HSQ_INVALID_TAG;
> + } else {
> + hsq->tag_slot[hsq->tail_tag] = tag;
> + hsq->tail_tag = tag;
> + }
>
> hsq->qcnt++;
>
> @@ -339,8 +324,10 @@ static const struct mmc_cqe_ops mmc_hsq_ops = {
>
> int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
> {
> + int i;
> hsq->num_slots = HSQ_NUM_SLOTS;
> hsq->next_tag = HSQ_INVALID_TAG;
> + hsq->tail_tag = HSQ_INVALID_TAG;
>
> hsq->slot = devm_kcalloc(mmc_dev(mmc), hsq->num_slots,
> sizeof(struct hsq_slot), GFP_KERNEL);
> @@ -351,6 +338,9 @@ int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
> hsq->mmc->cqe_private = hsq;
> mmc->cqe_ops = &mmc_hsq_ops;
>
> + for (i = 0; i < HSQ_NUM_SLOTS; i++)
> + hsq->tag_slot[i] = HSQ_INVALID_TAG;
> +
> INIT_WORK(&hsq->retry_work, mmc_hsq_retry_handler);
> spin_lock_init(&hsq->lock);
> init_waitqueue_head(&hsq->wait_queue);
> diff --git a/drivers/mmc/host/mmc_hsq.h b/drivers/mmc/host/mmc_hsq.h
> index ffdd9cd172c3..1808024fc6c5 100644
> --- a/drivers/mmc/host/mmc_hsq.h
> +++ b/drivers/mmc/host/mmc_hsq.h
> @@ -2,6 +2,9 @@
> #ifndef LINUX_MMC_HSQ_H
> #define LINUX_MMC_HSQ_H
>
> +#define HSQ_NUM_SLOTS 64
> +#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
> +
> struct hsq_slot {
> struct mmc_request *mrq;
> };
> @@ -17,6 +20,8 @@ struct mmc_hsq {
> int next_tag;
> int num_slots;
> int qcnt;
> + int tail_tag;
> + int tag_slot[HSQ_NUM_SLOTS];
>
> bool enabled;
> bool waiting_for_idle;
> --
> 2.29.0
>
^ permalink raw reply [relevance 6%]
* [PATCH v2] mmc:mmc-hsq:use fifo to dispatch mmc_request
@ 2022-11-28 9:38 17% Michael Wu
2022-11-29 12:54 6% ` Ulf Hansson
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-11-28 9:38 UTC (permalink / raw)
To: ulf.hansson, wenchao.chen; +Cc: linux-mmc, linux-kernel
Current next_tag selection will cause a large delay in some requests and
destroy the scheduling results of the block scheduling layer. Because the
issued mrq tags cannot ensure that each time is sequential, especially when
the IO load is heavy. In the fio performance test, we found that 4k random
read data was sent to mmc_hsq to start calling request_atomic It takes
nearly 200ms to process the request, while mmc_hsq has processed thousands
of other requests. So we use fifo here to ensure the first in, first out
feature of the request and avoid adding additional delay to the request.
Reviewed-by: Wenchao Chen <wenchao.chen@unisoc.com>
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/mmc/host/mmc_hsq.c | 40 ++++++++++++++------------------------
drivers/mmc/host/mmc_hsq.h | 5 +++++
2 files changed, 20 insertions(+), 25 deletions(-)
diff --git a/drivers/mmc/host/mmc_hsq.c b/drivers/mmc/host/mmc_hsq.c
index 9d35453e7371..424dc7b07858 100644
--- a/drivers/mmc/host/mmc_hsq.c
+++ b/drivers/mmc/host/mmc_hsq.c
@@ -13,9 +13,6 @@
#include "mmc_hsq.h"
-#define HSQ_NUM_SLOTS 64
-#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
-
static void mmc_hsq_retry_handler(struct work_struct *work)
{
struct mmc_hsq *hsq = container_of(work, struct mmc_hsq, retry_work);
@@ -73,7 +70,6 @@ static void mmc_hsq_pump_requests(struct mmc_hsq *hsq)
static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
{
- struct hsq_slot *slot;
int tag;
/*
@@ -82,29 +78,12 @@ static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
*/
if (!remains) {
hsq->next_tag = HSQ_INVALID_TAG;
+ hsq->tail_tag = HSQ_INVALID_TAG;
return;
}
- /*
- * Increasing the next tag and check if the corresponding request is
- * available, if yes, then we found a candidate request.
- */
- if (++hsq->next_tag != HSQ_INVALID_TAG) {
- slot = &hsq->slot[hsq->next_tag];
- if (slot->mrq)
- return;
- }
-
- /* Othersie we should iterate all slots to find a available tag. */
- for (tag = 0; tag < HSQ_NUM_SLOTS; tag++) {
- slot = &hsq->slot[tag];
- if (slot->mrq)
- break;
- }
-
- if (tag == HSQ_NUM_SLOTS)
- tag = HSQ_INVALID_TAG;
-
+ tag = hsq->tag_slot[hsq->next_tag];
+ hsq->tag_slot[hsq->next_tag] = HSQ_INVALID_TAG;
hsq->next_tag = tag;
}
@@ -233,8 +212,14 @@ static int mmc_hsq_request(struct mmc_host *mmc, struct mmc_request *mrq)
* Set the next tag as current request tag if no available
* next tag.
*/
- if (hsq->next_tag == HSQ_INVALID_TAG)
+ if (hsq->next_tag == HSQ_INVALID_TAG) {
hsq->next_tag = tag;
+ hsq->tail_tag = tag;
+ hsq->tag_slot[hsq->tail_tag] = HSQ_INVALID_TAG;
+ } else {
+ hsq->tag_slot[hsq->tail_tag] = tag;
+ hsq->tail_tag = tag;
+ }
hsq->qcnt++;
@@ -339,8 +324,10 @@ static const struct mmc_cqe_ops mmc_hsq_ops = {
int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
{
+ int i;
hsq->num_slots = HSQ_NUM_SLOTS;
hsq->next_tag = HSQ_INVALID_TAG;
+ hsq->tail_tag = HSQ_INVALID_TAG;
hsq->slot = devm_kcalloc(mmc_dev(mmc), hsq->num_slots,
sizeof(struct hsq_slot), GFP_KERNEL);
@@ -351,6 +338,9 @@ int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
hsq->mmc->cqe_private = hsq;
mmc->cqe_ops = &mmc_hsq_ops;
+ for (i = 0; i < HSQ_NUM_SLOTS; i++)
+ hsq->tag_slot[i] = HSQ_INVALID_TAG;
+
INIT_WORK(&hsq->retry_work, mmc_hsq_retry_handler);
spin_lock_init(&hsq->lock);
init_waitqueue_head(&hsq->wait_queue);
diff --git a/drivers/mmc/host/mmc_hsq.h b/drivers/mmc/host/mmc_hsq.h
index ffdd9cd172c3..1808024fc6c5 100644
--- a/drivers/mmc/host/mmc_hsq.h
+++ b/drivers/mmc/host/mmc_hsq.h
@@ -2,6 +2,9 @@
#ifndef LINUX_MMC_HSQ_H
#define LINUX_MMC_HSQ_H
+#define HSQ_NUM_SLOTS 64
+#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
+
struct hsq_slot {
struct mmc_request *mrq;
};
@@ -17,6 +20,8 @@ struct mmc_hsq {
int next_tag;
int num_slots;
int qcnt;
+ int tail_tag;
+ int tag_slot[HSQ_NUM_SLOTS];
bool enabled;
bool waiting_for_idle;
--
2.29.0
^ permalink raw reply related [relevance 17%]
* Re: [PATCH] mmc:mmc-hsq:use fifo to dispatch mmc_request
2022-11-28 3:55 11% ` Michael Wu
@ 2022-11-28 5:51 6% ` Wenchao Chen
0 siblings, 0 replies; 200+ results
From: Wenchao Chen @ 2022-11-28 5:51 UTC (permalink / raw)
To: Michael Wu
Cc: ulf.hansson, wenchao.chen, linux-mmc, linux-kernel, baolin.wang
On Mon, Nov 28, 2022 at 11:55 AM Michael Wu <michael@allwinnertech.com> wrote:
>
> On 11/24/2022 10:56 AM, Wenchao Chen wrote:
> > On Mon, Nov 21, 2022 at 2:19 PM Michael Wu <michael@allwinnertech.com> wrote:
> >>
> >> On 11/18/2022 7:43 PM, Wenchao Chen wrote:
> >>> On Fri, Nov 18, 2022 at 1:52 PM Michael Wu <michael@allwinnertech.com> wrote:
> >>>>
> >>>> Current next_tag selection will cause a large delay in some requests and
> >>>> destroy the scheduling results of the block scheduling layer. Because the
> >>>> issued mrq tags cannot ensure that each time is sequential, especially when
> >>>> the IO load is heavy. In the fio performance test, we found that 4k random
> >>>> read data was sent to mmc_hsq to start calling request_atomic It takes
> >>>> nearly 200ms to process the request, while mmc_hsq has processed thousands
> >>>> of other requests. So we use fifo here to ensure the first in, first out
> >>>> feature of the request and avoid adding additional delay to the request.
> >>>>
> >>>
> >>> Hi Michael
> >>> Is the test device an eMMC?
> >>> Could you share the fio test command if you want?
> >>> Can you provide more logs?
> >>>
> >> Hi Wenchao,
> >> Yes, the tested device is emmc.
> >> The test command we used is `./fio -name=Rand_Read_IOPS_Test
> >> -group_reporting -rw=random -bs=4K -numjobs=8 -directory=/data/data
> >> -size=1G -io_size=64M -nrfiles=1 -direct=1 -thread && rm
> >> /data/Rand_Read_IOPS_Test *`, which replaces the io performance random
> >> read performance test of androidbench, and the file size is set to 1G, 8
> >> thread test configuration. Where /data uses f2fs and /data/data is a
> >> file encrypted path.
> >>
> >> After enabling the hsq configuration, we can clearly see from below fio
> >> test log that the minimum value of random reading is 3175 iops and the
> >> maximum value is 8554iops, and the maximum delay of io completion is
> >> about 200ms.
> >> ```
> >> clat percentiles (usec):
> >> | 1.00th=[ 498], 5.00th=[ 865], 10.00th=[ 963], 20.00th=[
> >> 1045],
> >> | 30.00th=[ 1090], 40.00th=[ 1139], 50.00th=[ 1172], 60.00th=[
> >> 1221],
> >> | 70.00th=[ 1254], 80.00th=[ 1319], 90.00th=[ 1401], 95.00th=[
> >> 1614],
> >> | 99.00th=[ 2769], 99.50th=[ 3589], 99.90th=[ 31589], 99.95th=[
> >> 66323],
> >> | 99.99th=[200279]
> >> bw ( KiB/s): min=12705, max=34225, per=100.00%, avg=23931.79,
> >> stdev=497.40, samples=345
> >> iops : min= 3175, max= 8554, avg=5981.67, stdev=124.38,
> >> samples=345
> >> ```
> >>
> >>
> >> ```
> >> clat percentiles (usec):
> >> | 1.00th=[ 799], 5.00th=[ 938], 10.00th=[ 963], 20.00th=[ 979],
> >> | 30.00th=[ 996], 40.00th=[ 1004], 50.00th=[ 1020], 60.00th=[ 1045],
> >> | 70.00th=[ 1074], 80.00th=[ 1106], 90.00th=[ 1172], 95.00th=[ 1237],
> >> | 99.00th=[ 1450], 99.50th=[ 1516], 99.90th=[ 1762], 99.95th=[ 2180],
> >> | 99.99th=[ 9503]
> >> bw ( KiB/s): min=29200, max=30944, per=100.00%, avg=30178.91,
> >> stdev=53.45, samples=272
> >> iops : min= 7300, max= 7736, avg=7544.62, stdev=13.38,
> >> samples=272
> >> ```
> >> When NOT enabling hsq, the minimum value of random reading is 7300 iops
> >> and the maximum value is 7736 iops, and the maximum delay of io is only
> >> 9 ms. Finally, we added debug to the mmc driver. The reason for locating
> >> the 200ms delay of hsq is due to the next tag selection of hsq.
> >>
> >
> > Thank you very much for your Log. This patch can reduce latency, but I
> > have some questions:
> > 1. FIO -rw does not have random, but it does have randread. Do you use
> > randread? In addition, "IO_SIZE=64M" means only 64M data is tested?
> > Refer to FIO:
> > https://fio.readthedocs.io/en/latest/fio_doc.html?highlight=io_size#cmdoption-arg-io-size
> Hi Wenchao,
>
> Yes, I used "randread". (Sorry, I wrote the parameter "random"
> incorrectly.) The reason why I used "io_size=64M" is that I found the
> performance of hsq was degraded when using the AndroBench for testing on
> android13. Therefore, fio is used to simulate the AndroBench for
> debugging. The AndroBench is configured with 8 threads while 1G files
> per thread, and only 64M data for random read testing(This item is not
> configurable).
>
> > 2. The style of "tag_tail" should remain the same as that of
> > "next_tag". Would "tail_tag" be better?
> Thank you for your suggestion. I'll modify 'tag_tail' as 'tail_tag'.
>
> > 3. It is better to provide a comparison of sequential read, sequential
> > write and random writeHere is the performance data tested by AndroBench:
>
> -------------------------------------------------------------------------
> io performance data from AndroBench (filesize=1G, 8 threads)
> -------------------------------------------------------------------------
> mmc configure | original hsq | without hsq | hsq with this patch
> -------------------------------------------------------------------------
> Sequential write 58.23 MB/s 51.35 MB/s 56.15 MB/s
> Sequential read 138.24 MB/s 143.65 MB/s 146.4 MB/s
> random write 2900.11 iops 1887.13 iops 2982.02 iops
> random read 4764.45 iops 5485.19 iops 6786.42 iops
>
> Here's a preview of patch-v2. If it's OK, I'll submit it soon. Thank you.
>
> --
> mmc:mmc-hsq:use fifo to dispatch mmc_request
>
> Current next_tag selection will cause a large delay in some requests and
> destroy the scheduling results of the block scheduling layer. Because
> the issued mrq tags cannot ensure that each time is sequential,
> especially when the IO load is heavy. In the fio performance test, we
> found that 4k random read data was sent to mmc_hsq to start calling
> request_atomic It takes nearly 200ms to process the request, while
> mmc_hsq has processed thousands of other requests. So we use fifo here
> to ensure the first in, first out feature of the request and avoid
> adding additional delay to the request.
>
> diff --git a/drivers/mmc/host/mmc_hsq.c b/drivers/mmc/host/mmc_hsq.c
> index 9d35453e7371..424dc7b07858 100644
> --- a/drivers/mmc/host/mmc_hsq.c
> +++ b/drivers/mmc/host/mmc_hsq.c
> @@ -13,9 +13,6 @@
>
> #include "mmc_hsq.h"
>
> -#define HSQ_NUM_SLOTS 64
> -#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
> -
> static void mmc_hsq_retry_handler(struct work_struct *work)
> {
> struct mmc_hsq *hsq = container_of(work, struct mmc_hsq, retry_work);
> @@ -73,7 +70,6 @@ static void mmc_hsq_pump_requests(struct mmc_hsq *hsq)
>
> static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
> {
> - struct hsq_slot *slot;
> int tag;
>
> /*
> @@ -82,29 +78,12 @@ static void mmc_hsq_update_next_tag(struct mmc_hsq
> *hsq, int remains)
> */
> if (!remains) {
> hsq->next_tag = HSQ_INVALID_TAG;
> + hsq->tail_tag = HSQ_INVALID_TAG;
> return;
> }
>
> - /*
> - * Increasing the next tag and check if the corresponding request is
> - * available, if yes, then we found a candidate request.
> - */
> - if (++hsq->next_tag != HSQ_INVALID_TAG) {
> - slot = &hsq->slot[hsq->next_tag];
> - if (slot->mrq)
> - return;
> - }
> -
> - /* Othersie we should iterate all slots to find a available tag. */
> - for (tag = 0; tag < HSQ_NUM_SLOTS; tag++) {
> - slot = &hsq->slot[tag];
> - if (slot->mrq)
> - break;
> - }
> -
> - if (tag == HSQ_NUM_SLOTS)
> - tag = HSQ_INVALID_TAG;
> -
> + tag = hsq->tag_slot[hsq->next_tag];
> + hsq->tag_slot[hsq->next_tag] = HSQ_INVALID_TAG;
> hsq->next_tag = tag;
> }
>
> @@ -233,8 +212,14 @@ static int mmc_hsq_request(struct mmc_host *mmc,
> struct mmc_request *mrq)
> * Set the next tag as current request tag if no available
> * next tag.
> */
> - if (hsq->next_tag == HSQ_INVALID_TAG)
> + if (hsq->next_tag == HSQ_INVALID_TAG) {
> hsq->next_tag = tag;
> + hsq->tail_tag = tag;
> + hsq->tag_slot[hsq->tail_tag] = HSQ_INVALID_TAG;
> + } else {
> + hsq->tag_slot[hsq->tail_tag] = tag;
> + hsq->tail_tag = tag;
> + }
>
> hsq->qcnt++;
>
> @@ -339,8 +324,10 @@ static const struct mmc_cqe_ops mmc_hsq_ops = {
>
> int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
> {
> + int i;
> hsq->num_slots = HSQ_NUM_SLOTS;
> hsq->next_tag = HSQ_INVALID_TAG;
> + hsq->tail_tag = HSQ_INVALID_TAG;
>
> hsq->slot = devm_kcalloc(mmc_dev(mmc), hsq->num_slots,
> sizeof(struct hsq_slot), GFP_KERNEL);
> @@ -351,6 +338,9 @@ int mmc_hsq_init(struct mmc_hsq *hsq, struct
> mmc_host *mmc)
> hsq->mmc->cqe_private = hsq;
> mmc->cqe_ops = &mmc_hsq_ops;
>
> + for (i = 0; i < HSQ_NUM_SLOTS; i++)
> + hsq->tag_slot[i] = HSQ_INVALID_TAG;
> +
> INIT_WORK(&hsq->retry_work, mmc_hsq_retry_handler);
> spin_lock_init(&hsq->lock);
> init_waitqueue_head(&hsq->wait_queue);
> diff --git a/drivers/mmc/host/mmc_hsq.h b/drivers/mmc/host/mmc_hsq.h
> index ffdd9cd172c3..1808024fc6c5 100644
> --- a/drivers/mmc/host/mmc_hsq.h
> +++ b/drivers/mmc/host/mmc_hsq.h
> @@ -2,6 +2,9 @@
> #ifndef LINUX_MMC_HSQ_H
> #define LINUX_MMC_HSQ_H
>
> +#define HSQ_NUM_SLOTS 64
> +#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
> +
> struct hsq_slot {
> struct mmc_request *mrq;
> };
> @@ -17,6 +20,8 @@ struct mmc_hsq {
> int next_tag;
> int num_slots;
> int qcnt;
> + int tail_tag;
> + int tag_slot[HSQ_NUM_SLOTS];
>
> bool enabled;
> bool waiting_for_idle;
>
> --
> Regards,
> Michael Wu
That's very good, thanks.
Cc: baolin.wang@linux.alibaba.com
Reviewed-by: Wenchao Chen <wenchao.chen@unisoc.com>
^ permalink raw reply [relevance 6%]
* Re: [PATCH] mmc:mmc-hsq:use fifo to dispatch mmc_request
2022-11-24 2:56 6% ` Wenchao Chen
@ 2022-11-28 3:55 11% ` Michael Wu
2022-11-28 5:51 6% ` Wenchao Chen
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-11-28 3:55 UTC (permalink / raw)
To: Wenchao Chen; +Cc: ulf.hansson, wenchao.chen, linux-mmc, linux-kernel
On 11/24/2022 10:56 AM, Wenchao Chen wrote:
> On Mon, Nov 21, 2022 at 2:19 PM Michael Wu <michael@allwinnertech.com> wrote:
>>
>> On 11/18/2022 7:43 PM, Wenchao Chen wrote:
>>> On Fri, Nov 18, 2022 at 1:52 PM Michael Wu <michael@allwinnertech.com> wrote:
>>>>
>>>> Current next_tag selection will cause a large delay in some requests and
>>>> destroy the scheduling results of the block scheduling layer. Because the
>>>> issued mrq tags cannot ensure that each time is sequential, especially when
>>>> the IO load is heavy. In the fio performance test, we found that 4k random
>>>> read data was sent to mmc_hsq to start calling request_atomic It takes
>>>> nearly 200ms to process the request, while mmc_hsq has processed thousands
>>>> of other requests. So we use fifo here to ensure the first in, first out
>>>> feature of the request and avoid adding additional delay to the request.
>>>>
>>>
>>> Hi Michael
>>> Is the test device an eMMC?
>>> Could you share the fio test command if you want?
>>> Can you provide more logs?
>>>
>> Hi Wenchao,
>> Yes, the tested device is emmc.
>> The test command we used is `./fio -name=Rand_Read_IOPS_Test
>> -group_reporting -rw=random -bs=4K -numjobs=8 -directory=/data/data
>> -size=1G -io_size=64M -nrfiles=1 -direct=1 -thread && rm
>> /data/Rand_Read_IOPS_Test *`, which replaces the io performance random
>> read performance test of androidbench, and the file size is set to 1G, 8
>> thread test configuration. Where /data uses f2fs and /data/data is a
>> file encrypted path.
>>
>> After enabling the hsq configuration, we can clearly see from below fio
>> test log that the minimum value of random reading is 3175 iops and the
>> maximum value is 8554iops, and the maximum delay of io completion is
>> about 200ms.
>> ```
>> clat percentiles (usec):
>> | 1.00th=[ 498], 5.00th=[ 865], 10.00th=[ 963], 20.00th=[
>> 1045],
>> | 30.00th=[ 1090], 40.00th=[ 1139], 50.00th=[ 1172], 60.00th=[
>> 1221],
>> | 70.00th=[ 1254], 80.00th=[ 1319], 90.00th=[ 1401], 95.00th=[
>> 1614],
>> | 99.00th=[ 2769], 99.50th=[ 3589], 99.90th=[ 31589], 99.95th=[
>> 66323],
>> | 99.99th=[200279]
>> bw ( KiB/s): min=12705, max=34225, per=100.00%, avg=23931.79,
>> stdev=497.40, samples=345
>> iops : min= 3175, max= 8554, avg=5981.67, stdev=124.38,
>> samples=345
>> ```
>>
>>
>> ```
>> clat percentiles (usec):
>> | 1.00th=[ 799], 5.00th=[ 938], 10.00th=[ 963], 20.00th=[ 979],
>> | 30.00th=[ 996], 40.00th=[ 1004], 50.00th=[ 1020], 60.00th=[ 1045],
>> | 70.00th=[ 1074], 80.00th=[ 1106], 90.00th=[ 1172], 95.00th=[ 1237],
>> | 99.00th=[ 1450], 99.50th=[ 1516], 99.90th=[ 1762], 99.95th=[ 2180],
>> | 99.99th=[ 9503]
>> bw ( KiB/s): min=29200, max=30944, per=100.00%, avg=30178.91,
>> stdev=53.45, samples=272
>> iops : min= 7300, max= 7736, avg=7544.62, stdev=13.38,
>> samples=272
>> ```
>> When NOT enabling hsq, the minimum value of random reading is 7300 iops
>> and the maximum value is 7736 iops, and the maximum delay of io is only
>> 9 ms. Finally, we added debug to the mmc driver. The reason for locating
>> the 200ms delay of hsq is due to the next tag selection of hsq.
>>
>
> Thank you very much for your Log. This patch can reduce latency, but I
> have some questions:
> 1. FIO -rw does not have random, but it does have randread. Do you use
> randread? In addition, "IO_SIZE=64M" means only 64M data is tested?
> Refer to FIO:
> https://fio.readthedocs.io/en/latest/fio_doc.html?highlight=io_size#cmdoption-arg-io-size
Hi Wenchao,
Yes, I used "randread". (Sorry, I wrote the parameter "random"
incorrectly.) The reason why I used "io_size=64M" is that I found the
performance of hsq was degraded when using the AndroBench for testing on
android13. Therefore, fio is used to simulate the AndroBench for
debugging. The AndroBench is configured with 8 threads while 1G files
per thread, and only 64M data for random read testing(This item is not
configurable).
> 2. The style of "tag_tail" should remain the same as that of
> "next_tag". Would "tail_tag" be better?
Thank you for your suggestion. I'll modify 'tag_tail' as 'tail_tag'.
> 3. It is better to provide a comparison of sequential read, sequential
> write and random writeHere is the performance data tested by AndroBench:
-------------------------------------------------------------------------
io performance data from AndroBench (filesize=1G, 8 threads)
-------------------------------------------------------------------------
mmc configure | original hsq | without hsq | hsq with this patch
-------------------------------------------------------------------------
Sequential write 58.23 MB/s 51.35 MB/s 56.15 MB/s
Sequential read 138.24 MB/s 143.65 MB/s 146.4 MB/s
random write 2900.11 iops 1887.13 iops 2982.02 iops
random read 4764.45 iops 5485.19 iops 6786.42 iops
Here's a preview of patch-v2. If it's OK, I'll submit it soon. Thank you.
--
mmc:mmc-hsq:use fifo to dispatch mmc_request
Current next_tag selection will cause a large delay in some requests and
destroy the scheduling results of the block scheduling layer. Because
the issued mrq tags cannot ensure that each time is sequential,
especially when the IO load is heavy. In the fio performance test, we
found that 4k random read data was sent to mmc_hsq to start calling
request_atomic It takes nearly 200ms to process the request, while
mmc_hsq has processed thousands of other requests. So we use fifo here
to ensure the first in, first out feature of the request and avoid
adding additional delay to the request.
diff --git a/drivers/mmc/host/mmc_hsq.c b/drivers/mmc/host/mmc_hsq.c
index 9d35453e7371..424dc7b07858 100644
--- a/drivers/mmc/host/mmc_hsq.c
+++ b/drivers/mmc/host/mmc_hsq.c
@@ -13,9 +13,6 @@
#include "mmc_hsq.h"
-#define HSQ_NUM_SLOTS 64
-#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
-
static void mmc_hsq_retry_handler(struct work_struct *work)
{
struct mmc_hsq *hsq = container_of(work, struct mmc_hsq, retry_work);
@@ -73,7 +70,6 @@ static void mmc_hsq_pump_requests(struct mmc_hsq *hsq)
static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
{
- struct hsq_slot *slot;
int tag;
/*
@@ -82,29 +78,12 @@ static void mmc_hsq_update_next_tag(struct mmc_hsq
*hsq, int remains)
*/
if (!remains) {
hsq->next_tag = HSQ_INVALID_TAG;
+ hsq->tail_tag = HSQ_INVALID_TAG;
return;
}
- /*
- * Increasing the next tag and check if the corresponding request is
- * available, if yes, then we found a candidate request.
- */
- if (++hsq->next_tag != HSQ_INVALID_TAG) {
- slot = &hsq->slot[hsq->next_tag];
- if (slot->mrq)
- return;
- }
-
- /* Othersie we should iterate all slots to find a available tag. */
- for (tag = 0; tag < HSQ_NUM_SLOTS; tag++) {
- slot = &hsq->slot[tag];
- if (slot->mrq)
- break;
- }
-
- if (tag == HSQ_NUM_SLOTS)
- tag = HSQ_INVALID_TAG;
-
+ tag = hsq->tag_slot[hsq->next_tag];
+ hsq->tag_slot[hsq->next_tag] = HSQ_INVALID_TAG;
hsq->next_tag = tag;
}
@@ -233,8 +212,14 @@ static int mmc_hsq_request(struct mmc_host *mmc,
struct mmc_request *mrq)
* Set the next tag as current request tag if no available
* next tag.
*/
- if (hsq->next_tag == HSQ_INVALID_TAG)
+ if (hsq->next_tag == HSQ_INVALID_TAG) {
hsq->next_tag = tag;
+ hsq->tail_tag = tag;
+ hsq->tag_slot[hsq->tail_tag] = HSQ_INVALID_TAG;
+ } else {
+ hsq->tag_slot[hsq->tail_tag] = tag;
+ hsq->tail_tag = tag;
+ }
hsq->qcnt++;
@@ -339,8 +324,10 @@ static const struct mmc_cqe_ops mmc_hsq_ops = {
int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
{
+ int i;
hsq->num_slots = HSQ_NUM_SLOTS;
hsq->next_tag = HSQ_INVALID_TAG;
+ hsq->tail_tag = HSQ_INVALID_TAG;
hsq->slot = devm_kcalloc(mmc_dev(mmc), hsq->num_slots,
sizeof(struct hsq_slot), GFP_KERNEL);
@@ -351,6 +338,9 @@ int mmc_hsq_init(struct mmc_hsq *hsq, struct
mmc_host *mmc)
hsq->mmc->cqe_private = hsq;
mmc->cqe_ops = &mmc_hsq_ops;
+ for (i = 0; i < HSQ_NUM_SLOTS; i++)
+ hsq->tag_slot[i] = HSQ_INVALID_TAG;
+
INIT_WORK(&hsq->retry_work, mmc_hsq_retry_handler);
spin_lock_init(&hsq->lock);
init_waitqueue_head(&hsq->wait_queue);
diff --git a/drivers/mmc/host/mmc_hsq.h b/drivers/mmc/host/mmc_hsq.h
index ffdd9cd172c3..1808024fc6c5 100644
--- a/drivers/mmc/host/mmc_hsq.h
+++ b/drivers/mmc/host/mmc_hsq.h
@@ -2,6 +2,9 @@
#ifndef LINUX_MMC_HSQ_H
#define LINUX_MMC_HSQ_H
+#define HSQ_NUM_SLOTS 64
+#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
+
struct hsq_slot {
struct mmc_request *mrq;
};
@@ -17,6 +20,8 @@ struct mmc_hsq {
int next_tag;
int num_slots;
int qcnt;
+ int tail_tag;
+ int tag_slot[HSQ_NUM_SLOTS];
bool enabled;
bool waiting_for_idle;
--
Regards,
Michael Wu
^ permalink raw reply related [relevance 11%]
* Re: [PATCH] mmc:mmc-hsq:use fifo to dispatch mmc_request
2022-11-21 6:18 13% ` Michael Wu
@ 2022-11-24 2:56 6% ` Wenchao Chen
2022-11-28 3:55 11% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Wenchao Chen @ 2022-11-24 2:56 UTC (permalink / raw)
To: Michael Wu; +Cc: ulf.hansson, wenchao.chen, linux-mmc, linux-kernel
On Mon, Nov 21, 2022 at 2:19 PM Michael Wu <michael@allwinnertech.com> wrote:
>
> On 11/18/2022 7:43 PM, Wenchao Chen wrote:
> > On Fri, Nov 18, 2022 at 1:52 PM Michael Wu <michael@allwinnertech.com> wrote:
> >>
> >> Current next_tag selection will cause a large delay in some requests and
> >> destroy the scheduling results of the block scheduling layer. Because the
> >> issued mrq tags cannot ensure that each time is sequential, especially when
> >> the IO load is heavy. In the fio performance test, we found that 4k random
> >> read data was sent to mmc_hsq to start calling request_atomic It takes
> >> nearly 200ms to process the request, while mmc_hsq has processed thousands
> >> of other requests. So we use fifo here to ensure the first in, first out
> >> feature of the request and avoid adding additional delay to the request.
> >>
> >
> > Hi Michael
> > Is the test device an eMMC?
> > Could you share the fio test command if you want?
> > Can you provide more logs?
> >
> Hi Wenchao,
> Yes, the tested device is emmc.
> The test command we used is `./fio -name=Rand_Read_IOPS_Test
> -group_reporting -rw=random -bs=4K -numjobs=8 -directory=/data/data
> -size=1G -io_size=64M -nrfiles=1 -direct=1 -thread && rm
> /data/Rand_Read_IOPS_Test *`, which replaces the io performance random
> read performance test of androidbench, and the file size is set to 1G, 8
> thread test configuration. Where /data uses f2fs and /data/data is a
> file encrypted path.
>
> After enabling the hsq configuration, we can clearly see from below fio
> test log that the minimum value of random reading is 3175 iops and the
> maximum value is 8554iops, and the maximum delay of io completion is
> about 200ms.
> ```
> clat percentiles (usec):
> | 1.00th=[ 498], 5.00th=[ 865], 10.00th=[ 963], 20.00th=[
> 1045],
> | 30.00th=[ 1090], 40.00th=[ 1139], 50.00th=[ 1172], 60.00th=[
> 1221],
> | 70.00th=[ 1254], 80.00th=[ 1319], 90.00th=[ 1401], 95.00th=[
> 1614],
> | 99.00th=[ 2769], 99.50th=[ 3589], 99.90th=[ 31589], 99.95th=[
> 66323],
> | 99.99th=[200279]
> bw ( KiB/s): min=12705, max=34225, per=100.00%, avg=23931.79,
> stdev=497.40, samples=345
> iops : min= 3175, max= 8554, avg=5981.67, stdev=124.38,
> samples=345
> ```
>
>
> ```
> clat percentiles (usec):
> | 1.00th=[ 799], 5.00th=[ 938], 10.00th=[ 963], 20.00th=[ 979],
> | 30.00th=[ 996], 40.00th=[ 1004], 50.00th=[ 1020], 60.00th=[ 1045],
> | 70.00th=[ 1074], 80.00th=[ 1106], 90.00th=[ 1172], 95.00th=[ 1237],
> | 99.00th=[ 1450], 99.50th=[ 1516], 99.90th=[ 1762], 99.95th=[ 2180],
> | 99.99th=[ 9503]
> bw ( KiB/s): min=29200, max=30944, per=100.00%, avg=30178.91,
> stdev=53.45, samples=272
> iops : min= 7300, max= 7736, avg=7544.62, stdev=13.38,
> samples=272
> ```
> When NOT enabling hsq, the minimum value of random reading is 7300 iops
> and the maximum value is 7736 iops, and the maximum delay of io is only
> 9 ms. Finally, we added debug to the mmc driver. The reason for locating
> the 200ms delay of hsq is due to the next tag selection of hsq.
>
Thank you very much for your Log. This patch can reduce latency, but I
have some questions:
1. FIO -rw does not have random, but it does have randread. Do you use
randread? In addition, "IO_SIZE=64M" means only 64M data is tested?
Refer to FIO:
https://fio.readthedocs.io/en/latest/fio_doc.html?highlight=io_size#cmdoption-arg-io-size
2. The style of "tag_tail" should remain the same as that of
"next_tag". Would "tail_tag" be better?
3. It is better to provide a comparison of sequential read, sequential
write and random write.
> ---
> Michael Wu
^ permalink raw reply [relevance 6%]
* Re: [PATCH] ALSA: usb-audio: fix urb timeout with URB_ISO_ASAP flag
2022-11-22 8:46 0% ` Takashi Iwai
@ 2022-11-22 8:54 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2022-11-22 8:54 UTC (permalink / raw)
To: Takashi Iwai
Cc: perex, tiwai, aichao, wanjiabing, ubizjak, alsa-devel, linux-kernel
On 11/22/2022 4:46 PM, Takashi Iwai wrote:
> On Tue, 22 Nov 2022 09:20:40 +0100,
> Michael Wu wrote:
>>
>> When the loglevel is greater than 4, with a long messages printed on the
>> console while playing or recording audios, the usb controller may become
>> abnormal.
>> `usb 1-2: timeout: still 1 active urbs on EP #1`
>>
>> Fix it by configuring the transfer_flags URB_ISO_ASAP flag.
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>
> Hrm, that's somewhat backward action to the change we've done years
> ago, commit c75c5ab575af7db707689cdbb5a5c458e9a034bb:
>
> ALSA: USB: adjust for changed 3.8 USB API
>
> The recent changes in the USB API ("implement new semantics for
> URB_ISO_ASAP") made the former meaning of the URB_ISO_ASAP flag the
> default, and changed this flag to mean that URBs can be delayed.
> This is not the behaviour wanted by any of the audio drivers because
> it leads to discontinuous playback with very small period sizes.
> Therefore, our URBs need to be submitted without this flag.
>
> I rather suspect that your problem is in the USB controller side.
>
>
> thanks,
>
> Takashi
>
Dear Takashi, thanks for the reminding. Let me check...
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] ALSA: usb-audio: fix urb timeout with URB_ISO_ASAP flag
2022-11-22 8:20 20% [PATCH] ALSA: usb-audio: fix urb timeout with URB_ISO_ASAP flag Michael Wu
@ 2022-11-22 8:46 0% ` Takashi Iwai
2022-11-22 8:54 14% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Takashi Iwai @ 2022-11-22 8:46 UTC (permalink / raw)
To: Michael Wu
Cc: perex, tiwai, aichao, wanjiabing, ubizjak, alsa-devel, linux-kernel
On Tue, 22 Nov 2022 09:20:40 +0100,
Michael Wu wrote:
>
> When the loglevel is greater than 4, with a long messages printed on the
> console while playing or recording audios, the usb controller may become
> abnormal.
> `usb 1-2: timeout: still 1 active urbs on EP #1`
>
> Fix it by configuring the transfer_flags URB_ISO_ASAP flag.
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
Hrm, that's somewhat backward action to the change we've done years
ago, commit c75c5ab575af7db707689cdbb5a5c458e9a034bb:
ALSA: USB: adjust for changed 3.8 USB API
The recent changes in the USB API ("implement new semantics for
URB_ISO_ASAP") made the former meaning of the URB_ISO_ASAP flag the
default, and changed this flag to mean that URBs can be delayed.
This is not the behaviour wanted by any of the audio drivers because
it leads to discontinuous playback with very small period sizes.
Therefore, our URBs need to be submitted without this flag.
I rather suspect that your problem is in the USB controller side.
thanks,
Takashi
> ---
> sound/usb/endpoint.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
> index 310cd6fb0038..df9a91c2fc7d 100644
> --- a/sound/usb/endpoint.c
> +++ b/sound/usb/endpoint.c
> @@ -1245,7 +1245,7 @@ static int data_ep_set_params(struct snd_usb_endpoint *ep)
> if (!u->urb->transfer_buffer)
> goto out_of_memory;
> u->urb->pipe = ep->pipe;
> - u->urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
> + u->urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
> u->urb->interval = 1 << ep->datainterval;
> u->urb->context = u;
> u->urb->complete = snd_complete_urb;
> @@ -1288,7 +1288,7 @@ static int sync_ep_set_params(struct snd_usb_endpoint *ep)
> u->urb->transfer_dma = ep->sync_dma + i * 4;
> u->urb->transfer_buffer_length = 4;
> u->urb->pipe = ep->pipe;
> - u->urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
> + u->urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
> u->urb->number_of_packets = 1;
> u->urb->interval = 1 << ep->syncinterval;
> u->urb->context = u;
> --
> 2.29.0
>
^ permalink raw reply [relevance 0%]
* [PATCH] ALSA: usb-audio: fix urb timeout with URB_ISO_ASAP flag
@ 2022-11-22 8:20 20% Michael Wu
2022-11-22 8:46 0% ` Takashi Iwai
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-11-22 8:20 UTC (permalink / raw)
To: perex, tiwai, aichao, wanjiabing, ubizjak; +Cc: tiwai, alsa-devel, linux-kernel
When the loglevel is greater than 4, with a long messages printed on the
console while playing or recording audios, the usb controller may become
abnormal.
`usb 1-2: timeout: still 1 active urbs on EP #1`
Fix it by configuring the transfer_flags URB_ISO_ASAP flag.
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
sound/usb/endpoint.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
index 310cd6fb0038..df9a91c2fc7d 100644
--- a/sound/usb/endpoint.c
+++ b/sound/usb/endpoint.c
@@ -1245,7 +1245,7 @@ static int data_ep_set_params(struct snd_usb_endpoint *ep)
if (!u->urb->transfer_buffer)
goto out_of_memory;
u->urb->pipe = ep->pipe;
- u->urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
+ u->urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
u->urb->interval = 1 << ep->datainterval;
u->urb->context = u;
u->urb->complete = snd_complete_urb;
@@ -1288,7 +1288,7 @@ static int sync_ep_set_params(struct snd_usb_endpoint *ep)
u->urb->transfer_dma = ep->sync_dma + i * 4;
u->urb->transfer_buffer_length = 4;
u->urb->pipe = ep->pipe;
- u->urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
+ u->urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
u->urb->number_of_packets = 1;
u->urb->interval = 1 << ep->syncinterval;
u->urb->context = u;
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH] mmc:mmc-hsq:use fifo to dispatch mmc_request
2022-11-18 11:43 6% ` Wenchao Chen
@ 2022-11-21 6:18 13% ` Michael Wu
2022-11-24 2:56 6% ` Wenchao Chen
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-11-21 6:18 UTC (permalink / raw)
To: Wenchao Chen; +Cc: ulf.hansson, wenchao.chen, linux-mmc, linux-kernel
On 11/18/2022 7:43 PM, Wenchao Chen wrote:
> On Fri, Nov 18, 2022 at 1:52 PM Michael Wu <michael@allwinnertech.com> wrote:
>>
>> Current next_tag selection will cause a large delay in some requests and
>> destroy the scheduling results of the block scheduling layer. Because the
>> issued mrq tags cannot ensure that each time is sequential, especially when
>> the IO load is heavy. In the fio performance test, we found that 4k random
>> read data was sent to mmc_hsq to start calling request_atomic It takes
>> nearly 200ms to process the request, while mmc_hsq has processed thousands
>> of other requests. So we use fifo here to ensure the first in, first out
>> feature of the request and avoid adding additional delay to the request.
>>
>
> Hi Michael
> Is the test device an eMMC?
> Could you share the fio test command if you want?
> Can you provide more logs?
>
Hi Wenchao,
Yes, the tested device is emmc.
The test command we used is `./fio -name=Rand_Read_IOPS_Test
-group_reporting -rw=random -bs=4K -numjobs=8 -directory=/data/data
-size=1G -io_size=64M -nrfiles=1 -direct=1 -thread && rm
/data/Rand_Read_IOPS_Test *`, which replaces the io performance random
read performance test of androidbench, and the file size is set to 1G, 8
thread test configuration. Where /data uses f2fs and /data/data is a
file encrypted path.
After enabling the hsq configuration, we can clearly see from below fio
test log that the minimum value of random reading is 3175 iops and the
maximum value is 8554iops, and the maximum delay of io completion is
about 200ms.
```
clat percentiles (usec):
| 1.00th=[ 498], 5.00th=[ 865], 10.00th=[ 963], 20.00th=[
1045],
| 30.00th=[ 1090], 40.00th=[ 1139], 50.00th=[ 1172], 60.00th=[
1221],
| 70.00th=[ 1254], 80.00th=[ 1319], 90.00th=[ 1401], 95.00th=[
1614],
| 99.00th=[ 2769], 99.50th=[ 3589], 99.90th=[ 31589], 99.95th=[
66323],
| 99.99th=[200279]
bw ( KiB/s): min=12705, max=34225, per=100.00%, avg=23931.79,
stdev=497.40, samples=345
iops : min= 3175, max= 8554, avg=5981.67, stdev=124.38,
samples=345
```
```
clat percentiles (usec):
| 1.00th=[ 799], 5.00th=[ 938], 10.00th=[ 963], 20.00th=[ 979],
| 30.00th=[ 996], 40.00th=[ 1004], 50.00th=[ 1020], 60.00th=[ 1045],
| 70.00th=[ 1074], 80.00th=[ 1106], 90.00th=[ 1172], 95.00th=[ 1237],
| 99.00th=[ 1450], 99.50th=[ 1516], 99.90th=[ 1762], 99.95th=[ 2180],
| 99.99th=[ 9503]
bw ( KiB/s): min=29200, max=30944, per=100.00%, avg=30178.91,
stdev=53.45, samples=272
iops : min= 7300, max= 7736, avg=7544.62, stdev=13.38,
samples=272
```
When NOT enabling hsq, the minimum value of random reading is 7300 iops
and the maximum value is 7736 iops, and the maximum delay of io is only
9 ms. Finally, we added debug to the mmc driver. The reason for locating
the 200ms delay of hsq is due to the next tag selection of hsq.
---
Michael Wu
^ permalink raw reply [relevance 13%]
* Re: [PATCH v4] PM/devfreq: governor: Add a private governor_data for governor
2022-10-25 7:21 15% [PATCH v4] PM/devfreq: governor: Add a private governor_data for governor Kant Fan
@ 2022-11-20 11:50 0% ` Chanwoo Choi
0 siblings, 0 replies; 200+ results
From: Chanwoo Choi @ 2022-11-20 11:50 UTC (permalink / raw)
To: Kant Fan, myungjoo.ham, kyungmin.park, cw00.choi, mturquette,
rjw, khilman
Cc: linux-pm, linux-kernel, stable
On 22. 10. 25. 16:21, Kant Fan wrote:
> The member void *data in the structure devfreq can be overwrite
> by governor_userspace. For example:
> 1. The device driver assigned the devfreq governor to simple_ondemand
> by the function devfreq_add_device() and init the devfreq member
> void *data to a pointer of a static structure devfreq_simple_ondemand_data
> by the function devfreq_add_device().
> 2. The user changed the devfreq governor to userspace by the command
> "echo userspace > /sys/class/devfreq/.../governor".
> 3. The governor userspace alloced a dynamic memory for the struct
> userspace_data and assigend the member void *data of devfreq to
> this memory by the function userspace_init().
> 4. The user changed the devfreq governor back to simple_ondemand
> by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
> 5. The governor userspace exited and assigned the member void *data
> in the structure devfreq to NULL by the function userspace_exit().
> 6. The governor simple_ondemand fetched the static information of
> devfreq_simple_ondemand_data in the function
> devfreq_simple_ondemand_func() but the member void *data of devfreq was
> assigned to NULL by the function userspace_exit().
> 7. The information of upthreshold and downdifferential is lost
> and the governor simple_ondemand can't work correctly.
>
> The member void *data in the structure devfreq is designed for
> a static pointer used in a governor and inited by the function
> devfreq_add_device(). This patch add an element named governor_data
> in the devfreq structure which can be used by a governor(E.g userspace)
> who want to assign a private data to do some private things.
>
> Fixes: ce26c5bb9569 ("PM / devfreq: Add basic governors")
> Cc: stable@vger.kernel.org # 5.10+
> Reviewed-by: Chanwoo Choi <cwchoi00@gmail.com>
> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
> Signed-off-by: Kant Fan <kant@allwinnertech.com>
> ---
> drivers/devfreq/devfreq.c | 6 ++----
> drivers/devfreq/governor_userspace.c | 12 ++++++------
> include/linux/devfreq.h | 7 ++++---
> 3 files changed, 12 insertions(+), 13 deletions(-)
>
(snip)
Applied it. Thanks.
--
Best Regards,
Samsung Electronics
Chanwoo Choi
^ permalink raw reply [relevance 0%]
* Re: [PATCH] mmc:mmc-hsq:use fifo to dispatch mmc_request
2022-11-18 5:47 17% [PATCH] mmc:mmc-hsq:use fifo to dispatch mmc_request Michael Wu
@ 2022-11-18 11:43 6% ` Wenchao Chen
2022-11-21 6:18 13% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Wenchao Chen @ 2022-11-18 11:43 UTC (permalink / raw)
To: Michael Wu; +Cc: ulf.hansson, wenchao.chen, linux-mmc, linux-kernel
On Fri, Nov 18, 2022 at 1:52 PM Michael Wu <michael@allwinnertech.com> wrote:
>
> Current next_tag selection will cause a large delay in some requests and
> destroy the scheduling results of the block scheduling layer. Because the
> issued mrq tags cannot ensure that each time is sequential, especially when
> the IO load is heavy. In the fio performance test, we found that 4k random
> read data was sent to mmc_hsq to start calling request_atomic It takes
> nearly 200ms to process the request, while mmc_hsq has processed thousands
> of other requests. So we use fifo here to ensure the first in, first out
> feature of the request and avoid adding additional delay to the request.
>
Hi Michael
Is the test device an eMMC?
Could you share the fio test command if you want?
Can you provide more logs?
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/mmc/host/mmc_hsq.c | 40 ++++++++++++++------------------------
> drivers/mmc/host/mmc_hsq.h | 5 +++++
> 2 files changed, 20 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/mmc/host/mmc_hsq.c b/drivers/mmc/host/mmc_hsq.c
> index 9d35453e7371..d2a1a96ed5bd 100644
> --- a/drivers/mmc/host/mmc_hsq.c
> +++ b/drivers/mmc/host/mmc_hsq.c
> @@ -13,9 +13,6 @@
>
> #include "mmc_hsq.h"
>
> -#define HSQ_NUM_SLOTS 64
> -#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
> -
> static void mmc_hsq_retry_handler(struct work_struct *work)
> {
> struct mmc_hsq *hsq = container_of(work, struct mmc_hsq, retry_work);
> @@ -73,7 +70,6 @@ static void mmc_hsq_pump_requests(struct mmc_hsq *hsq)
>
> static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
> {
> - struct hsq_slot *slot;
> int tag;
>
> /*
> @@ -82,29 +78,12 @@ static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
> */
> if (!remains) {
> hsq->next_tag = HSQ_INVALID_TAG;
> + hsq->tag_tail = HSQ_INVALID_TAG;
> return;
> }
>
> - /*
> - * Increasing the next tag and check if the corresponding request is
> - * available, if yes, then we found a candidate request.
> - */
> - if (++hsq->next_tag != HSQ_INVALID_TAG) {
> - slot = &hsq->slot[hsq->next_tag];
> - if (slot->mrq)
> - return;
> - }
> -
> - /* Othersie we should iterate all slots to find a available tag. */
> - for (tag = 0; tag < HSQ_NUM_SLOTS; tag++) {
> - slot = &hsq->slot[tag];
> - if (slot->mrq)
> - break;
> - }
> -
> - if (tag == HSQ_NUM_SLOTS)
> - tag = HSQ_INVALID_TAG;
> -
> + tag = hsq->tag_slot[hsq->next_tag];
> + hsq->tag_slot[hsq->next_tag] = HSQ_INVALID_TAG;
> hsq->next_tag = tag;
> }
>
> @@ -233,8 +212,14 @@ static int mmc_hsq_request(struct mmc_host *mmc, struct mmc_request *mrq)
> * Set the next tag as current request tag if no available
> * next tag.
> */
> - if (hsq->next_tag == HSQ_INVALID_TAG)
> + if (hsq->next_tag == HSQ_INVALID_TAG) {
> hsq->next_tag = tag;
> + hsq->tag_tail = tag;
> + hsq->tag_slot[hsq->tag_tail] = HSQ_INVALID_TAG;
> + } else {
> + hsq->tag_slot[hsq->tag_tail] = tag;
> + hsq->tag_tail = tag;
> + }
>
> hsq->qcnt++;
>
> @@ -339,8 +324,10 @@ static const struct mmc_cqe_ops mmc_hsq_ops = {
>
> int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
> {
> + int i;
> hsq->num_slots = HSQ_NUM_SLOTS;
> hsq->next_tag = HSQ_INVALID_TAG;
> + hsq->tag_tail = HSQ_INVALID_TAG;
>
> hsq->slot = devm_kcalloc(mmc_dev(mmc), hsq->num_slots,
> sizeof(struct hsq_slot), GFP_KERNEL);
> @@ -351,6 +338,9 @@ int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
> hsq->mmc->cqe_private = hsq;
> mmc->cqe_ops = &mmc_hsq_ops;
>
> + for (i = 0; i < HSQ_NUM_SLOTS; i++)
> + hsq->tag_slot[i] = HSQ_INVALID_TAG;
> +
> INIT_WORK(&hsq->retry_work, mmc_hsq_retry_handler);
> spin_lock_init(&hsq->lock);
> init_waitqueue_head(&hsq->wait_queue);
> diff --git a/drivers/mmc/host/mmc_hsq.h b/drivers/mmc/host/mmc_hsq.h
> index ffdd9cd172c3..a783366285a9 100644
> --- a/drivers/mmc/host/mmc_hsq.h
> +++ b/drivers/mmc/host/mmc_hsq.h
> @@ -2,6 +2,9 @@
> #ifndef LINUX_MMC_HSQ_H
> #define LINUX_MMC_HSQ_H
>
> +#define HSQ_NUM_SLOTS 64
> +#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
> +
> struct hsq_slot {
> struct mmc_request *mrq;
> };
> @@ -17,6 +20,8 @@ struct mmc_hsq {
> int next_tag;
> int num_slots;
> int qcnt;
> + int tag_tail;
> + int tag_slot[HSQ_NUM_SLOTS];
>
> bool enabled;
> bool waiting_for_idle;
> --
> 2.29.0
>
^ permalink raw reply [relevance 6%]
* [PATCH] mmc:mmc-hsq:use fifo to dispatch mmc_request
@ 2022-11-18 5:47 17% Michael Wu
2022-11-18 11:43 6% ` Wenchao Chen
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-11-18 5:47 UTC (permalink / raw)
To: ulf.hansson, wenchao.chen; +Cc: linux-mmc, linux-kernel
Current next_tag selection will cause a large delay in some requests and
destroy the scheduling results of the block scheduling layer. Because the
issued mrq tags cannot ensure that each time is sequential, especially when
the IO load is heavy. In the fio performance test, we found that 4k random
read data was sent to mmc_hsq to start calling request_atomic It takes
nearly 200ms to process the request, while mmc_hsq has processed thousands
of other requests. So we use fifo here to ensure the first in, first out
feature of the request and avoid adding additional delay to the request.
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/mmc/host/mmc_hsq.c | 40 ++++++++++++++------------------------
drivers/mmc/host/mmc_hsq.h | 5 +++++
2 files changed, 20 insertions(+), 25 deletions(-)
diff --git a/drivers/mmc/host/mmc_hsq.c b/drivers/mmc/host/mmc_hsq.c
index 9d35453e7371..d2a1a96ed5bd 100644
--- a/drivers/mmc/host/mmc_hsq.c
+++ b/drivers/mmc/host/mmc_hsq.c
@@ -13,9 +13,6 @@
#include "mmc_hsq.h"
-#define HSQ_NUM_SLOTS 64
-#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
-
static void mmc_hsq_retry_handler(struct work_struct *work)
{
struct mmc_hsq *hsq = container_of(work, struct mmc_hsq, retry_work);
@@ -73,7 +70,6 @@ static void mmc_hsq_pump_requests(struct mmc_hsq *hsq)
static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
{
- struct hsq_slot *slot;
int tag;
/*
@@ -82,29 +78,12 @@ static void mmc_hsq_update_next_tag(struct mmc_hsq *hsq, int remains)
*/
if (!remains) {
hsq->next_tag = HSQ_INVALID_TAG;
+ hsq->tag_tail = HSQ_INVALID_TAG;
return;
}
- /*
- * Increasing the next tag and check if the corresponding request is
- * available, if yes, then we found a candidate request.
- */
- if (++hsq->next_tag != HSQ_INVALID_TAG) {
- slot = &hsq->slot[hsq->next_tag];
- if (slot->mrq)
- return;
- }
-
- /* Othersie we should iterate all slots to find a available tag. */
- for (tag = 0; tag < HSQ_NUM_SLOTS; tag++) {
- slot = &hsq->slot[tag];
- if (slot->mrq)
- break;
- }
-
- if (tag == HSQ_NUM_SLOTS)
- tag = HSQ_INVALID_TAG;
-
+ tag = hsq->tag_slot[hsq->next_tag];
+ hsq->tag_slot[hsq->next_tag] = HSQ_INVALID_TAG;
hsq->next_tag = tag;
}
@@ -233,8 +212,14 @@ static int mmc_hsq_request(struct mmc_host *mmc, struct mmc_request *mrq)
* Set the next tag as current request tag if no available
* next tag.
*/
- if (hsq->next_tag == HSQ_INVALID_TAG)
+ if (hsq->next_tag == HSQ_INVALID_TAG) {
hsq->next_tag = tag;
+ hsq->tag_tail = tag;
+ hsq->tag_slot[hsq->tag_tail] = HSQ_INVALID_TAG;
+ } else {
+ hsq->tag_slot[hsq->tag_tail] = tag;
+ hsq->tag_tail = tag;
+ }
hsq->qcnt++;
@@ -339,8 +324,10 @@ static const struct mmc_cqe_ops mmc_hsq_ops = {
int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
{
+ int i;
hsq->num_slots = HSQ_NUM_SLOTS;
hsq->next_tag = HSQ_INVALID_TAG;
+ hsq->tag_tail = HSQ_INVALID_TAG;
hsq->slot = devm_kcalloc(mmc_dev(mmc), hsq->num_slots,
sizeof(struct hsq_slot), GFP_KERNEL);
@@ -351,6 +338,9 @@ int mmc_hsq_init(struct mmc_hsq *hsq, struct mmc_host *mmc)
hsq->mmc->cqe_private = hsq;
mmc->cqe_ops = &mmc_hsq_ops;
+ for (i = 0; i < HSQ_NUM_SLOTS; i++)
+ hsq->tag_slot[i] = HSQ_INVALID_TAG;
+
INIT_WORK(&hsq->retry_work, mmc_hsq_retry_handler);
spin_lock_init(&hsq->lock);
init_waitqueue_head(&hsq->wait_queue);
diff --git a/drivers/mmc/host/mmc_hsq.h b/drivers/mmc/host/mmc_hsq.h
index ffdd9cd172c3..a783366285a9 100644
--- a/drivers/mmc/host/mmc_hsq.h
+++ b/drivers/mmc/host/mmc_hsq.h
@@ -2,6 +2,9 @@
#ifndef LINUX_MMC_HSQ_H
#define LINUX_MMC_HSQ_H
+#define HSQ_NUM_SLOTS 64
+#define HSQ_INVALID_TAG HSQ_NUM_SLOTS
+
struct hsq_slot {
struct mmc_request *mrq;
};
@@ -17,6 +20,8 @@ struct mmc_hsq {
int next_tag;
int num_slots;
int qcnt;
+ int tag_tail;
+ int tag_slot[HSQ_NUM_SLOTS];
bool enabled;
bool waiting_for_idle;
--
2.29.0
^ permalink raw reply related [relevance 17%]
* Re: [PATCH v3] PM/devfreq: governor: Add a private governor_data for governor
2022-10-25 7:57 20% ` Kant Fan
@ 2022-11-07 3:06 14% ` Kant Fan
0 siblings, 0 replies; 200+ results
From: Kant Fan @ 2022-11-07 3:06 UTC (permalink / raw)
To: Chanwoo Choi, myungjoo.ham, kyungmin.park, cw00.choi, khilman,
rjw, mturquette
Cc: linux-pm, linux-kernel
On 10/25/2022 3:57 PM, Kant Fan wrote:
> On 10/22/2022 7:41 AM, Chanwoo Choi wrote:
>> Hi,
>>
>> Looks good to me. But, you need to send it to the stable mailing list
>> too as I commented on previous mail.
>>
>> Please add stable@vger.kernel.org to Cc.
>>
>
> Hi Chanwoo,
> Thanks for the notice. Please review this patch-v4 [1].
>
> [1]
> https://lore.kernel.org/all/20221025072109.64025-1-kant@allwinnertech.com/
>
Dear Chanwoo,
Is there any updated progress about this patch? Thank you
--
Best Regards,
Kant Fan
^ permalink raw reply [relevance 14%]
* Re: [RESEND] clocksource: sun4i: Fix the bug that tick_resume stucks
2022-10-25 6:23 14% ` Victor Hassan
@ 2022-10-26 8:21 0% ` maxime
0 siblings, 0 replies; 200+ results
From: maxime @ 2022-10-26 8:21 UTC (permalink / raw)
To: Victor Hassan
Cc: daniel.lezcano, tglx, wens, jernej.skrabec, samuel, linux-kernel,
linux-arm-kernel, linux-sunxi
Hi,
On Tue, Oct 25, 2022 at 02:23:09PM +0800, Victor Hassan wrote:
> On 2022/10/9 11:25, Victor Hassan wrote:
> > Currently syscore_resume() will stuck on tick_resume().
> > Fix this by changing `.tick_resume` from
> > sun4i_clkevt_shutdown() to a new function sun4i_tick_resume().
> >
> > Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> > ---
> > drivers/clocksource/timer-sun4i.c | 131 ++++++++++++++++++++++--------
> > 1 file changed, 96 insertions(+), 35 deletions(-)
> >
> > diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
> > index 94dc6e42e983..574398c35a22 100644
> > --- a/drivers/clocksource/timer-sun4i.c
> > +++ b/drivers/clocksource/timer-sun4i.c
> > @@ -38,6 +38,19 @@
> > #define TIMER_SYNC_TICKS 3
> > +/* Registers which needs to be saved and restored before and after sleeping */
> > +static u32 sun4i_timer_regs_offset[] = {
> > + TIMER_IRQ_EN_REG,
> > + TIMER_CTL_REG(0),
> > + TIMER_INTVAL_REG(0),
> > + TIMER_CNTVAL_REG(0),
> > + TIMER_CTL_REG(1),
> > + TIMER_INTVAL_REG(1),
> > + TIMER_CNTVAL_REG(1),
> > +};
> > +
> > +static void __iomem *sun4i_timer_sched_base __read_mostly;
> > +
> > /*
> > * When we disable a timer, we need to wait at least for 2 cycles of
> > * the timer source clock. We will use for that the clocksource timer
> > @@ -79,10 +92,41 @@ static void sun4i_clkevt_time_start(void __iomem *base, u8 timer,
> > base + TIMER_CTL_REG(timer));
> > }
> > +static inline void sun4i_timer_save_regs(struct timer_of *to)
> > +{
> > + void __iomem *base = timer_of_base(to);
> > + int i;
> > + u32 *regs_backup = (u32 *)to->private_data;
> > +
> > + for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
> > + regs_backup[i] = readl(base + sun4i_timer_regs_offset[i]);
> > +}
> > +
> > +static inline void sun4i_timer_restore_regs(struct timer_of *to)
> > +{
> > + void __iomem *base = timer_of_base(to);
> > + int i;
> > + u32 *regs_backup = (u32 *)to->private_data;
> > +
> > + for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
> > + writel(regs_backup[i], base + sun4i_timer_regs_offset[i]);
> > +}
> > +
> > static int sun4i_clkevt_shutdown(struct clock_event_device *evt)
> > {
> > struct timer_of *to = to_timer_of(evt);
> > + sun4i_timer_save_regs(to);
> > + sun4i_clkevt_time_stop(timer_of_base(to), 0);
> > +
> > + return 0;
> > +}
> > +
> > +static int sun4i_tick_resume(struct clock_event_device *evt)
> > +{
> > + struct timer_of *to = to_timer_of(evt);
> > +
> > + sun4i_timer_restore_regs(to);
> > sun4i_clkevt_time_stop(timer_of_base(to), 0);
> > return 0;
> > @@ -137,45 +181,54 @@ static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
> > return IRQ_HANDLED;
> > }
> > -static struct timer_of to = {
> > - .flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE,
> > -
> > - .clkevt = {
> > - .name = "sun4i_tick",
> > - .rating = 350,
> > - .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
> > - .set_state_shutdown = sun4i_clkevt_shutdown,
> > - .set_state_periodic = sun4i_clkevt_set_periodic,
> > - .set_state_oneshot = sun4i_clkevt_set_oneshot,
> > - .tick_resume = sun4i_clkevt_shutdown,
> > - .set_next_event = sun4i_clkevt_next_event,
> > - .cpumask = cpu_possible_mask,
> > - },
> > -
> > - .of_irq = {
> > - .handler = sun4i_timer_interrupt,
> > - .flags = IRQF_TIMER | IRQF_IRQPOLL,
> > - },
> > -};
> > +static void __init sun4i_clockevent_init(struct timer_of *to)
> > +{
> > + to->clkevt.name = "sun4i_tick";
> > + to->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
> > + to->clkevt.set_state_shutdown = sun4i_clkevt_shutdown;
> > + to->clkevt.set_state_periodic = sun4i_clkevt_set_periodic;
> > + to->clkevt.set_state_oneshot = sun4i_clkevt_set_oneshot;
> > + to->clkevt.tick_resume = sun4i_tick_resume;
> > + to->clkevt.set_next_event = sun4i_clkevt_next_event;
> > + to->clkevt.cpumask = cpu_possible_mask;
> > + to->of_irq.flags = IRQF_TIMER | IRQF_IRQPOLL;
> > +
> > + sun4i_timer_sched_base = timer_of_base(to) + TIMER_CNTVAL_REG(1);
> > +}
> > static u64 notrace sun4i_timer_sched_read(void)
> > {
> > - return ~readl(timer_of_base(&to) + TIMER_CNTVAL_REG(1));
> > + return (u64)~readl(sun4i_timer_sched_base);
> > }
> > static int __init sun4i_timer_init(struct device_node *node)
> > {
> > + struct timer_of *to;
> > int ret;
> > u32 val;
> > - ret = timer_of_init(node, &to);
> > + to = kzalloc(sizeof(*to), GFP_KERNEL);
> > + if (!to)
> > + return -ENOMEM;
> > +
> > + to->flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE;
> > + to->of_irq.handler = sun4i_timer_interrupt;
> > + ret = timer_of_init(node, to);
> > if (ret)
> > - return ret;
> > + goto err;
> > - writel(~0, timer_of_base(&to) + TIMER_INTVAL_REG(1));
> > + sun4i_clockevent_init(to);
> > +
> > + to->private_data = kcalloc(ARRAY_SIZE(sun4i_timer_regs_offset), sizeof(u32), GFP_KERNEL);
> > + if (!to->private_data) {
> > + ret = -ENOMEM;
> > + goto err1;
> > + }
> > +
> > + writel(~0, timer_of_base(to) + TIMER_INTVAL_REG(1));
> > writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD |
> > TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
> > - timer_of_base(&to) + TIMER_CTL_REG(1));
> > + timer_of_base(to) + TIMER_CTL_REG(1));
> > /*
> > * sched_clock_register does not have priorities, and on sun6i and
> > @@ -186,32 +239,40 @@ static int __init sun4i_timer_init(struct device_node *node)
> > of_machine_is_compatible("allwinner,sun5i-a10s") ||
> > of_machine_is_compatible("allwinner,suniv-f1c100s"))
> > sched_clock_register(sun4i_timer_sched_read, 32,
> > - timer_of_rate(&to));
> > + timer_of_rate(to));
> > - ret = clocksource_mmio_init(timer_of_base(&to) + TIMER_CNTVAL_REG(1),
> > - node->name, timer_of_rate(&to), 350, 32,
> > + ret = clocksource_mmio_init(timer_of_base(to) + TIMER_CNTVAL_REG(1),
> > + node->name, timer_of_rate(to), 350, 32,
> > clocksource_mmio_readl_down);
> > if (ret) {
> > pr_err("Failed to register clocksource\n");
> > - return ret;
> > + goto err2;
> > }
> > writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
> > - timer_of_base(&to) + TIMER_CTL_REG(0));
> > + timer_of_base(to) + TIMER_CTL_REG(0));
> > /* Make sure timer is stopped before playing with interrupts */
> > - sun4i_clkevt_time_stop(timer_of_base(&to), 0);
> > + sun4i_clkevt_time_stop(timer_of_base(to), 0);
> > /* clear timer0 interrupt */
> > - sun4i_timer_clear_interrupt(timer_of_base(&to));
> > + sun4i_timer_clear_interrupt(timer_of_base(to));
> > - clockevents_config_and_register(&to.clkevt, timer_of_rate(&to),
> > + clockevents_config_and_register(&to->clkevt, timer_of_rate(to),
> > TIMER_SYNC_TICKS, 0xffffffff);
> > /* Enable timer0 interrupt */
> > - val = readl(timer_of_base(&to) + TIMER_IRQ_EN_REG);
> > - writel(val | TIMER_IRQ_EN(0), timer_of_base(&to) + TIMER_IRQ_EN_REG);
> > + val = readl(timer_of_base(to) + TIMER_IRQ_EN_REG);
> > + writel(val | TIMER_IRQ_EN(0), timer_of_base(to) + TIMER_IRQ_EN_REG);
> > +
> > + return ret;
> > +err2:
> > + kfree(to->private_data);
> > +err1:
> > + timer_of_cleanup(to);
> > +err:
> > + kfree(to);
> > return ret;
> > }
> > TIMER_OF_DECLARE(sun4i, "allwinner,sun4i-a10-timer",
>
> Hi Maxime,
> Sorry to disturb. Just want to say that I'm looking forward to your
> advice on this patch. Thank you : )
I'm not the maintainer anymore. Jernej, Samuel and Daniel are the ones
you should seek review from :)
Maxime
^ permalink raw reply [relevance 0%]
* Re: [PATCH v3] PM/devfreq: governor: Add a private governor_data for governor
2022-10-21 23:41 0% ` Chanwoo Choi
@ 2022-10-25 7:57 20% ` Kant Fan
2022-11-07 3:06 14% ` Kant Fan
0 siblings, 1 reply; 200+ results
From: Kant Fan @ 2022-10-25 7:57 UTC (permalink / raw)
To: Chanwoo Choi, myungjoo.ham, kyungmin.park, cw00.choi, khilman,
rjw, mturquette
Cc: linux-pm, linux-kernel
On 10/22/2022 7:41 AM, Chanwoo Choi wrote:
> Hi,
>
> Looks good to me. But, you need to send it to the stable mailing list
> too as I commented on previous mail.
>
> Please add stable@vger.kernel.org to Cc.
>
Hi Chanwoo,
Thanks for the notice. Please review this patch-v4 [1].
[1]
https://lore.kernel.org/all/20221025072109.64025-1-kant@allwinnertech.com/
--
Best Regards,
Kant Fan
> On 22. 10. 14. 18:43, Kant Fan wrote:
>> The member void *data in the structure devfreq can be overwrite
>> by governor_userspace. For example:
>> 1. The device driver assigned the devfreq governor to simple_ondemand
>> by the function devfreq_add_device() and init the devfreq member
>> void *data to a pointer of a static structure devfreq_simple_ondemand_data
>> by the function devfreq_add_device().
>> 2. The user changed the devfreq governor to userspace by the command
>> "echo userspace > /sys/class/devfreq/.../governor".
>> 3. The governor userspace alloced a dynamic memory for the struct
>> userspace_data and assigend the member void *data of devfreq to
>> this memory by the function userspace_init().
>> 4. The user changed the devfreq governor back to simple_ondemand
>> by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
>> 5. The governor userspace exited and assigned the member void *data
>> in the structure devfreq to NULL by the function userspace_exit().
>> 6. The governor simple_ondemand fetched the static information of
>> devfreq_simple_ondemand_data in the function
>> devfreq_simple_ondemand_func() but the member void *data of devfreq was
>> assigned to NULL by the function userspace_exit().
>> 7. The information of upthreshold and downdifferential is lost
>> and the governor simple_ondemand can't work correctly.
>>
>> The member void *data in the structure devfreq is designed for
>> a static pointer used in a governor and inited by the function
>> devfreq_add_device(). This patch add an element named governor_data
>> in the devfreq structure which can be used by a governor(E.g userspace)
>> who want to assign a private data to do some private things.
>>
>> Fixes: ce26c5bb9569 ("PM / devfreq: Add basic governors")
>>
>> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
>>
>> Signed-off-by: Kant Fan <kant@allwinnertech.com>
>> ---
>> drivers/devfreq/devfreq.c | 6 ++----
>> drivers/devfreq/governor_userspace.c | 12 ++++++------
>> include/linux/devfreq.h | 7 ++++---
>> 3 files changed, 12 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
>> index 63347a5ae599..8c5f6f7fca11 100644
>> --- a/drivers/devfreq/devfreq.c
>> +++ b/drivers/devfreq/devfreq.c
>> @@ -776,8 +776,7 @@ static void remove_sysfs_files(struct devfreq *devfreq,
>> * @dev: the device to add devfreq feature.
>> * @profile: device-specific profile to run devfreq.
>> * @governor_name: name of the policy to choose frequency.
>> - * @data: private data for the governor. The devfreq framework does not
>> - * touch this value.
>> + * @data: devfreq driver pass to governors, governor should not change it.
>> */
>> struct devfreq *devfreq_add_device(struct device *dev,
>> struct devfreq_dev_profile *profile,
>> @@ -1011,8 +1010,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)
>> * @dev: the device to add devfreq feature.
>> * @profile: device-specific profile to run devfreq.
>> * @governor_name: name of the policy to choose frequency.
>> - * @data: private data for the governor. The devfreq framework does not
>> - * touch this value.
>> + * @data: devfreq driver pass to governors, governor should not change it.
>> *
>> * This function manages automatically the memory of devfreq device using device
>> * resource management and simplify the free operation for memory of devfreq
>> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
>> index ab9db7adb3ad..d69672ccacc4 100644
>> --- a/drivers/devfreq/governor_userspace.c
>> +++ b/drivers/devfreq/governor_userspace.c
>> @@ -21,7 +21,7 @@ struct userspace_data {
>>
>> static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
>> {
>> - struct userspace_data *data = df->data;
>> + struct userspace_data *data = df->governor_data;
>>
>> if (data->valid)
>> *freq = data->user_frequency;
>> @@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
>> int err = 0;
>>
>> mutex_lock(&devfreq->lock);
>> - data = devfreq->data;
>> + data = devfreq->governor_data;
>>
>> sscanf(buf, "%lu", &wanted);
>> data->user_frequency = wanted;
>> @@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,
>> int err = 0;
>>
>> mutex_lock(&devfreq->lock);
>> - data = devfreq->data;
>> + data = devfreq->governor_data;
>>
>> if (data->valid)
>> err = sprintf(buf, "%lu\n", data->user_frequency);
>> @@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
>> goto out;
>> }
>> data->valid = false;
>> - devfreq->data = data;
>> + devfreq->governor_data = data;
>>
>> err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
>> out:
>> @@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
>> if (devfreq->dev.kobj.sd)
>> sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
>>
>> - kfree(devfreq->data);
>> - devfreq->data = NULL;
>> + kfree(devfreq->governor_data);
>> + devfreq->governor_data = NULL;
>> }
>>
>> static int devfreq_userspace_handler(struct devfreq *devfreq,
>> diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
>> index 34aab4dd336c..4dc7cda4fd46 100644
>> --- a/include/linux/devfreq.h
>> +++ b/include/linux/devfreq.h
>> @@ -152,8 +152,8 @@ struct devfreq_stats {
>> * @max_state: count of entry present in the frequency table.
>> * @previous_freq: previously configured frequency value.
>> * @last_status: devfreq user device info, performance statistics
>> - * @data: Private data of the governor. The devfreq framework does not
>> - * touch this.
>> + * @data: devfreq driver pass to governors, governor should not change it.
>> + * @governor_data: private data for governors, devfreq core doesn't touch it.
>> * @user_min_freq_req: PM QoS minimum frequency request from user (via sysfs)
>> * @user_max_freq_req: PM QoS maximum frequency request from user (via sysfs)
>> * @scaling_min_freq: Limit minimum frequency requested by OPP interface
>> @@ -193,7 +193,8 @@ struct devfreq {
>> unsigned long previous_freq;
>> struct devfreq_dev_status last_status;
>>
>> - void *data; /* private data for governors */
>> + void *data;
>> + void *governor_data;
>>
>> struct dev_pm_qos_request user_min_freq_req;
>> struct dev_pm_qos_request user_max_freq_req;
>
^ permalink raw reply [relevance 20%]
* [PATCH v4] PM/devfreq: governor: Add a private governor_data for governor
@ 2022-10-25 7:21 15% Kant Fan
2022-11-20 11:50 0% ` Chanwoo Choi
0 siblings, 1 reply; 200+ results
From: Kant Fan @ 2022-10-25 7:21 UTC (permalink / raw)
To: myungjoo.ham, kyungmin.park, cw00.choi, mturquette, rjw, khilman
Cc: linux-pm, linux-kernel, stable
The member void *data in the structure devfreq can be overwrite
by governor_userspace. For example:
1. The device driver assigned the devfreq governor to simple_ondemand
by the function devfreq_add_device() and init the devfreq member
void *data to a pointer of a static structure devfreq_simple_ondemand_data
by the function devfreq_add_device().
2. The user changed the devfreq governor to userspace by the command
"echo userspace > /sys/class/devfreq/.../governor".
3. The governor userspace alloced a dynamic memory for the struct
userspace_data and assigend the member void *data of devfreq to
this memory by the function userspace_init().
4. The user changed the devfreq governor back to simple_ondemand
by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
5. The governor userspace exited and assigned the member void *data
in the structure devfreq to NULL by the function userspace_exit().
6. The governor simple_ondemand fetched the static information of
devfreq_simple_ondemand_data in the function
devfreq_simple_ondemand_func() but the member void *data of devfreq was
assigned to NULL by the function userspace_exit().
7. The information of upthreshold and downdifferential is lost
and the governor simple_ondemand can't work correctly.
The member void *data in the structure devfreq is designed for
a static pointer used in a governor and inited by the function
devfreq_add_device(). This patch add an element named governor_data
in the devfreq structure which can be used by a governor(E.g userspace)
who want to assign a private data to do some private things.
Fixes: ce26c5bb9569 ("PM / devfreq: Add basic governors")
Cc: stable@vger.kernel.org # 5.10+
Reviewed-by: Chanwoo Choi <cwchoi00@gmail.com>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kant Fan <kant@allwinnertech.com>
---
drivers/devfreq/devfreq.c | 6 ++----
drivers/devfreq/governor_userspace.c | 12 ++++++------
include/linux/devfreq.h | 7 ++++---
3 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 63347a5ae599..8c5f6f7fca11 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -776,8 +776,7 @@ static void remove_sysfs_files(struct devfreq *devfreq,
* @dev: the device to add devfreq feature.
* @profile: device-specific profile to run devfreq.
* @governor_name: name of the policy to choose frequency.
- * @data: private data for the governor. The devfreq framework does not
- * touch this value.
+ * @data: devfreq driver pass to governors, governor should not change it.
*/
struct devfreq *devfreq_add_device(struct device *dev,
struct devfreq_dev_profile *profile,
@@ -1011,8 +1010,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)
* @dev: the device to add devfreq feature.
* @profile: device-specific profile to run devfreq.
* @governor_name: name of the policy to choose frequency.
- * @data: private data for the governor. The devfreq framework does not
- * touch this value.
+ * @data: devfreq driver pass to governors, governor should not change it.
*
* This function manages automatically the memory of devfreq device using device
* resource management and simplify the free operation for memory of devfreq
diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
index ab9db7adb3ad..d69672ccacc4 100644
--- a/drivers/devfreq/governor_userspace.c
+++ b/drivers/devfreq/governor_userspace.c
@@ -21,7 +21,7 @@ struct userspace_data {
static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
{
- struct userspace_data *data = df->data;
+ struct userspace_data *data = df->governor_data;
if (data->valid)
*freq = data->user_frequency;
@@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
sscanf(buf, "%lu", &wanted);
data->user_frequency = wanted;
@@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
if (data->valid)
err = sprintf(buf, "%lu\n", data->user_frequency);
@@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
goto out;
}
data->valid = false;
- devfreq->data = data;
+ devfreq->governor_data = data;
err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
out:
@@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
if (devfreq->dev.kobj.sd)
sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
- kfree(devfreq->data);
- devfreq->data = NULL;
+ kfree(devfreq->governor_data);
+ devfreq->governor_data = NULL;
}
static int devfreq_userspace_handler(struct devfreq *devfreq,
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 34aab4dd336c..4dc7cda4fd46 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -152,8 +152,8 @@ struct devfreq_stats {
* @max_state: count of entry present in the frequency table.
* @previous_freq: previously configured frequency value.
* @last_status: devfreq user device info, performance statistics
- * @data: Private data of the governor. The devfreq framework does not
- * touch this.
+ * @data: devfreq driver pass to governors, governor should not change it.
+ * @governor_data: private data for governors, devfreq core doesn't touch it.
* @user_min_freq_req: PM QoS minimum frequency request from user (via sysfs)
* @user_max_freq_req: PM QoS maximum frequency request from user (via sysfs)
* @scaling_min_freq: Limit minimum frequency requested by OPP interface
@@ -193,7 +193,8 @@ struct devfreq {
unsigned long previous_freq;
struct devfreq_dev_status last_status;
- void *data; /* private data for governors */
+ void *data;
+ void *governor_data;
struct dev_pm_qos_request user_min_freq_req;
struct dev_pm_qos_request user_max_freq_req;
--
2.29.0
^ permalink raw reply related [relevance 15%]
* Re: [RESEND] clocksource: sun4i: Fix the bug that tick_resume stucks
2022-10-09 3:25 16% Victor Hassan
2022-10-12 21:46 0% ` Jernej Škrabec
@ 2022-10-25 6:23 14% ` Victor Hassan
2022-10-26 8:21 0% ` maxime
1 sibling, 1 reply; 200+ results
From: Victor Hassan @ 2022-10-25 6:23 UTC (permalink / raw)
To: daniel.lezcano, tglx, wens, jernej.skrabec, samuel, maxime, mripard
Cc: linux-kernel, linux-arm-kernel, linux-sunxi
On 2022/10/9 11:25, Victor Hassan wrote:
> Currently syscore_resume() will stuck on tick_resume().
> Fix this by changing `.tick_resume` from
> sun4i_clkevt_shutdown() to a new function sun4i_tick_resume().
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> ---
> drivers/clocksource/timer-sun4i.c | 131 ++++++++++++++++++++++--------
> 1 file changed, 96 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
> index 94dc6e42e983..574398c35a22 100644
> --- a/drivers/clocksource/timer-sun4i.c
> +++ b/drivers/clocksource/timer-sun4i.c
> @@ -38,6 +38,19 @@
>
> #define TIMER_SYNC_TICKS 3
>
> +/* Registers which needs to be saved and restored before and after sleeping */
> +static u32 sun4i_timer_regs_offset[] = {
> + TIMER_IRQ_EN_REG,
> + TIMER_CTL_REG(0),
> + TIMER_INTVAL_REG(0),
> + TIMER_CNTVAL_REG(0),
> + TIMER_CTL_REG(1),
> + TIMER_INTVAL_REG(1),
> + TIMER_CNTVAL_REG(1),
> +};
> +
> +static void __iomem *sun4i_timer_sched_base __read_mostly;
> +
> /*
> * When we disable a timer, we need to wait at least for 2 cycles of
> * the timer source clock. We will use for that the clocksource timer
> @@ -79,10 +92,41 @@ static void sun4i_clkevt_time_start(void __iomem *base, u8 timer,
> base + TIMER_CTL_REG(timer));
> }
>
> +static inline void sun4i_timer_save_regs(struct timer_of *to)
> +{
> + void __iomem *base = timer_of_base(to);
> + int i;
> + u32 *regs_backup = (u32 *)to->private_data;
> +
> + for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
> + regs_backup[i] = readl(base + sun4i_timer_regs_offset[i]);
> +}
> +
> +static inline void sun4i_timer_restore_regs(struct timer_of *to)
> +{
> + void __iomem *base = timer_of_base(to);
> + int i;
> + u32 *regs_backup = (u32 *)to->private_data;
> +
> + for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
> + writel(regs_backup[i], base + sun4i_timer_regs_offset[i]);
> +}
> +
> static int sun4i_clkevt_shutdown(struct clock_event_device *evt)
> {
> struct timer_of *to = to_timer_of(evt);
>
> + sun4i_timer_save_regs(to);
> + sun4i_clkevt_time_stop(timer_of_base(to), 0);
> +
> + return 0;
> +}
> +
> +static int sun4i_tick_resume(struct clock_event_device *evt)
> +{
> + struct timer_of *to = to_timer_of(evt);
> +
> + sun4i_timer_restore_regs(to);
> sun4i_clkevt_time_stop(timer_of_base(to), 0);
>
> return 0;
> @@ -137,45 +181,54 @@ static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
> return IRQ_HANDLED;
> }
>
> -static struct timer_of to = {
> - .flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE,
> -
> - .clkevt = {
> - .name = "sun4i_tick",
> - .rating = 350,
> - .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
> - .set_state_shutdown = sun4i_clkevt_shutdown,
> - .set_state_periodic = sun4i_clkevt_set_periodic,
> - .set_state_oneshot = sun4i_clkevt_set_oneshot,
> - .tick_resume = sun4i_clkevt_shutdown,
> - .set_next_event = sun4i_clkevt_next_event,
> - .cpumask = cpu_possible_mask,
> - },
> -
> - .of_irq = {
> - .handler = sun4i_timer_interrupt,
> - .flags = IRQF_TIMER | IRQF_IRQPOLL,
> - },
> -};
> +static void __init sun4i_clockevent_init(struct timer_of *to)
> +{
> + to->clkevt.name = "sun4i_tick";
> + to->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
> + to->clkevt.set_state_shutdown = sun4i_clkevt_shutdown;
> + to->clkevt.set_state_periodic = sun4i_clkevt_set_periodic;
> + to->clkevt.set_state_oneshot = sun4i_clkevt_set_oneshot;
> + to->clkevt.tick_resume = sun4i_tick_resume;
> + to->clkevt.set_next_event = sun4i_clkevt_next_event;
> + to->clkevt.cpumask = cpu_possible_mask;
> + to->of_irq.flags = IRQF_TIMER | IRQF_IRQPOLL;
> +
> + sun4i_timer_sched_base = timer_of_base(to) + TIMER_CNTVAL_REG(1);
> +}
>
> static u64 notrace sun4i_timer_sched_read(void)
> {
> - return ~readl(timer_of_base(&to) + TIMER_CNTVAL_REG(1));
> + return (u64)~readl(sun4i_timer_sched_base);
> }
>
> static int __init sun4i_timer_init(struct device_node *node)
> {
> + struct timer_of *to;
> int ret;
> u32 val;
>
> - ret = timer_of_init(node, &to);
> + to = kzalloc(sizeof(*to), GFP_KERNEL);
> + if (!to)
> + return -ENOMEM;
> +
> + to->flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE;
> + to->of_irq.handler = sun4i_timer_interrupt;
> + ret = timer_of_init(node, to);
> if (ret)
> - return ret;
> + goto err;
>
> - writel(~0, timer_of_base(&to) + TIMER_INTVAL_REG(1));
> + sun4i_clockevent_init(to);
> +
> + to->private_data = kcalloc(ARRAY_SIZE(sun4i_timer_regs_offset), sizeof(u32), GFP_KERNEL);
> + if (!to->private_data) {
> + ret = -ENOMEM;
> + goto err1;
> + }
> +
> + writel(~0, timer_of_base(to) + TIMER_INTVAL_REG(1));
> writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD |
> TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
> - timer_of_base(&to) + TIMER_CTL_REG(1));
> + timer_of_base(to) + TIMER_CTL_REG(1));
>
> /*
> * sched_clock_register does not have priorities, and on sun6i and
> @@ -186,32 +239,40 @@ static int __init sun4i_timer_init(struct device_node *node)
> of_machine_is_compatible("allwinner,sun5i-a10s") ||
> of_machine_is_compatible("allwinner,suniv-f1c100s"))
> sched_clock_register(sun4i_timer_sched_read, 32,
> - timer_of_rate(&to));
> + timer_of_rate(to));
>
> - ret = clocksource_mmio_init(timer_of_base(&to) + TIMER_CNTVAL_REG(1),
> - node->name, timer_of_rate(&to), 350, 32,
> + ret = clocksource_mmio_init(timer_of_base(to) + TIMER_CNTVAL_REG(1),
> + node->name, timer_of_rate(to), 350, 32,
> clocksource_mmio_readl_down);
> if (ret) {
> pr_err("Failed to register clocksource\n");
> - return ret;
> + goto err2;
> }
>
> writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
> - timer_of_base(&to) + TIMER_CTL_REG(0));
> + timer_of_base(to) + TIMER_CTL_REG(0));
>
> /* Make sure timer is stopped before playing with interrupts */
> - sun4i_clkevt_time_stop(timer_of_base(&to), 0);
> + sun4i_clkevt_time_stop(timer_of_base(to), 0);
>
> /* clear timer0 interrupt */
> - sun4i_timer_clear_interrupt(timer_of_base(&to));
> + sun4i_timer_clear_interrupt(timer_of_base(to));
>
> - clockevents_config_and_register(&to.clkevt, timer_of_rate(&to),
> + clockevents_config_and_register(&to->clkevt, timer_of_rate(to),
> TIMER_SYNC_TICKS, 0xffffffff);
>
> /* Enable timer0 interrupt */
> - val = readl(timer_of_base(&to) + TIMER_IRQ_EN_REG);
> - writel(val | TIMER_IRQ_EN(0), timer_of_base(&to) + TIMER_IRQ_EN_REG);
> + val = readl(timer_of_base(to) + TIMER_IRQ_EN_REG);
> + writel(val | TIMER_IRQ_EN(0), timer_of_base(to) + TIMER_IRQ_EN_REG);
> +
> + return ret;
>
> +err2:
> + kfree(to->private_data);
> +err1:
> + timer_of_cleanup(to);
> +err:
> + kfree(to);
> return ret;
> }
> TIMER_OF_DECLARE(sun4i, "allwinner,sun4i-a10-timer",
Hi Maxime,
Sorry to disturb. Just want to say that I'm looking forward to your
advice on this patch. Thank you : )
Regards,
Victor
^ permalink raw reply [relevance 14%]
* [PATCH 5.15 083/530] f2fs: increase the limit for reserve_root
@ 2022-10-24 11:27 6% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-10-24 11:27 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Aran Dalton, Chao Yu, Jaegeuk Kim
From: Jaegeuk Kim <jaegeuk@kernel.org>
commit da35fe96d12d15779f3cb74929b7ed03941cf983 upstream.
This patch increases the threshold that limits the reserved root space from 0.2%
to 12.5% by using simple shift operation.
Typically Android sets 128MB, but if the storage capacity is 32GB, 0.2% which is
around 64MB becomes too small. Let's relax it.
Cc: stable@vger.kernel.org
Reported-by: Aran Dalton <arda@allwinnertech.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/f2fs/super.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -306,10 +306,10 @@ static void f2fs_destroy_casefold_cache(
static inline void limit_reserve_root(struct f2fs_sb_info *sbi)
{
- block_t limit = min((sbi->user_block_count << 1) / 1000,
+ block_t limit = min((sbi->user_block_count >> 3),
sbi->user_block_count - sbi->reserved_blocks);
- /* limit is 0.2% */
+ /* limit is 12.5% */
if (test_opt(sbi, RESERVE_ROOT) &&
F2FS_OPTION(sbi).root_reserved_blocks > limit) {
F2FS_OPTION(sbi).root_reserved_blocks = limit;
^ permalink raw reply [relevance 6%]
* [PATCH 5.4 036/255] f2fs: increase the limit for reserve_root
@ 2022-10-24 11:29 6% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-10-24 11:29 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Aran Dalton, Chao Yu, Jaegeuk Kim
From: Jaegeuk Kim <jaegeuk@kernel.org>
commit da35fe96d12d15779f3cb74929b7ed03941cf983 upstream.
This patch increases the threshold that limits the reserved root space from 0.2%
to 12.5% by using simple shift operation.
Typically Android sets 128MB, but if the storage capacity is 32GB, 0.2% which is
around 64MB becomes too small. Let's relax it.
Cc: stable@vger.kernel.org
Reported-by: Aran Dalton <arda@allwinnertech.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/f2fs/super.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -255,10 +255,10 @@ static int f2fs_sb_read_encoding(const s
static inline void limit_reserve_root(struct f2fs_sb_info *sbi)
{
- block_t limit = min((sbi->user_block_count << 1) / 1000,
+ block_t limit = min((sbi->user_block_count >> 3),
sbi->user_block_count - sbi->reserved_blocks);
- /* limit is 0.2% */
+ /* limit is 12.5% */
if (test_opt(sbi, RESERVE_ROOT) &&
F2FS_OPTION(sbi).root_reserved_blocks > limit) {
F2FS_OPTION(sbi).root_reserved_blocks = limit;
^ permalink raw reply [relevance 6%]
* [PATCH 5.10 050/390] f2fs: increase the limit for reserve_root
@ 2022-10-24 11:27 6% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-10-24 11:27 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Aran Dalton, Chao Yu, Jaegeuk Kim
From: Jaegeuk Kim <jaegeuk@kernel.org>
commit da35fe96d12d15779f3cb74929b7ed03941cf983 upstream.
This patch increases the threshold that limits the reserved root space from 0.2%
to 12.5% by using simple shift operation.
Typically Android sets 128MB, but if the storage capacity is 32GB, 0.2% which is
around 64MB becomes too small. Let's relax it.
Cc: stable@vger.kernel.org
Reported-by: Aran Dalton <arda@allwinnertech.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/f2fs/super.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -267,10 +267,10 @@ static int f2fs_sb_read_encoding(const s
static inline void limit_reserve_root(struct f2fs_sb_info *sbi)
{
- block_t limit = min((sbi->user_block_count << 1) / 1000,
+ block_t limit = min((sbi->user_block_count >> 3),
sbi->user_block_count - sbi->reserved_blocks);
- /* limit is 0.2% */
+ /* limit is 12.5% */
if (test_opt(sbi, RESERVE_ROOT) &&
F2FS_OPTION(sbi).root_reserved_blocks > limit) {
F2FS_OPTION(sbi).root_reserved_blocks = limit;
^ permalink raw reply [relevance 6%]
* [PATCH 5.19 115/717] f2fs: increase the limit for reserve_root
@ 2022-10-22 7:19 6% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-10-22 7:19 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Aran Dalton, Chao Yu, Jaegeuk Kim
From: Jaegeuk Kim <jaegeuk@kernel.org>
commit da35fe96d12d15779f3cb74929b7ed03941cf983 upstream.
This patch increases the threshold that limits the reserved root space from 0.2%
to 12.5% by using simple shift operation.
Typically Android sets 128MB, but if the storage capacity is 32GB, 0.2% which is
around 64MB becomes too small. Let's relax it.
Cc: stable@vger.kernel.org
Reported-by: Aran Dalton <arda@allwinnertech.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/f2fs/super.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -298,10 +298,10 @@ static void f2fs_destroy_casefold_cache(
static inline void limit_reserve_root(struct f2fs_sb_info *sbi)
{
- block_t limit = min((sbi->user_block_count << 1) / 1000,
+ block_t limit = min((sbi->user_block_count >> 3),
sbi->user_block_count - sbi->reserved_blocks);
- /* limit is 0.2% */
+ /* limit is 12.5% */
if (test_opt(sbi, RESERVE_ROOT) &&
F2FS_OPTION(sbi).root_reserved_blocks > limit) {
F2FS_OPTION(sbi).root_reserved_blocks = limit;
^ permalink raw reply [relevance 6%]
* Re: [PATCH v3] PM/devfreq: governor: Add a private governor_data for governor
2022-10-14 9:43 15% [PATCH v3] PM/devfreq: governor: Add a private governor_data for governor Kant Fan
@ 2022-10-21 23:41 0% ` Chanwoo Choi
2022-10-25 7:57 20% ` Kant Fan
0 siblings, 1 reply; 200+ results
From: Chanwoo Choi @ 2022-10-21 23:41 UTC (permalink / raw)
To: Kant Fan, myungjoo.ham, kyungmin.park, cw00.choi, khilman, rjw,
mturquette
Cc: linux-pm, linux-kernel
Hi,
Looks good to me. But, you need to send it to the stable mailing list
too as I commented on previous mail.
Please add stable@vger.kernel.org to Cc.
On 22. 10. 14. 18:43, Kant Fan wrote:
> The member void *data in the structure devfreq can be overwrite
> by governor_userspace. For example:
> 1. The device driver assigned the devfreq governor to simple_ondemand
> by the function devfreq_add_device() and init the devfreq member
> void *data to a pointer of a static structure devfreq_simple_ondemand_data
> by the function devfreq_add_device().
> 2. The user changed the devfreq governor to userspace by the command
> "echo userspace > /sys/class/devfreq/.../governor".
> 3. The governor userspace alloced a dynamic memory for the struct
> userspace_data and assigend the member void *data of devfreq to
> this memory by the function userspace_init().
> 4. The user changed the devfreq governor back to simple_ondemand
> by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
> 5. The governor userspace exited and assigned the member void *data
> in the structure devfreq to NULL by the function userspace_exit().
> 6. The governor simple_ondemand fetched the static information of
> devfreq_simple_ondemand_data in the function
> devfreq_simple_ondemand_func() but the member void *data of devfreq was
> assigned to NULL by the function userspace_exit().
> 7. The information of upthreshold and downdifferential is lost
> and the governor simple_ondemand can't work correctly.
>
> The member void *data in the structure devfreq is designed for
> a static pointer used in a governor and inited by the function
> devfreq_add_device(). This patch add an element named governor_data
> in the devfreq structure which can be used by a governor(E.g userspace)
> who want to assign a private data to do some private things.
>
> Fixes: ce26c5bb9569 ("PM / devfreq: Add basic governors")
>
> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
>
> Signed-off-by: Kant Fan <kant@allwinnertech.com>
> ---
> drivers/devfreq/devfreq.c | 6 ++----
> drivers/devfreq/governor_userspace.c | 12 ++++++------
> include/linux/devfreq.h | 7 ++++---
> 3 files changed, 12 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 63347a5ae599..8c5f6f7fca11 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -776,8 +776,7 @@ static void remove_sysfs_files(struct devfreq *devfreq,
> * @dev: the device to add devfreq feature.
> * @profile: device-specific profile to run devfreq.
> * @governor_name: name of the policy to choose frequency.
> - * @data: private data for the governor. The devfreq framework does not
> - * touch this value.
> + * @data: devfreq driver pass to governors, governor should not change it.
> */
> struct devfreq *devfreq_add_device(struct device *dev,
> struct devfreq_dev_profile *profile,
> @@ -1011,8 +1010,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)
> * @dev: the device to add devfreq feature.
> * @profile: device-specific profile to run devfreq.
> * @governor_name: name of the policy to choose frequency.
> - * @data: private data for the governor. The devfreq framework does not
> - * touch this value.
> + * @data: devfreq driver pass to governors, governor should not change it.
> *
> * This function manages automatically the memory of devfreq device using device
> * resource management and simplify the free operation for memory of devfreq
> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
> index ab9db7adb3ad..d69672ccacc4 100644
> --- a/drivers/devfreq/governor_userspace.c
> +++ b/drivers/devfreq/governor_userspace.c
> @@ -21,7 +21,7 @@ struct userspace_data {
>
> static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
> {
> - struct userspace_data *data = df->data;
> + struct userspace_data *data = df->governor_data;
>
> if (data->valid)
> *freq = data->user_frequency;
> @@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
> int err = 0;
>
> mutex_lock(&devfreq->lock);
> - data = devfreq->data;
> + data = devfreq->governor_data;
>
> sscanf(buf, "%lu", &wanted);
> data->user_frequency = wanted;
> @@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,
> int err = 0;
>
> mutex_lock(&devfreq->lock);
> - data = devfreq->data;
> + data = devfreq->governor_data;
>
> if (data->valid)
> err = sprintf(buf, "%lu\n", data->user_frequency);
> @@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
> goto out;
> }
> data->valid = false;
> - devfreq->data = data;
> + devfreq->governor_data = data;
>
> err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
> out:
> @@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
> if (devfreq->dev.kobj.sd)
> sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
>
> - kfree(devfreq->data);
> - devfreq->data = NULL;
> + kfree(devfreq->governor_data);
> + devfreq->governor_data = NULL;
> }
>
> static int devfreq_userspace_handler(struct devfreq *devfreq,
> diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
> index 34aab4dd336c..4dc7cda4fd46 100644
> --- a/include/linux/devfreq.h
> +++ b/include/linux/devfreq.h
> @@ -152,8 +152,8 @@ struct devfreq_stats {
> * @max_state: count of entry present in the frequency table.
> * @previous_freq: previously configured frequency value.
> * @last_status: devfreq user device info, performance statistics
> - * @data: Private data of the governor. The devfreq framework does not
> - * touch this.
> + * @data: devfreq driver pass to governors, governor should not change it.
> + * @governor_data: private data for governors, devfreq core doesn't touch it.
> * @user_min_freq_req: PM QoS minimum frequency request from user (via sysfs)
> * @user_max_freq_req: PM QoS maximum frequency request from user (via sysfs)
> * @scaling_min_freq: Limit minimum frequency requested by OPP interface
> @@ -193,7 +193,8 @@ struct devfreq {
> unsigned long previous_freq;
> struct devfreq_dev_status last_status;
>
> - void *data; /* private data for governors */
> + void *data;
> + void *governor_data;
>
> struct dev_pm_qos_request user_min_freq_req;
> struct dev_pm_qos_request user_max_freq_req;
--
Best Regards,
Samsung Electronics
Chanwoo Choi
^ permalink raw reply [relevance 0%]
* [PATCH 6.0 126/862] f2fs: increase the limit for reserve_root
@ 2022-10-19 8:23 6% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-10-19 8:23 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Aran Dalton, Chao Yu, Jaegeuk Kim
From: Jaegeuk Kim <jaegeuk@kernel.org>
commit da35fe96d12d15779f3cb74929b7ed03941cf983 upstream.
This patch increases the threshold that limits the reserved root space from 0.2%
to 12.5% by using simple shift operation.
Typically Android sets 128MB, but if the storage capacity is 32GB, 0.2% which is
around 64MB becomes too small. Let's relax it.
Cc: stable@vger.kernel.org
Reported-by: Aran Dalton <arda@allwinnertech.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/f2fs/super.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -301,10 +301,10 @@ static void f2fs_destroy_casefold_cache(
static inline void limit_reserve_root(struct f2fs_sb_info *sbi)
{
- block_t limit = min((sbi->user_block_count << 1) / 1000,
+ block_t limit = min((sbi->user_block_count >> 3),
sbi->user_block_count - sbi->reserved_blocks);
- /* limit is 0.2% */
+ /* limit is 12.5% */
if (test_opt(sbi, RESERVE_ROOT) &&
F2FS_OPTION(sbi).root_reserved_blocks > limit) {
F2FS_OPTION(sbi).root_reserved_blocks = limit;
^ permalink raw reply [relevance 6%]
* Re: [PATCH v2] devfreq: governor: Add a private governor_data for governors in devfreq
2022-10-12 19:19 0% ` Chanwoo Choi
@ 2022-10-14 9:46 20% ` Kant Fan
0 siblings, 0 replies; 200+ results
From: Kant Fan @ 2022-10-14 9:46 UTC (permalink / raw)
To: Chanwoo Choi, myungjoo.ham, kyungmin.park, cw00.choi
Cc: linux-pm, linux-kernel
On 10/13/2022 3:19 AM, Chanwoo Choi wrote:
>
> In addition, the devfreq driver pass the 'data' from devfreq driver
> to governor by using devfreq_add_device. I think that 'devfreq driver'
> is more proper
>
> * @data: devfreq driver pass to governors, governor should not change it.
>
> And then, there are extra changes required.
>
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 63347a5ae599..0c59b7978391 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -776,8 +776,7 @@ static void remove_sysfs_files(struct devfreq *devfreq,
> * @dev: the device to add devfreq feature.
> * @profile: device-specific profile to run devfreq.
> * @governor_name: name of the policy to choose frequency.
> - * @data: private data for the governor. The devfreq framework does not
> - * touch this value.
> + * @data: devfreq driver pass to governors, governor should not change it.
> */
> struct devfreq *devfreq_add_device(struct device *dev,
> struct devfreq_dev_profile *profile,
> @@ -1011,8 +1010,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)
> * @dev: the device to add devfreq feature.
> * @profile: device-specific profile to run devfreq.
> * @governor_name: name of the policy to choose frequency.
> - * @data: private data for the governor. The devfreq framework does not
> - * touch this value.
> + * @data: devfreq driver pass to governors, governor should not change it.
> *
> * This function manages automatically the memory of devfreq device using device
> * resource management and simplify the free operation for memory of devfreq
>
Dear Chanwoo,
Thanks for your kindly advice. I've modified it as patch-v3 [1]. Please
have a look.
[1]
https://lore.kernel.org/all/20221014094359.100995-1-kant@allwinnertech.com/
--
Best Regards,
Kant Fan
^ permalink raw reply [relevance 20%]
* [PATCH v3] PM/devfreq: governor: Add a private governor_data for governor
@ 2022-10-14 9:43 15% Kant Fan
2022-10-21 23:41 0% ` Chanwoo Choi
0 siblings, 1 reply; 200+ results
From: Kant Fan @ 2022-10-14 9:43 UTC (permalink / raw)
To: myungjoo.ham, kyungmin.park, cw00.choi, khilman, rjw, mturquette
Cc: linux-pm, linux-kernel
The member void *data in the structure devfreq can be overwrite
by governor_userspace. For example:
1. The device driver assigned the devfreq governor to simple_ondemand
by the function devfreq_add_device() and init the devfreq member
void *data to a pointer of a static structure devfreq_simple_ondemand_data
by the function devfreq_add_device().
2. The user changed the devfreq governor to userspace by the command
"echo userspace > /sys/class/devfreq/.../governor".
3. The governor userspace alloced a dynamic memory for the struct
userspace_data and assigend the member void *data of devfreq to
this memory by the function userspace_init().
4. The user changed the devfreq governor back to simple_ondemand
by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
5. The governor userspace exited and assigned the member void *data
in the structure devfreq to NULL by the function userspace_exit().
6. The governor simple_ondemand fetched the static information of
devfreq_simple_ondemand_data in the function
devfreq_simple_ondemand_func() but the member void *data of devfreq was
assigned to NULL by the function userspace_exit().
7. The information of upthreshold and downdifferential is lost
and the governor simple_ondemand can't work correctly.
The member void *data in the structure devfreq is designed for
a static pointer used in a governor and inited by the function
devfreq_add_device(). This patch add an element named governor_data
in the devfreq structure which can be used by a governor(E.g userspace)
who want to assign a private data to do some private things.
Fixes: ce26c5bb9569 ("PM / devfreq: Add basic governors")
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kant Fan <kant@allwinnertech.com>
---
drivers/devfreq/devfreq.c | 6 ++----
drivers/devfreq/governor_userspace.c | 12 ++++++------
include/linux/devfreq.h | 7 ++++---
3 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 63347a5ae599..8c5f6f7fca11 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -776,8 +776,7 @@ static void remove_sysfs_files(struct devfreq *devfreq,
* @dev: the device to add devfreq feature.
* @profile: device-specific profile to run devfreq.
* @governor_name: name of the policy to choose frequency.
- * @data: private data for the governor. The devfreq framework does not
- * touch this value.
+ * @data: devfreq driver pass to governors, governor should not change it.
*/
struct devfreq *devfreq_add_device(struct device *dev,
struct devfreq_dev_profile *profile,
@@ -1011,8 +1010,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)
* @dev: the device to add devfreq feature.
* @profile: device-specific profile to run devfreq.
* @governor_name: name of the policy to choose frequency.
- * @data: private data for the governor. The devfreq framework does not
- * touch this value.
+ * @data: devfreq driver pass to governors, governor should not change it.
*
* This function manages automatically the memory of devfreq device using device
* resource management and simplify the free operation for memory of devfreq
diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
index ab9db7adb3ad..d69672ccacc4 100644
--- a/drivers/devfreq/governor_userspace.c
+++ b/drivers/devfreq/governor_userspace.c
@@ -21,7 +21,7 @@ struct userspace_data {
static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
{
- struct userspace_data *data = df->data;
+ struct userspace_data *data = df->governor_data;
if (data->valid)
*freq = data->user_frequency;
@@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
sscanf(buf, "%lu", &wanted);
data->user_frequency = wanted;
@@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
if (data->valid)
err = sprintf(buf, "%lu\n", data->user_frequency);
@@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
goto out;
}
data->valid = false;
- devfreq->data = data;
+ devfreq->governor_data = data;
err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
out:
@@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
if (devfreq->dev.kobj.sd)
sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
- kfree(devfreq->data);
- devfreq->data = NULL;
+ kfree(devfreq->governor_data);
+ devfreq->governor_data = NULL;
}
static int devfreq_userspace_handler(struct devfreq *devfreq,
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 34aab4dd336c..4dc7cda4fd46 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -152,8 +152,8 @@ struct devfreq_stats {
* @max_state: count of entry present in the frequency table.
* @previous_freq: previously configured frequency value.
* @last_status: devfreq user device info, performance statistics
- * @data: Private data of the governor. The devfreq framework does not
- * touch this.
+ * @data: devfreq driver pass to governors, governor should not change it.
+ * @governor_data: private data for governors, devfreq core doesn't touch it.
* @user_min_freq_req: PM QoS minimum frequency request from user (via sysfs)
* @user_max_freq_req: PM QoS maximum frequency request from user (via sysfs)
* @scaling_min_freq: Limit minimum frequency requested by OPP interface
@@ -193,7 +193,8 @@ struct devfreq {
unsigned long previous_freq;
struct devfreq_dev_status last_status;
- void *data; /* private data for governors */
+ void *data;
+ void *governor_data;
struct dev_pm_qos_request user_min_freq_req;
struct dev_pm_qos_request user_max_freq_req;
--
2.29.0
^ permalink raw reply related [relevance 15%]
* Re: [RESEND] clocksource: sun4i: Fix the bug that tick_resume stucks
2022-10-09 3:25 16% Victor Hassan
@ 2022-10-12 21:46 0% ` Jernej Škrabec
2022-10-25 6:23 14% ` Victor Hassan
1 sibling, 0 replies; 200+ results
From: Jernej Škrabec @ 2022-10-12 21:46 UTC (permalink / raw)
To: daniel.lezcano, tglx, wens, samuel, maxime, Victor Hassan
Cc: linux-kernel, linux-arm-kernel, linux-sunxi
Hi Victor,
Dne nedelja, 09. oktober 2022 ob 05:25:07 CEST je Victor Hassan napisal(a):
> Currently syscore_resume() will stuck on tick_resume().
> Fix this by changing `.tick_resume` from
> sun4i_clkevt_shutdown() to a new function sun4i_tick_resume().
This is pretty involved change. Can you split it in more manageable chunks?
Also you didn't state why it stucks and what does new approach differently so
it doesn't stuck.
Best regards,
Jernej
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> ---
> drivers/clocksource/timer-sun4i.c | 131 ++++++++++++++++++++++--------
> 1 file changed, 96 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/clocksource/timer-sun4i.c
> b/drivers/clocksource/timer-sun4i.c index 94dc6e42e983..574398c35a22 100644
> --- a/drivers/clocksource/timer-sun4i.c
> +++ b/drivers/clocksource/timer-sun4i.c
> @@ -38,6 +38,19 @@
>
> #define TIMER_SYNC_TICKS 3
>
> +/* Registers which needs to be saved and restored before and after sleeping
> */ +static u32 sun4i_timer_regs_offset[] = {
> + TIMER_IRQ_EN_REG,
> + TIMER_CTL_REG(0),
> + TIMER_INTVAL_REG(0),
> + TIMER_CNTVAL_REG(0),
> + TIMER_CTL_REG(1),
> + TIMER_INTVAL_REG(1),
> + TIMER_CNTVAL_REG(1),
> +};
> +
> +static void __iomem *sun4i_timer_sched_base __read_mostly;
> +
> /*
> * When we disable a timer, we need to wait at least for 2 cycles of
> * the timer source clock. We will use for that the clocksource timer
> @@ -79,10 +92,41 @@ static void sun4i_clkevt_time_start(void __iomem *base,
> u8 timer, base + TIMER_CTL_REG(timer));
> }
>
> +static inline void sun4i_timer_save_regs(struct timer_of *to)
> +{
> + void __iomem *base = timer_of_base(to);
> + int i;
> + u32 *regs_backup = (u32 *)to->private_data;
> +
> + for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
> + regs_backup[i] = readl(base +
sun4i_timer_regs_offset[i]);
> +}
> +
> +static inline void sun4i_timer_restore_regs(struct timer_of *to)
> +{
> + void __iomem *base = timer_of_base(to);
> + int i;
> + u32 *regs_backup = (u32 *)to->private_data;
> +
> + for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
> + writel(regs_backup[i], base +
sun4i_timer_regs_offset[i]);
> +}
> +
> static int sun4i_clkevt_shutdown(struct clock_event_device *evt)
> {
> struct timer_of *to = to_timer_of(evt);
>
> + sun4i_timer_save_regs(to);
> + sun4i_clkevt_time_stop(timer_of_base(to), 0);
> +
> + return 0;
> +}
> +
> +static int sun4i_tick_resume(struct clock_event_device *evt)
> +{
> + struct timer_of *to = to_timer_of(evt);
> +
> + sun4i_timer_restore_regs(to);
> sun4i_clkevt_time_stop(timer_of_base(to), 0);
>
> return 0;
> @@ -137,45 +181,54 @@ static irqreturn_t sun4i_timer_interrupt(int irq, void
> *dev_id) return IRQ_HANDLED;
> }
>
> -static struct timer_of to = {
> - .flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE,
> -
> - .clkevt = {
> - .name = "sun4i_tick",
> - .rating = 350,
> - .features = CLOCK_EVT_FEAT_PERIODIC |
CLOCK_EVT_FEAT_ONESHOT,
> - .set_state_shutdown = sun4i_clkevt_shutdown,
> - .set_state_periodic = sun4i_clkevt_set_periodic,
> - .set_state_oneshot = sun4i_clkevt_set_oneshot,
> - .tick_resume = sun4i_clkevt_shutdown,
> - .set_next_event = sun4i_clkevt_next_event,
> - .cpumask = cpu_possible_mask,
> - },
> -
> - .of_irq = {
> - .handler = sun4i_timer_interrupt,
> - .flags = IRQF_TIMER | IRQF_IRQPOLL,
> - },
> -};
> +static void __init sun4i_clockevent_init(struct timer_of *to)
> +{
> + to->clkevt.name = "sun4i_tick";
> + to->clkevt.features = CLOCK_EVT_FEAT_PERIODIC |
CLOCK_EVT_FEAT_ONESHOT;
> + to->clkevt.set_state_shutdown = sun4i_clkevt_shutdown;
> + to->clkevt.set_state_periodic = sun4i_clkevt_set_periodic;
> + to->clkevt.set_state_oneshot = sun4i_clkevt_set_oneshot;
> + to->clkevt.tick_resume = sun4i_tick_resume;
> + to->clkevt.set_next_event = sun4i_clkevt_next_event;
> + to->clkevt.cpumask = cpu_possible_mask;
> + to->of_irq.flags = IRQF_TIMER | IRQF_IRQPOLL;
> +
> + sun4i_timer_sched_base = timer_of_base(to) + TIMER_CNTVAL_REG(1);
> +}
>
> static u64 notrace sun4i_timer_sched_read(void)
> {
> - return ~readl(timer_of_base(&to) + TIMER_CNTVAL_REG(1));
> + return (u64)~readl(sun4i_timer_sched_base);
> }
>
> static int __init sun4i_timer_init(struct device_node *node)
> {
> + struct timer_of *to;
> int ret;
> u32 val;
>
> - ret = timer_of_init(node, &to);
> + to = kzalloc(sizeof(*to), GFP_KERNEL);
> + if (!to)
> + return -ENOMEM;
> +
> + to->flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE;
> + to->of_irq.handler = sun4i_timer_interrupt;
> + ret = timer_of_init(node, to);
> if (ret)
> - return ret;
> + goto err;
>
> - writel(~0, timer_of_base(&to) + TIMER_INTVAL_REG(1));
> + sun4i_clockevent_init(to);
> +
> + to->private_data = kcalloc(ARRAY_SIZE(sun4i_timer_regs_offset),
> sizeof(u32), GFP_KERNEL); + if (!to->private_data) {
> + ret = -ENOMEM;
> + goto err1;
> + }
> +
> + writel(~0, timer_of_base(to) + TIMER_INTVAL_REG(1));
> writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD |
> TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
> - timer_of_base(&to) + TIMER_CTL_REG(1));
> + timer_of_base(to) + TIMER_CTL_REG(1));
>
> /*
> * sched_clock_register does not have priorities, and on sun6i and
> @@ -186,32 +239,40 @@ static int __init sun4i_timer_init(struct device_node
> *node) of_machine_is_compatible("allwinner,sun5i-a10s") ||
> of_machine_is_compatible("allwinner,suniv-f1c100s"))
> sched_clock_register(sun4i_timer_sched_read, 32,
> - timer_of_rate(&to));
> + timer_of_rate(to));
>
> - ret = clocksource_mmio_init(timer_of_base(&to) +
TIMER_CNTVAL_REG(1),
> - node->name,
timer_of_rate(&to), 350, 32,
> + ret = clocksource_mmio_init(timer_of_base(to) +
TIMER_CNTVAL_REG(1),
> + node->name,
timer_of_rate(to), 350, 32,
> clocksource_mmio_readl_down);
> if (ret) {
> pr_err("Failed to register clocksource\n");
> - return ret;
> + goto err2;
> }
>
> writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
> - timer_of_base(&to) + TIMER_CTL_REG(0));
> + timer_of_base(to) + TIMER_CTL_REG(0));
>
> /* Make sure timer is stopped before playing with interrupts */
> - sun4i_clkevt_time_stop(timer_of_base(&to), 0);
> + sun4i_clkevt_time_stop(timer_of_base(to), 0);
>
> /* clear timer0 interrupt */
> - sun4i_timer_clear_interrupt(timer_of_base(&to));
> + sun4i_timer_clear_interrupt(timer_of_base(to));
>
> - clockevents_config_and_register(&to.clkevt, timer_of_rate(&to),
> + clockevents_config_and_register(&to->clkevt, timer_of_rate(to),
> TIMER_SYNC_TICKS,
0xffffffff);
>
> /* Enable timer0 interrupt */
> - val = readl(timer_of_base(&to) + TIMER_IRQ_EN_REG);
> - writel(val | TIMER_IRQ_EN(0), timer_of_base(&to) +
TIMER_IRQ_EN_REG);
> + val = readl(timer_of_base(to) + TIMER_IRQ_EN_REG);
> + writel(val | TIMER_IRQ_EN(0), timer_of_base(to) +
TIMER_IRQ_EN_REG);
> +
> + return ret;
>
> +err2:
> + kfree(to->private_data);
> +err1:
> + timer_of_cleanup(to);
> +err:
> + kfree(to);
> return ret;
> }
> TIMER_OF_DECLARE(sun4i, "allwinner,sun4i-a10-timer",
> --
> 2.29.0
^ permalink raw reply [relevance 0%]
* Re: [PATCH v2] devfreq: governor: Add a private governor_data for governors in devfreq
2022-10-12 19:00 0% ` Chanwoo Choi
@ 2022-10-12 19:19 0% ` Chanwoo Choi
2022-10-14 9:46 20% ` Kant Fan
0 siblings, 1 reply; 200+ results
From: Chanwoo Choi @ 2022-10-12 19:19 UTC (permalink / raw)
To: Kant Fan, myungjoo.ham, kyungmin.park, cw00.choi; +Cc: linux-pm, linux-kernel
On 22. 10. 13. 04:00, Chanwoo Choi wrote:
> Hi,
>
> I'm sorry for late reply. It looks good to me.
> Instead, this patch should contain the 'Fixes' information
> with the following commit because the changed code was merged
> on the patch[1]. Also, need to send it to stable mailing list.
>
> [1] ce26c5bb9569d8b826f01b8620fc16d8da6821e9
> PM / devfreq: Add basic governors
>
> Lastly, I think that need to change the patch title as following:
> - PM / devfreq: governor: Add a private governor_data for governor
>
>
> On 22. 10. 10. 16:22, Kant Fan wrote:
>> The member void *data in the structure devfreq can be overwrite
>> by governor_userspace. For example:
>> 1. The device driver assigned the devfreq governor to simple_ondemand
>> by the function devfreq_add_device() and init the devfreq member
>> void *data to a pointer of a static structure devfreq_simple_ondemand_data
>> by the function devfreq_add_device().
>> 2. The user changed the devfreq governor to userspace by the command
>> "echo userspace > /sys/class/devfreq/.../governor".
>> 3. The governor userspace alloced a dynamic memory for the struct
>> userspace_data and assigend the member void *data of devfreq to
>> this memory by the function userspace_init().
>> 4. The user changed the devfreq governor back to simple_ondemand
>> by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
>> 5. The governor userspace exited and assigned the member void *data
>> in the structure devfreq to NULL by the function userspace_exit().
>> 6. The governor simple_ondemand fetched the static information of
>> devfreq_simple_ondemand_data in the function
>> devfreq_simple_ondemand_func() but the member void *data of devfreq was
>> assigned to NULL by the function userspace_exit().
>> 7. The information of upthreshold and downdifferential is lost
>> and the governor simple_ondemand can't work correctly.
>>
>> The member void *data in the structure devfreq is designed for
>> a static pointer used in a governor and inited by the function
>> devfreq_add_device(). This patch add an element named governor_data
>> in the devfreq structure which can be used by a governor(E.g userspace)
>> who want to assign a private data to do some private things.
>>
>> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
>>
>> Signed-off-by: Kant Fan <kant@allwinnertech.com>
>> ---
>> drivers/devfreq/governor_userspace.c | 12 ++++++------
>> include/linux/devfreq.h | 7 ++++---
>> 2 files changed, 10 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
>> index ab9db7adb3ad..d69672ccacc4 100644
>> --- a/drivers/devfreq/governor_userspace.c
>> +++ b/drivers/devfreq/governor_userspace.c
>> @@ -21,7 +21,7 @@ struct userspace_data {
>>
>> static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
>> {
>> - struct userspace_data *data = df->data;
>> + struct userspace_data *data = df->governor_data;
>>
>> if (data->valid)
>> *freq = data->user_frequency;
>> @@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
>> int err = 0;
>>
>> mutex_lock(&devfreq->lock);
>> - data = devfreq->data;
>> + data = devfreq->governor_data;
>>
>> sscanf(buf, "%lu", &wanted);
>> data->user_frequency = wanted;
>> @@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,
>> int err = 0;
>>
>> mutex_lock(&devfreq->lock);
>> - data = devfreq->data;
>> + data = devfreq->governor_data;
>>
>> if (data->valid)
>> err = sprintf(buf, "%lu\n", data->user_frequency);
>> @@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
>> goto out;
>> }
>> data->valid = false;
>> - devfreq->data = data;
>> + devfreq->governor_data = data;
>>
>> err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
>> out:
>> @@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
>> if (devfreq->dev.kobj.sd)
>> sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
>>
>> - kfree(devfreq->data);
>> - devfreq->data = NULL;
>> + kfree(devfreq->governor_data);
>> + devfreq->governor_data = NULL;
>> }
>>
>> static int devfreq_userspace_handler(struct devfreq *devfreq,
>> diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
>> index 34aab4dd336c..d265af3fb0a4 100644
>> --- a/include/linux/devfreq.h
>> +++ b/include/linux/devfreq.h
>> @@ -152,8 +152,8 @@ struct devfreq_stats {
>> * @max_state: count of entry present in the frequency table.
>> * @previous_freq: previously configured frequency value.
>> * @last_status: devfreq user device info, performance statistics
>> - * @data: Private data of the governor. The devfreq framework does not
>> - * touch this.
>> + * @data: devfreq core pass to governors, governor should not change it.
In addition, the devfreq driver pass the 'data' from devfreq driver
to governor by using devfreq_add_device. I think that 'devfreq driver'
is more proper
* @data: devfreq driver pass to governors, governor should not change it.
And then, there are extra changes required.
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 63347a5ae599..0c59b7978391 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -776,8 +776,7 @@ static void remove_sysfs_files(struct devfreq *devfreq,
* @dev: the device to add devfreq feature.
* @profile: device-specific profile to run devfreq.
* @governor_name: name of the policy to choose frequency.
- * @data: private data for the governor. The devfreq framework does not
- * touch this value.
+ * @data: devfreq driver pass to governors, governor should not change it.
*/
struct devfreq *devfreq_add_device(struct device *dev,
struct devfreq_dev_profile *profile,
@@ -1011,8 +1010,7 @@ static void devm_devfreq_dev_release(struct device *dev, void *res)
* @dev: the device to add devfreq feature.
* @profile: device-specific profile to run devfreq.
* @governor_name: name of the policy to choose frequency.
- * @data: private data for the governor. The devfreq framework does not
- * touch this value.
+ * @data: devfreq driver pass to governors, governor should not change it.
*
* This function manages automatically the memory of devfreq device using device
* resource management and simplify the free operation for memory of devfreq
--
Best Regards,
Samsung Electronics
Chanwoo Choi
^ permalink raw reply related [relevance 0%]
* Re: [PATCH v2] devfreq: governor: Add a private governor_data for governors in devfreq
2022-10-10 7:22 16% [PATCH v2] devfreq: governor: Add a private governor_data for governors in devfreq Kant Fan
@ 2022-10-12 19:00 0% ` Chanwoo Choi
2022-10-12 19:19 0% ` Chanwoo Choi
0 siblings, 1 reply; 200+ results
From: Chanwoo Choi @ 2022-10-12 19:00 UTC (permalink / raw)
To: Kant Fan, myungjoo.ham, kyungmin.park, cw00.choi; +Cc: linux-pm, linux-kernel
Hi,
I'm sorry for late reply. It looks good to me.
Instead, this patch should contain the 'Fixes' information
with the following commit because the changed code was merged
on the patch[1]. Also, need to send it to stable mailing list.
[1] ce26c5bb9569d8b826f01b8620fc16d8da6821e9
PM / devfreq: Add basic governors
Lastly, I think that need to change the patch title as following:
- PM / devfreq: governor: Add a private governor_data for governor
On 22. 10. 10. 16:22, Kant Fan wrote:
> The member void *data in the structure devfreq can be overwrite
> by governor_userspace. For example:
> 1. The device driver assigned the devfreq governor to simple_ondemand
> by the function devfreq_add_device() and init the devfreq member
> void *data to a pointer of a static structure devfreq_simple_ondemand_data
> by the function devfreq_add_device().
> 2. The user changed the devfreq governor to userspace by the command
> "echo userspace > /sys/class/devfreq/.../governor".
> 3. The governor userspace alloced a dynamic memory for the struct
> userspace_data and assigend the member void *data of devfreq to
> this memory by the function userspace_init().
> 4. The user changed the devfreq governor back to simple_ondemand
> by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
> 5. The governor userspace exited and assigned the member void *data
> in the structure devfreq to NULL by the function userspace_exit().
> 6. The governor simple_ondemand fetched the static information of
> devfreq_simple_ondemand_data in the function
> devfreq_simple_ondemand_func() but the member void *data of devfreq was
> assigned to NULL by the function userspace_exit().
> 7. The information of upthreshold and downdifferential is lost
> and the governor simple_ondemand can't work correctly.
>
> The member void *data in the structure devfreq is designed for
> a static pointer used in a governor and inited by the function
> devfreq_add_device(). This patch add an element named governor_data
> in the devfreq structure which can be used by a governor(E.g userspace)
> who want to assign a private data to do some private things.
>
> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
>
> Signed-off-by: Kant Fan <kant@allwinnertech.com>
> ---
> drivers/devfreq/governor_userspace.c | 12 ++++++------
> include/linux/devfreq.h | 7 ++++---
> 2 files changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
> index ab9db7adb3ad..d69672ccacc4 100644
> --- a/drivers/devfreq/governor_userspace.c
> +++ b/drivers/devfreq/governor_userspace.c
> @@ -21,7 +21,7 @@ struct userspace_data {
>
> static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
> {
> - struct userspace_data *data = df->data;
> + struct userspace_data *data = df->governor_data;
>
> if (data->valid)
> *freq = data->user_frequency;
> @@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
> int err = 0;
>
> mutex_lock(&devfreq->lock);
> - data = devfreq->data;
> + data = devfreq->governor_data;
>
> sscanf(buf, "%lu", &wanted);
> data->user_frequency = wanted;
> @@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,
> int err = 0;
>
> mutex_lock(&devfreq->lock);
> - data = devfreq->data;
> + data = devfreq->governor_data;
>
> if (data->valid)
> err = sprintf(buf, "%lu\n", data->user_frequency);
> @@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
> goto out;
> }
> data->valid = false;
> - devfreq->data = data;
> + devfreq->governor_data = data;
>
> err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
> out:
> @@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
> if (devfreq->dev.kobj.sd)
> sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
>
> - kfree(devfreq->data);
> - devfreq->data = NULL;
> + kfree(devfreq->governor_data);
> + devfreq->governor_data = NULL;
> }
>
> static int devfreq_userspace_handler(struct devfreq *devfreq,
> diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
> index 34aab4dd336c..d265af3fb0a4 100644
> --- a/include/linux/devfreq.h
> +++ b/include/linux/devfreq.h
> @@ -152,8 +152,8 @@ struct devfreq_stats {
> * @max_state: count of entry present in the frequency table.
> * @previous_freq: previously configured frequency value.
> * @last_status: devfreq user device info, performance statistics
> - * @data: Private data of the governor. The devfreq framework does not
> - * touch this.
> + * @data: devfreq core pass to governors, governor should not change it.
> + * @governor_data: private data for governors, devfreq core doesn't touch it.
> * @user_min_freq_req: PM QoS minimum frequency request from user (via sysfs)
> * @user_max_freq_req: PM QoS maximum frequency request from user (via sysfs)
> * @scaling_min_freq: Limit minimum frequency requested by OPP interface
> @@ -193,7 +193,8 @@ struct devfreq {
> unsigned long previous_freq;
> struct devfreq_dev_status last_status;
>
> - void *data; /* private data for governors */
> + void *data;
> + void *governor_data;
>
> struct dev_pm_qos_request user_min_freq_req;
> struct dev_pm_qos_request user_max_freq_req;
--
Best Regards,
Samsung Electronics
Chanwoo Choi
^ permalink raw reply [relevance 0%]
* [PATCH v2] devfreq: governor: Add a private governor_data for governors in devfreq
@ 2022-10-10 7:22 16% Kant Fan
2022-10-12 19:00 0% ` Chanwoo Choi
0 siblings, 1 reply; 200+ results
From: Kant Fan @ 2022-10-10 7:22 UTC (permalink / raw)
To: myungjoo.ham, kyungmin.park, cw00.choi; +Cc: linux-pm, linux-kernel
The member void *data in the structure devfreq can be overwrite
by governor_userspace. For example:
1. The device driver assigned the devfreq governor to simple_ondemand
by the function devfreq_add_device() and init the devfreq member
void *data to a pointer of a static structure devfreq_simple_ondemand_data
by the function devfreq_add_device().
2. The user changed the devfreq governor to userspace by the command
"echo userspace > /sys/class/devfreq/.../governor".
3. The governor userspace alloced a dynamic memory for the struct
userspace_data and assigend the member void *data of devfreq to
this memory by the function userspace_init().
4. The user changed the devfreq governor back to simple_ondemand
by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
5. The governor userspace exited and assigned the member void *data
in the structure devfreq to NULL by the function userspace_exit().
6. The governor simple_ondemand fetched the static information of
devfreq_simple_ondemand_data in the function
devfreq_simple_ondemand_func() but the member void *data of devfreq was
assigned to NULL by the function userspace_exit().
7. The information of upthreshold and downdifferential is lost
and the governor simple_ondemand can't work correctly.
The member void *data in the structure devfreq is designed for
a static pointer used in a governor and inited by the function
devfreq_add_device(). This patch add an element named governor_data
in the devfreq structure which can be used by a governor(E.g userspace)
who want to assign a private data to do some private things.
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kant Fan <kant@allwinnertech.com>
---
drivers/devfreq/governor_userspace.c | 12 ++++++------
include/linux/devfreq.h | 7 ++++---
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
index ab9db7adb3ad..d69672ccacc4 100644
--- a/drivers/devfreq/governor_userspace.c
+++ b/drivers/devfreq/governor_userspace.c
@@ -21,7 +21,7 @@ struct userspace_data {
static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
{
- struct userspace_data *data = df->data;
+ struct userspace_data *data = df->governor_data;
if (data->valid)
*freq = data->user_frequency;
@@ -40,7 +40,7 @@ static ssize_t set_freq_store(struct device *dev, struct device_attribute *attr,
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
sscanf(buf, "%lu", &wanted);
data->user_frequency = wanted;
@@ -60,7 +60,7 @@ static ssize_t set_freq_show(struct device *dev,
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
if (data->valid)
err = sprintf(buf, "%lu\n", data->user_frequency);
@@ -91,7 +91,7 @@ static int userspace_init(struct devfreq *devfreq)
goto out;
}
data->valid = false;
- devfreq->data = data;
+ devfreq->governor_data = data;
err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
out:
@@ -107,8 +107,8 @@ static void userspace_exit(struct devfreq *devfreq)
if (devfreq->dev.kobj.sd)
sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
- kfree(devfreq->data);
- devfreq->data = NULL;
+ kfree(devfreq->governor_data);
+ devfreq->governor_data = NULL;
}
static int devfreq_userspace_handler(struct devfreq *devfreq,
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 34aab4dd336c..d265af3fb0a4 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -152,8 +152,8 @@ struct devfreq_stats {
* @max_state: count of entry present in the frequency table.
* @previous_freq: previously configured frequency value.
* @last_status: devfreq user device info, performance statistics
- * @data: Private data of the governor. The devfreq framework does not
- * touch this.
+ * @data: devfreq core pass to governors, governor should not change it.
+ * @governor_data: private data for governors, devfreq core doesn't touch it.
* @user_min_freq_req: PM QoS minimum frequency request from user (via sysfs)
* @user_max_freq_req: PM QoS maximum frequency request from user (via sysfs)
* @scaling_min_freq: Limit minimum frequency requested by OPP interface
@@ -193,7 +193,8 @@ struct devfreq {
unsigned long previous_freq;
struct devfreq_dev_status last_status;
- void *data; /* private data for governors */
+ void *data;
+ void *governor_data;
struct dev_pm_qos_request user_min_freq_req;
struct dev_pm_qos_request user_max_freq_req;
--
2.29.0
^ permalink raw reply related [relevance 16%]
* [RESEND] clocksource: sun4i: Fix the bug that tick_resume stucks
@ 2022-10-09 3:25 16% Victor Hassan
2022-10-12 21:46 0% ` Jernej Škrabec
2022-10-25 6:23 14% ` Victor Hassan
0 siblings, 2 replies; 200+ results
From: Victor Hassan @ 2022-10-09 3:25 UTC (permalink / raw)
To: daniel.lezcano, tglx, wens, jernej.skrabec, samuel, maxime
Cc: linux-kernel, linux-arm-kernel, linux-sunxi
Currently syscore_resume() will stuck on tick_resume().
Fix this by changing `.tick_resume` from
sun4i_clkevt_shutdown() to a new function sun4i_tick_resume().
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/clocksource/timer-sun4i.c | 131 ++++++++++++++++++++++--------
1 file changed, 96 insertions(+), 35 deletions(-)
diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
index 94dc6e42e983..574398c35a22 100644
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -38,6 +38,19 @@
#define TIMER_SYNC_TICKS 3
+/* Registers which needs to be saved and restored before and after sleeping */
+static u32 sun4i_timer_regs_offset[] = {
+ TIMER_IRQ_EN_REG,
+ TIMER_CTL_REG(0),
+ TIMER_INTVAL_REG(0),
+ TIMER_CNTVAL_REG(0),
+ TIMER_CTL_REG(1),
+ TIMER_INTVAL_REG(1),
+ TIMER_CNTVAL_REG(1),
+};
+
+static void __iomem *sun4i_timer_sched_base __read_mostly;
+
/*
* When we disable a timer, we need to wait at least for 2 cycles of
* the timer source clock. We will use for that the clocksource timer
@@ -79,10 +92,41 @@ static void sun4i_clkevt_time_start(void __iomem *base, u8 timer,
base + TIMER_CTL_REG(timer));
}
+static inline void sun4i_timer_save_regs(struct timer_of *to)
+{
+ void __iomem *base = timer_of_base(to);
+ int i;
+ u32 *regs_backup = (u32 *)to->private_data;
+
+ for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
+ regs_backup[i] = readl(base + sun4i_timer_regs_offset[i]);
+}
+
+static inline void sun4i_timer_restore_regs(struct timer_of *to)
+{
+ void __iomem *base = timer_of_base(to);
+ int i;
+ u32 *regs_backup = (u32 *)to->private_data;
+
+ for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
+ writel(regs_backup[i], base + sun4i_timer_regs_offset[i]);
+}
+
static int sun4i_clkevt_shutdown(struct clock_event_device *evt)
{
struct timer_of *to = to_timer_of(evt);
+ sun4i_timer_save_regs(to);
+ sun4i_clkevt_time_stop(timer_of_base(to), 0);
+
+ return 0;
+}
+
+static int sun4i_tick_resume(struct clock_event_device *evt)
+{
+ struct timer_of *to = to_timer_of(evt);
+
+ sun4i_timer_restore_regs(to);
sun4i_clkevt_time_stop(timer_of_base(to), 0);
return 0;
@@ -137,45 +181,54 @@ static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
-static struct timer_of to = {
- .flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE,
-
- .clkevt = {
- .name = "sun4i_tick",
- .rating = 350,
- .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
- .set_state_shutdown = sun4i_clkevt_shutdown,
- .set_state_periodic = sun4i_clkevt_set_periodic,
- .set_state_oneshot = sun4i_clkevt_set_oneshot,
- .tick_resume = sun4i_clkevt_shutdown,
- .set_next_event = sun4i_clkevt_next_event,
- .cpumask = cpu_possible_mask,
- },
-
- .of_irq = {
- .handler = sun4i_timer_interrupt,
- .flags = IRQF_TIMER | IRQF_IRQPOLL,
- },
-};
+static void __init sun4i_clockevent_init(struct timer_of *to)
+{
+ to->clkevt.name = "sun4i_tick";
+ to->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
+ to->clkevt.set_state_shutdown = sun4i_clkevt_shutdown;
+ to->clkevt.set_state_periodic = sun4i_clkevt_set_periodic;
+ to->clkevt.set_state_oneshot = sun4i_clkevt_set_oneshot;
+ to->clkevt.tick_resume = sun4i_tick_resume;
+ to->clkevt.set_next_event = sun4i_clkevt_next_event;
+ to->clkevt.cpumask = cpu_possible_mask;
+ to->of_irq.flags = IRQF_TIMER | IRQF_IRQPOLL;
+
+ sun4i_timer_sched_base = timer_of_base(to) + TIMER_CNTVAL_REG(1);
+}
static u64 notrace sun4i_timer_sched_read(void)
{
- return ~readl(timer_of_base(&to) + TIMER_CNTVAL_REG(1));
+ return (u64)~readl(sun4i_timer_sched_base);
}
static int __init sun4i_timer_init(struct device_node *node)
{
+ struct timer_of *to;
int ret;
u32 val;
- ret = timer_of_init(node, &to);
+ to = kzalloc(sizeof(*to), GFP_KERNEL);
+ if (!to)
+ return -ENOMEM;
+
+ to->flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE;
+ to->of_irq.handler = sun4i_timer_interrupt;
+ ret = timer_of_init(node, to);
if (ret)
- return ret;
+ goto err;
- writel(~0, timer_of_base(&to) + TIMER_INTVAL_REG(1));
+ sun4i_clockevent_init(to);
+
+ to->private_data = kcalloc(ARRAY_SIZE(sun4i_timer_regs_offset), sizeof(u32), GFP_KERNEL);
+ if (!to->private_data) {
+ ret = -ENOMEM;
+ goto err1;
+ }
+
+ writel(~0, timer_of_base(to) + TIMER_INTVAL_REG(1));
writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD |
TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
- timer_of_base(&to) + TIMER_CTL_REG(1));
+ timer_of_base(to) + TIMER_CTL_REG(1));
/*
* sched_clock_register does not have priorities, and on sun6i and
@@ -186,32 +239,40 @@ static int __init sun4i_timer_init(struct device_node *node)
of_machine_is_compatible("allwinner,sun5i-a10s") ||
of_machine_is_compatible("allwinner,suniv-f1c100s"))
sched_clock_register(sun4i_timer_sched_read, 32,
- timer_of_rate(&to));
+ timer_of_rate(to));
- ret = clocksource_mmio_init(timer_of_base(&to) + TIMER_CNTVAL_REG(1),
- node->name, timer_of_rate(&to), 350, 32,
+ ret = clocksource_mmio_init(timer_of_base(to) + TIMER_CNTVAL_REG(1),
+ node->name, timer_of_rate(to), 350, 32,
clocksource_mmio_readl_down);
if (ret) {
pr_err("Failed to register clocksource\n");
- return ret;
+ goto err2;
}
writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
- timer_of_base(&to) + TIMER_CTL_REG(0));
+ timer_of_base(to) + TIMER_CTL_REG(0));
/* Make sure timer is stopped before playing with interrupts */
- sun4i_clkevt_time_stop(timer_of_base(&to), 0);
+ sun4i_clkevt_time_stop(timer_of_base(to), 0);
/* clear timer0 interrupt */
- sun4i_timer_clear_interrupt(timer_of_base(&to));
+ sun4i_timer_clear_interrupt(timer_of_base(to));
- clockevents_config_and_register(&to.clkevt, timer_of_rate(&to),
+ clockevents_config_and_register(&to->clkevt, timer_of_rate(to),
TIMER_SYNC_TICKS, 0xffffffff);
/* Enable timer0 interrupt */
- val = readl(timer_of_base(&to) + TIMER_IRQ_EN_REG);
- writel(val | TIMER_IRQ_EN(0), timer_of_base(&to) + TIMER_IRQ_EN_REG);
+ val = readl(timer_of_base(to) + TIMER_IRQ_EN_REG);
+ writel(val | TIMER_IRQ_EN(0), timer_of_base(to) + TIMER_IRQ_EN_REG);
+
+ return ret;
+err2:
+ kfree(to->private_data);
+err1:
+ timer_of_cleanup(to);
+err:
+ kfree(to);
return ret;
}
TIMER_OF_DECLARE(sun4i, "allwinner,sun4i-a10-timer",
--
2.29.0
^ permalink raw reply related [relevance 16%]
* [tip: timers/core] clocksource/drivers/sun4i: Add definition of clear interrupt
2022-09-06 5:20 20% [RESEND] clocksource: sun4i: add definition of clear interrupt Victor Hassan
2022-09-06 19:54 0% ` Jernej Škrabec
2022-09-07 8:14 0% ` Daniel Lezcano
@ 2022-10-04 9:27 8% ` tip-bot2 for Victor Hassan
2 siblings, 0 replies; 200+ results
From: tip-bot2 for Victor Hassan @ 2022-10-04 9:27 UTC (permalink / raw)
To: linux-tip-commits
Cc: Victor Hassan, Jernej Skrabec, Daniel Lezcano, x86, linux-kernel
The following commit has been merged into the timers/core branch of tip:
Commit-ID: 4364044c326cbf2ad09e9fa99a9a28a342fecce6
Gitweb: https://git.kernel.org/tip/4364044c326cbf2ad09e9fa99a9a28a342fecce6
Author: Victor Hassan <victor@allwinnertech.com>
AuthorDate: Tue, 06 Sep 2022 13:20:56 +08:00
Committer: Daniel Lezcano <daniel.lezcano@linaro.org>
CommitterDate: Tue, 20 Sep 2022 10:49:39 +02:00
clocksource/drivers/sun4i: Add definition of clear interrupt
To prevent misunderstanding, use TIMER_IRQ_CLEAR instead of TIMER_IRQ_EN
in function sun4i_timer_clear_interrupt.
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/20220906052056.43404-1-victor@allwinnertech.com
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
drivers/clocksource/timer-sun4i.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
index 94dc6e4..e5a70aa 100644
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -26,6 +26,7 @@
#define TIMER_IRQ_EN_REG 0x00
#define TIMER_IRQ_EN(val) BIT(val)
#define TIMER_IRQ_ST_REG 0x04
+#define TIMER_IRQ_CLEAR(val) BIT(val)
#define TIMER_CTL_REG(val) (0x10 * val + 0x10)
#define TIMER_CTL_ENABLE BIT(0)
#define TIMER_CTL_RELOAD BIT(1)
@@ -123,7 +124,7 @@ static int sun4i_clkevt_next_event(unsigned long evt,
static void sun4i_timer_clear_interrupt(void __iomem *base)
{
- writel(TIMER_IRQ_EN(0), base + TIMER_IRQ_ST_REG);
+ writel(TIMER_IRQ_CLEAR(0), base + TIMER_IRQ_ST_REG);
}
static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
^ permalink raw reply related [relevance 8%]
* [RESEND] clocksource: sun4i: Fix the bug that tick_resume stucks
@ 2022-09-28 8:48 16% Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2022-09-28 8:48 UTC (permalink / raw)
To: daniel.lezcano, tglx, wens, jernej.skrabec, samuel
Cc: linux-kernel, linux-arm-kernel, linux-sunxi
Currently syscore_resume() will stuck on tick_resume().
Fix this by changing `.tick_resume` from
sun4i_clkevt_shutdown() to a new function sun4i_tick_resume().
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/clocksource/timer-sun4i.c | 131 ++++++++++++++++++++++--------
1 file changed, 96 insertions(+), 35 deletions(-)
diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
index 94dc6e42e983..574398c35a22 100644
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -38,6 +38,19 @@
#define TIMER_SYNC_TICKS 3
+/* Registers which needs to be saved and restored before and after sleeping */
+static u32 sun4i_timer_regs_offset[] = {
+ TIMER_IRQ_EN_REG,
+ TIMER_CTL_REG(0),
+ TIMER_INTVAL_REG(0),
+ TIMER_CNTVAL_REG(0),
+ TIMER_CTL_REG(1),
+ TIMER_INTVAL_REG(1),
+ TIMER_CNTVAL_REG(1),
+};
+
+static void __iomem *sun4i_timer_sched_base __read_mostly;
+
/*
* When we disable a timer, we need to wait at least for 2 cycles of
* the timer source clock. We will use for that the clocksource timer
@@ -79,10 +92,41 @@ static void sun4i_clkevt_time_start(void __iomem *base, u8 timer,
base + TIMER_CTL_REG(timer));
}
+static inline void sun4i_timer_save_regs(struct timer_of *to)
+{
+ void __iomem *base = timer_of_base(to);
+ int i;
+ u32 *regs_backup = (u32 *)to->private_data;
+
+ for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
+ regs_backup[i] = readl(base + sun4i_timer_regs_offset[i]);
+}
+
+static inline void sun4i_timer_restore_regs(struct timer_of *to)
+{
+ void __iomem *base = timer_of_base(to);
+ int i;
+ u32 *regs_backup = (u32 *)to->private_data;
+
+ for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
+ writel(regs_backup[i], base + sun4i_timer_regs_offset[i]);
+}
+
static int sun4i_clkevt_shutdown(struct clock_event_device *evt)
{
struct timer_of *to = to_timer_of(evt);
+ sun4i_timer_save_regs(to);
+ sun4i_clkevt_time_stop(timer_of_base(to), 0);
+
+ return 0;
+}
+
+static int sun4i_tick_resume(struct clock_event_device *evt)
+{
+ struct timer_of *to = to_timer_of(evt);
+
+ sun4i_timer_restore_regs(to);
sun4i_clkevt_time_stop(timer_of_base(to), 0);
return 0;
@@ -137,45 +181,54 @@ static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
-static struct timer_of to = {
- .flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE,
-
- .clkevt = {
- .name = "sun4i_tick",
- .rating = 350,
- .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
- .set_state_shutdown = sun4i_clkevt_shutdown,
- .set_state_periodic = sun4i_clkevt_set_periodic,
- .set_state_oneshot = sun4i_clkevt_set_oneshot,
- .tick_resume = sun4i_clkevt_shutdown,
- .set_next_event = sun4i_clkevt_next_event,
- .cpumask = cpu_possible_mask,
- },
-
- .of_irq = {
- .handler = sun4i_timer_interrupt,
- .flags = IRQF_TIMER | IRQF_IRQPOLL,
- },
-};
+static void __init sun4i_clockevent_init(struct timer_of *to)
+{
+ to->clkevt.name = "sun4i_tick";
+ to->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
+ to->clkevt.set_state_shutdown = sun4i_clkevt_shutdown;
+ to->clkevt.set_state_periodic = sun4i_clkevt_set_periodic;
+ to->clkevt.set_state_oneshot = sun4i_clkevt_set_oneshot;
+ to->clkevt.tick_resume = sun4i_tick_resume;
+ to->clkevt.set_next_event = sun4i_clkevt_next_event;
+ to->clkevt.cpumask = cpu_possible_mask;
+ to->of_irq.flags = IRQF_TIMER | IRQF_IRQPOLL;
+
+ sun4i_timer_sched_base = timer_of_base(to) + TIMER_CNTVAL_REG(1);
+}
static u64 notrace sun4i_timer_sched_read(void)
{
- return ~readl(timer_of_base(&to) + TIMER_CNTVAL_REG(1));
+ return (u64)~readl(sun4i_timer_sched_base);
}
static int __init sun4i_timer_init(struct device_node *node)
{
+ struct timer_of *to;
int ret;
u32 val;
- ret = timer_of_init(node, &to);
+ to = kzalloc(sizeof(*to), GFP_KERNEL);
+ if (!to)
+ return -ENOMEM;
+
+ to->flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE;
+ to->of_irq.handler = sun4i_timer_interrupt;
+ ret = timer_of_init(node, to);
if (ret)
- return ret;
+ goto err;
- writel(~0, timer_of_base(&to) + TIMER_INTVAL_REG(1));
+ sun4i_clockevent_init(to);
+
+ to->private_data = kcalloc(ARRAY_SIZE(sun4i_timer_regs_offset), sizeof(u32), GFP_KERNEL);
+ if (!to->private_data) {
+ ret = -ENOMEM;
+ goto err1;
+ }
+
+ writel(~0, timer_of_base(to) + TIMER_INTVAL_REG(1));
writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD |
TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
- timer_of_base(&to) + TIMER_CTL_REG(1));
+ timer_of_base(to) + TIMER_CTL_REG(1));
/*
* sched_clock_register does not have priorities, and on sun6i and
@@ -186,32 +239,40 @@ static int __init sun4i_timer_init(struct device_node *node)
of_machine_is_compatible("allwinner,sun5i-a10s") ||
of_machine_is_compatible("allwinner,suniv-f1c100s"))
sched_clock_register(sun4i_timer_sched_read, 32,
- timer_of_rate(&to));
+ timer_of_rate(to));
- ret = clocksource_mmio_init(timer_of_base(&to) + TIMER_CNTVAL_REG(1),
- node->name, timer_of_rate(&to), 350, 32,
+ ret = clocksource_mmio_init(timer_of_base(to) + TIMER_CNTVAL_REG(1),
+ node->name, timer_of_rate(to), 350, 32,
clocksource_mmio_readl_down);
if (ret) {
pr_err("Failed to register clocksource\n");
- return ret;
+ goto err2;
}
writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
- timer_of_base(&to) + TIMER_CTL_REG(0));
+ timer_of_base(to) + TIMER_CTL_REG(0));
/* Make sure timer is stopped before playing with interrupts */
- sun4i_clkevt_time_stop(timer_of_base(&to), 0);
+ sun4i_clkevt_time_stop(timer_of_base(to), 0);
/* clear timer0 interrupt */
- sun4i_timer_clear_interrupt(timer_of_base(&to));
+ sun4i_timer_clear_interrupt(timer_of_base(to));
- clockevents_config_and_register(&to.clkevt, timer_of_rate(&to),
+ clockevents_config_and_register(&to->clkevt, timer_of_rate(to),
TIMER_SYNC_TICKS, 0xffffffff);
/* Enable timer0 interrupt */
- val = readl(timer_of_base(&to) + TIMER_IRQ_EN_REG);
- writel(val | TIMER_IRQ_EN(0), timer_of_base(&to) + TIMER_IRQ_EN_REG);
+ val = readl(timer_of_base(to) + TIMER_IRQ_EN_REG);
+ writel(val | TIMER_IRQ_EN(0), timer_of_base(to) + TIMER_IRQ_EN_REG);
+
+ return ret;
+err2:
+ kfree(to->private_data);
+err1:
+ timer_of_cleanup(to);
+err:
+ kfree(to);
return ret;
}
TIMER_OF_DECLARE(sun4i, "allwinner,sun4i-a10-timer",
--
2.29.0
^ permalink raw reply related [relevance 16%]
* Re: [PATCH v10 27/27] MAINTAINERS: Rust
2022-09-27 15:19 7% ` Kees Cook
2022-09-27 15:34 0% ` Greg Kroah-Hartman
@ 2022-09-27 16:00 0% ` Wedson Almeida Filho
1 sibling, 0 replies; 200+ results
From: Wedson Almeida Filho @ 2022-09-27 16:00 UTC (permalink / raw)
To: Kees Cook
Cc: Miguel Ojeda, Geert Stappers, Linus Torvalds, Greg Kroah-Hartman,
rust-for-linux, linux-kernel, linux-fsdevel, patches,
Jarkko Sakkinen, Alex Gaynor
On Tue, 27 Sept 2022 at 16:19, Kees Cook <keescook@chromium.org> wrote:
>
> On Tue, Sep 27, 2022 at 04:11:38PM +0200, Geert Stappers wrote:
> > On Tue, Sep 27, 2022 at 03:14:58PM +0200, Miguel Ojeda wrote:
> > > Miguel, Alex and Wedson will be maintaining the Rust support.
> > >
> > > Boqun, Gary and Björn will be reviewers.
> > >
> > > Reviewed-by: Kees Cook <keescook@chromium.org>
> > > Co-developed-by: Alex Gaynor <alex.gaynor@gmail.com>
> > > Signed-off-by: Alex Gaynor <alex.gaynor@gmail.com>
> > > Co-developed-by: Wedson Almeida Filho <wedsonaf@google.com>
> > > Signed-off-by: Wedson Almeida Filho <wedsonaf@google.com>
> > > Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
> > > ---
> > > MAINTAINERS | 18 ++++++++++++++++++
> > > 1 file changed, 18 insertions(+)
> > >
> > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > index f5ca4aefd184..944dc265b64d 100644
> > > --- a/MAINTAINERS
> > > +++ b/MAINTAINERS
> > > @@ -17758,6 +17758,24 @@ F: include/rv/
> > > F: kernel/trace/rv/
> > > F: tools/verification/
> > >
> > > +RUST
> > > +M: Miguel Ojeda <ojeda@kernel.org>
> > > +M: Alex Gaynor <alex.gaynor@gmail.com>
> > > +M: Wedson Almeida Filho <wedsonaf@google.com>
> > <screenshot from="response of a reply-to-all that I just did">
> > ** Address not found **
> >
> > Your message wasn't delivered to wedsonaf@google.com because the
> > address couldn't be found, or is unable to receive mail.
> >
> > Learn more here: https://support.google.com/mail/answer/6596
> >
> > The response was:
> >
> > The email account that you tried to reach does not exist. Please try
> > double-checking the recipient's email address for typos or unnecessary
> > spaces. Learn more at https://support.google.com/mail/answer/6596
> > </screenshot>
>
> Wedson, can you send (or Ack) the following patch? :)
Acked-by: Wedson Almeida Filho <wedsonaf@gmail.com>
>
> diff --git a/.mailmap b/.mailmap
> index d175777af078..3a7fe4ee56fb 100644
> --- a/.mailmap
> +++ b/.mailmap
> @@ -433,6 +433,7 @@ Vlad Dogaru <ddvlad@gmail.com> <vlad.dogaru@intel.com>
> Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
> Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
> WeiXiong Liao <gmpy.liaowx@gmail.com> <liaoweixiong@allwinnertech.com>
> +Wedson Almeida Filho <wedsonaf@gmail.com> <wedsonaf@google.com>
> Will Deacon <will@kernel.org> <will.deacon@arm.com>
> Wolfram Sang <wsa@kernel.org> <w.sang@pengutronix.de>
> Wolfram Sang <wsa@kernel.org> <wsa@the-dreams.de>
>
> --
> Kees Cook
^ permalink raw reply [relevance 0%]
* Re: [PATCH v10 27/27] MAINTAINERS: Rust
2022-09-27 15:19 7% ` Kees Cook
@ 2022-09-27 15:34 0% ` Greg Kroah-Hartman
2022-09-27 16:00 0% ` Wedson Almeida Filho
1 sibling, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-09-27 15:34 UTC (permalink / raw)
To: Kees Cook
Cc: Wedson Almeida Filho, Miguel Ojeda, Geert Stappers,
Linus Torvalds, rust-for-linux, linux-kernel, linux-fsdevel,
patches, Jarkko Sakkinen, Alex Gaynor
On Tue, Sep 27, 2022 at 08:19:44AM -0700, Kees Cook wrote:
> On Tue, Sep 27, 2022 at 04:11:38PM +0200, Geert Stappers wrote:
> > On Tue, Sep 27, 2022 at 03:14:58PM +0200, Miguel Ojeda wrote:
> > > Miguel, Alex and Wedson will be maintaining the Rust support.
> > >
> > > Boqun, Gary and Björn will be reviewers.
> > >
> > > Reviewed-by: Kees Cook <keescook@chromium.org>
> > > Co-developed-by: Alex Gaynor <alex.gaynor@gmail.com>
> > > Signed-off-by: Alex Gaynor <alex.gaynor@gmail.com>
> > > Co-developed-by: Wedson Almeida Filho <wedsonaf@google.com>
> > > Signed-off-by: Wedson Almeida Filho <wedsonaf@google.com>
> > > Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
> > > ---
> > > MAINTAINERS | 18 ++++++++++++++++++
> > > 1 file changed, 18 insertions(+)
> > >
> > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > index f5ca4aefd184..944dc265b64d 100644
> > > --- a/MAINTAINERS
> > > +++ b/MAINTAINERS
> > > @@ -17758,6 +17758,24 @@ F: include/rv/
> > > F: kernel/trace/rv/
> > > F: tools/verification/
> > >
> > > +RUST
> > > +M: Miguel Ojeda <ojeda@kernel.org>
> > > +M: Alex Gaynor <alex.gaynor@gmail.com>
> > > +M: Wedson Almeida Filho <wedsonaf@google.com>
> > <screenshot from="response of a reply-to-all that I just did">
> > ** Address not found **
> >
> > Your message wasn't delivered to wedsonaf@google.com because the
> > address couldn't be found, or is unable to receive mail.
> >
> > Learn more here: https://support.google.com/mail/answer/6596
> >
> > The response was:
> >
> > The email account that you tried to reach does not exist. Please try
> > double-checking the recipient's email address for typos or unnecessary
> > spaces. Learn more at https://support.google.com/mail/answer/6596
> > </screenshot>
>
> Wedson, can you send (or Ack) the following patch? :)
>
> diff --git a/.mailmap b/.mailmap
> index d175777af078..3a7fe4ee56fb 100644
> --- a/.mailmap
> +++ b/.mailmap
> @@ -433,6 +433,7 @@ Vlad Dogaru <ddvlad@gmail.com> <vlad.dogaru@intel.com>
> Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
> Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
> WeiXiong Liao <gmpy.liaowx@gmail.com> <liaoweixiong@allwinnertech.com>
> +Wedson Almeida Filho <wedsonaf@gmail.com> <wedsonaf@google.com>
How about just fixing up the emails in these patches, which will keep us
from having bouncing ones for those of us who do not use the .mailmap
file.
thanks,
greg k-h
^ permalink raw reply [relevance 0%]
* Re: [PATCH v10 27/27] MAINTAINERS: Rust
@ 2022-09-27 15:19 7% ` Kees Cook
2022-09-27 15:34 0% ` Greg Kroah-Hartman
2022-09-27 16:00 0% ` Wedson Almeida Filho
0 siblings, 2 replies; 200+ results
From: Kees Cook @ 2022-09-27 15:19 UTC (permalink / raw)
To: Wedson Almeida Filho
Cc: Miguel Ojeda, Geert Stappers, Linus Torvalds, Greg Kroah-Hartman,
rust-for-linux, linux-kernel, linux-fsdevel, patches,
Jarkko Sakkinen, Alex Gaynor
On Tue, Sep 27, 2022 at 04:11:38PM +0200, Geert Stappers wrote:
> On Tue, Sep 27, 2022 at 03:14:58PM +0200, Miguel Ojeda wrote:
> > Miguel, Alex and Wedson will be maintaining the Rust support.
> >
> > Boqun, Gary and Björn will be reviewers.
> >
> > Reviewed-by: Kees Cook <keescook@chromium.org>
> > Co-developed-by: Alex Gaynor <alex.gaynor@gmail.com>
> > Signed-off-by: Alex Gaynor <alex.gaynor@gmail.com>
> > Co-developed-by: Wedson Almeida Filho <wedsonaf@google.com>
> > Signed-off-by: Wedson Almeida Filho <wedsonaf@google.com>
> > Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
> > ---
> > MAINTAINERS | 18 ++++++++++++++++++
> > 1 file changed, 18 insertions(+)
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index f5ca4aefd184..944dc265b64d 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -17758,6 +17758,24 @@ F: include/rv/
> > F: kernel/trace/rv/
> > F: tools/verification/
> >
> > +RUST
> > +M: Miguel Ojeda <ojeda@kernel.org>
> > +M: Alex Gaynor <alex.gaynor@gmail.com>
> > +M: Wedson Almeida Filho <wedsonaf@google.com>
> <screenshot from="response of a reply-to-all that I just did">
> ** Address not found **
>
> Your message wasn't delivered to wedsonaf@google.com because the
> address couldn't be found, or is unable to receive mail.
>
> Learn more here: https://support.google.com/mail/answer/6596
>
> The response was:
>
> The email account that you tried to reach does not exist. Please try
> double-checking the recipient's email address for typos or unnecessary
> spaces. Learn more at https://support.google.com/mail/answer/6596
> </screenshot>
Wedson, can you send (or Ack) the following patch? :)
diff --git a/.mailmap b/.mailmap
index d175777af078..3a7fe4ee56fb 100644
--- a/.mailmap
+++ b/.mailmap
@@ -433,6 +433,7 @@ Vlad Dogaru <ddvlad@gmail.com> <vlad.dogaru@intel.com>
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
WeiXiong Liao <gmpy.liaowx@gmail.com> <liaoweixiong@allwinnertech.com>
+Wedson Almeida Filho <wedsonaf@gmail.com> <wedsonaf@google.com>
Will Deacon <will@kernel.org> <will.deacon@arm.com>
Wolfram Sang <wsa@kernel.org> <w.sang@pengutronix.de>
Wolfram Sang <wsa@kernel.org> <wsa@the-dreams.de>
--
Kees Cook
^ permalink raw reply related [relevance 7%]
* [PATCH 5.19 00/39] 5.19.11-rc2 review
@ 2022-09-21 16:47 3% Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-09-21 16:47 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, slade
This is the start of the stable review cycle for the 5.19.11 release.
There are 39 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Fri, 23 Sep 2022 16:47:28 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.19.11-rc2.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.19.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.19.11-rc2
Lu Baolu <baolu.lu@linux.intel.com>
Revert "iommu/vt-d: Fix possible recursive locking in intel_iommu_init()"
Takashi Iwai <tiwai@suse.de>
ALSA: hda/sigmatel: Fix unused variable warning for beep power change
Takashi Iwai <tiwai@suse.de>
ALSA: hda/sigmatel: Keep power up while beep is enabled
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all()
Janne Grunau <j@jannau.net>
dt-bindings: apple,aic: Fix required item "apple,fiq-index" in affinity description
sewookseo <sewookseo@google.com>
net: Find dst with sk's xfrm policy not ctl_sk
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: move nbio ih_doorbell_range() into ih code for vega
Lijo Lazar <lijo.lazar@amd.com>
drm/amdgpu: Don't enable LTR if not supported
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: make sure to init common IP before gmc
Nirmoy Das <nirmoy.das@intel.com>
drm/i915: Set correct domains values at _i915_vma_move_to_active
Ashutosh Dixit <ashutosh.dixit@intel.com>
drm/i915/gt: Fix perf limit reasons bit positions
Ben Hutchings <benh@debian.org>
tools/include/uapi: Fix <asm/errno.h> for parisc and xtensa
Helge Deller <deller@gmx.de>
parisc: Allow CONFIG_64BIT with ARCH=parisc
Mikulas Patocka <mpatocka@redhat.com>
blk-lib: fix blkdev_issue_secure_erase
Stefan Metzmacher <metze@samba.org>
cifs: always initialize struct msghdr smb_msg completely
Stefan Metzmacher <metze@samba.org>
cifs: don't send down the destination address to sendmsg for a SOCK_STREAM
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: revalidate mapping when doing direct writes
Jens Axboe <axboe@kernel.dk>
io_uring/msg_ring: check file type before putting
Thierry Reding <treding@nvidia.com>
of/device: Fix up of_dma_configure_id() stub
Yang Yingliang <yangyingliang@huawei.com>
parisc: ccio-dma: Add missing iounmap in error path in ccio_probe()
Stefan Roesch <shr@fb.com>
block: blk_queue_enter() / __bio_queue_enter() must return -EAGAIN for nowait
Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
drm/i915/guc: Cancel GuC engine busyness worker synchronously
Alan Previn <alan.previn.teres.alexis@intel.com>
drm/i915/guc: Don't update engine busyness stats too frequently
Ankit Nautiyal <ankit.k.nautiyal@intel.com>
drm/i915/vdsc: Set VDSC PIC_HEIGHT before using for DP DSC
Sascha Hauer <s.hauer@pengutronix.de>
drm/rockchip: vop2: Fix eDP/HDMI sync polarities
Stuart Menefy <stuart.menefy@mathembedded.com>
drm/meson: Fix OSD1 RGB to YCbCr coefficient
Stuart Menefy <stuart.menefy@mathembedded.com>
drm/meson: Correct OSD1 global alpha value
Chen-Yu Tsai <wenst@chromium.org>
drm/panel-edp: Fix delays for Innolux N116BCA-EA1
Dan Aloni <dan.aloni@vastdata.com>
Revert "SUNRPC: Remove unreachable error condition"
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFSv4.2: Update mode bits after ALLOCATE and DEALLOCATE
Pali Rohár <pali@kernel.org>
gpio: mpc8xxx: Fix support for IRQ_TYPE_LEVEL_LOW flow_type in mpc85xx
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4: Turn off open-by-filehandle and NFS re-export for NFSv4.0
Trond Myklebust <trond.myklebust@hammerspace.com>
SUNRPC: Fix call completion races with call_decode()
Michael Wu <michael@allwinnertech.com>
pinctrl: sunxi: Fix name for A100 R_PIO
João H. Spies <jhlspies@gmail.com>
pinctrl: rockchip: Enhance support for IRQ_TYPE_EDGE_BOTH
Molly Sophia <mollysophia379@gmail.com>
pinctrl: qcom: sc8180x: Fix wrong pin numbers
Molly Sophia <mollysophia379@gmail.com>
pinctrl: qcom: sc8180x: Fix gpio_wakeirq_map
Sergey Shtylyov <s.shtylyov@omp.ru>
of: fdt: fix off-by-one error in unflatten_dt_nodes()
-------------
Diffstat:
.../bindings/interrupt-controller/apple,aic.yaml | 2 +-
Makefile | 4 ++--
arch/parisc/Kconfig | 12 +++++++++-
block/blk-core.c | 4 ++--
block/blk-lib.c | 11 ++++++---
drivers/gpio/gpio-mpc8xxx.c | 1 +
drivers/gpio/gpio-rockchip.c | 4 ++--
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 14 ++++++++---
drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c | 9 +++++++-
drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c | 9 +++++++-
drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 9 +++++++-
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 5 ++++
drivers/gpu/drm/amd/amdgpu/soc15.c | 25 --------------------
drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 4 ++++
drivers/gpu/drm/amd/amdgpu/vega20_ih.c | 4 ++++
drivers/gpu/drm/i915/display/icl_dsi.c | 2 ++
drivers/gpu/drm/i915/display/intel_dp.c | 1 +
drivers/gpu/drm/i915/display/intel_vdsc.c | 1 -
drivers/gpu/drm/i915/gt/uc/intel_guc.h | 8 +++++++
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 20 +++++++++++++++-
drivers/gpu/drm/i915/i915_reg.h | 16 ++++++-------
drivers/gpu/drm/i915/i915_vma.c | 3 ++-
drivers/gpu/drm/meson/meson_plane.c | 2 +-
drivers/gpu/drm/meson/meson_viu.c | 2 +-
drivers/gpu/drm/panel/panel-edp.c | 3 ++-
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 4 ++++
drivers/iommu/intel/dmar.c | 7 ------
drivers/iommu/intel/iommu.c | 27 ++++++++++++++++++++--
drivers/of/fdt.c | 2 +-
drivers/parisc/ccio-dma.c | 1 +
drivers/pinctrl/qcom/pinctrl-sc8180x.c | 10 ++++----
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 +-
fs/cifs/connect.c | 11 +++------
fs/cifs/file.c | 3 +++
fs/cifs/transport.c | 6 +----
fs/nfs/internal.h | 25 ++++++++++++++++++++
fs/nfs/nfs42proc.c | 9 ++++++--
fs/nfs/super.c | 27 ++++++++++++++--------
fs/nfs/write.c | 25 --------------------
include/linux/dmar.h | 4 +---
include/linux/of_device.h | 5 ++--
include/net/xfrm.h | 2 ++
io_uring/io_uring.c | 3 ++-
kernel/cgroup/cgroup-v1.c | 2 ++
net/ipv4/ip_output.c | 2 +-
net/ipv4/tcp_ipv4.c | 2 ++
net/ipv6/tcp_ipv6.c | 5 +++-
net/sunrpc/clnt.c | 3 +++
net/sunrpc/xprt.c | 8 +++----
sound/pci/hda/patch_sigmatel.c | 24 +++++++++++++++++++
tools/include/uapi/asm/errno.h | 4 ++--
51 files changed, 263 insertions(+), 135 deletions(-)
^ permalink raw reply [relevance 3%]
* [PATCH 5.10 00/39] 5.10.145-rc1 review
@ 2022-09-21 15:46 3% Greg Kroah-Hartman
2022-09-21 15:46 8% ` [PATCH 5.10 13/39] pinctrl: sunxi: Fix name for A100 R_PIO Greg Kroah-Hartman
0 siblings, 1 reply; 200+ results
From: Greg Kroah-Hartman @ 2022-09-21 15:46 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, slade
This is the start of the stable review cycle for the 5.10.145 release.
There are 39 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Fri, 23 Sep 2022 15:36:33 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.145-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.10.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.10.145-rc1
Takashi Iwai <tiwai@suse.de>
ALSA: hda/sigmatel: Fix unused variable warning for beep power change
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all()
Hyunwoo Kim <imv4bel@gmail.com>
video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write
Youling Tang <tangyouling@loongson.cn>
mksysmap: Fix the mismatch of 'L0' symbols in System.map
Alexander Sverdlin <alexander.sverdlin@nokia.com>
MIPS: OCTEON: irq: Fix octeon_irq_force_ciu_mapping()
David Howells <dhowells@redhat.com>
afs: Return -EAGAIN, not -EREMOTEIO, when a file already locked
jerry.meng <jerry-meng@foxmail.com>
net: usb: qmi_wwan: add Quectel RM520N
Mohan Kumar <mkumard@nvidia.com>
ALSA: hda/tegra: Align BDL entry to 4KB boundary
Takashi Iwai <tiwai@suse.de>
ALSA: hda/sigmatel: Keep power up while beep is enabled
Soenke Huster <soenke.huster@eknoes.de>
wifi: mac80211_hwsim: check length for virtio packets
David Howells <dhowells@redhat.com>
rxrpc: Fix calc of resend age
David Howells <dhowells@redhat.com>
rxrpc: Fix local destruction being repeated
Xiaolei Wang <xiaolei.wang@windriver.com>
regulator: pfuze100: Fix the global-out-of-bounds access in pfuze100_regulator_probe()
Takashi Iwai <tiwai@suse.de>
ASoC: nau8824: Fix semaphore unbalance at error paths
Johan Hovold <johan@kernel.org>
Revert "serial: 8250: Fix reporting real baudrate value in c_ospeed field"
Zheyu Ma <zheyuma97@gmail.com>
video: fbdev: i740fb: Error out if 'pixclock' equals zero
Ben Hutchings <benh@debian.org>
tools/include/uapi: Fix <asm/errno.h> for parisc and xtensa
Stefan Metzmacher <metze@samba.org>
cifs: don't send down the destination address to sendmsg for a SOCK_STREAM
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: revalidate mapping when doing direct writes
Thierry Reding <treding@nvidia.com>
of/device: Fix up of_dma_configure_id() stub
Yipeng Zou <zouyipeng@huawei.com>
tracing: hold caller_addr to hardirq_{enable,disable}_ip
Yang Yingliang <yangyingliang@huawei.com>
parisc: ccio-dma: Add missing iounmap in error path in ccio_probe()
Stuart Menefy <stuart.menefy@mathembedded.com>
drm/meson: Fix OSD1 RGB to YCbCr coefficient
Stuart Menefy <stuart.menefy@mathembedded.com>
drm/meson: Correct OSD1 global alpha value
Pali Rohár <pali@kernel.org>
gpio: mpc8xxx: Fix support for IRQ_TYPE_LEVEL_LOW flow_type in mpc85xx
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4: Turn off open-by-filehandle and NFS re-export for NFSv4.0
Michael Wu <michael@allwinnertech.com>
pinctrl: sunxi: Fix name for A100 R_PIO
Sergey Shtylyov <s.shtylyov@omp.ru>
of: fdt: fix off-by-one error in unflatten_dt_nodes()
Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports
Alex Hung <alex.hung@canonical.com>
platform/x86/intel: hid: add quirk to support Surface Go 3
Frank Li <Frank.Li@nxp.com>
usb: cdns3: gadget: fix new urb never complete if ep cancel previous requests
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/pseries/mobility: ignore ibm, platform-facilities updates
Nathan Lynch <nathanl@linux.ibm.com>
powerpc/pseries/mobility: refactor node lookup during DT update
Anatolij Gustschin <agust@denx.de>
dmaengine: bestcomm: fix system boot lockups
John David Anglin <dave.anglin@bell.net>
parisc: Flush kernel data mapping in set_pte_at() when installing pte for user page
Helge Deller <deller@gmx.de>
parisc: Optimize per-pagetable spinlocks
Pali Rohár <pali@kernel.org>
serial: 8250: Fix reporting real baudrate value in c_ospeed field
Laurent Vivier <lvivier@redhat.com>
KVM: PPC: Tick accounting should defer vtime accounting 'til after IRQ handling
Nicholas Piggin <npiggin@gmail.com>
KVM: PPC: Book3S HV: Context tracking exit guest context before enabling irqs
-------------
Diffstat:
Makefile | 4 +-
arch/mips/cavium-octeon/octeon-irq.c | 10 +++
arch/parisc/Kconfig | 10 +++
arch/parisc/include/asm/mmu_context.h | 7 ++
arch/parisc/include/asm/page.h | 2 +-
arch/parisc/include/asm/pgalloc.h | 76 ++++-------------
arch/parisc/include/asm/pgtable.h | 97 ++++++---------------
arch/parisc/kernel/asm-offsets.c | 1 -
arch/parisc/kernel/cache.c | 4 +-
arch/parisc/kernel/entry.S | 116 +++++++++++---------------
arch/parisc/mm/hugetlbpage.c | 13 ---
arch/parisc/mm/init.c | 10 +--
arch/powerpc/kvm/book3s_hv.c | 32 ++++++-
arch/powerpc/kvm/booke.c | 16 +++-
arch/powerpc/platforms/pseries/mobility.c | 77 ++++++++++-------
drivers/dma/bestcomm/ata.c | 2 +-
drivers/dma/bestcomm/bestcomm.c | 22 ++---
drivers/dma/bestcomm/fec.c | 4 +-
drivers/dma/bestcomm/gen_bd.c | 4 +-
drivers/gpio/gpio-mpc8xxx.c | 1 +
drivers/gpu/drm/meson/meson_plane.c | 2 +-
drivers/gpu/drm/meson/meson_viu.c | 2 +-
drivers/net/dsa/mv88e6xxx/chip.c | 64 +++++++-------
drivers/net/usb/qmi_wwan.c | 1 +
drivers/net/wireless/mac80211_hwsim.c | 7 +-
drivers/of/fdt.c | 2 +-
drivers/parisc/ccio-dma.c | 1 +
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 +-
drivers/platform/x86/intel-hid.c | 7 ++
drivers/regulator/pfuze100-regulator.c | 2 +-
drivers/usb/cdns3/gadget.c | 20 +----
drivers/video/fbdev/i740fb.c | 3 +
drivers/video/fbdev/pxa3xx-gcu.c | 2 +-
fs/afs/misc.c | 1 +
fs/cifs/file.c | 3 +
fs/cifs/transport.c | 4 +-
fs/nfs/super.c | 27 ++++--
include/linux/of_device.h | 5 +-
kernel/cgroup/cgroup-v1.c | 2 +
kernel/trace/trace_preemptirq.c | 6 +-
net/rxrpc/call_event.c | 2 +-
net/rxrpc/local_object.c | 3 +
scripts/mksysmap | 2 +-
sound/pci/hda/hda_tegra.c | 3 +-
sound/pci/hda/patch_sigmatel.c | 24 ++++++
sound/soc/codecs/nau8824.c | 17 ++--
tools/include/uapi/asm/errno.h | 4 +-
47 files changed, 378 insertions(+), 348 deletions(-)
^ permalink raw reply [relevance 3%]
* [PATCH 5.10 13/39] pinctrl: sunxi: Fix name for A100 R_PIO
2022-09-21 15:46 3% [PATCH 5.10 00/39] 5.10.145-rc1 review Greg Kroah-Hartman
@ 2022-09-21 15:46 8% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-09-21 15:46 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Michael Wu, Samuel Holland,
Linus Walleij, Sasha Levin
From: Michael Wu <michael@allwinnertech.com>
[ Upstream commit 76648c867c6c03b8a468d9c9222025873ecc613d ]
The name of A100 R_PIO driver should be sun50i-a100-r-pinctrl,
not sun50iw10p1-r-pinctrl.
Fixes: 473436e7647d6 ("pinctrl: sunxi: add support for the Allwinner A100 pin controller")
Signed-off-by: Michael Wu <michael@allwinnertech.com>
Acked-by: Samuel Holland <samuel@sholland.org>
Link: https://lore.kernel.org/r/20220819024541.74191-1-michael@allwinnertech.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c b/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
index 21054fcacd34..18088f6f44b2 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
@@ -98,7 +98,7 @@ MODULE_DEVICE_TABLE(of, a100_r_pinctrl_match);
static struct platform_driver a100_r_pinctrl_driver = {
.probe = a100_r_pinctrl_probe,
.driver = {
- .name = "sun50iw10p1-r-pinctrl",
+ .name = "sun50i-a100-r-pinctrl",
.of_match_table = a100_r_pinctrl_match,
},
};
--
2.35.1
^ permalink raw reply related [relevance 8%]
* [PATCH 5.15 09/45] pinctrl: sunxi: Fix name for A100 R_PIO
2022-09-21 15:45 3% [PATCH 5.15 00/45] 5.15.70-rc1 review Greg Kroah-Hartman
@ 2022-09-21 15:45 8% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-09-21 15:45 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Michael Wu, Samuel Holland,
Linus Walleij, Sasha Levin
From: Michael Wu <michael@allwinnertech.com>
[ Upstream commit 76648c867c6c03b8a468d9c9222025873ecc613d ]
The name of A100 R_PIO driver should be sun50i-a100-r-pinctrl,
not sun50iw10p1-r-pinctrl.
Fixes: 473436e7647d6 ("pinctrl: sunxi: add support for the Allwinner A100 pin controller")
Signed-off-by: Michael Wu <michael@allwinnertech.com>
Acked-by: Samuel Holland <samuel@sholland.org>
Link: https://lore.kernel.org/r/20220819024541.74191-1-michael@allwinnertech.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c b/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
index 21054fcacd34..18088f6f44b2 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
@@ -98,7 +98,7 @@ MODULE_DEVICE_TABLE(of, a100_r_pinctrl_match);
static struct platform_driver a100_r_pinctrl_driver = {
.probe = a100_r_pinctrl_probe,
.driver = {
- .name = "sun50iw10p1-r-pinctrl",
+ .name = "sun50i-a100-r-pinctrl",
.of_match_table = a100_r_pinctrl_match,
},
};
--
2.35.1
^ permalink raw reply related [relevance 8%]
* [PATCH 5.15 00/45] 5.15.70-rc1 review
@ 2022-09-21 15:45 3% Greg Kroah-Hartman
2022-09-21 15:45 8% ` [PATCH 5.15 09/45] pinctrl: sunxi: Fix name for A100 R_PIO Greg Kroah-Hartman
0 siblings, 1 reply; 200+ results
From: Greg Kroah-Hartman @ 2022-09-21 15:45 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, slade
This is the start of the stable review cycle for the 5.15.70 release.
There are 45 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Fri, 23 Sep 2022 15:36:33 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.70-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.15.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.15.70-rc1
Takashi Iwai <tiwai@suse.de>
ALSA: hda/sigmatel: Fix unused variable warning for beep power change
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all()
Mingwei Zhang <mizhang@google.com>
KVM: SEV: add cache flush to solve SEV cache incoherency issues
sewookseo <sewookseo@google.com>
net: Find dst with sk's xfrm policy not ctl_sk
Hyunwoo Kim <imv4bel@gmail.com>
video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write
Youling Tang <tangyouling@loongson.cn>
mksysmap: Fix the mismatch of 'L0' symbols in System.map
Clément Péron <peron.clem@gmail.com>
drm/panfrost: devfreq: set opp to the recommended one to configure regulator
Alexander Sverdlin <alexander.sverdlin@nokia.com>
MIPS: OCTEON: irq: Fix octeon_irq_force_ciu_mapping()
David Howells <dhowells@redhat.com>
afs: Return -EAGAIN, not -EREMOTEIO, when a file already locked
jerry.meng <jerry-meng@foxmail.com>
net: usb: qmi_wwan: add Quectel RM520N
Mohan Kumar <mkumard@nvidia.com>
ALSA: hda/tegra: Align BDL entry to 4KB boundary
Takashi Iwai <tiwai@suse.de>
ALSA: hda/sigmatel: Keep power up while beep is enabled
Soenke Huster <soenke.huster@eknoes.de>
wifi: mac80211_hwsim: check length for virtio packets
David Howells <dhowells@redhat.com>
rxrpc: Fix calc of resend age
David Howells <dhowells@redhat.com>
rxrpc: Fix local destruction being repeated
Hannes Reinecke <hare@suse.de>
scsi: lpfc: Return DID_TRANSPORT_DISRUPTED instead of DID_REQUEUE
Xiaolei Wang <xiaolei.wang@windriver.com>
regulator: pfuze100: Fix the global-out-of-bounds access in pfuze100_regulator_probe()
Takashi Iwai <tiwai@suse.de>
ASoC: nau8824: Fix semaphore unbalance at error paths
Jassi Brar <jaswinder.singh@linaro.org>
arm64: dts: juno: Add missing MHU secure-irq
Zheyu Ma <zheyuma97@gmail.com>
video: fbdev: i740fb: Error out if 'pixclock' equals zero
Carlos Llamas <cmllamas@google.com>
binder: remove inaccurate mmap_assert_locked()
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: move nbio ih_doorbell_range() into ih code for vega
Lijo Lazar <lijo.lazar@amd.com>
drm/amdgpu: Don't enable LTR if not supported
Ben Hutchings <benh@debian.org>
tools/include/uapi: Fix <asm/errno.h> for parisc and xtensa
Helge Deller <deller@gmx.de>
parisc: Allow CONFIG_64BIT with ARCH=parisc
Stefan Metzmacher <metze@samba.org>
cifs: always initialize struct msghdr smb_msg completely
Stefan Metzmacher <metze@samba.org>
cifs: don't send down the destination address to sendmsg for a SOCK_STREAM
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: revalidate mapping when doing direct writes
Thierry Reding <treding@nvidia.com>
of/device: Fix up of_dma_configure_id() stub
Yang Yingliang <yangyingliang@huawei.com>
parisc: ccio-dma: Add missing iounmap in error path in ccio_probe()
Stefan Roesch <shr@fb.com>
block: blk_queue_enter() / __bio_queue_enter() must return -EAGAIN for nowait
Stuart Menefy <stuart.menefy@mathembedded.com>
drm/meson: Fix OSD1 RGB to YCbCr coefficient
Stuart Menefy <stuart.menefy@mathembedded.com>
drm/meson: Correct OSD1 global alpha value
Pali Rohár <pali@kernel.org>
gpio: mpc8xxx: Fix support for IRQ_TYPE_LEVEL_LOW flow_type in mpc85xx
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4: Turn off open-by-filehandle and NFS re-export for NFSv4.0
Michael Wu <michael@allwinnertech.com>
pinctrl: sunxi: Fix name for A100 R_PIO
João H. Spies <jhlspies@gmail.com>
pinctrl: rockchip: Enhance support for IRQ_TYPE_EDGE_BOTH
Molly Sophia <mollysophia379@gmail.com>
pinctrl: qcom: sc8180x: Fix wrong pin numbers
Molly Sophia <mollysophia379@gmail.com>
pinctrl: qcom: sc8180x: Fix gpio_wakeirq_map
Sergey Shtylyov <s.shtylyov@omp.ru>
of: fdt: fix off-by-one error in unflatten_dt_nodes()
Sergiu Moga <sergiu.moga@microchip.com>
tty: serial: atmel: Preserve previous USART mode if RS485 disabled
Lino Sanfilippo <LinoSanfilippo@gmx.de>
serial: atmel: remove redundant assignment in rs485_config
Coiby Xu <coxu@redhat.com>
arm64: kexec_file: use more system keyrings to verify kernel image signature
YueHaibing <yuehaibing@huawei.com>
drm/tegra: vic: Fix build warning when CONFIG_PM=n
-------------
Diffstat:
Makefile | 4 ++--
arch/arm64/boot/dts/arm/juno-base.dtsi | 3 ++-
arch/arm64/kernel/kexec_image.c | 11 +----------
arch/mips/cavium-octeon/octeon-irq.c | 10 ++++++++++
arch/parisc/Kconfig | 12 +++++++++++-
arch/x86/include/asm/kvm-x86-ops.h | 1 +
arch/x86/include/asm/kvm_host.h | 1 +
arch/x86/kvm/svm/sev.c | 8 ++++++++
arch/x86/kvm/svm/svm.c | 1 +
arch/x86/kvm/svm/svm.h | 2 ++
arch/x86/kvm/x86.c | 5 +++++
block/blk-core.c | 4 ++--
drivers/android/binder_alloc.c | 7 -------
drivers/gpio/gpio-mpc8xxx.c | 1 +
drivers/gpio/gpio-rockchip.c | 4 ++--
drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c | 9 ++++++++-
drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c | 9 ++++++++-
drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 9 ++++++++-
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 5 +++++
drivers/gpu/drm/amd/amdgpu/soc15.c | 25 -------------------------
drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 4 ++++
drivers/gpu/drm/amd/amdgpu/vega20_ih.c | 4 ++++
drivers/gpu/drm/meson/meson_plane.c | 2 +-
drivers/gpu/drm/meson/meson_viu.c | 2 +-
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 11 +++++++++++
drivers/gpu/drm/tegra/vic.c | 4 ++--
drivers/net/usb/qmi_wwan.c | 1 +
drivers/net/wireless/mac80211_hwsim.c | 7 ++++++-
drivers/of/fdt.c | 2 +-
drivers/parisc/ccio-dma.c | 1 +
drivers/pinctrl/qcom/pinctrl-sc8180x.c | 10 +++++-----
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 +-
drivers/regulator/pfuze100-regulator.c | 2 +-
drivers/scsi/lpfc/lpfc_scsi.c | 4 ++--
drivers/tty/serial/atmel_serial.c | 8 ++------
drivers/video/fbdev/i740fb.c | 3 +++
drivers/video/fbdev/pxa3xx-gcu.c | 2 +-
fs/afs/misc.c | 1 +
fs/cifs/connect.c | 11 +++--------
fs/cifs/file.c | 3 +++
fs/cifs/transport.c | 6 +-----
fs/nfs/super.c | 27 ++++++++++++++++++---------
include/linux/kvm_host.h | 2 ++
include/linux/of_device.h | 5 +++--
include/net/xfrm.h | 2 ++
kernel/cgroup/cgroup-v1.c | 2 ++
net/ipv4/ip_output.c | 2 +-
net/ipv4/tcp_ipv4.c | 2 ++
net/ipv6/tcp_ipv6.c | 5 ++++-
net/rxrpc/call_event.c | 2 +-
net/rxrpc/local_object.c | 3 +++
scripts/mksysmap | 2 +-
sound/pci/hda/hda_tegra.c | 3 ++-
sound/pci/hda/patch_sigmatel.c | 24 ++++++++++++++++++++++++
sound/soc/codecs/nau8824.c | 17 ++++++++++-------
tools/include/uapi/asm/errno.h | 4 ++--
virt/kvm/kvm_main.c | 27 ++++++++++++++++++++++++---
57 files changed, 234 insertions(+), 116 deletions(-)
^ permalink raw reply [relevance 3%]
* [PATCH 5.19 05/38] pinctrl: sunxi: Fix name for A100 R_PIO
2022-09-21 15:45 3% [PATCH 5.19 00/38] 5.19.11-rc1 review Greg Kroah-Hartman
@ 2022-09-21 15:45 8% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-09-21 15:45 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Michael Wu, Samuel Holland,
Linus Walleij, Sasha Levin
From: Michael Wu <michael@allwinnertech.com>
[ Upstream commit 76648c867c6c03b8a468d9c9222025873ecc613d ]
The name of A100 R_PIO driver should be sun50i-a100-r-pinctrl,
not sun50iw10p1-r-pinctrl.
Fixes: 473436e7647d6 ("pinctrl: sunxi: add support for the Allwinner A100 pin controller")
Signed-off-by: Michael Wu <michael@allwinnertech.com>
Acked-by: Samuel Holland <samuel@sholland.org>
Link: https://lore.kernel.org/r/20220819024541.74191-1-michael@allwinnertech.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c b/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
index 21054fcacd34..18088f6f44b2 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
@@ -98,7 +98,7 @@ MODULE_DEVICE_TABLE(of, a100_r_pinctrl_match);
static struct platform_driver a100_r_pinctrl_driver = {
.probe = a100_r_pinctrl_probe,
.driver = {
- .name = "sun50iw10p1-r-pinctrl",
+ .name = "sun50i-a100-r-pinctrl",
.of_match_table = a100_r_pinctrl_match,
},
};
--
2.35.1
^ permalink raw reply related [relevance 8%]
* [PATCH 5.19 00/38] 5.19.11-rc1 review
@ 2022-09-21 15:45 3% Greg Kroah-Hartman
2022-09-21 15:45 8% ` [PATCH 5.19 05/38] pinctrl: sunxi: Fix name for A100 R_PIO Greg Kroah-Hartman
0 siblings, 1 reply; 200+ results
From: Greg Kroah-Hartman @ 2022-09-21 15:45 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, slade
This is the start of the stable review cycle for the 5.19.11 release.
There are 38 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Fri, 23 Sep 2022 15:36:33 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.19.11-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.19.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.19.11-rc1
Takashi Iwai <tiwai@suse.de>
ALSA: hda/sigmatel: Fix unused variable warning for beep power change
Takashi Iwai <tiwai@suse.de>
ALSA: hda/sigmatel: Keep power up while beep is enabled
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all()
Janne Grunau <j@jannau.net>
dt-bindings: apple,aic: Fix required item "apple,fiq-index" in affinity description
sewookseo <sewookseo@google.com>
net: Find dst with sk's xfrm policy not ctl_sk
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: move nbio ih_doorbell_range() into ih code for vega
Lijo Lazar <lijo.lazar@amd.com>
drm/amdgpu: Don't enable LTR if not supported
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: make sure to init common IP before gmc
Nirmoy Das <nirmoy.das@intel.com>
drm/i915: Set correct domains values at _i915_vma_move_to_active
Ashutosh Dixit <ashutosh.dixit@intel.com>
drm/i915/gt: Fix perf limit reasons bit positions
Ben Hutchings <benh@debian.org>
tools/include/uapi: Fix <asm/errno.h> for parisc and xtensa
Helge Deller <deller@gmx.de>
parisc: Allow CONFIG_64BIT with ARCH=parisc
Mikulas Patocka <mpatocka@redhat.com>
blk-lib: fix blkdev_issue_secure_erase
Stefan Metzmacher <metze@samba.org>
cifs: always initialize struct msghdr smb_msg completely
Stefan Metzmacher <metze@samba.org>
cifs: don't send down the destination address to sendmsg for a SOCK_STREAM
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: revalidate mapping when doing direct writes
Jens Axboe <axboe@kernel.dk>
io_uring/msg_ring: check file type before putting
Thierry Reding <treding@nvidia.com>
of/device: Fix up of_dma_configure_id() stub
Yang Yingliang <yangyingliang@huawei.com>
parisc: ccio-dma: Add missing iounmap in error path in ccio_probe()
Stefan Roesch <shr@fb.com>
block: blk_queue_enter() / __bio_queue_enter() must return -EAGAIN for nowait
Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
drm/i915/guc: Cancel GuC engine busyness worker synchronously
Alan Previn <alan.previn.teres.alexis@intel.com>
drm/i915/guc: Don't update engine busyness stats too frequently
Ankit Nautiyal <ankit.k.nautiyal@intel.com>
drm/i915/vdsc: Set VDSC PIC_HEIGHT before using for DP DSC
Sascha Hauer <s.hauer@pengutronix.de>
drm/rockchip: vop2: Fix eDP/HDMI sync polarities
Stuart Menefy <stuart.menefy@mathembedded.com>
drm/meson: Fix OSD1 RGB to YCbCr coefficient
Stuart Menefy <stuart.menefy@mathembedded.com>
drm/meson: Correct OSD1 global alpha value
Chen-Yu Tsai <wenst@chromium.org>
drm/panel-edp: Fix delays for Innolux N116BCA-EA1
Dan Aloni <dan.aloni@vastdata.com>
Revert "SUNRPC: Remove unreachable error condition"
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFSv4.2: Update mode bits after ALLOCATE and DEALLOCATE
Pali Rohár <pali@kernel.org>
gpio: mpc8xxx: Fix support for IRQ_TYPE_LEVEL_LOW flow_type in mpc85xx
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4: Turn off open-by-filehandle and NFS re-export for NFSv4.0
Trond Myklebust <trond.myklebust@hammerspace.com>
SUNRPC: Fix call completion races with call_decode()
Michael Wu <michael@allwinnertech.com>
pinctrl: sunxi: Fix name for A100 R_PIO
João H. Spies <jhlspies@gmail.com>
pinctrl: rockchip: Enhance support for IRQ_TYPE_EDGE_BOTH
Molly Sophia <mollysophia379@gmail.com>
pinctrl: qcom: sc8180x: Fix wrong pin numbers
Molly Sophia <mollysophia379@gmail.com>
pinctrl: qcom: sc8180x: Fix gpio_wakeirq_map
Sergey Shtylyov <s.shtylyov@omp.ru>
of: fdt: fix off-by-one error in unflatten_dt_nodes()
-------------
Diffstat:
.../bindings/interrupt-controller/apple,aic.yaml | 2 +-
Makefile | 4 ++--
arch/parisc/Kconfig | 12 +++++++++-
block/blk-core.c | 4 ++--
block/blk-lib.c | 11 ++++++---
drivers/gpio/gpio-mpc8xxx.c | 1 +
drivers/gpio/gpio-rockchip.c | 4 ++--
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 14 ++++++++---
drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c | 9 +++++++-
drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c | 9 +++++++-
drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 9 +++++++-
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 5 ++++
drivers/gpu/drm/amd/amdgpu/soc15.c | 25 --------------------
drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 4 ++++
drivers/gpu/drm/amd/amdgpu/vega20_ih.c | 4 ++++
drivers/gpu/drm/i915/display/icl_dsi.c | 2 ++
drivers/gpu/drm/i915/display/intel_dp.c | 1 +
drivers/gpu/drm/i915/display/intel_vdsc.c | 1 -
drivers/gpu/drm/i915/gt/uc/intel_guc.h | 8 +++++++
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 20 +++++++++++++++-
drivers/gpu/drm/i915/i915_reg.h | 16 ++++++-------
drivers/gpu/drm/i915/i915_vma.c | 3 ++-
drivers/gpu/drm/meson/meson_plane.c | 2 +-
drivers/gpu/drm/meson/meson_viu.c | 2 +-
drivers/gpu/drm/panel/panel-edp.c | 3 ++-
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 4 ++++
drivers/of/fdt.c | 2 +-
drivers/parisc/ccio-dma.c | 1 +
drivers/pinctrl/qcom/pinctrl-sc8180x.c | 10 ++++----
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 +-
fs/cifs/connect.c | 11 +++------
fs/cifs/file.c | 3 +++
fs/cifs/transport.c | 6 +----
fs/nfs/internal.h | 25 ++++++++++++++++++++
fs/nfs/nfs42proc.c | 9 ++++++--
fs/nfs/super.c | 27 ++++++++++++++--------
fs/nfs/write.c | 25 --------------------
include/linux/of_device.h | 5 ++--
include/net/xfrm.h | 2 ++
io_uring/io_uring.c | 3 ++-
kernel/cgroup/cgroup-v1.c | 2 ++
net/ipv4/ip_output.c | 2 +-
net/ipv4/tcp_ipv4.c | 2 ++
net/ipv6/tcp_ipv6.c | 5 +++-
net/sunrpc/clnt.c | 3 +++
net/sunrpc/xprt.c | 8 +++----
sound/pci/hda/patch_sigmatel.c | 24 +++++++++++++++++++
tools/include/uapi/asm/errno.h | 4 ++--
48 files changed, 237 insertions(+), 123 deletions(-)
^ permalink raw reply [relevance 3%]
* Re: [PATCH 1/2] cfg80211: fix dead lock for nl80211_new_interface()
2022-09-21 9:19 20% [PATCH 1/2] cfg80211: fix dead lock for nl80211_new_interface() Aran Dalton
2022-09-21 9:19 20% ` [PATCH 2/2] cfg80211: fix dead lock for nl80211_del_interface() Aran Dalton
@ 2022-09-21 15:03 0% ` Jeff Johnson
1 sibling, 0 replies; 200+ results
From: Jeff Johnson @ 2022-09-21 15:03 UTC (permalink / raw)
To: Aran Dalton, johannes, davem, edumazet, kuba, pabeni
Cc: johannes.berg, linux-wireless, netdev, linux-kernel
On 9/21/2022 2:19 AM, Aran Dalton wrote:
> Both nl80211_new_interface and cfg80211_netdev_notifier_call hold the
> same wiphy_lock, then cause deadlock.
>
> The main call stack as bellow:
>
> nl80211_new_interface() takes wiphy_lock
> -> _nl80211_new_interface:
> -> rdev_add_virtual_intf
> -> rdev->ops->add_virtual_intf
> -> register_netdevice
> -> call_netdevice_notifiers(NETDEV_REGISTER, dev);
> -> call_netdevice_notifiers_extack
> -> call_netdevice_notifiers_info
> -> raw_notifier_call_chain
> -> cfg80211_netdev_notifier_call
> -> wiphy_lock(&rdev->wiphy), cfg80211_register_wdev
In both of your patches please describe what you are doing in the patch
to fix the problem, and in particular describe why your fix is safe.
>
> Fixes: ea6b2098dd02 ("cfg80211: fix locking in netlink owner interface destruction")
> Signed-off-by: Aran Dalton <arda@allwinnertech.com>
> ---
> net/wireless/nl80211.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
> index 2705e3ee8fc4..bdacddc3ffa3 100644
> --- a/net/wireless/nl80211.c
> +++ b/net/wireless/nl80211.c
> @@ -4260,9 +4260,7 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
> /* to avoid failing a new interface creation due to pending removal */
> cfg80211_destroy_ifaces(rdev);
>
> - wiphy_lock(&rdev->wiphy);
> ret = _nl80211_new_interface(skb, info);
> - wiphy_unlock(&rdev->wiphy);
>
> return ret;
> }
^ permalink raw reply [relevance 0%]
* Re: [RESEND] devfreq: governor: Save void *data in the governor userspace
2022-09-15 7:41 16% ` Kant Fan
@ 2022-09-21 13:15 14% ` Kant Fan
0 siblings, 0 replies; 200+ results
From: Kant Fan @ 2022-09-21 13:15 UTC (permalink / raw)
To: myungjoo.ham, Kyungmin Park, Chanwoo Choi
Cc: linux-pm, linux-kernel, allwinner-opensource-support
On 9/15/2022 3:41 PM, Kant Fan wrote:
>>>> static int devfreq_userspace_handler(struct devfreq *devfreq,
>>>
>>> Dear MyungJoo, Kyungmin & Chanwoo,
>>> Gently ping this issue... Does this patch has a chance to be accepted?
>>> This seems to be a bug in devfreq userspace governor, which affects the
>>> switching between governors -- When switching from userspace to
>>> ondemand, the ondemand governor would be invalid.
>>> If there's any question, please let me know.
>>> Thank you.
>>
>> Yes, indeed. This is a bug.
>>
>> Actually, it appears that allocating a new memory buffer for
>> devfreq->data itself is a bug for a governor, this is supposed
>> to be allocated by a device driver. Thus, the comment of
>> "void *data" of "struct devfreq" should be updated:
>> "/* private data for governors given by device drivers */"
>>
>> It'd be better to have something like, "void *internal_data"
>> for governors to freely handle within its context of init-exit,
>> which is not touched by its users (device drivers).
>>
>> @Chanwoo: what's your opinion on this?
>>
>> Cheers,
>> MyungJoo.
>>
>
> Hi MyungJoo,
> Thanks for your suggestion. Here's the patch-v2, please have a look:
>
> --
> Subject: [PATCH] devfreq: governor: Add a private governor_data for
> governors in devfreq
>
> The member void *data in the structure devfreq can be overwrite
> by governor_userspace. For example:
> 1. The device driver assigned the devfreq governor to simple_ondemand
> by the function devfreq_add_device() and init the devfreq member
> void *data to a pointer of a static structure devfreq_simple_ondemand_data
> by the function devfreq_add_device().
> 2. The user changed the devfreq governor to userspace by the command
> "echo userspace > /sys/class/devfreq/.../governor".
> 3. The governor userspace alloced a dynamic memory for the struct
> userspace_data and assigend the member void *data of devfreq to
> this memory by the function userspace_init().
> 4. The user changed the devfreq governor back to simple_ondemand
> by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
> 5. The governor userspace exited and assigned the member void *data
> in the structure devfreq to NULL by the function userspace_exit().
> 6. The governor simple_ondemand fetched the static information of
> devfreq_simple_ondemand_data in the function
> devfreq_simple_ondemand_func() but the member void *data of devfreq was
> assigned to NULL by the function userspace_exit().
> 7. The information of upthreshold and downdifferential is lost
> and the governor simple_ondemand can't work correctly.
>
> The member void *data in the structure devfreq is designed for
> a static pointer used in a governor and inited by the function
> devfreq_add_device(). This patch add an element named governor_data
> in the devfreq structure which can be used by a governor(E.g userspace)
> who want to assign a private data to do some private things.
>
> Signed-off-by: Kant Fan <kant@allwinnertech.com>
> ---
>
> diff --git a/drivers/devfreq/governor_userspace.c
> b/drivers/devfreq/governor_userspace.c
> index ab9db7a..d69672c 100644
> --- a/drivers/devfreq/governor_userspace.c
> +++ b/drivers/devfreq/governor_userspace.c
> @@ -21,7 +21,7 @@
>
> static int devfreq_userspace_func(struct devfreq *df, unsigned long
> *freq)
> {
> - struct userspace_data *data = df->data;
> + struct userspace_data *data = df->governor_data;
>
> if (data->valid)
> *freq = data->user_frequency;
> @@ -40,7 +40,7 @@
> int err = 0;
>
> mutex_lock(&devfreq->lock);
> - data = devfreq->data;
> + data = devfreq->governor_data;
>
> sscanf(buf, "%lu", &wanted);
> data->user_frequency = wanted;
> @@ -60,7 +60,7 @@
> int err = 0;
>
> mutex_lock(&devfreq->lock);
> - data = devfreq->data;
> + data = devfreq->governor_data;
>
> if (data->valid)
> err = sprintf(buf, "%lu\n", data->user_frequency);
> @@ -91,7 +91,7 @@
> goto out;
> }
> data->valid = false;
> - devfreq->data = data;
> + devfreq->governor_data = data;
>
> err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
> out:
> @@ -107,8 +107,8 @@
> if (devfreq->dev.kobj.sd)
> sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
>
> - kfree(devfreq->data);
> - devfreq->data = NULL;
> + kfree(devfreq->governor_data);
> + devfreq->governor_data = NULL;
> }
>
> static int devfreq_userspace_handler(struct devfreq *devfreq,
> diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
> index 34aab4d..d265af3 100644
> --- a/include/linux/devfreq.h
> +++ b/include/linux/devfreq.h
> @@ -152,8 +152,8 @@
> * @max_state: count of entry present in the frequency table.
> * @previous_freq: previously configured frequency value.
> * @last_status: devfreq user device info, performance statistics
> - * @data: Private data of the governor. The devfreq framework does not
> - * touch this.
> + * @data: devfreq core pass to governors, governor should not change
> it.
> + * @governor_data: private data for governors, devfreq core doesn't
> touch it.
> * @user_min_freq_req: PM QoS minimum frequency request from user
> (via sysfs)
> * @user_max_freq_req: PM QoS maximum frequency request from user
> (via sysfs)
> * @scaling_min_freq: Limit minimum frequency requested by OPP
> interface
> @@ -193,7 +193,8 @@
> unsigned long previous_freq;
> struct devfreq_dev_status last_status;
>
> - void *data; /* private data for governors */
> + void *data;
> + void *governor_data;
>
> struct dev_pm_qos_request user_min_freq_req;
> struct dev_pm_qos_request user_max_freq_req;
>
Hi MyungJoo,
Sorry to disturb. Just want to say that I'm looking forward to your
advice on this patch. Thank you :>
--
Best Regards,
Kant Fan
^ permalink raw reply [relevance 14%]
* [PATCH 2/2] cfg80211: fix dead lock for nl80211_del_interface()
2022-09-21 9:19 20% [PATCH 1/2] cfg80211: fix dead lock for nl80211_new_interface() Aran Dalton
@ 2022-09-21 9:19 20% ` Aran Dalton
2022-09-21 15:03 0% ` [PATCH 1/2] cfg80211: fix dead lock for nl80211_new_interface() Jeff Johnson
1 sibling, 0 replies; 200+ results
From: Aran Dalton @ 2022-09-21 9:19 UTC (permalink / raw)
To: johannes, davem, edumazet, kuba, pabeni
Cc: johannes.berg, linux-wireless, netdev, linux-kernel
Both nl80211_del_interface and cfg80211_netdev_notifier_call hold the
same wiphy_lock, then cause deadlock.
The main call stack as bellow:
nl80211_del_interface() takes wiphy_lock
-> cfg80211_remove_virtual_intf
-> rdev_del_virtual_intf
-> rdev->ops->del_virtual_intf
-> cfg80211_unregister_netdevice
-> cfg80211_unregister_wdev
-> _cfg80211_unregister_wdev
-> unregister_netdevice
-> unregister_netdevice_queue
-> unregister_netdevice_many
-> call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
-> call_netdevice_notifiers_extack
-> call_netdevice_notifiers_info
-> raw_notifier_call_chain
-> cfg80211_netdev_notifier_call
-> wiphy_lock(&rdev->wiphy), _cfg80211_unregister_wdev
Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver")
Signed-off-by: Aran Dalton <arda@allwinnertech.com>
---
net/wireless/nl80211.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index bdacddc3ffa3..664bf977b7bc 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -4269,6 +4269,7 @@ static int nl80211_del_interface(struct sk_buff *skb, struct genl_info *info)
{
struct cfg80211_registered_device *rdev = info->user_ptr[0];
struct wireless_dev *wdev = info->user_ptr[1];
+ int ret;
if (!rdev->ops->del_virtual_intf)
return -EOPNOTSUPP;
@@ -4296,9 +4297,11 @@ static int nl80211_del_interface(struct sk_buff *skb, struct genl_info *info)
else
dev_close(wdev->netdev);
+ ret = cfg80211_remove_virtual_intf(rdev, wdev);
+
mutex_lock(&rdev->wiphy.mtx);
- return cfg80211_remove_virtual_intf(rdev, wdev);
+ return ret;
}
static int nl80211_set_noack_map(struct sk_buff *skb, struct genl_info *info)
--
2.29.0
^ permalink raw reply related [relevance 20%]
* [PATCH 1/2] cfg80211: fix dead lock for nl80211_new_interface()
@ 2022-09-21 9:19 20% Aran Dalton
2022-09-21 9:19 20% ` [PATCH 2/2] cfg80211: fix dead lock for nl80211_del_interface() Aran Dalton
2022-09-21 15:03 0% ` [PATCH 1/2] cfg80211: fix dead lock for nl80211_new_interface() Jeff Johnson
0 siblings, 2 replies; 200+ results
From: Aran Dalton @ 2022-09-21 9:19 UTC (permalink / raw)
To: johannes, davem, edumazet, kuba, pabeni
Cc: johannes.berg, linux-wireless, netdev, linux-kernel
Both nl80211_new_interface and cfg80211_netdev_notifier_call hold the
same wiphy_lock, then cause deadlock.
The main call stack as bellow:
nl80211_new_interface() takes wiphy_lock
-> _nl80211_new_interface:
-> rdev_add_virtual_intf
-> rdev->ops->add_virtual_intf
-> register_netdevice
-> call_netdevice_notifiers(NETDEV_REGISTER, dev);
-> call_netdevice_notifiers_extack
-> call_netdevice_notifiers_info
-> raw_notifier_call_chain
-> cfg80211_netdev_notifier_call
-> wiphy_lock(&rdev->wiphy), cfg80211_register_wdev
Fixes: ea6b2098dd02 ("cfg80211: fix locking in netlink owner interface destruction")
Signed-off-by: Aran Dalton <arda@allwinnertech.com>
---
net/wireless/nl80211.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 2705e3ee8fc4..bdacddc3ffa3 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -4260,9 +4260,7 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
/* to avoid failing a new interface creation due to pending removal */
cfg80211_destroy_ifaces(rdev);
- wiphy_lock(&rdev->wiphy);
ret = _nl80211_new_interface(skb, info);
- wiphy_unlock(&rdev->wiphy);
return ret;
}
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning
2022-09-13 12:00 0% ` Heiko Stuebner
2022-09-15 18:48 0% ` Palmer Dabbelt
@ 2022-09-15 18:48 0% ` Palmer Dabbelt
1 sibling, 0 replies; 200+ results
From: Palmer Dabbelt @ 2022-09-15 18:48 UTC (permalink / raw)
To: heiko
Cc: linux-kernel, rdunlap, rdunlap, wefu, liush, guoren,
Paul Walmsley, aou, linux-riscv
On Tue, 13 Sep 2022 05:00:08 PDT (-0700), heiko@sntech.de wrote:
> Hi Palmer,
>
> Am Samstag, 9. Juli 2022, 03:49:29 CEST schrieb Randy Dunlap:
>> RISCV_ISA_SVPBMT selects RISCV_ALTERNATIVE which depends on !XIP_KERNEL.
>> Therefore RISCV_ISA_SVPBMT should also depend on !XIP_KERNEL so
>> quieten this kconfig warning:
>>
>> WARNING: unmet direct dependencies detected for RISCV_ALTERNATIVE
>> Depends on [n]: !XIP_KERNEL [=y]
>> Selected by [y]:
>> - RISCV_ISA_SVPBMT [=y] && 64BIT [=y] && MMU [=y]
>>
>> Fixes: ff689fd21cb1 ("riscv: add RISC-V Svpbmt extension support")
>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>
> I think this should also be applied as fix?
>
> Thanks
> Heiko
>
>
>> Cc: Wei Fu <wefu@redhat.com>
>> Cc: Liu Shaohua <liush@allwinnertech.com>
>> Cc: Guo Ren <guoren@kernel.org>
>> Cc: Heiko Stuebner <heiko@sntech.de>
>> Cc: Paul Walmsley <paul.walmsley@sifive.com>
>> Cc: Palmer Dabbelt <palmer@dabbelt.com>
>> Cc: Albert Ou <aou@eecs.berkeley.edu>
>> Cc: linux-riscv@lists.infradead.org
>> ---
>> arch/riscv/Kconfig | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> --- a/arch/riscv/Kconfig
>> +++ b/arch/riscv/Kconfig
>> @@ -362,6 +362,7 @@ config RISCV_ISA_C
>> config RISCV_ISA_SVPBMT
>> bool "SVPBMT extension support"
>> depends on 64BIT && MMU
>> + depends on !XIP_KERNEL
>> select RISCV_ALTERNATIVE
>> default y
>> help
>>
Thanks, this is on fixes.
^ permalink raw reply [relevance 0%]
* Re: [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning
2022-09-13 12:00 0% ` Heiko Stuebner
@ 2022-09-15 18:48 0% ` Palmer Dabbelt
2022-09-15 18:48 0% ` Palmer Dabbelt
1 sibling, 0 replies; 200+ results
From: Palmer Dabbelt @ 2022-09-15 18:48 UTC (permalink / raw)
To: heiko
Cc: linux-kernel, rdunlap, rdunlap, wefu, liush, guoren,
Paul Walmsley, aou, linux-riscv
On Tue, 13 Sep 2022 05:00:08 PDT (-0700), heiko@sntech.de wrote:
> Hi Palmer,
>
> Am Samstag, 9. Juli 2022, 03:49:29 CEST schrieb Randy Dunlap:
>> RISCV_ISA_SVPBMT selects RISCV_ALTERNATIVE which depends on !XIP_KERNEL.
>> Therefore RISCV_ISA_SVPBMT should also depend on !XIP_KERNEL so
>> quieten this kconfig warning:
>>
>> WARNING: unmet direct dependencies detected for RISCV_ALTERNATIVE
>> Depends on [n]: !XIP_KERNEL [=y]
>> Selected by [y]:
>> - RISCV_ISA_SVPBMT [=y] && 64BIT [=y] && MMU [=y]
>>
>> Fixes: ff689fd21cb1 ("riscv: add RISC-V Svpbmt extension support")
>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>
> I think this should also be applied as fix?
Thanks, the original seems to have gotten lost somewhere but I've picked
this up from lore.
>
> Thanks
> Heiko
>
>
>> Cc: Wei Fu <wefu@redhat.com>
>> Cc: Liu Shaohua <liush@allwinnertech.com>
>> Cc: Guo Ren <guoren@kernel.org>
>> Cc: Heiko Stuebner <heiko@sntech.de>
>> Cc: Paul Walmsley <paul.walmsley@sifive.com>
>> Cc: Palmer Dabbelt <palmer@dabbelt.com>
>> Cc: Albert Ou <aou@eecs.berkeley.edu>
>> Cc: linux-riscv@lists.infradead.org
>> ---
>> arch/riscv/Kconfig | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> --- a/arch/riscv/Kconfig
>> +++ b/arch/riscv/Kconfig
>> @@ -362,6 +362,7 @@ config RISCV_ISA_C
>> config RISCV_ISA_SVPBMT
>> bool "SVPBMT extension support"
>> depends on 64BIT && MMU
>> + depends on !XIP_KERNEL
>> select RISCV_ALTERNATIVE
>> default y
>> help
>>
^ permalink raw reply [relevance 0%]
* Re: [RESEND] devfreq: governor: Save void *data in the governor userspace
2022-09-14 9:43 0% ` MyungJoo Ham
@ 2022-09-15 7:41 16% ` Kant Fan
2022-09-21 13:15 14% ` Kant Fan
0 siblings, 1 reply; 200+ results
From: Kant Fan @ 2022-09-15 7:41 UTC (permalink / raw)
To: myungjoo.ham, Kyungmin Park, Chanwoo Choi
Cc: linux-pm, linux-kernel, allwinner-opensource-support
On 9/14/2022 5:43 PM, MyungJoo Ham wrote:
>> On 3/29/2022 5:14 PM, Kant Fan wrote:
>>> The member void *data in the structure devfreq can be overwrite
>>> by governor_userspace.
>>> Signed-off-by: Kant Fan <kant@allwinnertech.com>
>>> ---
>>> drivers/devfreq/governor_userspace.c | 6 +++++-
>>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
>>> index ab9db7adb3ad..dbbb448dcbcf 100644
>>> --- a/drivers/devfreq/governor_userspace.c
>>> +++ b/drivers/devfreq/governor_userspace.c
>>> @@ -17,6 +17,7 @@
>>> struct userspace_data {
>>> unsigned long user_frequency;
>>> bool valid;
>>> + void *saved_data;
>>> };
>>>
>>> static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
>>> @@ -91,6 +92,7 @@ static int userspace_init(struct devfreq *devfreq)
>>> goto out;
>>> }
>>> data->valid = false;
>>> + data->saved_data = devfreq->data;
>>> devfreq->data = data;
>>>
>>> err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
>>> @@ -100,6 +102,8 @@ static int userspace_init(struct devfreq *devfreq)
>>>
>>> static void userspace_exit(struct devfreq *devfreq)
>>> {
>>> + struct userspace_data *data = devfreq->data;
>>> + void *saved_data = data->saved_data;
>>> /*
>>> * Remove the sysfs entry, unless this is being called after
>>> * device_del(), which should have done this already via kobject_del().
>>> @@ -108,7 +112,7 @@ static void userspace_exit(struct devfreq *devfreq)
>>> sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
>>>
>>> kfree(devfreq->data);
>>> - devfreq->data = NULL;
>>> + devfreq->data = saved_data;
>>> }
>>>
>>> static int devfreq_userspace_handler(struct devfreq *devfreq,
>>
>> Dear MyungJoo, Kyungmin & Chanwoo,
>> Gently ping this issue... Does this patch has a chance to be accepted?
>> This seems to be a bug in devfreq userspace governor, which affects the
>> switching between governors -- When switching from userspace to
>> ondemand, the ondemand governor would be invalid.
>> If there's any question, please let me know.
>> Thank you.
>
> Yes, indeed. This is a bug.
>
> Actually, it appears that allocating a new memory buffer for
> devfreq->data itself is a bug for a governor, this is supposed
> to be allocated by a device driver. Thus, the comment of
> "void *data" of "struct devfreq" should be updated:
> "/* private data for governors given by device drivers */"
>
> It'd be better to have something like, "void *internal_data"
> for governors to freely handle within its context of init-exit,
> which is not touched by its users (device drivers).
>
> @Chanwoo: what's your opinion on this?
>
> Cheers,
> MyungJoo.
>
Hi MyungJoo,
Thanks for your suggestion. Here's the patch-v2, please have a look:
--
Subject: [PATCH] devfreq: governor: Add a private governor_data for
governors in devfreq
The member void *data in the structure devfreq can be overwrite
by governor_userspace. For example:
1. The device driver assigned the devfreq governor to simple_ondemand
by the function devfreq_add_device() and init the devfreq member
void *data to a pointer of a static structure devfreq_simple_ondemand_data
by the function devfreq_add_device().
2. The user changed the devfreq governor to userspace by the command
"echo userspace > /sys/class/devfreq/.../governor".
3. The governor userspace alloced a dynamic memory for the struct
userspace_data and assigend the member void *data of devfreq to
this memory by the function userspace_init().
4. The user changed the devfreq governor back to simple_ondemand
by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
5. The governor userspace exited and assigned the member void *data
in the structure devfreq to NULL by the function userspace_exit().
6. The governor simple_ondemand fetched the static information of
devfreq_simple_ondemand_data in the function
devfreq_simple_ondemand_func() but the member void *data of devfreq was
assigned to NULL by the function userspace_exit().
7. The information of upthreshold and downdifferential is lost
and the governor simple_ondemand can't work correctly.
The member void *data in the structure devfreq is designed for
a static pointer used in a governor and inited by the function
devfreq_add_device(). This patch add an element named governor_data
in the devfreq structure which can be used by a governor(E.g userspace)
who want to assign a private data to do some private things.
Signed-off-by: Kant Fan <kant@allwinnertech.com>
---
diff --git a/drivers/devfreq/governor_userspace.c
b/drivers/devfreq/governor_userspace.c
index ab9db7a..d69672c 100644
--- a/drivers/devfreq/governor_userspace.c
+++ b/drivers/devfreq/governor_userspace.c
@@ -21,7 +21,7 @@
static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
{
- struct userspace_data *data = df->data;
+ struct userspace_data *data = df->governor_data;
if (data->valid)
*freq = data->user_frequency;
@@ -40,7 +40,7 @@
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
sscanf(buf, "%lu", &wanted);
data->user_frequency = wanted;
@@ -60,7 +60,7 @@
int err = 0;
mutex_lock(&devfreq->lock);
- data = devfreq->data;
+ data = devfreq->governor_data;
if (data->valid)
err = sprintf(buf, "%lu\n", data->user_frequency);
@@ -91,7 +91,7 @@
goto out;
}
data->valid = false;
- devfreq->data = data;
+ devfreq->governor_data = data;
err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
out:
@@ -107,8 +107,8 @@
if (devfreq->dev.kobj.sd)
sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
- kfree(devfreq->data);
- devfreq->data = NULL;
+ kfree(devfreq->governor_data);
+ devfreq->governor_data = NULL;
}
static int devfreq_userspace_handler(struct devfreq *devfreq,
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 34aab4d..d265af3 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -152,8 +152,8 @@
* @max_state: count of entry present in the frequency table.
* @previous_freq: previously configured frequency value.
* @last_status: devfreq user device info, performance statistics
- * @data: Private data of the governor. The devfreq framework does not
- * touch this.
+ * @data: devfreq core pass to governors, governor should not change it.
+ * @governor_data: private data for governors, devfreq core doesn't
touch it.
* @user_min_freq_req: PM QoS minimum frequency request from user (via
sysfs)
* @user_max_freq_req: PM QoS maximum frequency request from user (via
sysfs)
* @scaling_min_freq: Limit minimum frequency requested by OPP interface
@@ -193,7 +193,8 @@
unsigned long previous_freq;
struct devfreq_dev_status last_status;
- void *data; /* private data for governors */
+ void *data;
+ void *governor_data;
struct dev_pm_qos_request user_min_freq_req;
struct dev_pm_qos_request user_max_freq_req;
--
Best Regards,
Kant Fan
^ permalink raw reply related [relevance 16%]
* RE: Re: [RESEND] devfreq: governor: Save void *data in the governor userspace
[not found] ` <CGME20220914091525epcas1p31c8a9b11ba7a36da4678e3254b0ea962@epcms1p8>
@ 2022-09-14 9:43 0% ` MyungJoo Ham
2022-09-15 7:41 16% ` Kant Fan
0 siblings, 1 reply; 200+ results
From: MyungJoo Ham @ 2022-09-14 9:43 UTC (permalink / raw)
To: Kant Fan, Kyungmin Park, Chanwoo Choi
Cc: linux-pm, linux-kernel, allwinner-opensource-support
>On 3/29/2022 5:14 PM, Kant Fan wrote:
>> The member void *data in the structure devfreq can be overwrite
>> by governor_userspace.
>> Signed-off-by: Kant Fan <kant@allwinnertech.com>
>> ---
>> drivers/devfreq/governor_userspace.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
>> index ab9db7adb3ad..dbbb448dcbcf 100644
>> --- a/drivers/devfreq/governor_userspace.c
>> +++ b/drivers/devfreq/governor_userspace.c
>> @@ -17,6 +17,7 @@
>> struct userspace_data {
>> unsigned long user_frequency;
>> bool valid;
>> + void *saved_data;
>> };
>>
>> static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
>> @@ -91,6 +92,7 @@ static int userspace_init(struct devfreq *devfreq)
>> goto out;
>> }
>> data->valid = false;
>> + data->saved_data = devfreq->data;
>> devfreq->data = data;
>>
>> err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
>> @@ -100,6 +102,8 @@ static int userspace_init(struct devfreq *devfreq)
>>
>> static void userspace_exit(struct devfreq *devfreq)
>> {
>> + struct userspace_data *data = devfreq->data;
>> + void *saved_data = data->saved_data;
>> /*
>> * Remove the sysfs entry, unless this is being called after
>> * device_del(), which should have done this already via kobject_del().
>> @@ -108,7 +112,7 @@ static void userspace_exit(struct devfreq *devfreq)
>> sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
>>
>> kfree(devfreq->data);
>> - devfreq->data = NULL;
>> + devfreq->data = saved_data;
>> }
>>
>> static int devfreq_userspace_handler(struct devfreq *devfreq,
>
>Dear MyungJoo, Kyungmin & Chanwoo,
>Gently ping this issue... Does this patch has a chance to be accepted?
>This seems to be a bug in devfreq userspace governor, which affects the
>switching between governors -- When switching from userspace to
>ondemand, the ondemand governor would be invalid.
>If there's any question, please let me know.
>Thank you.
Yes, indeed. This is a bug.
Actually, it appears that allocating a new memory buffer for
devfreq->data itself is a bug for a governor, this is supposed
to be allocated by a device driver. Thus, the comment of
"void *data" of "struct devfreq" should be updated:
"/* private data for governors given by device drivers */"
It'd be better to have something like, "void *internal_data"
for governors to freely handle within its context of init-exit,
which is not touched by its users (device drivers).
@Chanwoo: what's your opinion on this?
Cheers,
MyungJoo.
^ permalink raw reply [relevance 0%]
* Re: [RESEND] devfreq: governor: Save void *data in the governor userspace
@ 2022-09-14 9:15 14% ` Kant Fan
[not found] ` <CGME20220914091525epcas1p31c8a9b11ba7a36da4678e3254b0ea962@epcms1p8>
1 sibling, 0 replies; 200+ results
From: Kant Fan @ 2022-09-14 9:15 UTC (permalink / raw)
To: myungjoo.ham, kyungmin.park, cw00.choi
Cc: linux-pm, linux-kernel, allwinner-opensource-support
On 3/29/2022 5:14 PM, Kant Fan wrote:
> The member void *data in the structure devfreq can be overwrite
> by governor_userspace. For example:
> 1. The device driver assigned the devfreq governor to simple_ondemand
> by the function devfreq_add_device() and init the devfreq member
> void *data to a pointer of a static structure devfreq_simple_ondemand_data
> by the function devfreq_add_device().
> 2. The user changed the devfreq governor to userspace by the command
> "echo userspace > /sys/class/devfreq/.../governor".
> 3. The governor userspace alloced a dynamic memory for the struct
> userspace_data and assigend the member void *data of devfreq to
> this memory by the function userspace_init().
> 4. The user changed the devfreq governor back to simple_ondemand
> by the command "echo simple_ondemand > /sys/class/devfreq/.../governor".
> 5. The governor userspace exited and assigned the member void *data
> in the structure devfreq to NULL by the function userspace_exit().
> 6. The governor simple_ondemand fetched the static information of
> devfreq_simple_ondemand_data in the function
> devfreq_simple_ondemand_func() but the member void *data of devfreq was
> assigned to NULL by the function userspace_exit().
> 7. The information of upthreshold and downdifferential is lost
> and the governor simple_ondemand can't work correctly.
>
> The member void *data in the structure devfreq is designed for
> a static pointer used in a governor and inited by the function
> devfreq_add_device(). So if a governor want to use void *data
> to do some other things, it must save void *data in the init()
> function and restore void *data in the exit() function.
>
> Signed-off-by: Kant Fan <kant@allwinnertech.com>
> ---
> drivers/devfreq/governor_userspace.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/devfreq/governor_userspace.c b/drivers/devfreq/governor_userspace.c
> index ab9db7adb3ad..dbbb448dcbcf 100644
> --- a/drivers/devfreq/governor_userspace.c
> +++ b/drivers/devfreq/governor_userspace.c
> @@ -17,6 +17,7 @@
> struct userspace_data {
> unsigned long user_frequency;
> bool valid;
> + void *saved_data;
> };
>
> static int devfreq_userspace_func(struct devfreq *df, unsigned long *freq)
> @@ -91,6 +92,7 @@ static int userspace_init(struct devfreq *devfreq)
> goto out;
> }
> data->valid = false;
> + data->saved_data = devfreq->data;
> devfreq->data = data;
>
> err = sysfs_create_group(&devfreq->dev.kobj, &dev_attr_group);
> @@ -100,6 +102,8 @@ static int userspace_init(struct devfreq *devfreq)
>
> static void userspace_exit(struct devfreq *devfreq)
> {
> + struct userspace_data *data = devfreq->data;
> + void *saved_data = data->saved_data;
> /*
> * Remove the sysfs entry, unless this is being called after
> * device_del(), which should have done this already via kobject_del().
> @@ -108,7 +112,7 @@ static void userspace_exit(struct devfreq *devfreq)
> sysfs_remove_group(&devfreq->dev.kobj, &dev_attr_group);
>
> kfree(devfreq->data);
> - devfreq->data = NULL;
> + devfreq->data = saved_data;
> }
>
> static int devfreq_userspace_handler(struct devfreq *devfreq,
Dear MyungJoo, Kyungmin & Chanwoo,
Gently ping this issue... Does this patch has a chance to be accepted?
This seems to be a bug in devfreq userspace governor, which affects the
switching between governors -- When switching from userspace to
ondemand, the ondemand governor would be invalid.
If there's any question, please let me know.
Thank you.
--
Best Regards,
Kant Fan
^ permalink raw reply [relevance 14%]
* Re: [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning
2022-07-09 1:49 6% [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning Randy Dunlap
2022-07-20 4:04 0% ` Guo Ren
2022-07-20 9:01 0% ` Heiko Stübner
@ 2022-09-13 12:00 0% ` Heiko Stuebner
2022-09-15 18:48 0% ` Palmer Dabbelt
2022-09-15 18:48 0% ` Palmer Dabbelt
2 siblings, 2 replies; 200+ results
From: Heiko Stuebner @ 2022-09-13 12:00 UTC (permalink / raw)
To: linux-kernel, Randy Dunlap
Cc: Randy Dunlap, Wei Fu, Liu Shaohua, Guo Ren, Paul Walmsley,
Palmer Dabbelt, Albert Ou, linux-riscv
Hi Palmer,
Am Samstag, 9. Juli 2022, 03:49:29 CEST schrieb Randy Dunlap:
> RISCV_ISA_SVPBMT selects RISCV_ALTERNATIVE which depends on !XIP_KERNEL.
> Therefore RISCV_ISA_SVPBMT should also depend on !XIP_KERNEL so
> quieten this kconfig warning:
>
> WARNING: unmet direct dependencies detected for RISCV_ALTERNATIVE
> Depends on [n]: !XIP_KERNEL [=y]
> Selected by [y]:
> - RISCV_ISA_SVPBMT [=y] && 64BIT [=y] && MMU [=y]
>
> Fixes: ff689fd21cb1 ("riscv: add RISC-V Svpbmt extension support")
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
I think this should also be applied as fix?
Thanks
Heiko
> Cc: Wei Fu <wefu@redhat.com>
> Cc: Liu Shaohua <liush@allwinnertech.com>
> Cc: Guo Ren <guoren@kernel.org>
> Cc: Heiko Stuebner <heiko@sntech.de>
> Cc: Paul Walmsley <paul.walmsley@sifive.com>
> Cc: Palmer Dabbelt <palmer@dabbelt.com>
> Cc: Albert Ou <aou@eecs.berkeley.edu>
> Cc: linux-riscv@lists.infradead.org
> ---
> arch/riscv/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -362,6 +362,7 @@ config RISCV_ISA_C
> config RISCV_ISA_SVPBMT
> bool "SVPBMT extension support"
> depends on 64BIT && MMU
> + depends on !XIP_KERNEL
> select RISCV_ALTERNATIVE
> default y
> help
>
^ permalink raw reply [relevance 0%]
* Re: Re: [PATCH 2/3] arm64: dts: allwinner: a100: Add device node for DMA controller
2022-09-06 21:09 0% ` Jernej Škrabec
@ 2022-09-08 20:01 0% ` Jernej Škrabec
0 siblings, 0 replies; 200+ results
From: Jernej Škrabec @ 2022-09-08 20:01 UTC (permalink / raw)
To: Chen-Yu Tsai, Samuel Holland
Cc: Samuel Holland, Gregory CLEMENT, Krzysztof Kozlowski,
Rob Herring, devicetree, linux-arm-kernel, linux-i2c,
linux-kernel, linux-sunxi, Yangtao Li
Dne torek, 06. september 2022 ob 23:09:38 CEST je Jernej Škrabec napisal(a):
> Dne torek, 30. avgust 2022 ob 04:08:23 CEST je Samuel Holland napisal(a):
> > From: Yangtao Li <frank@allwinnertech.com>
> >
> > The A100 SoC has a DMA controller that supports 8 DMA channels
> > to and from various peripherals.
> >
> > Add a device node for it.
> >
> > Signed-off-by: Yangtao Li <frank@allwinnertech.com>
> > Signed-off-by: Samuel Holland <samuel@sholland.org>
>
> Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Applied, thanks!
Best regards,
Jernej
^ permalink raw reply [relevance 0%]
* Re: [RESEND] clocksource: sun4i: add definition of clear interrupt
2022-09-06 5:20 20% [RESEND] clocksource: sun4i: add definition of clear interrupt Victor Hassan
2022-09-06 19:54 0% ` Jernej Škrabec
@ 2022-09-07 8:14 0% ` Daniel Lezcano
2022-10-04 9:27 8% ` [tip: timers/core] clocksource/drivers/sun4i: Add " tip-bot2 for Victor Hassan
2 siblings, 0 replies; 200+ results
From: Daniel Lezcano @ 2022-09-07 8:14 UTC (permalink / raw)
To: Victor Hassan, maxime, tglx, wens, jernej.skrabec, samuel
Cc: linux-kernel, linux-arm-kernel, linux-sunxi
On 06/09/2022 07:20, Victor Hassan wrote:
> To prevent misunderstanding, use TIMER_IRQ_CLEAR instead of TIMER_IRQ_EN
> in function sun4i_timer_clear_interrupt.
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> ---
Applied, thanks
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
^ permalink raw reply [relevance 0%]
* Re: [PATCH 2/3] arm64: dts: allwinner: a100: Add device node for DMA controller
2022-08-30 2:08 7% ` [PATCH 2/3] arm64: dts: allwinner: a100: Add device node for DMA controller Samuel Holland
@ 2022-09-06 21:09 0% ` Jernej Škrabec
2022-09-08 20:01 0% ` Jernej Škrabec
0 siblings, 1 reply; 200+ results
From: Jernej Škrabec @ 2022-09-06 21:09 UTC (permalink / raw)
To: Chen-Yu Tsai, Samuel Holland
Cc: Samuel Holland, Gregory CLEMENT, Krzysztof Kozlowski,
Rob Herring, devicetree, linux-arm-kernel, linux-i2c,
linux-kernel, linux-sunxi, Yangtao Li
Dne torek, 30. avgust 2022 ob 04:08:23 CEST je Samuel Holland napisal(a):
> From: Yangtao Li <frank@allwinnertech.com>
>
> The A100 SoC has a DMA controller that supports 8 DMA channels
> to and from various peripherals.
>
> Add a device node for it.
>
> Signed-off-by: Yangtao Li <frank@allwinnertech.com>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Best regards,
Jernej
^ permalink raw reply [relevance 0%]
* Re: [RESEND] clocksource: sun4i: add definition of clear interrupt
2022-09-06 5:20 20% [RESEND] clocksource: sun4i: add definition of clear interrupt Victor Hassan
@ 2022-09-06 19:54 0% ` Jernej Škrabec
2022-09-07 8:14 0% ` Daniel Lezcano
2022-10-04 9:27 8% ` [tip: timers/core] clocksource/drivers/sun4i: Add " tip-bot2 for Victor Hassan
2 siblings, 0 replies; 200+ results
From: Jernej Škrabec @ 2022-09-06 19:54 UTC (permalink / raw)
To: maxime, daniel.lezcano, tglx, wens, samuel, Victor Hassan
Cc: linux-kernel, linux-arm-kernel, linux-sunxi
Dne torek, 06. september 2022 ob 07:20:56 CEST je Victor Hassan napisal(a):
> To prevent misunderstanding, use TIMER_IRQ_CLEAR instead of TIMER_IRQ_EN
> in function sun4i_timer_clear_interrupt.
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Best regards,
Jernej
> ---
> drivers/clocksource/timer-sun4i.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clocksource/timer-sun4i.c
> b/drivers/clocksource/timer-sun4i.c index 94dc6e42e983..e5a70aa1deb4 100644
> --- a/drivers/clocksource/timer-sun4i.c
> +++ b/drivers/clocksource/timer-sun4i.c
> @@ -26,6 +26,7 @@
> #define TIMER_IRQ_EN_REG 0x00
> #define TIMER_IRQ_EN(val) BIT(val)
> #define TIMER_IRQ_ST_REG 0x04
> +#define TIMER_IRQ_CLEAR(val) BIT(val)
> #define TIMER_CTL_REG(val) (0x10 * val + 0x10)
> #define TIMER_CTL_ENABLE BIT(0)
> #define TIMER_CTL_RELOAD BIT(1)
> @@ -123,7 +124,7 @@ static int sun4i_clkevt_next_event(unsigned long evt,
>
> static void sun4i_timer_clear_interrupt(void __iomem *base)
> {
> - writel(TIMER_IRQ_EN(0), base + TIMER_IRQ_ST_REG);
> + writel(TIMER_IRQ_CLEAR(0), base + TIMER_IRQ_ST_REG);
> }
>
> static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
> --
> 2.29.0
^ permalink raw reply [relevance 0%]
* [RESEND] clocksource: sun4i: add definition of clear interrupt
@ 2022-09-06 5:20 20% Victor Hassan
2022-09-06 19:54 0% ` Jernej Škrabec
` (2 more replies)
0 siblings, 3 replies; 200+ results
From: Victor Hassan @ 2022-09-06 5:20 UTC (permalink / raw)
To: maxime, daniel.lezcano, tglx, wens, jernej.skrabec, samuel
Cc: linux-kernel, linux-arm-kernel, linux-sunxi
To prevent misunderstanding, use TIMER_IRQ_CLEAR instead of TIMER_IRQ_EN
in function sun4i_timer_clear_interrupt.
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/clocksource/timer-sun4i.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
index 94dc6e42e983..e5a70aa1deb4 100644
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -26,6 +26,7 @@
#define TIMER_IRQ_EN_REG 0x00
#define TIMER_IRQ_EN(val) BIT(val)
#define TIMER_IRQ_ST_REG 0x04
+#define TIMER_IRQ_CLEAR(val) BIT(val)
#define TIMER_CTL_REG(val) (0x10 * val + 0x10)
#define TIMER_CTL_ENABLE BIT(0)
#define TIMER_CTL_RELOAD BIT(1)
@@ -123,7 +124,7 @@ static int sun4i_clkevt_next_event(unsigned long evt,
static void sun4i_timer_clear_interrupt(void __iomem *base)
{
- writel(TIMER_IRQ_EN(0), base + TIMER_IRQ_ST_REG);
+ writel(TIMER_IRQ_CLEAR(0), base + TIMER_IRQ_ST_REG);
}
static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
2022-09-01 13:21 6% ` Rob Herring
2022-09-01 13:49 0% ` Rob Herring
@ 2022-09-03 8:54 14% ` Victor Hassan
1 sibling, 0 replies; 200+ results
From: Victor Hassan @ 2022-09-03 8:54 UTC (permalink / raw)
To: Rob Herring
Cc: Marek Szyprowski, Russell King, Russell King, Linus Walleij,
yanfei.xu, Ard Biesheuvel, Thomas Gleixner,
Michał Mirosław, Arnd Bergmann, linux-arm-kernel,
linux-kernel
Dear Rob,
On 2022/9/1 21:21, Rob Herring wrote:
> On Thu, Sep 1, 2022 at 7:54 AM Victor Hassan <victor@allwinnertech.com> wrote:
>>
>>
>>
>> On 2022/8/31 20:37, Victor Hassan wrote:
>>> On 8/31/2022 7:52 PM, Marek Szyprowski wrote:
>>>> Hi Victor,
>>>>
>>>> On 16.03.2022 03:33, Victor Hassan wrote:
>>>>> earlycon uses fixmap to create a memory map,
>>>>> So we need to close earlycon before closing fixmap,
>>>>> otherwise printk will access illegal addresses.
>
> How? Due to recent changes in how printk and the consoles work or just
> because create_mapping() can print? In the latter case, the only
> variable input is the phys address. I think most if not all prints
> cannot occur.
>
>>>>> After creating a new memory map, we open earlycon again.
>>>>>
>>>>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>>>>
>>>> This patch landed in linux next-20220831 as commit a76886d117cb ("ARM:
>>>> 9223/1: mmu: fix access to illegal address when using earlycon &
>>>> memblock=debug"). Unfortunately it breaks booting of all my test boards
>>>> which *do not* use earlycon. It can be easily reproduced even with QEMU.
>>>>
>>>> With kernel compiled from multi_v7_defconfig the following setup boots:
>>>>
>>>> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
>>>> "console=ttyAMA0 earlycon" -M virt -smp 2 -m 512
>>>>
>>>> while this one doesn't:
>>>>
>>>> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
>>>> "console=ttyAMA0" -M virt -smp 2 -m 512
>>>>
>>>>
>>>>> ---
>>>>> arch/arm/mm/mmu.c | 7 +++++++
>>>>> 1 file changed, 7 insertions(+)
>>>>>
>>>>> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
>>>>> index 274e4f73fd33..f3511f07a7d0 100644
>>>>> --- a/arch/arm/mm/mmu.c
>>>>> +++ b/arch/arm/mm/mmu.c
>>>>> @@ -14,6 +14,7 @@
>>>>> #include <linux/fs.h>
>>>>> #include <linux/vmalloc.h>
>>>>> #include <linux/sizes.h>
>>>>> +#include <linux/console.h>
>>>>> #include <asm/cp15.h>
>>>>> #include <asm/cputype.h>
>>>>> @@ -1695,6 +1696,9 @@ static void __init early_fixmap_shutdown(void)
>>>>> pmd_clear(fixmap_pmd(va));
>>>>> local_flush_tlb_kernel_page(va);
>>>>> +#ifdef CONFIG_FIX_EARLYCON_MEM
>>>>> + console_stop(console_drivers);
>>>>> +#endif
>>>>> for (i = 0; i < __end_of_permanent_fixed_addresses; i++) {
>>>>> pte_t *pte;
>>>>> struct map_desc map;
>>>>> @@ -1713,6 +1717,9 @@ static void __init early_fixmap_shutdown(void)
>>>>> create_mapping(&map);
>>>>> }
>>>>> +#ifdef CONFIG_FIX_EARLYCON_MEM
>>>>> + console_start(console_drivers);
>>>>> +#endif
>>>>> }
>>>>> /*
>>>>
>>>> Best regards
>>>
>>> Dear Marek,
>>> Thank you for the notice. I'll figure it out and feed back to you as
>>> soon as possible.
>>>
>>> Regards,
>>> Victor
>>
>> Hi Marek,
>>
>> Sorry, didn't take into account that console_drivers is NULL when
>> earlycon is not used.
>>
>> Here is the patch-v2. Please review:
>>
>> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
>> index a49f0b9..a240f38 100644
>> --- a/arch/arm/mm/mmu.c
>> +++ b/arch/arm/mm/mmu.c
>> @@ -14,6 +14,7 @@
>> #include <linux/fs.h>
>> #include <linux/vmalloc.h>
>> #include <linux/sizes.h>
>> +#include <linux/console.h>
>>
>> #include <asm/cp15.h>
>> #include <asm/cputype.h>
>> @@ -1730,6 +1731,10 @@
>> pmd_clear(fixmap_pmd(va));
>> local_flush_tlb_kernel_page(va);
>>
>> +#ifdef CONFIG_FIX_EARLYCON_MEM
>
> This is always true for CONFIG_MMU and this file is only built for
> CONFIG_MMU. So you don't need it.
Yes, you are right.
>
>> + if (console_drivers)
>> + console_stop(console_drivers);
>
> console_drivers is a list, so you are only stopping the 1st one.
> Couldn't console_lock() be used here?
>
Thanks for the suggestion: console_lock is actually the same as
console_stop in the test, and the code is more compact.
> Also, this should be before pmd_clear().
During the test, I found that the console failed after executing
local_flush_tlb_kernel_page, so I think the pmd_clear function can
output in time if there is printing. This doesn't seem possible, so
before pmd_clear it's not bad either.
>
>> +#endif
>> for (i = 0; i < __end_of_permanent_fixed_addresses; i++) {
>> pte_t *pte;
>> struct map_desc map;
>> @@ -1748,6 +1753,10 @@
>>
>> create_mapping(&map);
>> }
>> +#ifdef CONFIG_FIX_EARLYCON_MEM
>> + if (console_drivers)
>> + console_start(console_drivers);
>> +#endif
>> }
>>
>> BTW, should I resend the patch-v2 through the site
>> (https://www.armlinux.org.uk/developer/patches/add.php), or should I
>> send the patch-v2 through E-mail to Linux-Mainline?
>>
>> Thanks you.
>>
>> Regards,
>> Victor
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Here is the patch-v3. Please review:
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index a49f0b9..57ca77f 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -14,6 +14,7 @@
#include <linux/fs.h>
#include <linux/vmalloc.h>
#include <linux/sizes.h>
+#include <linux/console.h>
#include <asm/cp15.h>
#include <asm/cputype.h>
@@ -1727,6 +1728,7 @@
unsigned long va = fix_to_virt(__end_of_permanent_fixed_addresses - 1);
pte_offset_fixmap = pte_offset_late_fixmap;
+ console_lock();
pmd_clear(fixmap_pmd(va));
local_flush_tlb_kernel_page(va);
@@ -1748,6 +1750,7 @@
create_mapping(&map);
}
+ console_unlock();
}
Thanks you.
Regards,
Victor
^ permalink raw reply related [relevance 14%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
2022-09-01 13:21 6% ` Rob Herring
@ 2022-09-01 13:49 0% ` Rob Herring
2022-09-03 8:54 14% ` Victor Hassan
1 sibling, 0 replies; 200+ results
From: Rob Herring @ 2022-09-01 13:49 UTC (permalink / raw)
To: Victor Hassan
Cc: Marek Szyprowski, Russell King, Russell King, Linus Walleij,
yanfei.xu, Ard Biesheuvel, Thomas Gleixner,
Michał Mirosław, Arnd Bergmann, linux-arm-kernel,
linux-kernel
On Thu, Sep 1, 2022 at 8:21 AM Rob Herring <robh@kernel.org> wrote:
>
> On Thu, Sep 1, 2022 at 7:54 AM Victor Hassan <victor@allwinnertech.com> wrote:
> >
> >
> >
> > On 2022/8/31 20:37, Victor Hassan wrote:
> > > On 8/31/2022 7:52 PM, Marek Szyprowski wrote:
> > >> Hi Victor,
> > >>
> > >> On 16.03.2022 03:33, Victor Hassan wrote:
> > >>> earlycon uses fixmap to create a memory map,
> > >>> So we need to close earlycon before closing fixmap,
> > >>> otherwise printk will access illegal addresses.
>
> How? Due to recent changes in how printk and the consoles work or just
> because create_mapping() can print? In the latter case, the only
> variable input is the phys address. I think most if not all prints
> cannot occur.
Ah, I missed the memblock debug part on the subject...
Rob
^ permalink raw reply [relevance 0%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
2022-09-01 12:53 14% ` Victor Hassan
@ 2022-09-01 13:21 6% ` Rob Herring
2022-09-01 13:49 0% ` Rob Herring
2022-09-03 8:54 14% ` Victor Hassan
0 siblings, 2 replies; 200+ results
From: Rob Herring @ 2022-09-01 13:21 UTC (permalink / raw)
To: Victor Hassan
Cc: Marek Szyprowski, Russell King, Russell King, Linus Walleij,
yanfei.xu, Ard Biesheuvel, Thomas Gleixner,
Michał Mirosław, Arnd Bergmann, linux-arm-kernel,
linux-kernel
On Thu, Sep 1, 2022 at 7:54 AM Victor Hassan <victor@allwinnertech.com> wrote:
>
>
>
> On 2022/8/31 20:37, Victor Hassan wrote:
> > On 8/31/2022 7:52 PM, Marek Szyprowski wrote:
> >> Hi Victor,
> >>
> >> On 16.03.2022 03:33, Victor Hassan wrote:
> >>> earlycon uses fixmap to create a memory map,
> >>> So we need to close earlycon before closing fixmap,
> >>> otherwise printk will access illegal addresses.
How? Due to recent changes in how printk and the consoles work or just
because create_mapping() can print? In the latter case, the only
variable input is the phys address. I think most if not all prints
cannot occur.
> >>> After creating a new memory map, we open earlycon again.
> >>>
> >>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> >>
> >> This patch landed in linux next-20220831 as commit a76886d117cb ("ARM:
> >> 9223/1: mmu: fix access to illegal address when using earlycon &
> >> memblock=debug"). Unfortunately it breaks booting of all my test boards
> >> which *do not* use earlycon. It can be easily reproduced even with QEMU.
> >>
> >> With kernel compiled from multi_v7_defconfig the following setup boots:
> >>
> >> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
> >> "console=ttyAMA0 earlycon" -M virt -smp 2 -m 512
> >>
> >> while this one doesn't:
> >>
> >> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
> >> "console=ttyAMA0" -M virt -smp 2 -m 512
> >>
> >>
> >>> ---
> >>> arch/arm/mm/mmu.c | 7 +++++++
> >>> 1 file changed, 7 insertions(+)
> >>>
> >>> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> >>> index 274e4f73fd33..f3511f07a7d0 100644
> >>> --- a/arch/arm/mm/mmu.c
> >>> +++ b/arch/arm/mm/mmu.c
> >>> @@ -14,6 +14,7 @@
> >>> #include <linux/fs.h>
> >>> #include <linux/vmalloc.h>
> >>> #include <linux/sizes.h>
> >>> +#include <linux/console.h>
> >>> #include <asm/cp15.h>
> >>> #include <asm/cputype.h>
> >>> @@ -1695,6 +1696,9 @@ static void __init early_fixmap_shutdown(void)
> >>> pmd_clear(fixmap_pmd(va));
> >>> local_flush_tlb_kernel_page(va);
> >>> +#ifdef CONFIG_FIX_EARLYCON_MEM
> >>> + console_stop(console_drivers);
> >>> +#endif
> >>> for (i = 0; i < __end_of_permanent_fixed_addresses; i++) {
> >>> pte_t *pte;
> >>> struct map_desc map;
> >>> @@ -1713,6 +1717,9 @@ static void __init early_fixmap_shutdown(void)
> >>> create_mapping(&map);
> >>> }
> >>> +#ifdef CONFIG_FIX_EARLYCON_MEM
> >>> + console_start(console_drivers);
> >>> +#endif
> >>> }
> >>> /*
> >>
> >> Best regards
> >
> > Dear Marek,
> > Thank you for the notice. I'll figure it out and feed back to you as
> > soon as possible.
> >
> > Regards,
> > Victor
>
> Hi Marek,
>
> Sorry, didn't take into account that console_drivers is NULL when
> earlycon is not used.
>
> Here is the patch-v2. Please review:
>
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index a49f0b9..a240f38 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -14,6 +14,7 @@
> #include <linux/fs.h>
> #include <linux/vmalloc.h>
> #include <linux/sizes.h>
> +#include <linux/console.h>
>
> #include <asm/cp15.h>
> #include <asm/cputype.h>
> @@ -1730,6 +1731,10 @@
> pmd_clear(fixmap_pmd(va));
> local_flush_tlb_kernel_page(va);
>
> +#ifdef CONFIG_FIX_EARLYCON_MEM
This is always true for CONFIG_MMU and this file is only built for
CONFIG_MMU. So you don't need it.
> + if (console_drivers)
> + console_stop(console_drivers);
console_drivers is a list, so you are only stopping the 1st one.
Couldn't console_lock() be used here?
Also, this should be before pmd_clear().
> +#endif
> for (i = 0; i < __end_of_permanent_fixed_addresses; i++) {
> pte_t *pte;
> struct map_desc map;
> @@ -1748,6 +1753,10 @@
>
> create_mapping(&map);
> }
> +#ifdef CONFIG_FIX_EARLYCON_MEM
> + if (console_drivers)
> + console_start(console_drivers);
> +#endif
> }
>
> BTW, should I resend the patch-v2 through the site
> (https://www.armlinux.org.uk/developer/patches/add.php), or should I
> send the patch-v2 through E-mail to Linux-Mainline?
>
> Thanks you.
>
> Regards,
> Victor
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [relevance 6%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
2022-08-31 12:37 14% ` Victor Hassan
@ 2022-09-01 12:53 14% ` Victor Hassan
2022-09-01 13:21 6% ` Rob Herring
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2022-09-01 12:53 UTC (permalink / raw)
To: Marek Szyprowski, linux, rmk+kernel, linus.walleij, yanfei.xu,
ardb, tglx, mirq-linux, arnd
Cc: linux-arm-kernel, linux-kernel
On 2022/8/31 20:37, Victor Hassan wrote:
> On 8/31/2022 7:52 PM, Marek Szyprowski wrote:
>> Hi Victor,
>>
>> On 16.03.2022 03:33, Victor Hassan wrote:
>>> earlycon uses fixmap to create a memory map,
>>> So we need to close earlycon before closing fixmap,
>>> otherwise printk will access illegal addresses.
>>> After creating a new memory map, we open earlycon again.
>>>
>>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>>
>> This patch landed in linux next-20220831 as commit a76886d117cb ("ARM:
>> 9223/1: mmu: fix access to illegal address when using earlycon &
>> memblock=debug"). Unfortunately it breaks booting of all my test boards
>> which *do not* use earlycon. It can be easily reproduced even with QEMU.
>>
>> With kernel compiled from multi_v7_defconfig the following setup boots:
>>
>> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
>> "console=ttyAMA0 earlycon" -M virt -smp 2 -m 512
>>
>> while this one doesn't:
>>
>> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
>> "console=ttyAMA0" -M virt -smp 2 -m 512
>>
>>
>>> ---
>>> arch/arm/mm/mmu.c | 7 +++++++
>>> 1 file changed, 7 insertions(+)
>>>
>>> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
>>> index 274e4f73fd33..f3511f07a7d0 100644
>>> --- a/arch/arm/mm/mmu.c
>>> +++ b/arch/arm/mm/mmu.c
>>> @@ -14,6 +14,7 @@
>>> #include <linux/fs.h>
>>> #include <linux/vmalloc.h>
>>> #include <linux/sizes.h>
>>> +#include <linux/console.h>
>>> #include <asm/cp15.h>
>>> #include <asm/cputype.h>
>>> @@ -1695,6 +1696,9 @@ static void __init early_fixmap_shutdown(void)
>>> pmd_clear(fixmap_pmd(va));
>>> local_flush_tlb_kernel_page(va);
>>> +#ifdef CONFIG_FIX_EARLYCON_MEM
>>> + console_stop(console_drivers);
>>> +#endif
>>> for (i = 0; i < __end_of_permanent_fixed_addresses; i++) {
>>> pte_t *pte;
>>> struct map_desc map;
>>> @@ -1713,6 +1717,9 @@ static void __init early_fixmap_shutdown(void)
>>> create_mapping(&map);
>>> }
>>> +#ifdef CONFIG_FIX_EARLYCON_MEM
>>> + console_start(console_drivers);
>>> +#endif
>>> }
>>> /*
>>
>> Best regards
>
> Dear Marek,
> Thank you for the notice. I'll figure it out and feed back to you as
> soon as possible.
>
> Regards,
> Victor
Hi Marek,
Sorry, didn't take into account that console_drivers is NULL when
earlycon is not used.
Here is the patch-v2. Please review:
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index a49f0b9..a240f38 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -14,6 +14,7 @@
#include <linux/fs.h>
#include <linux/vmalloc.h>
#include <linux/sizes.h>
+#include <linux/console.h>
#include <asm/cp15.h>
#include <asm/cputype.h>
@@ -1730,6 +1731,10 @@
pmd_clear(fixmap_pmd(va));
local_flush_tlb_kernel_page(va);
+#ifdef CONFIG_FIX_EARLYCON_MEM
+ if (console_drivers)
+ console_stop(console_drivers);
+#endif
for (i = 0; i < __end_of_permanent_fixed_addresses; i++) {
pte_t *pte;
struct map_desc map;
@@ -1748,6 +1753,10 @@
create_mapping(&map);
}
+#ifdef CONFIG_FIX_EARLYCON_MEM
+ if (console_drivers)
+ console_start(console_drivers);
+#endif
}
BTW, should I resend the patch-v2 through the site
(https://www.armlinux.org.uk/developer/patches/add.php), or should I
send the patch-v2 through E-mail to Linux-Mainline?
Thanks you.
Regards,
Victor
^ permalink raw reply related [relevance 14%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
2022-08-31 11:52 0% ` Marek Szyprowski
2022-08-31 12:37 14% ` Victor Hassan
@ 2022-08-31 13:51 0% ` Russell King (Oracle)
1 sibling, 0 replies; 200+ results
From: Russell King (Oracle) @ 2022-08-31 13:51 UTC (permalink / raw)
To: Marek Szyprowski
Cc: Victor Hassan, linus.walleij, yanfei.xu, ardb, tglx, mirq-linux,
arnd, linux-arm-kernel, linux-kernel,
allwinner-opensource-support
On Wed, Aug 31, 2022 at 01:52:57PM +0200, Marek Szyprowski wrote:
> Hi Victor,
>
> On 16.03.2022 03:33, Victor Hassan wrote:
> > earlycon uses fixmap to create a memory map,
> > So we need to close earlycon before closing fixmap,
> > otherwise printk will access illegal addresses.
> > After creating a new memory map, we open earlycon again.
> >
> > Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>
> This patch landed in linux next-20220831 as commit a76886d117cb ("ARM:
> 9223/1: mmu: fix access to illegal address when using earlycon &
> memblock=debug"). Unfortunately it breaks booting of all my test boards
> which *do not* use earlycon. It can be easily reproduced even with QEMU.
>
> With kernel compiled from multi_v7_defconfig the following setup boots:
>
> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
> "console=ttyAMA0 earlycon" -M virt -smp 2 -m 512
>
> while this one doesn't:
>
> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
> "console=ttyAMA0" -M virt -smp 2 -m 512
That's the second patch to drop from my merge yesterday... not good.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [relevance 0%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
2022-08-31 11:52 0% ` Marek Szyprowski
@ 2022-08-31 12:37 14% ` Victor Hassan
2022-09-01 12:53 14% ` Victor Hassan
2022-08-31 13:51 0% ` Russell King (Oracle)
1 sibling, 1 reply; 200+ results
From: Victor Hassan @ 2022-08-31 12:37 UTC (permalink / raw)
To: Marek Szyprowski, linux, rmk+kernel, linus.walleij, yanfei.xu,
ardb, tglx, mirq-linux, arnd
Cc: linux-arm-kernel, linux-kernel
On 8/31/2022 7:52 PM, Marek Szyprowski wrote:
> Hi Victor,
>
> On 16.03.2022 03:33, Victor Hassan wrote:
>> earlycon uses fixmap to create a memory map,
>> So we need to close earlycon before closing fixmap,
>> otherwise printk will access illegal addresses.
>> After creating a new memory map, we open earlycon again.
>>
>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>
> This patch landed in linux next-20220831 as commit a76886d117cb ("ARM:
> 9223/1: mmu: fix access to illegal address when using earlycon &
> memblock=debug"). Unfortunately it breaks booting of all my test boards
> which *do not* use earlycon. It can be easily reproduced even with QEMU.
>
> With kernel compiled from multi_v7_defconfig the following setup boots:
>
> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
> "console=ttyAMA0 earlycon" -M virt -smp 2 -m 512
>
> while this one doesn't:
>
> $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
> "console=ttyAMA0" -M virt -smp 2 -m 512
>
>
>> ---
>> arch/arm/mm/mmu.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
>> index 274e4f73fd33..f3511f07a7d0 100644
>> --- a/arch/arm/mm/mmu.c
>> +++ b/arch/arm/mm/mmu.c
>> @@ -14,6 +14,7 @@
>> #include <linux/fs.h>
>> #include <linux/vmalloc.h>
>> #include <linux/sizes.h>
>> +#include <linux/console.h>
>>
>> #include <asm/cp15.h>
>> #include <asm/cputype.h>
>> @@ -1695,6 +1696,9 @@ static void __init early_fixmap_shutdown(void)
>> pmd_clear(fixmap_pmd(va));
>> local_flush_tlb_kernel_page(va);
>>
>> +#ifdef CONFIG_FIX_EARLYCON_MEM
>> + console_stop(console_drivers);
>> +#endif
>> for (i = 0; i < __end_of_permanent_fixed_addresses; i++) {
>> pte_t *pte;
>> struct map_desc map;
>> @@ -1713,6 +1717,9 @@ static void __init early_fixmap_shutdown(void)
>>
>> create_mapping(&map);
>> }
>> +#ifdef CONFIG_FIX_EARLYCON_MEM
>> + console_start(console_drivers);
>> +#endif
>> }
>>
>> /*
>
> Best regards
Dear Marek,
Thank you for the notice. I'll figure it out and feed back to you as
soon as possible.
Regards,
Victor
^ permalink raw reply [relevance 14%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
[not found] ` <CGME20220831115257eucas1p20d37a01c51e42767860920a936255bd7@eucas1p2.samsung.com>
@ 2022-08-31 11:52 0% ` Marek Szyprowski
2022-08-31 12:37 14% ` Victor Hassan
2022-08-31 13:51 0% ` Russell King (Oracle)
0 siblings, 2 replies; 200+ results
From: Marek Szyprowski @ 2022-08-31 11:52 UTC (permalink / raw)
To: Victor Hassan, linux, rmk+kernel, linus.walleij, yanfei.xu, ardb,
tglx, mirq-linux, arnd
Cc: linux-arm-kernel, linux-kernel, allwinner-opensource-support
Hi Victor,
On 16.03.2022 03:33, Victor Hassan wrote:
> earlycon uses fixmap to create a memory map,
> So we need to close earlycon before closing fixmap,
> otherwise printk will access illegal addresses.
> After creating a new memory map, we open earlycon again.
>
> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
This patch landed in linux next-20220831 as commit a76886d117cb ("ARM:
9223/1: mmu: fix access to illegal address when using earlycon &
memblock=debug"). Unfortunately it breaks booting of all my test boards
which *do not* use earlycon. It can be easily reproduced even with QEMU.
With kernel compiled from multi_v7_defconfig the following setup boots:
$ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
"console=ttyAMA0 earlycon" -M virt -smp 2 -m 512
while this one doesn't:
$ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append
"console=ttyAMA0" -M virt -smp 2 -m 512
> ---
> arch/arm/mm/mmu.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index 274e4f73fd33..f3511f07a7d0 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -14,6 +14,7 @@
> #include <linux/fs.h>
> #include <linux/vmalloc.h>
> #include <linux/sizes.h>
> +#include <linux/console.h>
>
> #include <asm/cp15.h>
> #include <asm/cputype.h>
> @@ -1695,6 +1696,9 @@ static void __init early_fixmap_shutdown(void)
> pmd_clear(fixmap_pmd(va));
> local_flush_tlb_kernel_page(va);
>
> +#ifdef CONFIG_FIX_EARLYCON_MEM
> + console_stop(console_drivers);
> +#endif
> for (i = 0; i < __end_of_permanent_fixed_addresses; i++) {
> pte_t *pte;
> struct map_desc map;
> @@ -1713,6 +1717,9 @@ static void __init early_fixmap_shutdown(void)
>
> create_mapping(&map);
> }
> +#ifdef CONFIG_FIX_EARLYCON_MEM
> + console_start(console_drivers);
> +#endif
> }
>
> /*
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
^ permalink raw reply [relevance 0%]
* [PATCH 2/3] arm64: dts: allwinner: a100: Add device node for DMA controller
@ 2022-08-30 2:08 7% ` Samuel Holland
2022-09-06 21:09 0% ` Jernej Škrabec
0 siblings, 1 reply; 200+ results
From: Samuel Holland @ 2022-08-30 2:08 UTC (permalink / raw)
To: Chen-Yu Tsai, Jernej Skrabec
Cc: Samuel Holland, Gregory CLEMENT, Krzysztof Kozlowski,
Rob Herring, devicetree, linux-arm-kernel, linux-i2c,
linux-kernel, linux-sunxi, Yangtao Li
From: Yangtao Li <frank@allwinnertech.com>
The A100 SoC has a DMA controller that supports 8 DMA channels
to and from various peripherals.
Add a device node for it.
Signed-off-by: Yangtao Li <frank@allwinnertech.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
Changes in v1:
- From previous submission: fixed off-by-one in dma-requests property
arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
index 548539c93ab0..5453a3bb7d81 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
@@ -101,6 +101,18 @@ ccu: clock@3001000 {
#reset-cells = <1>;
};
+ dma: dma-controller@3002000 {
+ compatible = "allwinner,sun50i-a100-dma";
+ reg = <0x03002000 0x1000>;
+ interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
+ clock-names = "bus", "mbus";
+ resets = <&ccu RST_BUS_DMA>;
+ dma-channels = <8>;
+ dma-requests = <52>;
+ #dma-cells = <1>;
+ };
+
gic: interrupt-controller@3021000 {
compatible = "arm,gic-400";
reg = <0x03021000 0x1000>, <0x03022000 0x2000>,
--
2.35.1
^ permalink raw reply related [relevance 7%]
* Re: [PATCH] scsi: core: Fix block I/O error of USB card reader during resume
@ 2022-08-29 9:06 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2022-08-29 9:06 UTC (permalink / raw)
To: Bart Van Assche, jejb, martin.petersen; +Cc: linux-scsi, linux-kernel
On 8/27/2022 6:05 AM, Bart Van Assche wrote:
> On 8/23/22 03:16, Michael Wu wrote:
>> Yes... My patch did seem suspicious. Here's the scene about the block
>> I/O error: Some card reader does not respond the command 'MEDIUM
>> REMOVAL PREVENT' correctly, as a result, the host does not send
>> subsequent cmd 'MEDIUM REMOVAL ALLOW'/'MEDIUM REMOVAL PREVENT'
>> before/after sleep, which leads to a enumeration failure after system
>> resume.
>> I wonder, without changing the behavior of the device, is there's a
>> better way to solve this? -- Modifying the scsi core should not be a
>> good idea though :(
>
> The above is not clear to me. My understanding is that "MEDIUM REMOVAL
> PREVENT" is a sense code instead of a SCSI command?
>
>> Thanks for your kindly notice. I looked around in the latest linux
>> mainline repo, but could not find this code. Where can I get this 2002
>> version of scsi_lib.c? Thank you.
>
> Please take a look at
> https://stackoverflow.com/questions/3264283/linux-kernel-historical-git-repository-with-full-history.
> That web page has instructions for how to configure a git repository
> such that history goes back before the time when Linus started using git.
>
> Bart.
>
Dear Bart,
Thank you. I'll try to figure it out and sync to you later.
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] pinctrl: sunxi: Fix name for A100 R_PIO
2022-08-19 2:45 20% [PATCH] pinctrl: sunxi: Fix name for A100 R_PIO Michael Wu
2022-08-23 4:09 0% ` Samuel Holland
@ 2022-08-26 8:37 6% ` Linus Walleij
1 sibling, 0 replies; 200+ results
From: Linus Walleij @ 2022-08-26 8:37 UTC (permalink / raw)
To: Michael Wu
Cc: wens, jernej.skrabec, samuel, mripard, linux-gpio,
linux-arm-kernel, linux-sunxi, linux-kernel
On Fri, Aug 19, 2022 at 4:45 AM Michael Wu <michael@allwinnertech.com> wrote:
> The name of A100 R_PIO driver should be sun50i-a100-r-pinctrl,
> not sun50iw10p1-r-pinctrl.
>
> Fixes: 473436e7647d6 ("pinctrl: sunxi: add support for the Allwinner A100 pin controller")
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
Patch applied for fixes!
Yours,
Linus Walleij
^ permalink raw reply [relevance 6%]
* [PATCH v5 3/6] arm64: dts: allwinner: a100: Add device node for DMA controller
2022-08-26 5:09 5% [PATCH v5 0/6] leds: Allwinner A100 LED controller support Samuel Holland
@ 2022-08-26 5:09 7% ` Samuel Holland
0 siblings, 0 replies; 200+ results
From: Samuel Holland @ 2022-08-26 5:09 UTC (permalink / raw)
To: Pavel Machek, Chen-Yu Tsai, Jernej Skrabec, linux-leds
Cc: linux-kernel, linux-arm-kernel, linux-sunxi, linux-riscv,
Krzysztof Kozlowski, devicetree, Rob Herring, Samuel Holland,
Yangtao Li
From: Yangtao Li <frank@allwinnertech.com>
The A100 SoC has a DMA controller that supports 8 DMA channels
to and from various peripherals.
Add a device node for it.
Signed-off-by: Yangtao Li <frank@allwinnertech.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
Changes in v5:
- New patch for v5, needed since the LEDC binding requires DMA
- From previous submission: fixed off-by-one in dma-requests property
arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
index 548539c93ab0..5453a3bb7d81 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
@@ -101,6 +101,18 @@ ccu: clock@3001000 {
#reset-cells = <1>;
};
+ dma: dma-controller@3002000 {
+ compatible = "allwinner,sun50i-a100-dma";
+ reg = <0x03002000 0x1000>;
+ interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
+ clock-names = "bus", "mbus";
+ resets = <&ccu RST_BUS_DMA>;
+ dma-channels = <8>;
+ dma-requests = <52>;
+ #dma-cells = <1>;
+ };
+
gic: interrupt-controller@3021000 {
compatible = "arm,gic-400";
reg = <0x03021000 0x1000>, <0x03022000 0x2000>,
--
2.35.1
^ permalink raw reply related [relevance 7%]
* [PATCH v5 0/6] leds: Allwinner A100 LED controller support
@ 2022-08-26 5:09 5% Samuel Holland
2022-08-26 5:09 7% ` [PATCH v5 3/6] arm64: dts: allwinner: a100: Add device node for DMA controller Samuel Holland
0 siblings, 1 reply; 200+ results
From: Samuel Holland @ 2022-08-26 5:09 UTC (permalink / raw)
To: Pavel Machek, Chen-Yu Tsai, Jernej Skrabec, linux-leds
Cc: linux-kernel, linux-arm-kernel, linux-sunxi, linux-riscv,
Krzysztof Kozlowski, devicetree, Rob Herring, Samuel Holland
This series adds bindings and a driver for the RGB LED controller found
in some Allwinner SoCs, starting with A100. The hardware in the R329 and
D1 SoCs appears to be identical.
Patch 3 is included because the LED controller binding requires the DMA
properties. That patch was sent previously[1], but never got merged.
Patches 5-6 depend on the D1 devicetree series[2], but the rest of this
series can be merged without them.
This driver was tested on the D1 Nezha board.
[1]: https://lore.kernel.org/linux-arm-kernel/20201110040553.1381-7-frank@allwinnertech.com/
[2]: https://lore.kernel.org/linux-riscv/20220815050815.22340-1-samuel@sholland.org/
Changes in v5:
- A100 contains the original implementation, so use that as the base
compatible string, and rename the binding to match
- Add "unevaluatedProperties: false" to the child multi-led binding
- Rename the driver R329 -> A100, since that is the actual original
implementation
Changes in v4:
- Use "default" instead of "maxItems" for timing properties
- Depend on LEDS_CLASS_MULTICOLOR
Changes in v3:
- Removed quotes from enumeration values
- Added vendor prefix to timing/format properties
- Renamed "format" property to "pixel-format" for clarity
- Dropped "vled-supply" as it is unrelated to the controller hardware
- Added vendor prefix to timing/format properties
- Renamed "format" property to "pixel-format" for clarity
- Dropped "vled-supply" as it is unrelated to the controller hardware
- Changed "writesl" to "iowrite32_rep" so the driver builds on hppa
Changes in v2:
- Fixed typo leading to duplicate t1h-ns property
- Removed "items" layer in definition of dmas/dma-names
- Replaced uint32 type reference with maxItems in timing properties
- Renamed from sunxi-ledc to sun50i-r329-ledc
- Added missing "static" to functions/globals as reported by 0day bot
Samuel Holland (5):
dt-bindings: leds: Add Allwinner A100 LED controller
leds: sun50i-a100: New driver for the A100 LED controller
arm64: dts: allwinner: a100: Add LED controller node
riscv: dts: allwinner: d1: Add LED controller node
riscv: dts: allwinner: d1: Add RGB LEDs to boards
Yangtao Li (1):
arm64: dts: allwinner: a100: Add device node for DMA controller
.../leds/allwinner,sun50i-a100-ledc.yaml | 139 +++++
.../arm64/boot/dts/allwinner/sun50i-a100.dtsi | 26 +
.../allwinner/sun20i-d1-lichee-rv-dock.dts | 12 +
.../boot/dts/allwinner/sun20i-d1-nezha.dts | 13 +
arch/riscv/boot/dts/allwinner/sun20i-d1.dtsi | 21 +
drivers/leds/Kconfig | 9 +
drivers/leds/Makefile | 1 +
drivers/leds/leds-sun50i-a100.c | 554 ++++++++++++++++++
8 files changed, 775 insertions(+)
create mode 100644 Documentation/devicetree/bindings/leds/allwinner,sun50i-a100-ledc.yaml
create mode 100644 drivers/leds/leds-sun50i-a100.c
--
2.35.1
^ permalink raw reply [relevance 5%]
* Re: [PATCH] f2fs: increase the limit for reserve_root
@ 2022-08-24 2:26 6% ` Jaegeuk Kim
0 siblings, 0 replies; 200+ results
From: Jaegeuk Kim @ 2022-08-24 2:26 UTC (permalink / raw)
To: linux-kernel, linux-f2fs-devel
On 08/23, Jaegeuk Kim wrote:
> This patch increases the threshold that limits the reserved root space from 0.2%
> to 12.5% by using simple shift operation.
>
> Typically Android sets 128MB, but if the storage capacity is 32GB, 0.2% which is
> around 64MB becomes too small. Let's relax it.
>
Added:
Reported-by: Aran Dalton <arda@allwinnertech.com>
Thanks,
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> fs/f2fs/super.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 09972b709cdd..d1b4de5b4083 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -301,10 +301,10 @@ static void f2fs_destroy_casefold_cache(void) { }
>
> static inline void limit_reserve_root(struct f2fs_sb_info *sbi)
> {
> - block_t limit = min((sbi->user_block_count << 1) / 1000,
> + block_t limit = min((sbi->user_block_count >> 3),
> sbi->user_block_count - sbi->reserved_blocks);
>
> - /* limit is 0.2% */
> + /* limit is 12.5% */
> if (test_opt(sbi, RESERVE_ROOT) &&
> F2FS_OPTION(sbi).root_reserved_blocks > limit) {
> F2FS_OPTION(sbi).root_reserved_blocks = limit;
> --
> 2.37.1.595.g718a3a8f04-goog
^ permalink raw reply [relevance 6%]
* Re: [PATCH] scsi: core: Fix block I/O error of USB card reader during resume
2022-08-17 13:52 0% ` Bart Van Assche
@ 2022-08-23 10:16 14% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-08-23 10:16 UTC (permalink / raw)
To: Bart Van Assche, jejb, martin.petersen; +Cc: linux-scsi, linux-kernel
On 8/17/2022 9:52 PM, Bart Van Assche wrote:
> On 8/17/22 01:34, Michael Wu wrote:
>> When accessing storage device via an USB card reader, a block I/O error
>> occurs during resume:
>>
>> PM: suspend exit
>> sd 0: 0:0:0: [sda] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte
>> =0x08
>> sd 0: 0:0:0: [sda] tag#0 Sense Key : 0x6 [current]
>> sd 0: 0:0:0: [sda] tag#0 ASC=0x28 ASCQ=0x0
>> sd 0: 0:0:0: [sda] tag#0 CDB: opcode=0x28 28 00 00 17 ce e1 00 00 f0 00
>> blk_update_request: I/O error, dev sda, sector 1560289 op 0x0:(READ)
>> flags
>> 0x84700 phys_seg 19 prio class 0
>> sd 0: 0:0:0: [sda] tag#0 device offline or changed
>>
>> Fix it by changing the action in scsi_io_completion_action() from
>> ACTION_FAIL to ACTION_RETRY by adding the condition `cmd->device->
>> lockable`.
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/scsi/scsi_lib.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
>> index 4dbd29ab1dcc..4bc480721947 100644
>> --- a/drivers/scsi/scsi_lib.c
>> +++ b/drivers/scsi/scsi_lib.c
>> @@ -704,7 +704,8 @@ static void scsi_io_completion_action(struct
>> scsi_cmnd *cmd, int result)
>> } else if (sense_valid && sense_current) {
>> switch (sshdr.sense_key) {
>> case UNIT_ATTENTION:
>> - if (cmd->device->removable) {
>> + if (cmd->device->removable &&
>> + cmd->device->lockable) {
>> /* Detected disc change. Set a bit
>> * and quietly refuse further access.
>> */
>
> To me the above doesn't look like a good way to address this. I don't
> see why a device being lockable should control whether or not a unit
> attention results in a retry? Shouldn't the decision taken by
> scsi_io_completion_action() depend on the ASC and ASCQ codes rather than
> on whether a device is removable and/or lockable?
>
Dear Bart,
Yes... My patch did seem suspicious. Here's the scene about the block
I/O error: Some card reader does not respond the command 'MEDIUM REMOVAL
PREVENT' correctly, as a result, the host does not send subsequent cmd
'MEDIUM REMOVAL ALLOW'/'MEDIUM REMOVAL PREVENT' before/after sleep,
which leads to a enumeration failure after system resume.
I wonder, without changing the behavior of the device, is there's a
better way to solve this? -- Modifying the scsi core should not be a
good idea though :(
> BTW, the code modified by the above patch is old. This is what I found
> in the 2002 version of scsi_lib.c:
>
> if ((SCpnt->sense_buffer[0] & 0x7f) == 0x70
> && (SCpnt->sense_buffer[2] & 0xf) == UNIT_ATTENTION) {
> if (SCpnt->device->removable) {
> /* detected disc change. set a bit and quietly refuse
> * further access.
> */
> SCpnt->device->changed = 1;
> SCpnt = scsi_end_request(SCpnt, 0, this_count);
> return;
> } else {
> /*
> * Must have been a power glitch, or a
> * bus reset. Could not have been a
> * media change, so we just retry the
> * request and see what happens.
> */
> scsi_queue_next_request(q, SCpnt);
> return;
> }
>
> Bart.
>
> Thanks,
Thanks for your kindly notice. I looked around in the latest linux
mainline repo, but could not find this code. Where can I get this 2002
version of scsi_lib.c? Thank you.
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* Re: [PATCH] pinctrl: sunxi: Fix name for A100 R_PIO
2022-08-19 2:45 20% [PATCH] pinctrl: sunxi: Fix name for A100 R_PIO Michael Wu
@ 2022-08-23 4:09 0% ` Samuel Holland
2022-08-26 8:37 6% ` Linus Walleij
1 sibling, 0 replies; 200+ results
From: Samuel Holland @ 2022-08-23 4:09 UTC (permalink / raw)
To: Michael Wu, linus.walleij, wens, jernej.skrabec, mripard
Cc: linux-gpio, linux-arm-kernel, linux-sunxi, linux-kernel
On 8/18/22 9:45 PM, Michael Wu wrote:
> The name of A100 R_PIO driver should be sun50i-a100-r-pinctrl,
> not sun50iw10p1-r-pinctrl.
>
> Fixes: 473436e7647d6 ("pinctrl: sunxi: add support for the Allwinner A100 pin controller")
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
Acked-by: Samuel Holland <samuel@sholland.org>
^ permalink raw reply [relevance 0%]
* [PATCH] pinctrl: sunxi: Fix name for A100 R_PIO
@ 2022-08-19 2:45 20% Michael Wu
2022-08-23 4:09 0% ` Samuel Holland
2022-08-26 8:37 6% ` Linus Walleij
0 siblings, 2 replies; 200+ results
From: Michael Wu @ 2022-08-19 2:45 UTC (permalink / raw)
To: linus.walleij, wens, jernej.skrabec, samuel, mripard
Cc: linux-gpio, linux-arm-kernel, linux-sunxi, linux-kernel
The name of A100 R_PIO driver should be sun50i-a100-r-pinctrl,
not sun50iw10p1-r-pinctrl.
Fixes: 473436e7647d6 ("pinctrl: sunxi: add support for the Allwinner A100 pin controller")
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c b/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
index afc1f5df7545..b82ad135bf2a 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
@@ -99,7 +99,7 @@ MODULE_DEVICE_TABLE(of, a100_r_pinctrl_match);
static struct platform_driver a100_r_pinctrl_driver = {
.probe = a100_r_pinctrl_probe,
.driver = {
- .name = "sun50iw10p1-r-pinctrl",
+ .name = "sun50i-a100-r-pinctrl",
.of_match_table = a100_r_pinctrl_match,
},
};
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH] scsi: core: Fix block I/O error of USB card reader during resume
2022-08-17 8:34 20% [PATCH] scsi: core: Fix block I/O error of USB card reader during resume Michael Wu
@ 2022-08-17 13:52 0% ` Bart Van Assche
2022-08-23 10:16 14% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Bart Van Assche @ 2022-08-17 13:52 UTC (permalink / raw)
To: Michael Wu, jejb, martin.petersen; +Cc: linux-scsi, linux-kernel
On 8/17/22 01:34, Michael Wu wrote:
> When accessing storage device via an USB card reader, a block I/O error
> occurs during resume:
>
> PM: suspend exit
> sd 0: 0:0:0: [sda] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte
> =0x08
> sd 0: 0:0:0: [sda] tag#0 Sense Key : 0x6 [current]
> sd 0: 0:0:0: [sda] tag#0 ASC=0x28 ASCQ=0x0
> sd 0: 0:0:0: [sda] tag#0 CDB: opcode=0x28 28 00 00 17 ce e1 00 00 f0 00
> blk_update_request: I/O error, dev sda, sector 1560289 op 0x0:(READ) flags
> 0x84700 phys_seg 19 prio class 0
> sd 0: 0:0:0: [sda] tag#0 device offline or changed
>
> Fix it by changing the action in scsi_io_completion_action() from
> ACTION_FAIL to ACTION_RETRY by adding the condition `cmd->device->
> lockable`.
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/scsi/scsi_lib.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index 4dbd29ab1dcc..4bc480721947 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -704,7 +704,8 @@ static void scsi_io_completion_action(struct scsi_cmnd *cmd, int result)
> } else if (sense_valid && sense_current) {
> switch (sshdr.sense_key) {
> case UNIT_ATTENTION:
> - if (cmd->device->removable) {
> + if (cmd->device->removable &&
> + cmd->device->lockable) {
> /* Detected disc change. Set a bit
> * and quietly refuse further access.
> */
To me the above doesn't look like a good way to address this. I don't
see why a device being lockable should control whether or not a unit
attention results in a retry? Shouldn't the decision taken by
scsi_io_completion_action() depend on the ASC and ASCQ codes rather than
on whether a device is removable and/or lockable?
BTW, the code modified by the above patch is old. This is what I found
in the 2002 version of scsi_lib.c:
if ((SCpnt->sense_buffer[0] & 0x7f) == 0x70
&& (SCpnt->sense_buffer[2] & 0xf) == UNIT_ATTENTION) {
if (SCpnt->device->removable) {
/* detected disc change. set a bit and quietly refuse
* further access.
*/
SCpnt->device->changed = 1;
SCpnt = scsi_end_request(SCpnt, 0, this_count);
return;
} else {
/*
* Must have been a power glitch, or a
* bus reset. Could not have been a
* media change, so we just retry the
* request and see what happens.
*/
scsi_queue_next_request(q, SCpnt);
return;
}
Bart.
Thanks,
Bart.
^ permalink raw reply [relevance 0%]
* [PATCH] scsi: core: Fix block I/O error of USB card reader during resume
@ 2022-08-17 8:34 20% Michael Wu
2022-08-17 13:52 0% ` Bart Van Assche
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-08-17 8:34 UTC (permalink / raw)
To: jejb, martin.petersen; +Cc: linux-scsi, linux-kernel
When accessing storage device via an USB card reader, a block I/O error
occurs during resume:
PM: suspend exit
sd 0: 0:0:0: [sda] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte
=0x08
sd 0: 0:0:0: [sda] tag#0 Sense Key : 0x6 [current]
sd 0: 0:0:0: [sda] tag#0 ASC=0x28 ASCQ=0x0
sd 0: 0:0:0: [sda] tag#0 CDB: opcode=0x28 28 00 00 17 ce e1 00 00 f0 00
blk_update_request: I/O error, dev sda, sector 1560289 op 0x0:(READ) flags
0x84700 phys_seg 19 prio class 0
sd 0: 0:0:0: [sda] tag#0 device offline or changed
Fix it by changing the action in scsi_io_completion_action() from
ACTION_FAIL to ACTION_RETRY by adding the condition `cmd->device->
lockable`.
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/scsi/scsi_lib.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 4dbd29ab1dcc..4bc480721947 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -704,7 +704,8 @@ static void scsi_io_completion_action(struct scsi_cmnd *cmd, int result)
} else if (sense_valid && sense_current) {
switch (sshdr.sense_key) {
case UNIT_ATTENTION:
- if (cmd->device->removable) {
+ if (cmd->device->removable &&
+ cmd->device->lockable) {
/* Detected disc change. Set a bit
* and quietly refuse further access.
*/
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH] ext4: fix error when itable blocks is greater than s_itb_per_group
@ 2022-08-06 4:02 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2022-08-06 4:02 UTC (permalink / raw)
To: Theodore Ts'o, Lukas Czerner
Cc: adilger.kernel, linux-ext4, linux-kernel, allwinner-opensource-support
On 8/4/2022 10:19 AM, Theodore Ts'o wrote:
> On Wed, Aug 03, 2022 at 09:18:59AM +0200, Lukas Czerner wrote:
>>
>> Hi Michael,
>>
>> mke2fs is making sure that we completely fill the inote table blocks.
>> This is a corrupted image and so AFAICT ext4 is doing the right thing
>> here. There does not seem to be a problem to fix, unless you can somehow
>> trick mke2fs to make a file system like this.
>
> Several years ago, android was shipping a bogus/busted
> reimeplementation of mke2fs, reportedly because a certain founder of
> Android (cough, Andy Rubin, cough) was alergic to the GPL. ("The
> problem with GPL in embedded systems [such as smartphones and tablets]
> is that it's viral...") This bogus reimplementation would create file
> systems where the number of inodes per block group was a multiple of 4
> instead of 8. But, it was under the BSD license, so it was all good! :-/
>
> This bogus reimplementation of mkfs would, 50% of the time, create
> busted file systems which couldn't be fixed, if they got corrupted, by
> e2fsck. This is because e2fsprogs' allocation bitmap code assumes
> that you can back the bitarray into a single contiguous memory block
> --- and this doesn't work if the number of inodes per block group is
> not a multiple of 8. If the file system got corrupted, the only
> recourse was to wipe the user partition and the user would lose any
> data that wasn't backed up to the cloud.
>
> This has since been fixed for quite some time, but if there is some
> low-end Android manufacturer is using an ancient version of AOSP, this
> could be happening even in 2022 --- but that doesn't mean we need to
> support such broken file systems. As far as I'm concerned the only
> way to make valid Android ext4 system images is the combination of
> mke2fs and e2fsdroid, which is what modern versions of AOSP do.
>
> - Ted
Dear Ted & Lukas,
Thanks for your clarification. I did several tests, turned outs Ted was
right. I'm clear now.
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* [PATCH] scripts/decodecode: add the ability to find code sequence
@ 2022-08-04 21:46 4% Can Sun
0 siblings, 0 replies; 200+ results
From: Can Sun @ 2022-08-04 21:46 UTC (permalink / raw)
Cc: Can Sun, Kevin Mitchell, Ivan Delalande, weidonghui,
Borislav Petkov, Andrew Morton, linux-kernel
It adds a tool to search code sequence from vmlinux. If additional
parameters (vmlinux and kernel build path) are provided to decodecode
command, it will try to search the code sequence in the binary, and
provide a code block surrounding the target.
An example:
$ ARCH=x86 PC=0xffffffff8141642f ./decodecode <vmlinux> <kernel build path> < test.oops
Code: 04 25 28 00 00 00 74 05 e8 54 85 c5 ff c9 c3 0f 1f 44 00 00 55 48 89 e5 e8 07 31 cb ff c7 05 27 3f ee 00 01 00 00 00 0f ae f8 <c6> 04 25 00 00 00 00 01 5
d c3 0f 1f 44 00 00 55 48 89 e5 fb 66 0f
All code
========
ffffffff81416405: 04 25 add $0x25,%al
...
Code starting with the faulting instruction
===========================================
ffffffff81416405: c6 04 25 00 00 00 00 movb $0x1,0x0
...
Finding code sequences from /home/cansun/src/vmlinux
Failed to find full Code segment, but did find a subsegment.
Surrounding code may have changed.
Warning: PC provided does not match calculated binary offset.
Found code string: 00 00 00 74 05 e8 54 85 c5 ff c9 c3 e8 __ __ __ __ 55 48 89 e5 e8 07 31 cb ff c7 05 27 3f ee 00 01 00 00 00 0f ae f8 c6 04 25 00 00 00 00 0
1 5d c3 e8 __ __ __ __ 55 48 89 e5
============================================================
ffffffff814163dd: 75 0c jne ffffffff814163eb <moom_callback+0x62>
pr_info("OOM request ignored. No task eligible\n");
ffffffff814163df: 48 c7 c7 45 e3 dc 81 mov $0xffffffff81dce345,%rdi
...
ffffffff81416425: 0f ae f8 sfence
*killer = 1;
ffffffff81416428:* c6 04 25 00 00 00 00 movb $0x1,0x0 <-- trapping instruction
ffffffff8141642f: 01
...
Signed-off-by: Can Sun <cansun@arista.com>
Cc: Kevin Mitchell <kevmitch@arista.com>
Cc: Ivan Delalande <colona@arista.com>
Cc: weidonghui <weidonghui@allwinnertech.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org
---
scripts/decodecode | 143 ++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 140 insertions(+), 3 deletions(-)
diff --git a/scripts/decodecode b/scripts/decodecode
index c711a196511c..2c848ded85cd 100755
--- a/scripts/decodecode
+++ b/scripts/decodecode
@@ -7,9 +7,11 @@
# e.g., to decode an i386 oops on an x86_64 system, use:
# AFLAGS=--32 decodecode < 386.oops
# PC=hex - the PC (program counter) the oops points to
+# To search code sequences from vmlinux:
+# ARCH=x86 decodecode [vmlinux] [kernel build path] < oops.file
cleanup() {
- rm -f $T $T.s $T.o $T.oo $T.aa $T.dis
+ rm -f $T $T.s $T.o $T.oo $T.aa $T.ad $T.dis
exit 1
}
@@ -51,8 +53,20 @@ if [ -z "$code" ]; then
fi
echo $code
+
+# Backup OBJDUMPFLAGS to dump vmlinux later
+objdumpflagsbackup=$OBJDUMPFLAGS
+
+# Encode Code: to \xff\xff format to search in vmlinux
+rawcode=`echo $code | sed -e 's/.*Code://; s/\s//g'`
+
code=`echo $code | sed -e 's/.*Code: //'`
+# Get offset of faulting instruction
+pcoffset=${rawcode%%<*}
+pcoffset=$(( ${#pcoffset} / 2 ))
+rawcode=`echo $rawcode | sed -e 's/[<>()]//g; s/.\{2\}/\\\x&/g'`
+
width=`expr index "$code" ' '`
width=$((($width-1)/2))
case $width in
@@ -62,10 +76,11 @@ case $width in
esac
if [ -z "$ARCH" ]; then
- case `uname -m` in
+ case `uname -m` in
aarch64*) ARCH=arm64 ;;
arm*) ARCH=arm ;;
- esac
+ x86*) ARCH=x86 ;;
+ esac
fi
# Params: (tmp_file, pc_sub)
@@ -144,4 +159,126 @@ faultline=`echo "$faultline" | sed -e 's/\[/\\\[/g; s/\]/\\\]/g'`
cat $T.oo | sed -e "${faultlinenum}s/^\([^:]*:\)\(.*\)/\1\*\2\t\t<-- trapping instruction/"
echo
cat $T.aa
+
+# If a vmlinux binary is provided, try to search code sequences from it
+# It is an x86-specific tool.
+if [ "$ARCH" = "x86" ] && ! [ -z "$1" ] && [ -f "$1" ]; then
+ if [ -z "$2" ] || ! [ -d "$2" ]; then
+ echo
+ echo "Usage:"
+ echo " $0 [vmlinux] [kernel build path]"
+ echo " To find code sequences from vmlinux"
+ exit 1
+ fi
+
+ echo > $T.ad
+ echo "Finding code sequences from $1" >> $T.ad
+ vmlinux=$1
+ kernelpath=`readlink -f $2`
+ kernelpathdepth=`echo $kernelpath | grep -o '/' | wc -l`
+ minmatchlen=$(( 10 * 4 ))
+ partialmatch=0
+ removefromstart=1
+else
+ exit
+fi
+
+# __fentry__ (e8 + 4 bytes) is patched by nop ( 0f 1f 44 + 2 bytes ) at runtime
+restoredcode="$(echo $rawcode | \
+ sed -e 's/\\x0f\\x1f\\x44.\{8\}/\\xe8\.\{4\}/g')"
+addressresult=`LANG=C grep -boP --binary --text $restoredcode $vmlinux | \
+ LANG=C sed 's/:.*$//'`
+
+# Try to find binary sequence, while reducing the length of the pattern
+while [ -z "$addressresult" ] && [ "${#restoredcode}" -gt "$minmatchlen" ]; do
+ partialmatch=1
+ if [ "$removefromstart" -eq 1 ]; then
+ restoredcode=${restoredcode#????}
+ if [ "$pcoffset" -gt 0 ]; then
+ pcoffset=$(( pcoffset - 1 ))
+ fi
+ else
+ restoredcode=${restoredcode%????}
+ fi
+ removefromstart=$((1-removefromstart))
+ addressresult=`LANG=C grep -boP --binary --text $restoredcode $vmlinux | \
+ LANG=C sed 's/:.*$//' | tr '\n' ' '`
+done
+
+if [ -z "$addressresult" ]; then
+ cat $T.ad
+ echo "No matching code sequences found."
+ echo "================================="
+
+ exit
+fi
+
+minoffset=
+maxoffset=
+regex=
+trappingregex=
+# 0x200000 to cancel the offset in the vmlinux file
+# 0xffffffff81000000 to add the offset into memory of the kernel
+offsetadjust=`echo "ibase=16;FFFFFFFF81000000 - 200000" | bc`
+for address in $addressresult; do
+ offset=$(( address + pcoffset ))
+ if [ -z "$minoffset" ]; then
+ minoffset=$offset
+ maxoffset=$offset
+ else
+ if [ "$minoffset" -gt "$offset" ]; then
+ minoffset=$offset
+ fi
+ if [ "$maxoffset" -lt "$offset" ]; then
+ maxoffset=$offset
+ fi
+ fi
+
+ offset=`echo "obase=16;$offset + $offsetadjust" | bc`
+ fulloffset=$offset
+
+ # Truncate LSB to match any nearby addresses
+ offset=`echo $offset | sed 's/.$//'`
+ if [ -z "$regex" ]; then
+ regex="($offset.:"
+ trappingregex="$fulloffset:"
+ else
+ regex="$regex|$offset.:"
+ trappingregex="$trappingregex|$fulloffset:"
+ fi
+done
+
+regex="$regex)"
+minoffset=`echo "obase=16;$minoffset + $offsetadjust - 4096" | bc`
+maxoffset=`echo "obase=16;$maxoffset + $offsetadjust + 4096" | bc`
+display=
+if [ "$pcoffset" -eq -1 ]; then
+ # No current instruction found, so display the objdump from the beginning
+ # of the code block
+ display='-A 60'
+else
+ # Display around the current instruction
+ display='-C 30'
+fi
+
+OBJDUMPFLAGS="$objdumpflagsbackup -dS --start-address=0x$minoffset --stop-address=0x$maxoffset \
+ --prefix=$kernelpath --prefix-strip=$kernelpathdepth $vmlinux"
+if [ "$partialmatch" -eq 1 ]; then
+ echo "Failed to find full Code segment, but did find a subsegment." >> $T.ad
+ echo "Surrounding code may have changed." >> $T.ad
+fi
+
+if [ "$PC" ]; then
+ ( echo $PC | grep -Eqi $regex ) || echo "Warning: PC provided does not match \
+calculated binary offset." >> $T.ad
+fi
+
+restoredcode=`echo $restoredcode | sed 's/\\\\\x/ /g; s/.{4}/ __ __ __ __/g'`
+echo "Found code string: $restoredcode" >> $T.ad
+echo "============================================================" >> $T.ad
+
+${CROSS_COMPILE}objdump $OBJDUMPFLAGS | grep -Ei $display $regex >> $T.ad
+
+cat $T.ad | sed -e "s/^\(${trappingregex}\)\(.*\)/\1\*\2\t\t<-- trapping instruction/gI"
+
cleanup
--
2.32.1 (Apple Git-133)
^ permalink raw reply related [relevance 4%]
* Re: [PATCH] ext4: fix error when itable blocks is greater than s_itb_per_group
2022-08-02 2:10 20% [PATCH] ext4: fix error when itable blocks is greater than s_itb_per_group Michael Wu
@ 2022-08-03 7:18 0% ` Lukas Czerner
0 siblings, 1 reply; 200+ results
From: Lukas Czerner @ 2022-08-03 7:18 UTC (permalink / raw)
To: Michael Wu
Cc: tytso, adilger.kernel, linux-ext4, linux-kernel,
allwinner-opensource-support
On Tue, Aug 02, 2022 at 10:10:29AM +0800, Michael Wu wrote:
> The following error occurs when mounting the ext4 image made by image
> making tool:
> "ext4_init_inode_table:1301:comm ext4lazyinit:Something is wrong with group
> 0: used itable blocks: 491; itable unused count: 0."
>
> Currently all the inodes in block group0 and ext4 image is divided by
> s_inodes_per_group. That leads to a hazard: we can't ensure all
> s_inodes_per_group are divisible by s_inodes_per_block. For example, when
> the s_inodes_per_group (equals to 7851) is divided by s_inodes_per_block
> (which is 16), because 7851 is undivisible by 16, we get the wrong result
> 490, while 491 is expected.
>
> So, we suggest that s_itb_per_group should equal to
> DIV_ROUND_UP(s_inodes_per_group, s_inodes_per_block) instead of directly
> getting the result from s_inodes_per_group/s_inodes_per_block.
Hi Michael,
mke2fs is making sure that we completely fill the inote table blocks.
This is a corrupted image and so AFAICT ext4 is doing the right thing
here. There does not seem to be a problem to fix, unless you can somehow
trick mke2fs to make a file system like this.
-Lukas
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> fs/ext4/super.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index 845f2f8aee5f..76cbd638ea10 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -4796,8 +4796,8 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
> sbi->s_inodes_per_group);
> goto failed_mount;
> }
> - sbi->s_itb_per_group = sbi->s_inodes_per_group /
> - sbi->s_inodes_per_block;
> + sbi->s_itb_per_group = DIV_ROUND_UP(sbi->s_inodes_per_group,
> + sbi->s_inodes_per_block);
> sbi->s_desc_per_block = blocksize / EXT4_DESC_SIZE(sb);
> sbi->s_sbh = bh;
> sbi->s_mount_state = le16_to_cpu(es->s_state) & ~EXT4_FC_REPLAY;
> --
> 2.29.0
>
^ permalink raw reply [relevance 0%]
* [PATCH] ext4: fix error when itable blocks is greater than s_itb_per_group
@ 2022-08-02 2:10 20% Michael Wu
2022-08-03 7:18 0% ` Lukas Czerner
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-08-02 2:10 UTC (permalink / raw)
To: tytso, adilger.kernel
Cc: linux-ext4, linux-kernel, allwinner-opensource-support
The following error occurs when mounting the ext4 image made by image
making tool:
"ext4_init_inode_table:1301:comm ext4lazyinit:Something is wrong with group
0: used itable blocks: 491; itable unused count: 0."
Currently all the inodes in block group0 and ext4 image is divided by
s_inodes_per_group. That leads to a hazard: we can't ensure all
s_inodes_per_group are divisible by s_inodes_per_block. For example, when
the s_inodes_per_group (equals to 7851) is divided by s_inodes_per_block
(which is 16), because 7851 is undivisible by 16, we get the wrong result
490, while 491 is expected.
So, we suggest that s_itb_per_group should equal to
DIV_ROUND_UP(s_inodes_per_group, s_inodes_per_block) instead of directly
getting the result from s_inodes_per_group/s_inodes_per_block.
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
fs/ext4/super.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 845f2f8aee5f..76cbd638ea10 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -4796,8 +4796,8 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
sbi->s_inodes_per_group);
goto failed_mount;
}
- sbi->s_itb_per_group = sbi->s_inodes_per_group /
- sbi->s_inodes_per_block;
+ sbi->s_itb_per_group = DIV_ROUND_UP(sbi->s_inodes_per_group,
+ sbi->s_inodes_per_block);
sbi->s_desc_per_block = blocksize / EXT4_DESC_SIZE(sb);
sbi->s_sbh = bh;
sbi->s_mount_state = le16_to_cpu(es->s_state) & ~EXT4_FC_REPLAY;
--
2.29.0
^ permalink raw reply related [relevance 20%]
* [PATCH 1/2] clocksource: sun4i: Fix the bug that tick_resume stucks
@ 2022-07-25 8:35 16% Victor Hassan
2022-07-25 8:35 20% ` [PATCH 2/2] clocksource: sun4i: add definition of clear interrupt Victor Hassan
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2022-07-25 8:35 UTC (permalink / raw)
To: daniel.lezcano, tglx, wens, jernej.skrabec, samuel
Cc: linux-kernel, linux-arm-kernel, linux-sunxi,
allwinner-opensource-support
Currently syscore_resume() will stuck on tick_resume().
Fix this by changing `.tick_resume` from
sun4i_clkevt_shutdown() to a new function sun4i_tick_resume().
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/clocksource/timer-sun4i.c | 131 ++++++++++++++++++++++--------
1 file changed, 96 insertions(+), 35 deletions(-)
diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
index bb6ea6c19829..afc26de963af 100644
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -38,6 +38,19 @@
#define TIMER_SYNC_TICKS 3
+/* Registers which needs to be saved and restored before and after sleeping */
+static u32 sun4i_timer_regs_offset[] = {
+ TIMER_IRQ_EN_REG,
+ TIMER_CTL_REG(0),
+ TIMER_INTVAL_REG(0),
+ TIMER_CNTVAL_REG(0),
+ TIMER_CTL_REG(1),
+ TIMER_INTVAL_REG(1),
+ TIMER_CNTVAL_REG(1),
+};
+
+static void __iomem *sun4i_timer_sched_base __read_mostly;
+
/*
* When we disable a timer, we need to wait at least for 2 cycles of
* the timer source clock. We will use for that the clocksource timer
@@ -79,10 +92,41 @@ static void sun4i_clkevt_time_start(void __iomem *base, u8 timer,
base + TIMER_CTL_REG(timer));
}
+static inline void sun4i_timer_save_regs(struct timer_of *to)
+{
+ void __iomem *base = timer_of_base(to);
+ int i;
+ u32 *regs_backup = (u32 *)to->private_data;
+
+ for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
+ regs_backup[i] = readl(base + sun4i_timer_regs_offset[i]);
+}
+
+static inline void sun4i_timer_restore_regs(struct timer_of *to)
+{
+ void __iomem *base = timer_of_base(to);
+ int i;
+ u32 *regs_backup = (u32 *)to->private_data;
+
+ for (i = 0; i < ARRAY_SIZE(sun4i_timer_regs_offset); i++)
+ writel(regs_backup[i], base + sun4i_timer_regs_offset[i]);
+}
+
static int sun4i_clkevt_shutdown(struct clock_event_device *evt)
{
struct timer_of *to = to_timer_of(evt);
+ sun4i_timer_save_regs(to);
+ sun4i_clkevt_time_stop(timer_of_base(to), 0);
+
+ return 0;
+}
+
+static int sun4i_tick_resume(struct clock_event_device *evt)
+{
+ struct timer_of *to = to_timer_of(evt);
+
+ sun4i_timer_restore_regs(to);
sun4i_clkevt_time_stop(timer_of_base(to), 0);
return 0;
@@ -137,45 +181,54 @@ static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
-static struct timer_of to = {
- .flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE,
-
- .clkevt = {
- .name = "sun4i_tick",
- .rating = 350,
- .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
- .set_state_shutdown = sun4i_clkevt_shutdown,
- .set_state_periodic = sun4i_clkevt_set_periodic,
- .set_state_oneshot = sun4i_clkevt_set_oneshot,
- .tick_resume = sun4i_clkevt_shutdown,
- .set_next_event = sun4i_clkevt_next_event,
- .cpumask = cpu_possible_mask,
- },
-
- .of_irq = {
- .handler = sun4i_timer_interrupt,
- .flags = IRQF_TIMER | IRQF_IRQPOLL,
- },
-};
+static void __init sun4i_clockevent_init(struct timer_of *to)
+{
+ to->clkevt.name = "sun4i_tick";
+ to->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
+ to->clkevt.set_state_shutdown = sun4i_clkevt_shutdown;
+ to->clkevt.set_state_periodic = sun4i_clkevt_set_periodic;
+ to->clkevt.set_state_oneshot = sun4i_clkevt_set_oneshot;
+ to->clkevt.tick_resume = sun4i_tick_resume;
+ to->clkevt.set_next_event = sun4i_clkevt_next_event;
+ to->clkevt.cpumask = cpu_possible_mask;
+ to->of_irq.flags = IRQF_TIMER | IRQF_IRQPOLL;
+
+ sun4i_timer_sched_base = timer_of_base(to) + TIMER_CNTVAL_REG(1);
+}
static u64 notrace sun4i_timer_sched_read(void)
{
- return ~readl(timer_of_base(&to) + TIMER_CNTVAL_REG(1));
+ return (u64)~readl(sun4i_timer_sched_base);
}
static int __init sun4i_timer_init(struct device_node *node)
{
+ struct timer_of *to;
int ret;
u32 val;
- ret = timer_of_init(node, &to);
+ to = kzalloc(sizeof(*to), GFP_KERNEL);
+ if (!to)
+ return -ENOMEM;
+
+ to->flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE;
+ to->of_irq.handler = sun4i_timer_interrupt;
+ ret = timer_of_init(node, to);
if (ret)
- return ret;
+ goto err;
- writel(~0, timer_of_base(&to) + TIMER_INTVAL_REG(1));
+ sun4i_clockevent_init(to);
+
+ to->private_data = kcalloc(ARRAY_SIZE(sun4i_timer_regs_offset), sizeof(u32), GFP_KERNEL);
+ if (!to->private_data) {
+ ret = -ENOMEM;
+ goto err1;
+ }
+
+ writel(~0, timer_of_base(to) + TIMER_INTVAL_REG(1));
writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD |
TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
- timer_of_base(&to) + TIMER_CTL_REG(1));
+ timer_of_base(to) + TIMER_CTL_REG(1));
/*
* sched_clock_register does not have priorities, and on sun6i and
@@ -186,32 +239,40 @@ static int __init sun4i_timer_init(struct device_node *node)
of_machine_is_compatible("allwinner,sun5i-a10s") ||
of_machine_is_compatible("allwinner,suniv-f1c100s"))
sched_clock_register(sun4i_timer_sched_read, 32,
- timer_of_rate(&to));
+ timer_of_rate(to));
- ret = clocksource_mmio_init(timer_of_base(&to) + TIMER_CNTVAL_REG(1),
- node->name, timer_of_rate(&to), 350, 32,
+ ret = clocksource_mmio_init(timer_of_base(to) + TIMER_CNTVAL_REG(1),
+ node->name, timer_of_rate(to), 350, 32,
clocksource_mmio_readl_down);
if (ret) {
pr_err("Failed to register clocksource\n");
- return ret;
+ goto err2;
}
writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
- timer_of_base(&to) + TIMER_CTL_REG(0));
+ timer_of_base(to) + TIMER_CTL_REG(0));
/* Make sure timer is stopped before playing with interrupts */
- sun4i_clkevt_time_stop(timer_of_base(&to), 0);
+ sun4i_clkevt_time_stop(timer_of_base(to), 0);
/* clear timer0 interrupt */
- sun4i_timer_clear_interrupt(timer_of_base(&to));
+ sun4i_timer_clear_interrupt(timer_of_base(to));
- clockevents_config_and_register(&to.clkevt, timer_of_rate(&to),
+ clockevents_config_and_register(&to->clkevt, timer_of_rate(to),
TIMER_SYNC_TICKS, 0xffffffff);
/* Enable timer0 interrupt */
- val = readl(timer_of_base(&to) + TIMER_IRQ_EN_REG);
- writel(val | TIMER_IRQ_EN(0), timer_of_base(&to) + TIMER_IRQ_EN_REG);
+ val = readl(timer_of_base(to) + TIMER_IRQ_EN_REG);
+ writel(val | TIMER_IRQ_EN(0), timer_of_base(to) + TIMER_IRQ_EN_REG);
+
+ return ret;
+err2:
+ kfree(to->private_data);
+err1:
+ timer_of_cleanup(to);
+err:
+ kfree(to);
return ret;
}
TIMER_OF_DECLARE(sun4i, "allwinner,sun4i-a10-timer",
--
2.29.0
^ permalink raw reply related [relevance 16%]
* [PATCH 2/2] clocksource: sun4i: add definition of clear interrupt
2022-07-25 8:35 16% [PATCH 1/2] clocksource: sun4i: Fix the bug that tick_resume stucks Victor Hassan
@ 2022-07-25 8:35 20% ` Victor Hassan
0 siblings, 0 replies; 200+ results
From: Victor Hassan @ 2022-07-25 8:35 UTC (permalink / raw)
To: daniel.lezcano, tglx, wens, jernej.skrabec, samuel
Cc: linux-kernel, linux-arm-kernel, linux-sunxi,
allwinner-opensource-support
To prevent misunderstanding, use TIMER_IRQ_CLEAR instead of TIMER_IRQ_EN
in function sun4i_timer_clear_interrupt.
Signed-off-by: Victor Hassan <victor@allwinnertech.com>
---
drivers/clocksource/timer-sun4i.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
index afc26de963af..dd74405a2666 100644
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -26,6 +26,7 @@
#define TIMER_IRQ_EN_REG 0x00
#define TIMER_IRQ_EN(val) BIT(val)
#define TIMER_IRQ_ST_REG 0x04
+#define TIMER_IRQ_CLEAR(val) BIT(val)
#define TIMER_CTL_REG(val) (0x10 * val + 0x10)
#define TIMER_CTL_ENABLE BIT(0)
#define TIMER_CTL_RELOAD BIT(1)
@@ -167,7 +168,7 @@ static int sun4i_clkevt_next_event(unsigned long evt,
static void sun4i_timer_clear_interrupt(void __iomem *base)
{
- writel(TIMER_IRQ_EN(0), base + TIMER_IRQ_ST_REG);
+ writel(TIMER_IRQ_CLEAR(0), base + TIMER_IRQ_ST_REG);
}
static irqreturn_t sun4i_timer_interrupt(int irq, void *dev_id)
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning
2022-07-09 1:49 6% [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning Randy Dunlap
2022-07-20 4:04 0% ` Guo Ren
@ 2022-07-20 9:01 0% ` Heiko Stübner
2022-09-13 12:00 0% ` Heiko Stuebner
2 siblings, 0 replies; 200+ results
From: Heiko Stübner @ 2022-07-20 9:01 UTC (permalink / raw)
To: linux-kernel, Randy Dunlap
Cc: Randy Dunlap, Wei Fu, Liu Shaohua, Guo Ren, Paul Walmsley,
Palmer Dabbelt, Albert Ou, linux-riscv
Am Samstag, 9. Juli 2022, 03:49:29 CEST schrieb Randy Dunlap:
> RISCV_ISA_SVPBMT selects RISCV_ALTERNATIVE which depends on !XIP_KERNEL.
> Therefore RISCV_ISA_SVPBMT should also depend on !XIP_KERNEL so
> quieten this kconfig warning:
>
> WARNING: unmet direct dependencies detected for RISCV_ALTERNATIVE
> Depends on [n]: !XIP_KERNEL [=y]
> Selected by [y]:
> - RISCV_ISA_SVPBMT [=y] && 64BIT [=y] && MMU [=y]
>
> Fixes: ff689fd21cb1 ("riscv: add RISC-V Svpbmt extension support")
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Cc: Wei Fu <wefu@redhat.com>
> Cc: Liu Shaohua <liush@allwinnertech.com>
> Cc: Guo Ren <guoren@kernel.org>
> Cc: Heiko Stuebner <heiko@sntech.de>
> Cc: Paul Walmsley <paul.walmsley@sifive.com>
> Cc: Palmer Dabbelt <palmer@dabbelt.com>
> Cc: Albert Ou <aou@eecs.berkeley.edu>
> Cc: linux-riscv@lists.infradead.org
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
^ permalink raw reply [relevance 0%]
* Re: [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning
2022-07-09 1:49 6% [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning Randy Dunlap
@ 2022-07-20 4:04 0% ` Guo Ren
2022-07-20 9:01 0% ` Heiko Stübner
2022-09-13 12:00 0% ` Heiko Stuebner
2 siblings, 0 replies; 200+ results
From: Guo Ren @ 2022-07-20 4:04 UTC (permalink / raw)
To: Randy Dunlap
Cc: Linux Kernel Mailing List, Wei Fu, Liu Shaohua, Heiko Stuebner,
Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-riscv
Reviewed-by: Guo Ren <guoren@kernel.org>
On Sat, Jul 9, 2022 at 9:49 AM Randy Dunlap <rdunlap@infradead.org> wrote:
>
> RISCV_ISA_SVPBMT selects RISCV_ALTERNATIVE which depends on !XIP_KERNEL.
> Therefore RISCV_ISA_SVPBMT should also depend on !XIP_KERNEL so
> quieten this kconfig warning:
>
> WARNING: unmet direct dependencies detected for RISCV_ALTERNATIVE
> Depends on [n]: !XIP_KERNEL [=y]
> Selected by [y]:
> - RISCV_ISA_SVPBMT [=y] && 64BIT [=y] && MMU [=y]
>
> Fixes: ff689fd21cb1 ("riscv: add RISC-V Svpbmt extension support")
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Cc: Wei Fu <wefu@redhat.com>
> Cc: Liu Shaohua <liush@allwinnertech.com>
> Cc: Guo Ren <guoren@kernel.org>
> Cc: Heiko Stuebner <heiko@sntech.de>
> Cc: Paul Walmsley <paul.walmsley@sifive.com>
> Cc: Palmer Dabbelt <palmer@dabbelt.com>
> Cc: Albert Ou <aou@eecs.berkeley.edu>
> Cc: linux-riscv@lists.infradead.org
> ---
> arch/riscv/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -362,6 +362,7 @@ config RISCV_ISA_C
> config RISCV_ISA_SVPBMT
> bool "SVPBMT extension support"
> depends on 64BIT && MMU
> + depends on !XIP_KERNEL
> select RISCV_ALTERNATIVE
> default y
> help
--
Best Regards
Guo Ren
^ permalink raw reply [relevance 0%]
* Re: [PATCH v2 6/6] pinctrl: sunxi: Add driver for Allwinner D1
2022-07-13 2:52 2% ` [PATCH v2 6/6] pinctrl: sunxi: Add driver for Allwinner D1 Samuel Holland
@ 2022-07-13 13:11 0% ` Andre Przywara
0 siblings, 0 replies; 200+ results
From: Andre Przywara @ 2022-07-13 13:11 UTC (permalink / raw)
To: Samuel Holland
Cc: Chen-Yu Tsai, Jernej Skrabec, Linus Walleij, Krzysztof Kozlowski,
Maxime Ripard, Rob Herring, devicetree, linux-arm-kernel,
linux-gpio, linux-kernel, linux-sunxi, Heiko Stuebner
On Tue, 12 Jul 2022 21:52:33 -0500
Samuel Holland <samuel@sholland.org> wrote:
Hi Samuel,
> This SoC contains a pinctrl with a new register layout. Use the variant
> parameter to set the right register offsets. This pinctrl also increases
> the number of functions per pin from 8 to 16, taking advantage of all 4
> bits in the mux config field (so far, only functions 0-8 and 14-15 are
> used). This increases the maximum possible number of functions.
Many thanks for the changes, that looks all good to me now.
Compared against the manual:
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Cheers,
Andre
>
> Reviewed-by: Heiko Stuebner <heiko@sntech.de>
> Tested-by: Heiko Stuebner <heiko@sntech.de>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
> ---
>
> Changes in v2:
> - Fix PE3 function "csi0" -> "ncsi0"
> - Fix comments for JTAG DI/DO pins
> - Include channel numbers in PWM functions
> - Drop the separate D1s variant, since D1s is a non-conflicting subset
> - Enable the driver for MACH_SUN8I to cover T113 (same die, but ARMv7)
>
> drivers/pinctrl/sunxi/Kconfig | 5 +
> drivers/pinctrl/sunxi/Makefile | 1 +
> drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c | 840 ++++++++++++++++++++++
> drivers/pinctrl/sunxi/pinctrl-sunxi.c | 16 +-
> drivers/pinctrl/sunxi/pinctrl-sunxi.h | 6 +
> 5 files changed, 863 insertions(+), 5 deletions(-)
> create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
>
> diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
> index 7a7bcdc198a3..a78fdbbdfc0c 100644
> --- a/drivers/pinctrl/sunxi/Kconfig
> +++ b/drivers/pinctrl/sunxi/Kconfig
> @@ -81,6 +81,11 @@ config PINCTRL_SUN9I_A80_R
> default MACH_SUN9I
> select PINCTRL_SUNXI
>
> +config PINCTRL_SUN20I_D1
> + bool "Support for the Allwinner D1 PIO"
> + default MACH_SUN8I || (RISCV && ARCH_SUNXI)
> + select PINCTRL_SUNXI
> +
> config PINCTRL_SUN50I_A64
> bool "Support for the Allwinner A64 PIO"
> default ARM64 && ARCH_SUNXI
> diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile
> index d3440c42b9d6..2ff5a55927ad 100644
> --- a/drivers/pinctrl/sunxi/Makefile
> +++ b/drivers/pinctrl/sunxi/Makefile
> @@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_SUN8I_A83T_R) += pinctrl-sun8i-a83t-r.o
> obj-$(CONFIG_PINCTRL_SUN8I_H3) += pinctrl-sun8i-h3.o
> obj-$(CONFIG_PINCTRL_SUN8I_H3_R) += pinctrl-sun8i-h3-r.o
> obj-$(CONFIG_PINCTRL_SUN8I_V3S) += pinctrl-sun8i-v3s.o
> +obj-$(CONFIG_PINCTRL_SUN20I_D1) += pinctrl-sun20i-d1.o
> obj-$(CONFIG_PINCTRL_SUN50I_H5) += pinctrl-sun50i-h5.o
> obj-$(CONFIG_PINCTRL_SUN50I_H6) += pinctrl-sun50i-h6.o
> obj-$(CONFIG_PINCTRL_SUN50I_H6_R) += pinctrl-sun50i-h6-r.o
> diff --git a/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
> new file mode 100644
> index 000000000000..40858b881298
> --- /dev/null
> +++ b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
> @@ -0,0 +1,840 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Allwinner D1 SoC pinctrl driver.
> + *
> + * Copyright (c) 2020 wuyan@allwinnertech.com
> + * Copyright (c) 2021-2022 Samuel Holland <samuel@sholland.org>
> + */
> +
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/of.h>
> +#include <linux/of_device.h>
> +#include <linux/pinctrl/pinctrl.h>
> +
> +#include "pinctrl-sunxi.h"
> +
> +static const struct sunxi_desc_pin d1_pins[] = {
> + /* PB */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "pwm3"),
> + SUNXI_FUNCTION(0x3, "ir"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x5, "spi1"), /* WP */
> + SUNXI_FUNCTION(0x6, "uart0"), /* TX */
> + SUNXI_FUNCTION(0x7, "uart2"), /* TX */
> + SUNXI_FUNCTION(0x8, "spdif"), /* OUT */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "pwm4"),
> + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT3 */
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN3 */
> + SUNXI_FUNCTION(0x6, "uart0"), /* RX */
> + SUNXI_FUNCTION(0x7, "uart2"), /* RX */
> + SUNXI_FUNCTION(0x8, "ir"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D0 */
> + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT2 */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN2 */
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D18 */
> + SUNXI_FUNCTION(0x7, "uart4"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D1 */
> + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT1 */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN0 */
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D19 */
> + SUNXI_FUNCTION(0x7, "uart4"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D8 */
> + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT0 */
> + SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */
> + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN1 */
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D20 */
> + SUNXI_FUNCTION(0x7, "uart5"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D9 */
> + SUNXI_FUNCTION(0x3, "i2s2"), /* BCLK */
> + SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */
> + SUNXI_FUNCTION(0x5, "pwm0"),
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D21 */
> + SUNXI_FUNCTION(0x7, "uart5"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D16 */
> + SUNXI_FUNCTION(0x3, "i2s2"), /* LRCK */
> + SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x5, "pwm1"),
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D22 */
> + SUNXI_FUNCTION(0x7, "uart3"), /* TX */
> + SUNXI_FUNCTION(0x8, "bist0"), /* BIST_RESULT0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D17 */
> + SUNXI_FUNCTION(0x3, "i2s2"), /* MCLK */
> + SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x5, "ir"), /* RX */
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D23 */
> + SUNXI_FUNCTION(0x7, "uart3"), /* RX */
> + SUNXI_FUNCTION(0x8, "bist1"), /* BIST_RESULT1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 7)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 8),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* DATA3 */
> + SUNXI_FUNCTION(0x3, "pwm5"),
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x5, "spi1"), /* HOLD */
> + SUNXI_FUNCTION(0x6, "uart0"), /* TX */
> + SUNXI_FUNCTION(0x7, "uart1"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 8)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 9),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* DATA2 */
> + SUNXI_FUNCTION(0x3, "pwm6"),
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x5, "spi1"), /* MISO */
> + SUNXI_FUNCTION(0x6, "uart0"), /* RX */
> + SUNXI_FUNCTION(0x7, "uart1"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 9)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 10),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* DATA1 */
> + SUNXI_FUNCTION(0x3, "pwm7"),
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x5, "spi1"), /* MOSI */
> + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT0 */
> + SUNXI_FUNCTION(0x7, "uart1"), /* RTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 10)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 11),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* DATA0 */
> + SUNXI_FUNCTION(0x3, "pwm2"),
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x5, "spi1"), /* CLK */
> + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT1 */
> + SUNXI_FUNCTION(0x7, "uart1"), /* CTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 11)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 12),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* CLK */
> + SUNXI_FUNCTION(0x3, "pwm0"),
> + SUNXI_FUNCTION(0x4, "spdif"), /* IN */
> + SUNXI_FUNCTION(0x5, "spi1"), /* CS0 */
> + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT2 */
> + SUNXI_FUNCTION(0x7, "ir"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 12)),
> + /* PC */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart2"), /* TX */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x4, "ledc"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart2"), /* RX */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* CLK */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* CLK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* CS0 */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* CMD */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* MOSI */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* D2 */
> + SUNXI_FUNCTION(0x4, "boot"), /* SEL0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* MISO */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* D1 */
> + SUNXI_FUNCTION(0x4, "boot"), /* SEL1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* WP */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* D0 */
> + SUNXI_FUNCTION(0x4, "uart3"), /* TX */
> + SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x6, "pll"), /* DBG-CLK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* HOLD */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* D3 */
> + SUNXI_FUNCTION(0x4, "uart3"), /* RX */
> + SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 7)),
> + /* PD */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V0P */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D0P */
> + SUNXI_FUNCTION(0x5, "i2c0"), /* SCK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V0N */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D0N */
> + SUNXI_FUNCTION(0x5, "uart2"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V1P */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D1P */
> + SUNXI_FUNCTION(0x5, "uart2"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V1N */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D1N */
> + SUNXI_FUNCTION(0x5, "uart2"), /* RTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V2P */
> + SUNXI_FUNCTION(0x4, "dsi"), /* CKP */
> + SUNXI_FUNCTION(0x5, "uart2"), /* CTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V2N */
> + SUNXI_FUNCTION(0x4, "dsi"), /* CKN */
> + SUNXI_FUNCTION(0x5, "uart5"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* CKP */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D2P */
> + SUNXI_FUNCTION(0x5, "uart5"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* CKN */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D2N */
> + SUNXI_FUNCTION(0x5, "uart4"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 7)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V3P */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D3P */
> + SUNXI_FUNCTION(0x5, "uart4"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 8)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 9),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V3N */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D3N */
> + SUNXI_FUNCTION(0x5, "pwm6"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 9)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D14 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V0P */
> + SUNXI_FUNCTION(0x4, "spi1"), /* CS0 */
> + SUNXI_FUNCTION(0x5, "uart3"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 10)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D15 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V0N */
> + SUNXI_FUNCTION(0x4, "spi1"), /* CLK */
> + SUNXI_FUNCTION(0x5, "uart3"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 11)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V1P */
> + SUNXI_FUNCTION(0x4, "spi1"), /* MOSI */
> + SUNXI_FUNCTION(0x5, "i2c0"), /* SDA */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 12)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V1N */
> + SUNXI_FUNCTION(0x4, "spi1"), /* MISO */
> + SUNXI_FUNCTION(0x5, "uart3"), /* RTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 13)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V2P */
> + SUNXI_FUNCTION(0x4, "spi1"), /* HOLD */
> + SUNXI_FUNCTION(0x5, "uart3"), /* CTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 14)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V2N */
> + SUNXI_FUNCTION(0x4, "spi1"), /* WP */
> + SUNXI_FUNCTION(0x5, "ir"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 15)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* CKP */
> + SUNXI_FUNCTION(0x4, "dmic"), /* DATA3 */
> + SUNXI_FUNCTION(0x5, "pwm0"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 16)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* CKN */
> + SUNXI_FUNCTION(0x4, "dmic"), /* DATA2 */
> + SUNXI_FUNCTION(0x5, "pwm1"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 17)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V3P */
> + SUNXI_FUNCTION(0x4, "dmic"), /* DATA1 */
> + SUNXI_FUNCTION(0x5, "pwm2"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 18)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* DE */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V3N */
> + SUNXI_FUNCTION(0x4, "dmic"), /* DATA0 */
> + SUNXI_FUNCTION(0x5, "pwm3"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 19)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x4, "dmic"), /* CLK */
> + SUNXI_FUNCTION(0x5, "pwm4"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 20)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x4, "uart1"), /* TX */
> + SUNXI_FUNCTION(0x5, "pwm5"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 21)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spdif"), /* OUT */
> + SUNXI_FUNCTION(0x3, "ir"), /* RX */
> + SUNXI_FUNCTION(0x4, "uart1"), /* RX */
> + SUNXI_FUNCTION(0x5, "pwm7"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 22)),
> + /* PE */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* HSYNC */
> + SUNXI_FUNCTION(0x3, "uart2"), /* RTS */
> + SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */
> + SUNXI_FUNCTION(0x5, "lcd0"), /* HSYNC */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXCTL/CRS_DV */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* VSYNC */
> + SUNXI_FUNCTION(0x3, "uart2"), /* CTS */
> + SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */
> + SUNXI_FUNCTION(0x5, "lcd0"), /* VSYNC */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXD0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* PCLK */
> + SUNXI_FUNCTION(0x3, "uart2"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
> + SUNXI_FUNCTION(0x6, "uart0"), /* TX */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXD1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* MCLK */
> + SUNXI_FUNCTION(0x3, "uart2"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
> + SUNXI_FUNCTION(0x6, "uart0"), /* RX */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXCK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D0 */
> + SUNXI_FUNCTION(0x3, "uart4"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
> + SUNXI_FUNCTION(0x6, "d_jtag"), /* MS */
> + SUNXI_FUNCTION(0x7, "r_jtag"), /* MS */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXD0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D1 */
> + SUNXI_FUNCTION(0x3, "uart4"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x5, "ledc"),
> + SUNXI_FUNCTION(0x6, "d_jtag"), /* DI */
> + SUNXI_FUNCTION(0x7, "r_jtag"), /* DI */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXD1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D2 */
> + SUNXI_FUNCTION(0x3, "uart5"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x5, "spdif"), /* IN */
> + SUNXI_FUNCTION(0x6, "d_jtag"), /* DO */
> + SUNXI_FUNCTION(0x7, "r_jtag"), /* DO */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXCTL/TXEN */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D3 */
> + SUNXI_FUNCTION(0x3, "uart5"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x5, "spdif"), /* OUT */
> + SUNXI_FUNCTION(0x6, "d_jtag"), /* CK */
> + SUNXI_FUNCTION(0x7, "r_jtag"), /* CK */
> + SUNXI_FUNCTION(0x8, "emac"), /* CK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 7)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D4 */
> + SUNXI_FUNCTION(0x3, "uart1"), /* RTS */
> + SUNXI_FUNCTION(0x4, "pwm2"),
> + SUNXI_FUNCTION(0x5, "uart3"), /* TX */
> + SUNXI_FUNCTION(0x6, "jtag"), /* MS */
> + SUNXI_FUNCTION(0x8, "emac"), /* MDC */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 8)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D5 */
> + SUNXI_FUNCTION(0x3, "uart1"), /* CTS */
> + SUNXI_FUNCTION(0x4, "pwm3"),
> + SUNXI_FUNCTION(0x5, "uart3"), /* RX */
> + SUNXI_FUNCTION(0x6, "jtag"), /* DI */
> + SUNXI_FUNCTION(0x8, "emac"), /* MDIO */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 9)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D6 */
> + SUNXI_FUNCTION(0x3, "uart1"), /* TX */
> + SUNXI_FUNCTION(0x4, "pwm4"),
> + SUNXI_FUNCTION(0x5, "ir"), /* RX */
> + SUNXI_FUNCTION(0x6, "jtag"), /* DO */
> + SUNXI_FUNCTION(0x8, "emac"), /* EPHY-25M */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 10)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D7 */
> + SUNXI_FUNCTION(0x3, "uart1"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT3 */
> + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN3 */
> + SUNXI_FUNCTION(0x6, "jtag"), /* CK */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXD2 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 11)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x3, "ncsi0"), /* FIELD */
> + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT2 */
> + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN2 */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXD3 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 12)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x3, "pwm5"),
> + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT0 */
> + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN1 */
> + SUNXI_FUNCTION(0x6, "dmic"), /* DATA3 */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXD2 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 13)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 14),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c1"), /* SCK */
> + SUNXI_FUNCTION(0x3, "d_jtag"), /* MS */
> + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT1 */
> + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN0 */
> + SUNXI_FUNCTION(0x6, "dmic"), /* DATA2 */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXD3 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 14)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 15),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c1"), /* SDA */
> + SUNXI_FUNCTION(0x3, "d_jtag"), /* DI */
> + SUNXI_FUNCTION(0x4, "pwm6"),
> + SUNXI_FUNCTION(0x5, "i2s0"), /* LRCK */
> + SUNXI_FUNCTION(0x6, "dmic"), /* DATA1 */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXCK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 15)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 16),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x3, "d_jtag"), /* DO */
> + SUNXI_FUNCTION(0x4, "pwm7"),
> + SUNXI_FUNCTION(0x5, "i2s0"), /* BCLK */
> + SUNXI_FUNCTION(0x6, "dmic"), /* DATA0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 16)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 17),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x3, "d_jtag"), /* CK */
> + SUNXI_FUNCTION(0x4, "ir"), /* TX */
> + SUNXI_FUNCTION(0x5, "i2s0"), /* MCLK */
> + SUNXI_FUNCTION(0x6, "dmic"), /* CLK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 17)),
> + /* PF */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */
> + SUNXI_FUNCTION(0x3, "jtag"), /* MS */
> + SUNXI_FUNCTION(0x4, "r_jtag"), /* MS */
> + SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT1 */
> + SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */
> + SUNXI_FUNCTION(0x3, "jtag"), /* DI */
> + SUNXI_FUNCTION(0x4, "r_jtag"), /* DI */
> + SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT0 */
> + SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */
> + SUNXI_FUNCTION(0x3, "uart0"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x5, "ledc"),
> + SUNXI_FUNCTION(0x6, "spdif"), /* IN */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */
> + SUNXI_FUNCTION(0x3, "jtag"), /* DO */
> + SUNXI_FUNCTION(0x4, "r_jtag"), /* DO */
> + SUNXI_FUNCTION(0x5, "i2s2"), /* BCLK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */
> + SUNXI_FUNCTION(0x3, "uart0"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x5, "pwm6"),
> + SUNXI_FUNCTION(0x6, "ir"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */
> + SUNXI_FUNCTION(0x3, "jtag"), /* CK */
> + SUNXI_FUNCTION(0x4, "r_jtag"), /* CK */
> + SUNXI_FUNCTION(0x5, "i2s2"), /* LRCK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x3, "spdif"), /* OUT */
> + SUNXI_FUNCTION(0x4, "ir"), /* RX */
> + SUNXI_FUNCTION(0x5, "i2s2"), /* MCLK */
> + SUNXI_FUNCTION(0x6, "pwm5"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 6)),
> + /* PG */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */
> + SUNXI_FUNCTION(0x3, "uart3"), /* TX */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXCTRL/CRS_DV */
> + SUNXI_FUNCTION(0x5, "pwm7"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */
> + SUNXI_FUNCTION(0x3, "uart3"), /* RX */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXD0 */
> + SUNXI_FUNCTION(0x5, "pwm6"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */
> + SUNXI_FUNCTION(0x3, "uart3"), /* RTS */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXD1 */
> + SUNXI_FUNCTION(0x5, "uart4"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */
> + SUNXI_FUNCTION(0x3, "uart3"), /* CTS */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXCK */
> + SUNXI_FUNCTION(0x5, "uart4"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */
> + SUNXI_FUNCTION(0x3, "uart5"), /* TX */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXD0 */
> + SUNXI_FUNCTION(0x5, "pwm5"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */
> + SUNXI_FUNCTION(0x3, "uart5"), /* RX */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXD1 */
> + SUNXI_FUNCTION(0x5, "pwm4"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart1"), /* TX */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXD2 */
> + SUNXI_FUNCTION(0x5, "pwm1"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart1"), /* RX */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXD3 */
> + SUNXI_FUNCTION(0x5, "spdif"), /* IN */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 7)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart1"), /* RTS */
> + SUNXI_FUNCTION(0x3, "i2c1"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXD2 */
> + SUNXI_FUNCTION(0x5, "uart3"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 8)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart1"), /* CTS */
> + SUNXI_FUNCTION(0x3, "i2c1"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXD3 */
> + SUNXI_FUNCTION(0x5, "uart3"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 9)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "pwm3"),
> + SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXCK */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
> + SUNXI_FUNCTION(0x6, "ir"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 10)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1"), /* MCLK */
> + SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* EPHY-25M */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
> + SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 11)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1"), /* LRCK */
> + SUNXI_FUNCTION(0x3, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXCTL/TXEN */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
> + SUNXI_FUNCTION(0x6, "pwm0"),
> + SUNXI_FUNCTION(0x7, "uart1"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 12)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1"), /* BCLK */
> + SUNXI_FUNCTION(0x3, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* CLKIN/RXER */
> + SUNXI_FUNCTION(0x5, "pwm2"),
> + SUNXI_FUNCTION(0x6, "ledc"),
> + SUNXI_FUNCTION(0x7, "uart1"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 13)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 14),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1_din"), /* DIN0 */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* MDC */
> + SUNXI_FUNCTION(0x5, "i2s1_dout"), /* DOUT1 */
> + SUNXI_FUNCTION(0x6, "spi0"), /* WP */
> + SUNXI_FUNCTION(0x7, "uart1"), /* RTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 14)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 15),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1_dout"), /* DOUT0 */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* MDIO */
> + SUNXI_FUNCTION(0x5, "i2s1_din"), /* DIN1 */
> + SUNXI_FUNCTION(0x6, "spi0"), /* HOLD */
> + SUNXI_FUNCTION(0x7, "uart1"), /* CTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 15)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 16),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ir"), /* RX */
> + SUNXI_FUNCTION(0x3, "tcon"), /* TRIG0 */
> + SUNXI_FUNCTION(0x4, "pwm5"),
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
> + SUNXI_FUNCTION(0x6, "spdif"), /* IN */
> + SUNXI_FUNCTION(0x7, "ledc"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 16)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 17),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart2"), /* TX */
> + SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x4, "pwm7"),
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
> + SUNXI_FUNCTION(0x6, "ir"), /* TX */
> + SUNXI_FUNCTION(0x7, "uart0"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 17)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 18),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart2"), /* RX */
> + SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x4, "pwm6"),
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
> + SUNXI_FUNCTION(0x6, "spdif"), /* OUT */
> + SUNXI_FUNCTION(0x7, "uart0"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 18)),
> +};
> +
> +static const unsigned int d1_irq_bank_map[] = { 1, 2, 3, 4, 5, 6 };
> +
> +static const struct sunxi_pinctrl_desc d1_pinctrl_data = {
> + .pins = d1_pins,
> + .npins = ARRAY_SIZE(d1_pins),
> + .irq_banks = ARRAY_SIZE(d1_irq_bank_map),
> + .irq_bank_map = d1_irq_bank_map,
> + .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL,
> +};
> +
> +static int d1_pinctrl_probe(struct platform_device *pdev)
> +{
> + unsigned long variant = (unsigned long)of_device_get_match_data(&pdev->dev);
> +
> + return sunxi_pinctrl_init_with_variant(pdev, &d1_pinctrl_data, variant);
> +}
> +
> +static const struct of_device_id d1_pinctrl_match[] = {
> + {
> + .compatible = "allwinner,sun20i-d1-pinctrl",
> + .data = (void *)PINCTRL_SUN20I_D1
> + },
> + {}
> +};
> +
> +static struct platform_driver d1_pinctrl_driver = {
> + .probe = d1_pinctrl_probe,
> + .driver = {
> + .name = "sun20i-d1-pinctrl",
> + .of_match_table = d1_pinctrl_match,
> + },
> +};
> +builtin_platform_driver(d1_pinctrl_driver);
> diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> index ec7daaa5666b..350044d4c1b5 100644
> --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> @@ -1297,11 +1297,11 @@ static int sunxi_pinctrl_build_state(struct platform_device *pdev)
>
> /*
> * Find an upper bound for the maximum number of functions: in
> - * the worst case we have gpio_in, gpio_out, irq and up to four
> + * the worst case we have gpio_in, gpio_out, irq and up to seven
> * special functions per pin, plus one entry for the sentinel.
> * We'll reallocate that later anyway.
> */
> - pctl->functions = kcalloc(4 * pctl->ngroups + 4,
> + pctl->functions = kcalloc(7 * pctl->ngroups + 4,
> sizeof(*pctl->functions),
> GFP_KERNEL);
> if (!pctl->functions)
> @@ -1494,9 +1494,15 @@ int sunxi_pinctrl_init_with_variant(struct platform_device *pdev,
> pctl->dev = &pdev->dev;
> pctl->desc = desc;
> pctl->variant = variant;
> - pctl->bank_mem_size = BANK_MEM_SIZE;
> - pctl->pull_regs_offset = PULL_REGS_OFFSET;
> - pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH;
> + if (pctl->variant >= PINCTRL_SUN20I_D1) {
> + pctl->bank_mem_size = D1_BANK_MEM_SIZE;
> + pctl->pull_regs_offset = D1_PULL_REGS_OFFSET;
> + pctl->dlevel_field_width = D1_DLEVEL_FIELD_WIDTH;
> + } else {
> + pctl->bank_mem_size = BANK_MEM_SIZE;
> + pctl->pull_regs_offset = PULL_REGS_OFFSET;
> + pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH;
> + }
>
> pctl->irq_array = devm_kcalloc(&pdev->dev,
> IRQ_PER_BANK * pctl->desc->irq_banks,
> diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.h b/drivers/pinctrl/sunxi/pinctrl-sunxi.h
> index c705828add73..a87a2f944d60 100644
> --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.h
> +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.h
> @@ -44,6 +44,10 @@
> #define PULL_REGS_OFFSET 0x1c
> #define PULL_FIELD_WIDTH 2
>
> +#define D1_BANK_MEM_SIZE 0x30
> +#define D1_DLEVEL_FIELD_WIDTH 4
> +#define D1_PULL_REGS_OFFSET 0x24
> +
> #define PINS_PER_BANK 32
>
> #define IRQ_PER_BANK 32
> @@ -88,6 +92,8 @@
> #define PINCTRL_SUN8I_R40 BIT(8)
> #define PINCTRL_SUN8I_V3 BIT(9)
> #define PINCTRL_SUN8I_V3S BIT(10)
> +/* Variants below here have an updated register layout. */
> +#define PINCTRL_SUN20I_D1 BIT(11)
>
> #define PIO_POW_MOD_SEL_REG 0x340
> #define PIO_POW_MOD_CTL_REG 0x344
^ permalink raw reply [relevance 0%]
* [PATCH v2 6/6] pinctrl: sunxi: Add driver for Allwinner D1
@ 2022-07-13 2:52 2% ` Samuel Holland
2022-07-13 13:11 0% ` Andre Przywara
0 siblings, 1 reply; 200+ results
From: Samuel Holland @ 2022-07-13 2:52 UTC (permalink / raw)
To: Chen-Yu Tsai, Jernej Skrabec, Linus Walleij, Andre Przywara
Cc: Samuel Holland, Krzysztof Kozlowski, Maxime Ripard, Rob Herring,
devicetree, linux-arm-kernel, linux-gpio, linux-kernel,
linux-sunxi, Heiko Stuebner
This SoC contains a pinctrl with a new register layout. Use the variant
parameter to set the right register offsets. This pinctrl also increases
the number of functions per pin from 8 to 16, taking advantage of all 4
bits in the mux config field (so far, only functions 0-8 and 14-15 are
used). This increases the maximum possible number of functions.
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
Changes in v2:
- Fix PE3 function "csi0" -> "ncsi0"
- Fix comments for JTAG DI/DO pins
- Include channel numbers in PWM functions
- Drop the separate D1s variant, since D1s is a non-conflicting subset
- Enable the driver for MACH_SUN8I to cover T113 (same die, but ARMv7)
drivers/pinctrl/sunxi/Kconfig | 5 +
drivers/pinctrl/sunxi/Makefile | 1 +
drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c | 840 ++++++++++++++++++++++
drivers/pinctrl/sunxi/pinctrl-sunxi.c | 16 +-
drivers/pinctrl/sunxi/pinctrl-sunxi.h | 6 +
5 files changed, 863 insertions(+), 5 deletions(-)
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
index 7a7bcdc198a3..a78fdbbdfc0c 100644
--- a/drivers/pinctrl/sunxi/Kconfig
+++ b/drivers/pinctrl/sunxi/Kconfig
@@ -81,6 +81,11 @@ config PINCTRL_SUN9I_A80_R
default MACH_SUN9I
select PINCTRL_SUNXI
+config PINCTRL_SUN20I_D1
+ bool "Support for the Allwinner D1 PIO"
+ default MACH_SUN8I || (RISCV && ARCH_SUNXI)
+ select PINCTRL_SUNXI
+
config PINCTRL_SUN50I_A64
bool "Support for the Allwinner A64 PIO"
default ARM64 && ARCH_SUNXI
diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile
index d3440c42b9d6..2ff5a55927ad 100644
--- a/drivers/pinctrl/sunxi/Makefile
+++ b/drivers/pinctrl/sunxi/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_SUN8I_A83T_R) += pinctrl-sun8i-a83t-r.o
obj-$(CONFIG_PINCTRL_SUN8I_H3) += pinctrl-sun8i-h3.o
obj-$(CONFIG_PINCTRL_SUN8I_H3_R) += pinctrl-sun8i-h3-r.o
obj-$(CONFIG_PINCTRL_SUN8I_V3S) += pinctrl-sun8i-v3s.o
+obj-$(CONFIG_PINCTRL_SUN20I_D1) += pinctrl-sun20i-d1.o
obj-$(CONFIG_PINCTRL_SUN50I_H5) += pinctrl-sun50i-h5.o
obj-$(CONFIG_PINCTRL_SUN50I_H6) += pinctrl-sun50i-h6.o
obj-$(CONFIG_PINCTRL_SUN50I_H6_R) += pinctrl-sun50i-h6-r.o
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
new file mode 100644
index 000000000000..40858b881298
--- /dev/null
+++ b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
@@ -0,0 +1,840 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Allwinner D1 SoC pinctrl driver.
+ *
+ * Copyright (c) 2020 wuyan@allwinnertech.com
+ * Copyright (c) 2021-2022 Samuel Holland <samuel@sholland.org>
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/pinctrl/pinctrl.h>
+
+#include "pinctrl-sunxi.h"
+
+static const struct sunxi_desc_pin d1_pins[] = {
+ /* PB */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "pwm3"),
+ SUNXI_FUNCTION(0x3, "ir"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x5, "spi1"), /* WP */
+ SUNXI_FUNCTION(0x6, "uart0"), /* TX */
+ SUNXI_FUNCTION(0x7, "uart2"), /* TX */
+ SUNXI_FUNCTION(0x8, "spdif"), /* OUT */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "pwm4"),
+ SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT3 */
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN3 */
+ SUNXI_FUNCTION(0x6, "uart0"), /* RX */
+ SUNXI_FUNCTION(0x7, "uart2"), /* RX */
+ SUNXI_FUNCTION(0x8, "ir"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D0 */
+ SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT2 */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN2 */
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D18 */
+ SUNXI_FUNCTION(0x7, "uart4"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D1 */
+ SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT1 */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN0 */
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D19 */
+ SUNXI_FUNCTION(0x7, "uart4"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D8 */
+ SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT0 */
+ SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */
+ SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN1 */
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D20 */
+ SUNXI_FUNCTION(0x7, "uart5"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D9 */
+ SUNXI_FUNCTION(0x3, "i2s2"), /* BCLK */
+ SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */
+ SUNXI_FUNCTION(0x5, "pwm0"),
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D21 */
+ SUNXI_FUNCTION(0x7, "uart5"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D16 */
+ SUNXI_FUNCTION(0x3, "i2s2"), /* LRCK */
+ SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x5, "pwm1"),
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D22 */
+ SUNXI_FUNCTION(0x7, "uart3"), /* TX */
+ SUNXI_FUNCTION(0x8, "bist0"), /* BIST_RESULT0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D17 */
+ SUNXI_FUNCTION(0x3, "i2s2"), /* MCLK */
+ SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x5, "ir"), /* RX */
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D23 */
+ SUNXI_FUNCTION(0x7, "uart3"), /* RX */
+ SUNXI_FUNCTION(0x8, "bist1"), /* BIST_RESULT1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 7)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 8),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* DATA3 */
+ SUNXI_FUNCTION(0x3, "pwm5"),
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x5, "spi1"), /* HOLD */
+ SUNXI_FUNCTION(0x6, "uart0"), /* TX */
+ SUNXI_FUNCTION(0x7, "uart1"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 8)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 9),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* DATA2 */
+ SUNXI_FUNCTION(0x3, "pwm6"),
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x5, "spi1"), /* MISO */
+ SUNXI_FUNCTION(0x6, "uart0"), /* RX */
+ SUNXI_FUNCTION(0x7, "uart1"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 9)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 10),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* DATA1 */
+ SUNXI_FUNCTION(0x3, "pwm7"),
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x5, "spi1"), /* MOSI */
+ SUNXI_FUNCTION(0x6, "clk"), /* FANOUT0 */
+ SUNXI_FUNCTION(0x7, "uart1"), /* RTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 10)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 11),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* DATA0 */
+ SUNXI_FUNCTION(0x3, "pwm2"),
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x5, "spi1"), /* CLK */
+ SUNXI_FUNCTION(0x6, "clk"), /* FANOUT1 */
+ SUNXI_FUNCTION(0x7, "uart1"), /* CTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 11)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 12),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* CLK */
+ SUNXI_FUNCTION(0x3, "pwm0"),
+ SUNXI_FUNCTION(0x4, "spdif"), /* IN */
+ SUNXI_FUNCTION(0x5, "spi1"), /* CS0 */
+ SUNXI_FUNCTION(0x6, "clk"), /* FANOUT2 */
+ SUNXI_FUNCTION(0x7, "ir"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 12)),
+ /* PC */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart2"), /* TX */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x4, "ledc"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart2"), /* RX */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* CLK */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* CLK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* CS0 */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* CMD */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* MOSI */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* D2 */
+ SUNXI_FUNCTION(0x4, "boot"), /* SEL0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* MISO */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* D1 */
+ SUNXI_FUNCTION(0x4, "boot"), /* SEL1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* WP */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* D0 */
+ SUNXI_FUNCTION(0x4, "uart3"), /* TX */
+ SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x6, "pll"), /* DBG-CLK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* HOLD */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* D3 */
+ SUNXI_FUNCTION(0x4, "uart3"), /* RX */
+ SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 7)),
+ /* PD */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V0P */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D0P */
+ SUNXI_FUNCTION(0x5, "i2c0"), /* SCK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V0N */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D0N */
+ SUNXI_FUNCTION(0x5, "uart2"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V1P */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D1P */
+ SUNXI_FUNCTION(0x5, "uart2"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V1N */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D1N */
+ SUNXI_FUNCTION(0x5, "uart2"), /* RTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V2P */
+ SUNXI_FUNCTION(0x4, "dsi"), /* CKP */
+ SUNXI_FUNCTION(0x5, "uart2"), /* CTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V2N */
+ SUNXI_FUNCTION(0x4, "dsi"), /* CKN */
+ SUNXI_FUNCTION(0x5, "uart5"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* CKP */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D2P */
+ SUNXI_FUNCTION(0x5, "uart5"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* CKN */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D2N */
+ SUNXI_FUNCTION(0x5, "uart4"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 7)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V3P */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D3P */
+ SUNXI_FUNCTION(0x5, "uart4"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 8)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 9),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V3N */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D3N */
+ SUNXI_FUNCTION(0x5, "pwm6"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 9)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D14 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V0P */
+ SUNXI_FUNCTION(0x4, "spi1"), /* CS0 */
+ SUNXI_FUNCTION(0x5, "uart3"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 10)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D15 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V0N */
+ SUNXI_FUNCTION(0x4, "spi1"), /* CLK */
+ SUNXI_FUNCTION(0x5, "uart3"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 11)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V1P */
+ SUNXI_FUNCTION(0x4, "spi1"), /* MOSI */
+ SUNXI_FUNCTION(0x5, "i2c0"), /* SDA */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 12)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V1N */
+ SUNXI_FUNCTION(0x4, "spi1"), /* MISO */
+ SUNXI_FUNCTION(0x5, "uart3"), /* RTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 13)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V2P */
+ SUNXI_FUNCTION(0x4, "spi1"), /* HOLD */
+ SUNXI_FUNCTION(0x5, "uart3"), /* CTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 14)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V2N */
+ SUNXI_FUNCTION(0x4, "spi1"), /* WP */
+ SUNXI_FUNCTION(0x5, "ir"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 15)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* CKP */
+ SUNXI_FUNCTION(0x4, "dmic"), /* DATA3 */
+ SUNXI_FUNCTION(0x5, "pwm0"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 16)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* CKN */
+ SUNXI_FUNCTION(0x4, "dmic"), /* DATA2 */
+ SUNXI_FUNCTION(0x5, "pwm1"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 17)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V3P */
+ SUNXI_FUNCTION(0x4, "dmic"), /* DATA1 */
+ SUNXI_FUNCTION(0x5, "pwm2"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 18)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* DE */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V3N */
+ SUNXI_FUNCTION(0x4, "dmic"), /* DATA0 */
+ SUNXI_FUNCTION(0x5, "pwm3"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 19)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x4, "dmic"), /* CLK */
+ SUNXI_FUNCTION(0x5, "pwm4"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 20)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x4, "uart1"), /* TX */
+ SUNXI_FUNCTION(0x5, "pwm5"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 21)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spdif"), /* OUT */
+ SUNXI_FUNCTION(0x3, "ir"), /* RX */
+ SUNXI_FUNCTION(0x4, "uart1"), /* RX */
+ SUNXI_FUNCTION(0x5, "pwm7"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 22)),
+ /* PE */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* HSYNC */
+ SUNXI_FUNCTION(0x3, "uart2"), /* RTS */
+ SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */
+ SUNXI_FUNCTION(0x5, "lcd0"), /* HSYNC */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXCTL/CRS_DV */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* VSYNC */
+ SUNXI_FUNCTION(0x3, "uart2"), /* CTS */
+ SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */
+ SUNXI_FUNCTION(0x5, "lcd0"), /* VSYNC */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXD0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* PCLK */
+ SUNXI_FUNCTION(0x3, "uart2"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
+ SUNXI_FUNCTION(0x6, "uart0"), /* TX */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXD1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* MCLK */
+ SUNXI_FUNCTION(0x3, "uart2"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
+ SUNXI_FUNCTION(0x6, "uart0"), /* RX */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXCK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D0 */
+ SUNXI_FUNCTION(0x3, "uart4"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
+ SUNXI_FUNCTION(0x6, "d_jtag"), /* MS */
+ SUNXI_FUNCTION(0x7, "r_jtag"), /* MS */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXD0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D1 */
+ SUNXI_FUNCTION(0x3, "uart4"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x5, "ledc"),
+ SUNXI_FUNCTION(0x6, "d_jtag"), /* DI */
+ SUNXI_FUNCTION(0x7, "r_jtag"), /* DI */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXD1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D2 */
+ SUNXI_FUNCTION(0x3, "uart5"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x5, "spdif"), /* IN */
+ SUNXI_FUNCTION(0x6, "d_jtag"), /* DO */
+ SUNXI_FUNCTION(0x7, "r_jtag"), /* DO */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXCTL/TXEN */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D3 */
+ SUNXI_FUNCTION(0x3, "uart5"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x5, "spdif"), /* OUT */
+ SUNXI_FUNCTION(0x6, "d_jtag"), /* CK */
+ SUNXI_FUNCTION(0x7, "r_jtag"), /* CK */
+ SUNXI_FUNCTION(0x8, "emac"), /* CK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 7)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D4 */
+ SUNXI_FUNCTION(0x3, "uart1"), /* RTS */
+ SUNXI_FUNCTION(0x4, "pwm2"),
+ SUNXI_FUNCTION(0x5, "uart3"), /* TX */
+ SUNXI_FUNCTION(0x6, "jtag"), /* MS */
+ SUNXI_FUNCTION(0x8, "emac"), /* MDC */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 8)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D5 */
+ SUNXI_FUNCTION(0x3, "uart1"), /* CTS */
+ SUNXI_FUNCTION(0x4, "pwm3"),
+ SUNXI_FUNCTION(0x5, "uart3"), /* RX */
+ SUNXI_FUNCTION(0x6, "jtag"), /* DI */
+ SUNXI_FUNCTION(0x8, "emac"), /* MDIO */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 9)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D6 */
+ SUNXI_FUNCTION(0x3, "uart1"), /* TX */
+ SUNXI_FUNCTION(0x4, "pwm4"),
+ SUNXI_FUNCTION(0x5, "ir"), /* RX */
+ SUNXI_FUNCTION(0x6, "jtag"), /* DO */
+ SUNXI_FUNCTION(0x8, "emac"), /* EPHY-25M */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 10)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D7 */
+ SUNXI_FUNCTION(0x3, "uart1"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT3 */
+ SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN3 */
+ SUNXI_FUNCTION(0x6, "jtag"), /* CK */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXD2 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 11)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x3, "ncsi0"), /* FIELD */
+ SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT2 */
+ SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN2 */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXD3 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 12)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x3, "pwm5"),
+ SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT0 */
+ SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN1 */
+ SUNXI_FUNCTION(0x6, "dmic"), /* DATA3 */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXD2 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 13)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 14),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c1"), /* SCK */
+ SUNXI_FUNCTION(0x3, "d_jtag"), /* MS */
+ SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT1 */
+ SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN0 */
+ SUNXI_FUNCTION(0x6, "dmic"), /* DATA2 */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXD3 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 14)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 15),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c1"), /* SDA */
+ SUNXI_FUNCTION(0x3, "d_jtag"), /* DI */
+ SUNXI_FUNCTION(0x4, "pwm6"),
+ SUNXI_FUNCTION(0x5, "i2s0"), /* LRCK */
+ SUNXI_FUNCTION(0x6, "dmic"), /* DATA1 */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXCK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 15)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 16),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x3, "d_jtag"), /* DO */
+ SUNXI_FUNCTION(0x4, "pwm7"),
+ SUNXI_FUNCTION(0x5, "i2s0"), /* BCLK */
+ SUNXI_FUNCTION(0x6, "dmic"), /* DATA0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 16)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 17),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x3, "d_jtag"), /* CK */
+ SUNXI_FUNCTION(0x4, "ir"), /* TX */
+ SUNXI_FUNCTION(0x5, "i2s0"), /* MCLK */
+ SUNXI_FUNCTION(0x6, "dmic"), /* CLK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 17)),
+ /* PF */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */
+ SUNXI_FUNCTION(0x3, "jtag"), /* MS */
+ SUNXI_FUNCTION(0x4, "r_jtag"), /* MS */
+ SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT1 */
+ SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */
+ SUNXI_FUNCTION(0x3, "jtag"), /* DI */
+ SUNXI_FUNCTION(0x4, "r_jtag"), /* DI */
+ SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT0 */
+ SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */
+ SUNXI_FUNCTION(0x3, "uart0"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x5, "ledc"),
+ SUNXI_FUNCTION(0x6, "spdif"), /* IN */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */
+ SUNXI_FUNCTION(0x3, "jtag"), /* DO */
+ SUNXI_FUNCTION(0x4, "r_jtag"), /* DO */
+ SUNXI_FUNCTION(0x5, "i2s2"), /* BCLK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */
+ SUNXI_FUNCTION(0x3, "uart0"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x5, "pwm6"),
+ SUNXI_FUNCTION(0x6, "ir"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */
+ SUNXI_FUNCTION(0x3, "jtag"), /* CK */
+ SUNXI_FUNCTION(0x4, "r_jtag"), /* CK */
+ SUNXI_FUNCTION(0x5, "i2s2"), /* LRCK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x3, "spdif"), /* OUT */
+ SUNXI_FUNCTION(0x4, "ir"), /* RX */
+ SUNXI_FUNCTION(0x5, "i2s2"), /* MCLK */
+ SUNXI_FUNCTION(0x6, "pwm5"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 6)),
+ /* PG */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */
+ SUNXI_FUNCTION(0x3, "uart3"), /* TX */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXCTRL/CRS_DV */
+ SUNXI_FUNCTION(0x5, "pwm7"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */
+ SUNXI_FUNCTION(0x3, "uart3"), /* RX */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXD0 */
+ SUNXI_FUNCTION(0x5, "pwm6"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */
+ SUNXI_FUNCTION(0x3, "uart3"), /* RTS */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXD1 */
+ SUNXI_FUNCTION(0x5, "uart4"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */
+ SUNXI_FUNCTION(0x3, "uart3"), /* CTS */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXCK */
+ SUNXI_FUNCTION(0x5, "uart4"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */
+ SUNXI_FUNCTION(0x3, "uart5"), /* TX */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXD0 */
+ SUNXI_FUNCTION(0x5, "pwm5"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */
+ SUNXI_FUNCTION(0x3, "uart5"), /* RX */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXD1 */
+ SUNXI_FUNCTION(0x5, "pwm4"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart1"), /* TX */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXD2 */
+ SUNXI_FUNCTION(0x5, "pwm1"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart1"), /* RX */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXD3 */
+ SUNXI_FUNCTION(0x5, "spdif"), /* IN */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 7)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart1"), /* RTS */
+ SUNXI_FUNCTION(0x3, "i2c1"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXD2 */
+ SUNXI_FUNCTION(0x5, "uart3"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 8)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart1"), /* CTS */
+ SUNXI_FUNCTION(0x3, "i2c1"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXD3 */
+ SUNXI_FUNCTION(0x5, "uart3"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 9)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "pwm3"),
+ SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXCK */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
+ SUNXI_FUNCTION(0x6, "ir"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 10)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1"), /* MCLK */
+ SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* EPHY-25M */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
+ SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 11)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1"), /* LRCK */
+ SUNXI_FUNCTION(0x3, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXCTL/TXEN */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
+ SUNXI_FUNCTION(0x6, "pwm0"),
+ SUNXI_FUNCTION(0x7, "uart1"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 12)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1"), /* BCLK */
+ SUNXI_FUNCTION(0x3, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* CLKIN/RXER */
+ SUNXI_FUNCTION(0x5, "pwm2"),
+ SUNXI_FUNCTION(0x6, "ledc"),
+ SUNXI_FUNCTION(0x7, "uart1"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 13)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 14),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1_din"), /* DIN0 */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* MDC */
+ SUNXI_FUNCTION(0x5, "i2s1_dout"), /* DOUT1 */
+ SUNXI_FUNCTION(0x6, "spi0"), /* WP */
+ SUNXI_FUNCTION(0x7, "uart1"), /* RTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 14)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 15),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1_dout"), /* DOUT0 */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* MDIO */
+ SUNXI_FUNCTION(0x5, "i2s1_din"), /* DIN1 */
+ SUNXI_FUNCTION(0x6, "spi0"), /* HOLD */
+ SUNXI_FUNCTION(0x7, "uart1"), /* CTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 15)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 16),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ir"), /* RX */
+ SUNXI_FUNCTION(0x3, "tcon"), /* TRIG0 */
+ SUNXI_FUNCTION(0x4, "pwm5"),
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
+ SUNXI_FUNCTION(0x6, "spdif"), /* IN */
+ SUNXI_FUNCTION(0x7, "ledc"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 16)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 17),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart2"), /* TX */
+ SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x4, "pwm7"),
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
+ SUNXI_FUNCTION(0x6, "ir"), /* TX */
+ SUNXI_FUNCTION(0x7, "uart0"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 17)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 18),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart2"), /* RX */
+ SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x4, "pwm6"),
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
+ SUNXI_FUNCTION(0x6, "spdif"), /* OUT */
+ SUNXI_FUNCTION(0x7, "uart0"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 18)),
+};
+
+static const unsigned int d1_irq_bank_map[] = { 1, 2, 3, 4, 5, 6 };
+
+static const struct sunxi_pinctrl_desc d1_pinctrl_data = {
+ .pins = d1_pins,
+ .npins = ARRAY_SIZE(d1_pins),
+ .irq_banks = ARRAY_SIZE(d1_irq_bank_map),
+ .irq_bank_map = d1_irq_bank_map,
+ .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL,
+};
+
+static int d1_pinctrl_probe(struct platform_device *pdev)
+{
+ unsigned long variant = (unsigned long)of_device_get_match_data(&pdev->dev);
+
+ return sunxi_pinctrl_init_with_variant(pdev, &d1_pinctrl_data, variant);
+}
+
+static const struct of_device_id d1_pinctrl_match[] = {
+ {
+ .compatible = "allwinner,sun20i-d1-pinctrl",
+ .data = (void *)PINCTRL_SUN20I_D1
+ },
+ {}
+};
+
+static struct platform_driver d1_pinctrl_driver = {
+ .probe = d1_pinctrl_probe,
+ .driver = {
+ .name = "sun20i-d1-pinctrl",
+ .of_match_table = d1_pinctrl_match,
+ },
+};
+builtin_platform_driver(d1_pinctrl_driver);
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index ec7daaa5666b..350044d4c1b5 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -1297,11 +1297,11 @@ static int sunxi_pinctrl_build_state(struct platform_device *pdev)
/*
* Find an upper bound for the maximum number of functions: in
- * the worst case we have gpio_in, gpio_out, irq and up to four
+ * the worst case we have gpio_in, gpio_out, irq and up to seven
* special functions per pin, plus one entry for the sentinel.
* We'll reallocate that later anyway.
*/
- pctl->functions = kcalloc(4 * pctl->ngroups + 4,
+ pctl->functions = kcalloc(7 * pctl->ngroups + 4,
sizeof(*pctl->functions),
GFP_KERNEL);
if (!pctl->functions)
@@ -1494,9 +1494,15 @@ int sunxi_pinctrl_init_with_variant(struct platform_device *pdev,
pctl->dev = &pdev->dev;
pctl->desc = desc;
pctl->variant = variant;
- pctl->bank_mem_size = BANK_MEM_SIZE;
- pctl->pull_regs_offset = PULL_REGS_OFFSET;
- pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH;
+ if (pctl->variant >= PINCTRL_SUN20I_D1) {
+ pctl->bank_mem_size = D1_BANK_MEM_SIZE;
+ pctl->pull_regs_offset = D1_PULL_REGS_OFFSET;
+ pctl->dlevel_field_width = D1_DLEVEL_FIELD_WIDTH;
+ } else {
+ pctl->bank_mem_size = BANK_MEM_SIZE;
+ pctl->pull_regs_offset = PULL_REGS_OFFSET;
+ pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH;
+ }
pctl->irq_array = devm_kcalloc(&pdev->dev,
IRQ_PER_BANK * pctl->desc->irq_banks,
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.h b/drivers/pinctrl/sunxi/pinctrl-sunxi.h
index c705828add73..a87a2f944d60 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.h
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.h
@@ -44,6 +44,10 @@
#define PULL_REGS_OFFSET 0x1c
#define PULL_FIELD_WIDTH 2
+#define D1_BANK_MEM_SIZE 0x30
+#define D1_DLEVEL_FIELD_WIDTH 4
+#define D1_PULL_REGS_OFFSET 0x24
+
#define PINS_PER_BANK 32
#define IRQ_PER_BANK 32
@@ -88,6 +92,8 @@
#define PINCTRL_SUN8I_R40 BIT(8)
#define PINCTRL_SUN8I_V3 BIT(9)
#define PINCTRL_SUN8I_V3S BIT(10)
+/* Variants below here have an updated register layout. */
+#define PINCTRL_SUN20I_D1 BIT(11)
#define PIO_POW_MOD_SEL_REG 0x340
#define PIO_POW_MOD_CTL_REG 0x344
--
2.35.1
^ permalink raw reply related [relevance 2%]
* Re: [PATCH] extcon: Add EXTCON_DISP_CVBS and EXTCON_DISP_EDP
2022-07-11 14:22 14% ` Michael Wu
@ 2022-07-11 21:04 6% ` Chanwoo Choi
0 siblings, 0 replies; 200+ results
From: Chanwoo Choi @ 2022-07-11 21:04 UTC (permalink / raw)
To: Michael Wu
Cc: MyungJoo Ham, Chanwoo Choi, linux-kernel, allwinner-opensource-support
On Mon, Jul 11, 2022 at 11:23 PM Michael Wu <michael@allwinnertech.com> wrote:
>
> On 7/9/2022 9:03 AM, Chanwoo Choi wrote:
> > On 22. 7. 8. 18:57, Michael Wu wrote:
> >> Add EXTCON_DISP_CVBS for Composite Video Broadcast Signal.
> >> Add EXTCON_DISP_EDP for Embedded Display Port
> >>
> >> [1] https://en.wikipedia.org/wiki/Composite_video
> >> [2] https://en.wikipedia.org/wiki/DisplayPort#eDP
> >>
> >> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> >> ---
> >> drivers/extcon/extcon.c | 10 ++++++++++
> >> include/linux/extcon.h | 2 ++
> >> 2 files changed, 12 insertions(+)
> >>
> >> diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c
> >> index d3a32b8064994..774607a616f7b 100644
> >> --- a/drivers/extcon/extcon.c
> >> +++ b/drivers/extcon/extcon.c
> >> @@ -167,6 +167,16 @@ static const struct __extcon_info {
> >> .id = EXTCON_DISP_HMD,
> >> .name = "HMD",
> >> },
> >> + [EXTCON_DISP_CVBS] = {
> >> + .type = EXTCON_TYPE_DISP,
> >> + .id = EXTCON_DISP_CVBS,
> >> + .name = "CVBS",
> >> + },
> >> + [EXTCON_DISP_EDP] = {
> >> + .type = EXTCON_TYPE_DISP,
> >> + .id = EXTCON_DISP_EDP,
> >> + .name = "EDP",
> >> + },
> >>
> >> /* Miscellaneous external connector */
> >> [EXTCON_DOCK] = {
> >> diff --git a/include/linux/extcon.h b/include/linux/extcon.h
> >> index 685401d94d398..3c45c3846fe94 100644
> >> --- a/include/linux/extcon.h
> >> +++ b/include/linux/extcon.h
> >> @@ -76,6 +76,8 @@
> >> #define EXTCON_DISP_VGA 43 /* Video Graphics Array */
> >> #define EXTCON_DISP_DP 44 /* Display Port */
> >> #define EXTCON_DISP_HMD 45 /* Head-Mounted Display */
> >> +#define EXTCON_DISP_CVBS 46 /* Composite Video Broadcast Signal */
> >> +#define EXTCON_DISP_EDP 47 /* Embedded Display Port */
> >>
> >> /* Miscellaneous external connector */
> >> #define EXTCON_DOCK 60
> >
> > Applied it. Thanks.
> >
> > Do you have a plan to send extcon driver with newly added connector type?
> >
>
> Hi Chanwoo,
> Thank you for the inviting. I'd like to send more patches for extcon,
> unfortunately the SoCs I'm using only covers CVBS and EDP among the new
> connector types. Once I had a chance to verify a new type, I'll surely
> send it here.
> BTW, should I send a patch-v2 with 'Reviewed-by Chanwoo Choi
> <cwchoi00@gmail.com>' or 'Acked-by Chanwoo Choi <cwchoi00@gmail.com>',
> or should I just wait?
No, I already applied this patch to extcon-next branch[1].
[1]https://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon.git/log/?h=extcon-next
Your patch will be merged into v5.20-rc1.
Thanks.
--
Best Regards,
Chanwoo Choi
^ permalink raw reply [relevance 6%]
* Re: [PATCH] extcon: Add EXTCON_DISP_CVBS and EXTCON_DISP_EDP
2022-07-09 1:03 0% ` Chanwoo Choi
@ 2022-07-11 14:22 14% ` Michael Wu
2022-07-11 21:04 6% ` Chanwoo Choi
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-07-11 14:22 UTC (permalink / raw)
To: Chanwoo Choi, myungjoo.ham, cw00.choi
Cc: linux-kernel, allwinner-opensource-support
On 7/9/2022 9:03 AM, Chanwoo Choi wrote:
> On 22. 7. 8. 18:57, Michael Wu wrote:
>> Add EXTCON_DISP_CVBS for Composite Video Broadcast Signal.
>> Add EXTCON_DISP_EDP for Embedded Display Port
>>
>> [1] https://en.wikipedia.org/wiki/Composite_video
>> [2] https://en.wikipedia.org/wiki/DisplayPort#eDP
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>> ---
>> drivers/extcon/extcon.c | 10 ++++++++++
>> include/linux/extcon.h | 2 ++
>> 2 files changed, 12 insertions(+)
>>
>> diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c
>> index d3a32b8064994..774607a616f7b 100644
>> --- a/drivers/extcon/extcon.c
>> +++ b/drivers/extcon/extcon.c
>> @@ -167,6 +167,16 @@ static const struct __extcon_info {
>> .id = EXTCON_DISP_HMD,
>> .name = "HMD",
>> },
>> + [EXTCON_DISP_CVBS] = {
>> + .type = EXTCON_TYPE_DISP,
>> + .id = EXTCON_DISP_CVBS,
>> + .name = "CVBS",
>> + },
>> + [EXTCON_DISP_EDP] = {
>> + .type = EXTCON_TYPE_DISP,
>> + .id = EXTCON_DISP_EDP,
>> + .name = "EDP",
>> + },
>>
>> /* Miscellaneous external connector */
>> [EXTCON_DOCK] = {
>> diff --git a/include/linux/extcon.h b/include/linux/extcon.h
>> index 685401d94d398..3c45c3846fe94 100644
>> --- a/include/linux/extcon.h
>> +++ b/include/linux/extcon.h
>> @@ -76,6 +76,8 @@
>> #define EXTCON_DISP_VGA 43 /* Video Graphics Array */
>> #define EXTCON_DISP_DP 44 /* Display Port */
>> #define EXTCON_DISP_HMD 45 /* Head-Mounted Display */
>> +#define EXTCON_DISP_CVBS 46 /* Composite Video Broadcast Signal */
>> +#define EXTCON_DISP_EDP 47 /* Embedded Display Port */
>>
>> /* Miscellaneous external connector */
>> #define EXTCON_DOCK 60
>
> Applied it. Thanks.
>
> Do you have a plan to send extcon driver with newly added connector type?
>
Hi Chanwoo,
Thank you for the inviting. I'd like to send more patches for extcon,
unfortunately the SoCs I'm using only covers CVBS and EDP among the new
connector types. Once I had a chance to verify a new type, I'll surely
send it here.
BTW, should I send a patch-v2 with 'Reviewed-by Chanwoo Choi
<cwchoi00@gmail.com>' or 'Acked-by Chanwoo Choi <cwchoi00@gmail.com>',
or should I just wait?
Thanks again.
--
Regards,
Michael Wu
^ permalink raw reply [relevance 14%]
* [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning
@ 2022-07-09 1:49 6% Randy Dunlap
2022-07-20 4:04 0% ` Guo Ren
` (2 more replies)
0 siblings, 3 replies; 200+ results
From: Randy Dunlap @ 2022-07-09 1:49 UTC (permalink / raw)
To: linux-kernel
Cc: Randy Dunlap, Wei Fu, Liu Shaohua, Guo Ren, Heiko Stuebner,
Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-riscv
RISCV_ISA_SVPBMT selects RISCV_ALTERNATIVE which depends on !XIP_KERNEL.
Therefore RISCV_ISA_SVPBMT should also depend on !XIP_KERNEL so
quieten this kconfig warning:
WARNING: unmet direct dependencies detected for RISCV_ALTERNATIVE
Depends on [n]: !XIP_KERNEL [=y]
Selected by [y]:
- RISCV_ISA_SVPBMT [=y] && 64BIT [=y] && MMU [=y]
Fixes: ff689fd21cb1 ("riscv: add RISC-V Svpbmt extension support")
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Wei Fu <wefu@redhat.com>
Cc: Liu Shaohua <liush@allwinnertech.com>
Cc: Guo Ren <guoren@kernel.org>
Cc: Heiko Stuebner <heiko@sntech.de>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: linux-riscv@lists.infradead.org
---
arch/riscv/Kconfig | 1 +
1 file changed, 1 insertion(+)
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -362,6 +362,7 @@ config RISCV_ISA_C
config RISCV_ISA_SVPBMT
bool "SVPBMT extension support"
depends on 64BIT && MMU
+ depends on !XIP_KERNEL
select RISCV_ALTERNATIVE
default y
help
^ permalink raw reply [relevance 6%]
* Re: [PATCH] extcon: Add EXTCON_DISP_CVBS and EXTCON_DISP_EDP
2022-07-08 9:57 20% [PATCH] extcon: Add EXTCON_DISP_CVBS and EXTCON_DISP_EDP Michael Wu
@ 2022-07-09 1:03 0% ` Chanwoo Choi
2022-07-11 14:22 14% ` Michael Wu
0 siblings, 1 reply; 200+ results
From: Chanwoo Choi @ 2022-07-09 1:03 UTC (permalink / raw)
To: Michael Wu, myungjoo.ham, cw00.choi
Cc: linux-kernel, allwinner-opensource-support
On 22. 7. 8. 18:57, Michael Wu wrote:
> Add EXTCON_DISP_CVBS for Composite Video Broadcast Signal.
> Add EXTCON_DISP_EDP for Embedded Display Port
>
> [1] https://en.wikipedia.org/wiki/Composite_video
> [2] https://en.wikipedia.org/wiki/DisplayPort#eDP
>
> Signed-off-by: Michael Wu <michael@allwinnertech.com>
> ---
> drivers/extcon/extcon.c | 10 ++++++++++
> include/linux/extcon.h | 2 ++
> 2 files changed, 12 insertions(+)
>
> diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c
> index d3a32b8064994..774607a616f7b 100644
> --- a/drivers/extcon/extcon.c
> +++ b/drivers/extcon/extcon.c
> @@ -167,6 +167,16 @@ static const struct __extcon_info {
> .id = EXTCON_DISP_HMD,
> .name = "HMD",
> },
> + [EXTCON_DISP_CVBS] = {
> + .type = EXTCON_TYPE_DISP,
> + .id = EXTCON_DISP_CVBS,
> + .name = "CVBS",
> + },
> + [EXTCON_DISP_EDP] = {
> + .type = EXTCON_TYPE_DISP,
> + .id = EXTCON_DISP_EDP,
> + .name = "EDP",
> + },
>
> /* Miscellaneous external connector */
> [EXTCON_DOCK] = {
> diff --git a/include/linux/extcon.h b/include/linux/extcon.h
> index 685401d94d398..3c45c3846fe94 100644
> --- a/include/linux/extcon.h
> +++ b/include/linux/extcon.h
> @@ -76,6 +76,8 @@
> #define EXTCON_DISP_VGA 43 /* Video Graphics Array */
> #define EXTCON_DISP_DP 44 /* Display Port */
> #define EXTCON_DISP_HMD 45 /* Head-Mounted Display */
> +#define EXTCON_DISP_CVBS 46 /* Composite Video Broadcast Signal */
> +#define EXTCON_DISP_EDP 47 /* Embedded Display Port */
>
> /* Miscellaneous external connector */
> #define EXTCON_DOCK 60
Applied it. Thanks.
Do you have a plan to send extcon driver with newly added connector type?
--
Best Regards,
Samsung Electronics
Chanwoo Choi
^ permalink raw reply [relevance 0%]
* [PATCH] extcon: Add EXTCON_DISP_CVBS and EXTCON_DISP_EDP
@ 2022-07-08 9:57 20% Michael Wu
2022-07-09 1:03 0% ` Chanwoo Choi
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-07-08 9:57 UTC (permalink / raw)
To: myungjoo.ham, cw00.choi; +Cc: linux-kernel, allwinner-opensource-support
Add EXTCON_DISP_CVBS for Composite Video Broadcast Signal.
Add EXTCON_DISP_EDP for Embedded Display Port
[1] https://en.wikipedia.org/wiki/Composite_video
[2] https://en.wikipedia.org/wiki/DisplayPort#eDP
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/extcon/extcon.c | 10 ++++++++++
include/linux/extcon.h | 2 ++
2 files changed, 12 insertions(+)
diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c
index d3a32b8064994..774607a616f7b 100644
--- a/drivers/extcon/extcon.c
+++ b/drivers/extcon/extcon.c
@@ -167,6 +167,16 @@ static const struct __extcon_info {
.id = EXTCON_DISP_HMD,
.name = "HMD",
},
+ [EXTCON_DISP_CVBS] = {
+ .type = EXTCON_TYPE_DISP,
+ .id = EXTCON_DISP_CVBS,
+ .name = "CVBS",
+ },
+ [EXTCON_DISP_EDP] = {
+ .type = EXTCON_TYPE_DISP,
+ .id = EXTCON_DISP_EDP,
+ .name = "EDP",
+ },
/* Miscellaneous external connector */
[EXTCON_DOCK] = {
diff --git a/include/linux/extcon.h b/include/linux/extcon.h
index 685401d94d398..3c45c3846fe94 100644
--- a/include/linux/extcon.h
+++ b/include/linux/extcon.h
@@ -76,6 +76,8 @@
#define EXTCON_DISP_VGA 43 /* Video Graphics Array */
#define EXTCON_DISP_DP 44 /* Display Port */
#define EXTCON_DISP_HMD 45 /* Head-Mounted Display */
+#define EXTCON_DISP_CVBS 46 /* Composite Video Broadcast Signal */
+#define EXTCON_DISP_EDP 47 /* Embedded Display Port */
/* Miscellaneous external connector */
#define EXTCON_DOCK 60
--
2.29.0
^ permalink raw reply related [relevance 20%]
* Re: [PATCH 6/6] pinctrl: sunxi: Add driver for Allwinner D1/D1s
2022-07-02 15:43 0% ` Samuel Holland
@ 2022-07-04 9:42 0% ` Andre Przywara
0 siblings, 0 replies; 200+ results
From: Andre Przywara @ 2022-07-04 9:42 UTC (permalink / raw)
To: Samuel Holland
Cc: Chen-Yu Tsai, Jernej Skrabec, Linus Walleij, Krzysztof Kozlowski,
Maxime Ripard, Ondrej Jirman, Rob Herring, devicetree,
linux-arm-kernel, linux-gpio, linux-kernel, linux-sunxi,
Heiko Stuebner
On Sat, 2 Jul 2022 10:43:05 -0500
Samuel Holland <samuel@sholland.org> wrote:
Hi Samuel,
> On 7/2/22 9:47 AM, Andre Przywara wrote:
> > On Sat, 25 Jun 2022 21:11:47 -0500
> > Samuel Holland <samuel@sholland.org> wrote:
> >
> > Hi Samuel,
> >
> >> These SoCs contain a pinctrl with a new register layout. Use the variant
> >> parameter to set the right register offsets. This pinctrl also increases
> >> the number of functions per pin from 8 to 16, taking advantage of all 4
> >> bits in the mux config field (so far, only functions 0-8 and 14-15 are
> >> used). This increases the maximum possible number of functions.
> >>
> >> D1s is a low pin count version of the D1 SoC, with some pins omitted.
> >> The remaining pins have the same function assignments as D1.
> >
> > So do we actually need this extra variant, if there are no conflicts?
> > The D1s seems to be a simple subset of the D1. I think we followed the
> > same approach for the H616 already, where there are more pins in the
> > pinctrl driver than the manual describes, and which are used in other
> > package variants, like the T507.
> > In case of the H616, those pins are there, you can program them (which
> > is not the case for not implemented pins otherwise), they are just not
> > connected to the package.
> > I would expect a DT to never reference them, and even if, it doesn't do
> > any harm other than just not working.
>
> I am following the example of V3/V3s here, so it seems we are inconsistent on
> this point. I needed to supply one variant for the register layout anyway, so I
> though I might as well be "accurate".
>
> But with Allwinner releasing lots of packages per die, it is probably overkill
> to have a separate compatible per packge. As you note, there is no harm in
> configuring pins that do not map to any pad.
Yes, thanks, that current inflation of SoC variants is what I was
concerned about.
> Some notes for completeness:
> - D1 documents all three JTAG functions (ARM, RISC-V, and DSP), although the
> ARM JTAG does not work.
> - D1s/F133 only documents the RISC-V JTAG function.
> - T113 only documents the ARM and DSP JTAG functions.
> - T113 adds a CAN function on mux 8 of PB2-PB5. The CAN controller accidentally
> made it in to one version of the D1 datasheet, so it may unofficially exist there.
Have you checked whether the CAN peripheral registers are there, on the D1?
One more thing below:
> None of these variations are conflicting.
>
> > For the table below: I checked every pin against the D1 manual (yes,
> > that took an hour), and found only one small issue and some nits in
> > PortE, see inline.
> >
> >> Signed-off-by: Samuel Holland <samuel@sholland.org>
> >> ---
> >>
> >> drivers/pinctrl/sunxi/Kconfig | 5 +
> >> drivers/pinctrl/sunxi/Makefile | 1 +
> >> drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c | 860 ++++++++++++++++++++++
> >> drivers/pinctrl/sunxi/pinctrl-sunxi.c | 16 +-
> >> drivers/pinctrl/sunxi/pinctrl-sunxi.h | 7 +
> >> 5 files changed, 884 insertions(+), 5 deletions(-)
> >> create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
> >>
> >> diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
> >> index 33751a6a0757..a6ac1c1f2585 100644
> >> --- a/drivers/pinctrl/sunxi/Kconfig
> >> +++ b/drivers/pinctrl/sunxi/Kconfig
> >> @@ -84,6 +84,11 @@ config PINCTRL_SUN9I_A80_R
> >> depends on RESET_CONTROLLER
> >> select PINCTRL_SUNXI
> >>
> >> +config PINCTRL_SUN20I_D1
> >> + bool "Support for the Allwinner D1 PIO"
> >> + default RISCV && ARCH_SUNXI
Is there any chance you can add the "MACH_SUN8I || " already?
Not that it is really surprising, but I explicitly compared the pin mux
overview tables of the R528(ARMv7) and D1(RISC-V) manuals, and they are
identical. So we just use the D1 compatible string as a fallback for the
R528 and T113 parts, in which case the driver should be build for ARM, too.
Cheers,
Andre
> >> + select PINCTRL_SUNXI
> >> +
> >> config PINCTRL_SUN50I_A64
> >> bool "Support for the Allwinner A64 PIO"
> >> default ARM64 && ARCH_SUNXI
> >> diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile
> >> index d3440c42b9d6..2ff5a55927ad 100644
> >> --- a/drivers/pinctrl/sunxi/Makefile
> >> +++ b/drivers/pinctrl/sunxi/Makefile
> >> @@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_SUN8I_A83T_R) += pinctrl-sun8i-a83t-r.o
> >> obj-$(CONFIG_PINCTRL_SUN8I_H3) += pinctrl-sun8i-h3.o
> >> obj-$(CONFIG_PINCTRL_SUN8I_H3_R) += pinctrl-sun8i-h3-r.o
> >> obj-$(CONFIG_PINCTRL_SUN8I_V3S) += pinctrl-sun8i-v3s.o
> >> +obj-$(CONFIG_PINCTRL_SUN20I_D1) += pinctrl-sun20i-d1.o
> >> obj-$(CONFIG_PINCTRL_SUN50I_H5) += pinctrl-sun50i-h5.o
> >> obj-$(CONFIG_PINCTRL_SUN50I_H6) += pinctrl-sun50i-h6.o
> >> obj-$(CONFIG_PINCTRL_SUN50I_H6_R) += pinctrl-sun50i-h6-r.o
> >> diff --git a/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
> >> new file mode 100644
> >> index 000000000000..7247c1f1d92c
> >> --- /dev/null
> >> +++ b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
> >> @@ -0,0 +1,860 @@
> >> +// SPDX-License-Identifier: GPL-2.0
> >> +/*
> >> + * Allwinner D1 SoC pinctrl driver.
> >> + *
> >> + * Copyright (c) 2020 wuyan@allwinnertech.com
> >> + * Copyright (c) 2021-2022 Samuel Holland <samuel@sholland.org>
> >> + */
> >> +
> >> +#include <linux/module.h>
> >> +#include <linux/platform_device.h>
> >> +#include <linux/of.h>
> >> +#include <linux/of_device.h>
> >> +#include <linux/pinctrl/pinctrl.h>
> >> +
> >> +#include "pinctrl-sunxi.h"
> >> +
> >> +static const struct sunxi_desc_pin d1_pins[] = {
> >> + /* PB */
> >> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 0),
> >> + PINCTRL_SUN20I_D1,
> >> + SUNXI_FUNCTION(0x0, "gpio_in"),
> >> + SUNXI_FUNCTION(0x1, "gpio_out"),
> >> + SUNXI_FUNCTION(0x2, "pwm"),
> >
> > The manual mentions the PWM channel number in the pin name, and it
> > seems like in other pinctrl drivers we use the number either in the
> > function name, or at least in the comment.
> > Shall we do one of them here as well?
>
> I originally had the numbers in the function name, but then I realized that no
> pin has multiple PWM muxes, so I removed them. As you mention, other drivers
> have them, so I will add them back.
>
> > And the mux numbers for pwm are all over the place, so lets hope we
> > never need pwm in U-Boot ;-)
>
> PWM is used for the CPU voltage regulator on at least one board (Nezha), but I
> think we can get away without U-Boot support for that. And including the PWM
> number in the function name will improve things somewhat.
>
> I will fix the typos you noted below.
>
> Regards,
> Samuel
^ permalink raw reply [relevance 0%]
* Re: [PATCH 6/6] pinctrl: sunxi: Add driver for Allwinner D1/D1s
2022-07-02 14:47 0% ` Andre Przywara
@ 2022-07-02 15:43 0% ` Samuel Holland
2022-07-04 9:42 0% ` Andre Przywara
0 siblings, 1 reply; 200+ results
From: Samuel Holland @ 2022-07-02 15:43 UTC (permalink / raw)
To: Andre Przywara
Cc: Chen-Yu Tsai, Jernej Skrabec, Linus Walleij, Krzysztof Kozlowski,
Maxime Ripard, Ondrej Jirman, Rob Herring, devicetree,
linux-arm-kernel, linux-gpio, linux-kernel, linux-sunxi,
Heiko Stuebner
On 7/2/22 9:47 AM, Andre Przywara wrote:
> On Sat, 25 Jun 2022 21:11:47 -0500
> Samuel Holland <samuel@sholland.org> wrote:
>
> Hi Samuel,
>
>> These SoCs contain a pinctrl with a new register layout. Use the variant
>> parameter to set the right register offsets. This pinctrl also increases
>> the number of functions per pin from 8 to 16, taking advantage of all 4
>> bits in the mux config field (so far, only functions 0-8 and 14-15 are
>> used). This increases the maximum possible number of functions.
>>
>> D1s is a low pin count version of the D1 SoC, with some pins omitted.
>> The remaining pins have the same function assignments as D1.
>
> So do we actually need this extra variant, if there are no conflicts?
> The D1s seems to be a simple subset of the D1. I think we followed the
> same approach for the H616 already, where there are more pins in the
> pinctrl driver than the manual describes, and which are used in other
> package variants, like the T507.
> In case of the H616, those pins are there, you can program them (which
> is not the case for not implemented pins otherwise), they are just not
> connected to the package.
> I would expect a DT to never reference them, and even if, it doesn't do
> any harm other than just not working.
I am following the example of V3/V3s here, so it seems we are inconsistent on
this point. I needed to supply one variant for the register layout anyway, so I
though I might as well be "accurate".
But with Allwinner releasing lots of packages per die, it is probably overkill
to have a separate compatible per packge. As you note, there is no harm in
configuring pins that do not map to any pad.
Some notes for completeness:
- D1 documents all three JTAG functions (ARM, RISC-V, and DSP), although the
ARM JTAG does not work.
- D1s/F133 only documents the RISC-V JTAG function.
- T113 only documents the ARM and DSP JTAG functions.
- T113 adds a CAN function on mux 8 of PB2-PB5. The CAN controller accidentally
made it in to one version of the D1 datasheet, so it may unofficially exist there.
None of these variations are conflicting.
> For the table below: I checked every pin against the D1 manual (yes,
> that took an hour), and found only one small issue and some nits in
> PortE, see inline.
>
>> Signed-off-by: Samuel Holland <samuel@sholland.org>
>> ---
>>
>> drivers/pinctrl/sunxi/Kconfig | 5 +
>> drivers/pinctrl/sunxi/Makefile | 1 +
>> drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c | 860 ++++++++++++++++++++++
>> drivers/pinctrl/sunxi/pinctrl-sunxi.c | 16 +-
>> drivers/pinctrl/sunxi/pinctrl-sunxi.h | 7 +
>> 5 files changed, 884 insertions(+), 5 deletions(-)
>> create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
>>
>> diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
>> index 33751a6a0757..a6ac1c1f2585 100644
>> --- a/drivers/pinctrl/sunxi/Kconfig
>> +++ b/drivers/pinctrl/sunxi/Kconfig
>> @@ -84,6 +84,11 @@ config PINCTRL_SUN9I_A80_R
>> depends on RESET_CONTROLLER
>> select PINCTRL_SUNXI
>>
>> +config PINCTRL_SUN20I_D1
>> + bool "Support for the Allwinner D1 PIO"
>> + default RISCV && ARCH_SUNXI
>> + select PINCTRL_SUNXI
>> +
>> config PINCTRL_SUN50I_A64
>> bool "Support for the Allwinner A64 PIO"
>> default ARM64 && ARCH_SUNXI
>> diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile
>> index d3440c42b9d6..2ff5a55927ad 100644
>> --- a/drivers/pinctrl/sunxi/Makefile
>> +++ b/drivers/pinctrl/sunxi/Makefile
>> @@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_SUN8I_A83T_R) += pinctrl-sun8i-a83t-r.o
>> obj-$(CONFIG_PINCTRL_SUN8I_H3) += pinctrl-sun8i-h3.o
>> obj-$(CONFIG_PINCTRL_SUN8I_H3_R) += pinctrl-sun8i-h3-r.o
>> obj-$(CONFIG_PINCTRL_SUN8I_V3S) += pinctrl-sun8i-v3s.o
>> +obj-$(CONFIG_PINCTRL_SUN20I_D1) += pinctrl-sun20i-d1.o
>> obj-$(CONFIG_PINCTRL_SUN50I_H5) += pinctrl-sun50i-h5.o
>> obj-$(CONFIG_PINCTRL_SUN50I_H6) += pinctrl-sun50i-h6.o
>> obj-$(CONFIG_PINCTRL_SUN50I_H6_R) += pinctrl-sun50i-h6-r.o
>> diff --git a/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
>> new file mode 100644
>> index 000000000000..7247c1f1d92c
>> --- /dev/null
>> +++ b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
>> @@ -0,0 +1,860 @@
>> +// SPDX-License-Identifier: GPL-2.0
>> +/*
>> + * Allwinner D1 SoC pinctrl driver.
>> + *
>> + * Copyright (c) 2020 wuyan@allwinnertech.com
>> + * Copyright (c) 2021-2022 Samuel Holland <samuel@sholland.org>
>> + */
>> +
>> +#include <linux/module.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/of.h>
>> +#include <linux/of_device.h>
>> +#include <linux/pinctrl/pinctrl.h>
>> +
>> +#include "pinctrl-sunxi.h"
>> +
>> +static const struct sunxi_desc_pin d1_pins[] = {
>> + /* PB */
>> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 0),
>> + PINCTRL_SUN20I_D1,
>> + SUNXI_FUNCTION(0x0, "gpio_in"),
>> + SUNXI_FUNCTION(0x1, "gpio_out"),
>> + SUNXI_FUNCTION(0x2, "pwm"),
>
> The manual mentions the PWM channel number in the pin name, and it
> seems like in other pinctrl drivers we use the number either in the
> function name, or at least in the comment.
> Shall we do one of them here as well?
I originally had the numbers in the function name, but then I realized that no
pin has multiple PWM muxes, so I removed them. As you mention, other drivers
have them, so I will add them back.
> And the mux numbers for pwm are all over the place, so lets hope we
> never need pwm in U-Boot ;-)
PWM is used for the CPU voltage regulator on at least one board (Nezha), but I
think we can get away without U-Boot support for that. And including the PWM
number in the function name will improve things somewhat.
I will fix the typos you noted below.
Regards,
Samuel
^ permalink raw reply [relevance 0%]
* Re: [PATCH 6/6] pinctrl: sunxi: Add driver for Allwinner D1/D1s
2022-06-26 2:11 2% ` [PATCH 6/6] pinctrl: sunxi: Add driver for Allwinner D1/D1s Samuel Holland
@ 2022-07-02 14:47 0% ` Andre Przywara
2022-07-02 15:43 0% ` Samuel Holland
0 siblings, 1 reply; 200+ results
From: Andre Przywara @ 2022-07-02 14:47 UTC (permalink / raw)
To: Samuel Holland
Cc: Chen-Yu Tsai, Jernej Skrabec, Linus Walleij, Krzysztof Kozlowski,
Maxime Ripard, Ondrej Jirman, Rob Herring, devicetree,
linux-arm-kernel, linux-gpio, linux-kernel, linux-sunxi,
Heiko Stuebner
On Sat, 25 Jun 2022 21:11:47 -0500
Samuel Holland <samuel@sholland.org> wrote:
Hi Samuel,
> These SoCs contain a pinctrl with a new register layout. Use the variant
> parameter to set the right register offsets. This pinctrl also increases
> the number of functions per pin from 8 to 16, taking advantage of all 4
> bits in the mux config field (so far, only functions 0-8 and 14-15 are
> used). This increases the maximum possible number of functions.
>
> D1s is a low pin count version of the D1 SoC, with some pins omitted.
> The remaining pins have the same function assignments as D1.
So do we actually need this extra variant, if there are no conflicts?
The D1s seems to be a simple subset of the D1. I think we followed the
same approach for the H616 already, where there are more pins in the
pinctrl driver than the manual describes, and which are used in other
package variants, like the T507.
In case of the H616, those pins are there, you can program them (which
is not the case for not implemented pins otherwise), they are just not
connected to the package.
I would expect a DT to never reference them, and even if, it doesn't do
any harm other than just not working.
For the table below: I checked every pin against the D1 manual (yes,
that took an hour), and found only one small issue and some nits in
PortE, see inline.
> Signed-off-by: Samuel Holland <samuel@sholland.org>
> ---
>
> drivers/pinctrl/sunxi/Kconfig | 5 +
> drivers/pinctrl/sunxi/Makefile | 1 +
> drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c | 860 ++++++++++++++++++++++
> drivers/pinctrl/sunxi/pinctrl-sunxi.c | 16 +-
> drivers/pinctrl/sunxi/pinctrl-sunxi.h | 7 +
> 5 files changed, 884 insertions(+), 5 deletions(-)
> create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
>
> diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
> index 33751a6a0757..a6ac1c1f2585 100644
> --- a/drivers/pinctrl/sunxi/Kconfig
> +++ b/drivers/pinctrl/sunxi/Kconfig
> @@ -84,6 +84,11 @@ config PINCTRL_SUN9I_A80_R
> depends on RESET_CONTROLLER
> select PINCTRL_SUNXI
>
> +config PINCTRL_SUN20I_D1
> + bool "Support for the Allwinner D1 PIO"
> + default RISCV && ARCH_SUNXI
> + select PINCTRL_SUNXI
> +
> config PINCTRL_SUN50I_A64
> bool "Support for the Allwinner A64 PIO"
> default ARM64 && ARCH_SUNXI
> diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile
> index d3440c42b9d6..2ff5a55927ad 100644
> --- a/drivers/pinctrl/sunxi/Makefile
> +++ b/drivers/pinctrl/sunxi/Makefile
> @@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_SUN8I_A83T_R) += pinctrl-sun8i-a83t-r.o
> obj-$(CONFIG_PINCTRL_SUN8I_H3) += pinctrl-sun8i-h3.o
> obj-$(CONFIG_PINCTRL_SUN8I_H3_R) += pinctrl-sun8i-h3-r.o
> obj-$(CONFIG_PINCTRL_SUN8I_V3S) += pinctrl-sun8i-v3s.o
> +obj-$(CONFIG_PINCTRL_SUN20I_D1) += pinctrl-sun20i-d1.o
> obj-$(CONFIG_PINCTRL_SUN50I_H5) += pinctrl-sun50i-h5.o
> obj-$(CONFIG_PINCTRL_SUN50I_H6) += pinctrl-sun50i-h6.o
> obj-$(CONFIG_PINCTRL_SUN50I_H6_R) += pinctrl-sun50i-h6-r.o
> diff --git a/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
> new file mode 100644
> index 000000000000..7247c1f1d92c
> --- /dev/null
> +++ b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
> @@ -0,0 +1,860 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Allwinner D1 SoC pinctrl driver.
> + *
> + * Copyright (c) 2020 wuyan@allwinnertech.com
> + * Copyright (c) 2021-2022 Samuel Holland <samuel@sholland.org>
> + */
> +
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/of.h>
> +#include <linux/of_device.h>
> +#include <linux/pinctrl/pinctrl.h>
> +
> +#include "pinctrl-sunxi.h"
> +
> +static const struct sunxi_desc_pin d1_pins[] = {
> + /* PB */
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 0),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "pwm"),
The manual mentions the PWM channel number in the pin name, and it
seems like in other pinctrl drivers we use the number either in the
function name, or at least in the comment.
Shall we do one of them here as well?
And the mux numbers for pwm are all over the place, so lets hope we
never need pwm in U-Boot ;-)
> + SUNXI_FUNCTION(0x3, "ir"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x5, "spi1"), /* WP */
> + SUNXI_FUNCTION(0x6, "uart0"), /* TX */
> + SUNXI_FUNCTION(0x7, "uart2"), /* TX */
> + SUNXI_FUNCTION(0x8, "spdif"), /* OUT */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 0)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 1),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "pwm"),
> + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT3 */
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN3 */
> + SUNXI_FUNCTION(0x6, "uart0"), /* RX */
> + SUNXI_FUNCTION(0x7, "uart2"), /* RX */
> + SUNXI_FUNCTION(0x8, "ir"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D0 */
> + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT2 */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN2 */
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D18 */
> + SUNXI_FUNCTION(0x7, "uart4"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D1 */
> + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT1 */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN0 */
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D19 */
> + SUNXI_FUNCTION(0x7, "uart4"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D8 */
> + SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT0 */
> + SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */
> + SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN1 */
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D20 */
> + SUNXI_FUNCTION(0x7, "uart5"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D9 */
> + SUNXI_FUNCTION(0x3, "i2s2"), /* BCLK */
> + SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D21 */
> + SUNXI_FUNCTION(0x7, "uart5"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D16 */
> + SUNXI_FUNCTION(0x3, "i2s2"), /* LRCK */
> + SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D22 */
> + SUNXI_FUNCTION(0x7, "uart3"), /* TX */
> + SUNXI_FUNCTION(0x8, "bist0"), /* BIST_RESULT0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D17 */
> + SUNXI_FUNCTION(0x3, "i2s2"), /* MCLK */
> + SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x5, "ir"), /* RX */
> + SUNXI_FUNCTION(0x6, "lcd0"), /* D23 */
> + SUNXI_FUNCTION(0x7, "uart3"), /* RX */
> + SUNXI_FUNCTION(0x8, "bist1"), /* BIST_RESULT1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 7)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 8),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* DATA3 */
> + SUNXI_FUNCTION(0x3, "pwm"),
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x5, "spi1"), /* HOLD */
> + SUNXI_FUNCTION(0x6, "uart0"), /* TX */
> + SUNXI_FUNCTION(0x7, "uart1"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 8)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 9),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* DATA2 */
> + SUNXI_FUNCTION(0x3, "pwm"),
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x5, "spi1"), /* MISO */
> + SUNXI_FUNCTION(0x6, "uart0"), /* RX */
> + SUNXI_FUNCTION(0x7, "uart1"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 9)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 10),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* DATA1 */
> + SUNXI_FUNCTION(0x3, "pwm"),
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x5, "spi1"), /* MOSI */
> + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT0 */
> + SUNXI_FUNCTION(0x7, "uart1"), /* RTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 10)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 11),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* DATA0 */
> + SUNXI_FUNCTION(0x3, "pwm"),
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x5, "spi1"), /* CLK */
> + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT1 */
> + SUNXI_FUNCTION(0x7, "uart1"), /* CTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 11)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 12),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "dmic"), /* CLK */
> + SUNXI_FUNCTION(0x3, "pwm"),
> + SUNXI_FUNCTION(0x4, "spdif"), /* IN */
> + SUNXI_FUNCTION(0x5, "spi1"), /* CS0 */
> + SUNXI_FUNCTION(0x6, "clk"), /* FANOUT2 */
> + SUNXI_FUNCTION(0x7, "ir"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 12)),
> + /* PC */
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(C, 0),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart2"), /* TX */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x4, "ledc"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 0)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(C, 1),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart2"), /* RX */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* CLK */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* CLK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* CS0 */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* CMD */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* MOSI */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* D2 */
> + SUNXI_FUNCTION(0x4, "boot"), /* SEL0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* MISO */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* D1 */
> + SUNXI_FUNCTION(0x4, "boot"), /* SEL1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* WP */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* D0 */
> + SUNXI_FUNCTION(0x4, "uart3"), /* TX */
> + SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x6, "pll"), /* DBG-CLK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spi0"), /* HOLD */
> + SUNXI_FUNCTION(0x3, "mmc2"), /* D3 */
> + SUNXI_FUNCTION(0x4, "uart3"), /* RX */
> + SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 7)),
> + /* PD */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V0P */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D0P */
> + SUNXI_FUNCTION(0x5, "i2c0"), /* SCK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V0N */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D0N */
> + SUNXI_FUNCTION(0x5, "uart2"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V1P */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D1P */
> + SUNXI_FUNCTION(0x5, "uart2"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V1N */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D1N */
> + SUNXI_FUNCTION(0x5, "uart2"), /* RTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V2P */
> + SUNXI_FUNCTION(0x4, "dsi"), /* CKP */
> + SUNXI_FUNCTION(0x5, "uart2"), /* CTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V2N */
> + SUNXI_FUNCTION(0x4, "dsi"), /* CKN */
> + SUNXI_FUNCTION(0x5, "uart5"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* CKP */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D2P */
> + SUNXI_FUNCTION(0x5, "uart5"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* CKN */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D2N */
> + SUNXI_FUNCTION(0x5, "uart4"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 7)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V3P */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D3P */
> + SUNXI_FUNCTION(0x5, "uart4"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 8)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 9),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */
> + SUNXI_FUNCTION(0x3, "lvds0"), /* V3N */
> + SUNXI_FUNCTION(0x4, "dsi"), /* D3N */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 9)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D14 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V0P */
> + SUNXI_FUNCTION(0x4, "spi1"), /* CS0 */
> + SUNXI_FUNCTION(0x5, "uart3"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 10)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D15 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V0N */
> + SUNXI_FUNCTION(0x4, "spi1"), /* CLK */
> + SUNXI_FUNCTION(0x5, "uart3"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 11)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V1P */
> + SUNXI_FUNCTION(0x4, "spi1"), /* MOSI */
> + SUNXI_FUNCTION(0x5, "i2c0"), /* SDA */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 12)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V1N */
> + SUNXI_FUNCTION(0x4, "spi1"), /* MISO */
> + SUNXI_FUNCTION(0x5, "uart3"), /* RTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 13)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V2P */
> + SUNXI_FUNCTION(0x4, "spi1"), /* HOLD */
> + SUNXI_FUNCTION(0x5, "uart3"), /* CTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 14)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V2N */
> + SUNXI_FUNCTION(0x4, "spi1"), /* WP */
> + SUNXI_FUNCTION(0x5, "ir"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 15)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* CKP */
> + SUNXI_FUNCTION(0x4, "dmic"), /* DATA3 */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 16)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* CKN */
> + SUNXI_FUNCTION(0x4, "dmic"), /* DATA2 */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 17)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V3P */
> + SUNXI_FUNCTION(0x4, "dmic"), /* DATA1 */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 18)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* DE */
> + SUNXI_FUNCTION(0x3, "lvds1"), /* V3N */
> + SUNXI_FUNCTION(0x4, "dmic"), /* DATA0 */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 19)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x4, "dmic"), /* CLK */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 20)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x4, "uart1"), /* TX */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 21)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "spdif"), /* OUT */
> + SUNXI_FUNCTION(0x3, "ir"), /* RX */
> + SUNXI_FUNCTION(0x4, "uart1"), /* RX */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 22)),
> + /* PE */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* HSYNC */
> + SUNXI_FUNCTION(0x3, "uart2"), /* RTS */
> + SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */
> + SUNXI_FUNCTION(0x5, "lcd0"), /* HSYNC */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXCTL/CRS_DV */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* VSYNC */
> + SUNXI_FUNCTION(0x3, "uart2"), /* CTS */
> + SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */
> + SUNXI_FUNCTION(0x5, "lcd0"), /* VSYNC */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXD0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* PCLK */
> + SUNXI_FUNCTION(0x3, "uart2"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
> + SUNXI_FUNCTION(0x6, "uart0"), /* TX */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXD1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "csi0"), /* MCLK */
That function name should be "ncsi0".
> + SUNXI_FUNCTION(0x3, "uart2"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
> + SUNXI_FUNCTION(0x6, "uart0"), /* RX */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXCK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D0 */
> + SUNXI_FUNCTION(0x3, "uart4"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
> + SUNXI_FUNCTION(0x6, "d_jtag"), /* MS */
> + SUNXI_FUNCTION(0x7, "r_jtag"), /* MS */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXD0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D1 */
> + SUNXI_FUNCTION(0x3, "uart4"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x5, "ledc"),
> + SUNXI_FUNCTION(0x6, "d_jtag"), /* D1 */
> + SUNXI_FUNCTION(0x7, "r_jtag"), /* D1 */
Those two pins should read "DI" in the comment (as in data in), I think.
> + SUNXI_FUNCTION(0x8, "emac"), /* TXD1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D2 */
> + SUNXI_FUNCTION(0x3, "uart5"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x5, "spdif"), /* IN */
> + SUNXI_FUNCTION(0x6, "d_jtag"), /* D0 */
> + SUNXI_FUNCTION(0x7, "r_jtag"), /* D0 */
And those two pins should be "DO" (as in data out).
Same for the other PortE JTAG signals below (but PortF is correct).
The rest looks correct to me. Very impressive!
Cheers,
Andre
> + SUNXI_FUNCTION(0x8, "emac"), /* TXCTL/TXEN */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D3 */
> + SUNXI_FUNCTION(0x3, "uart5"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x5, "spdif"), /* OUT */
> + SUNXI_FUNCTION(0x6, "d_jtag"), /* CK */
> + SUNXI_FUNCTION(0x7, "r_jtag"), /* CK */
> + SUNXI_FUNCTION(0x8, "emac"), /* CK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 7)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D4 */
> + SUNXI_FUNCTION(0x3, "uart1"), /* RTS */
> + SUNXI_FUNCTION(0x4, "pwm"),
> + SUNXI_FUNCTION(0x5, "uart3"), /* TX */
> + SUNXI_FUNCTION(0x6, "jtag"), /* MS */
> + SUNXI_FUNCTION(0x8, "emac"), /* MDC */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 8)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D5 */
> + SUNXI_FUNCTION(0x3, "uart1"), /* CTS */
> + SUNXI_FUNCTION(0x4, "pwm"),
> + SUNXI_FUNCTION(0x5, "uart3"), /* RX */
> + SUNXI_FUNCTION(0x6, "jtag"), /* D1 */
> + SUNXI_FUNCTION(0x8, "emac"), /* MDIO */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 9)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D6 */
> + SUNXI_FUNCTION(0x3, "uart1"), /* TX */
> + SUNXI_FUNCTION(0x4, "pwm"),
> + SUNXI_FUNCTION(0x5, "ir"), /* RX */
> + SUNXI_FUNCTION(0x6, "jtag"), /* D0 */
> + SUNXI_FUNCTION(0x8, "emac"), /* EPHY-25M */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 10)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ncsi0"), /* D7 */
> + SUNXI_FUNCTION(0x3, "uart1"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT3 */
> + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN3 */
> + SUNXI_FUNCTION(0x6, "jtag"), /* CK */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXD2 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 11)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x3, "ncsi0"), /* FIELD */
> + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT2 */
> + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN2 */
> + SUNXI_FUNCTION(0x8, "emac"), /* TXD3 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 12)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x3, "pwm"),
> + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT0 */
> + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN1 */
> + SUNXI_FUNCTION(0x6, "dmic"), /* DATA3 */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXD2 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 13)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(E, 14),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c1"), /* SCK */
> + SUNXI_FUNCTION(0x3, "d_jtag"), /* MS */
> + SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT1 */
> + SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN0 */
> + SUNXI_FUNCTION(0x6, "dmic"), /* DATA2 */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXD3 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 14)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(E, 15),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c1"), /* SDA */
> + SUNXI_FUNCTION(0x3, "d_jtag"), /* D1 */
> + SUNXI_FUNCTION(0x4, "pwm"),
> + SUNXI_FUNCTION(0x5, "i2s0"), /* LRCK */
> + SUNXI_FUNCTION(0x6, "dmic"), /* DATA1 */
> + SUNXI_FUNCTION(0x8, "emac"), /* RXCK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 15)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(E, 16),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x3, "d_jtag"), /* D0 */
> + SUNXI_FUNCTION(0x4, "pwm"),
> + SUNXI_FUNCTION(0x5, "i2s0"), /* BCLK */
> + SUNXI_FUNCTION(0x6, "dmic"), /* DATA0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 16)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(E, 17),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x3, "d_jtag"), /* CK */
> + SUNXI_FUNCTION(0x4, "ir"), /* TX */
> + SUNXI_FUNCTION(0x5, "i2s0"), /* MCLK */
> + SUNXI_FUNCTION(0x6, "dmic"), /* CLK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 17)),
> + /* PF */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */
> + SUNXI_FUNCTION(0x3, "jtag"), /* MS */
> + SUNXI_FUNCTION(0x4, "r_jtag"), /* MS */
> + SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT1 */
> + SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */
> + SUNXI_FUNCTION(0x3, "jtag"), /* DI */
> + SUNXI_FUNCTION(0x4, "r_jtag"), /* DI */
> + SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT0 */
> + SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN1 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */
> + SUNXI_FUNCTION(0x3, "uart0"), /* TX */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x5, "ledc"),
> + SUNXI_FUNCTION(0x6, "spdif"), /* IN */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */
> + SUNXI_FUNCTION(0x3, "jtag"), /* DO */
> + SUNXI_FUNCTION(0x4, "r_jtag"), /* DO */
> + SUNXI_FUNCTION(0x5, "i2s2"), /* BCLK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */
> + SUNXI_FUNCTION(0x3, "uart0"), /* RX */
> + SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION(0x6, "ir"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */
> + SUNXI_FUNCTION(0x3, "jtag"), /* CK */
> + SUNXI_FUNCTION(0x4, "r_jtag"), /* CK */
> + SUNXI_FUNCTION(0x5, "i2s2"), /* LRCK */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x3, "spdif"), /* OUT */
> + SUNXI_FUNCTION(0x4, "ir"), /* RX */
> + SUNXI_FUNCTION(0x5, "i2s2"), /* MCLK */
> + SUNXI_FUNCTION(0x6, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 6)),
> + /* PG */
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */
> + SUNXI_FUNCTION(0x3, "uart3"), /* TX */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXCTRL/CRS_DV */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 0)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */
> + SUNXI_FUNCTION(0x3, "uart3"), /* RX */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXD0 */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 1)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */
> + SUNXI_FUNCTION(0x3, "uart3"), /* RTS */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXD1 */
> + SUNXI_FUNCTION(0x5, "uart4"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 2)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */
> + SUNXI_FUNCTION(0x3, "uart3"), /* CTS */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXCK */
> + SUNXI_FUNCTION(0x5, "uart4"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 3)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */
> + SUNXI_FUNCTION(0x3, "uart5"), /* TX */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXD0 */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 4)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */
> + SUNXI_FUNCTION(0x3, "uart5"), /* RX */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXD1 */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 5)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart1"), /* TX */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXD2 */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 6)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart1"), /* RX */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXD3 */
> + SUNXI_FUNCTION(0x5, "spdif"), /* IN */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 7)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart1"), /* RTS */
> + SUNXI_FUNCTION(0x3, "i2c1"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXD2 */
> + SUNXI_FUNCTION(0x5, "uart3"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 8)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart1"), /* CTS */
> + SUNXI_FUNCTION(0x3, "i2c1"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXD3 */
> + SUNXI_FUNCTION(0x5, "uart3"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 9)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "pwm"),
> + SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* RXCK */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
> + SUNXI_FUNCTION(0x6, "ir"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 10)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1"), /* MCLK */
> + SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* EPHY-25M */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
> + SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 11)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1"), /* LRCK */
> + SUNXI_FUNCTION(0x3, "i2c0"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* TXCTL/TXEN */
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
> + SUNXI_FUNCTION(0x6, "pwm"),
> + SUNXI_FUNCTION(0x7, "uart1"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 12)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1"), /* BCLK */
> + SUNXI_FUNCTION(0x3, "i2c0"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* CLKIN/RXER */
> + SUNXI_FUNCTION(0x5, "pwm"),
> + SUNXI_FUNCTION(0x6, "ledc"),
> + SUNXI_FUNCTION(0x7, "uart1"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 13)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 14),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1_din"), /* DIN0 */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
> + SUNXI_FUNCTION(0x4, "emac"), /* MDC */
> + SUNXI_FUNCTION(0x5, "i2s1_dout"), /* DOUT1 */
> + SUNXI_FUNCTION(0x6, "spi0"), /* WP */
> + SUNXI_FUNCTION(0x7, "uart1"), /* RTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 14)),
> + SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 15),
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "i2s1_dout"), /* DOUT0 */
> + SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
> + SUNXI_FUNCTION(0x4, "emac"), /* MDIO */
> + SUNXI_FUNCTION(0x5, "i2s1_din"), /* DIN1 */
> + SUNXI_FUNCTION(0x6, "spi0"), /* HOLD */
> + SUNXI_FUNCTION(0x7, "uart1"), /* CTS */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 15)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 16),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "ir"), /* RX */
> + SUNXI_FUNCTION(0x3, "tcon"), /* TRIG0 */
> + SUNXI_FUNCTION(0x4, "pwm"),
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
> + SUNXI_FUNCTION(0x6, "spdif"), /* IN */
> + SUNXI_FUNCTION(0x7, "ledc"),
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 16)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 17),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart2"), /* TX */
> + SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */
> + SUNXI_FUNCTION(0x4, "pwm"),
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
> + SUNXI_FUNCTION(0x6, "ir"), /* TX */
> + SUNXI_FUNCTION(0x7, "uart0"), /* TX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 17)),
> + SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 18),
> + PINCTRL_SUN20I_D1,
> + SUNXI_FUNCTION(0x0, "gpio_in"),
> + SUNXI_FUNCTION(0x1, "gpio_out"),
> + SUNXI_FUNCTION(0x2, "uart2"), /* RX */
> + SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */
> + SUNXI_FUNCTION(0x4, "pwm"),
> + SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
> + SUNXI_FUNCTION(0x6, "spdif"), /* OUT */
> + SUNXI_FUNCTION(0x7, "uart0"), /* RX */
> + SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 18)),
> +};
> +
> +static const unsigned int d1_irq_bank_map[] = { 1, 2, 3, 4, 5, 6 };
> +
> +static const struct sunxi_pinctrl_desc d1_pinctrl_data = {
> + .pins = d1_pins,
> + .npins = ARRAY_SIZE(d1_pins),
> + .irq_banks = ARRAY_SIZE(d1_irq_bank_map),
> + .irq_bank_map = d1_irq_bank_map,
> + .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL,
> +};
> +
> +static int d1_pinctrl_probe(struct platform_device *pdev)
> +{
> + unsigned long variant = (unsigned long)of_device_get_match_data(&pdev->dev);
> +
> + return sunxi_pinctrl_init_with_variant(pdev, &d1_pinctrl_data, variant);
> +}
> +
> +static const struct of_device_id d1_pinctrl_match[] = {
> + {
> + .compatible = "allwinner,sun20i-d1-pinctrl",
> + .data = (void *)PINCTRL_SUN20I_D1
> + },
> + {
> + .compatible = "allwinner,sun20i-d1s-pinctrl",
> + .data = (void *)PINCTRL_SUN20I_D1S
> + },
> + {}
> +};
> +
> +static struct platform_driver d1_pinctrl_driver = {
> + .probe = d1_pinctrl_probe,
> + .driver = {
> + .name = "sun20i-d1-pinctrl",
> + .of_match_table = d1_pinctrl_match,
> + },
> +};
> +builtin_platform_driver(d1_pinctrl_driver);
> diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> index ec7daaa5666b..350044d4c1b5 100644
> --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> @@ -1297,11 +1297,11 @@ static int sunxi_pinctrl_build_state(struct platform_device *pdev)
>
> /*
> * Find an upper bound for the maximum number of functions: in
> - * the worst case we have gpio_in, gpio_out, irq and up to four
> + * the worst case we have gpio_in, gpio_out, irq and up to seven
> * special functions per pin, plus one entry for the sentinel.
> * We'll reallocate that later anyway.
> */
> - pctl->functions = kcalloc(4 * pctl->ngroups + 4,
> + pctl->functions = kcalloc(7 * pctl->ngroups + 4,
> sizeof(*pctl->functions),
> GFP_KERNEL);
> if (!pctl->functions)
> @@ -1494,9 +1494,15 @@ int sunxi_pinctrl_init_with_variant(struct platform_device *pdev,
> pctl->dev = &pdev->dev;
> pctl->desc = desc;
> pctl->variant = variant;
> - pctl->bank_mem_size = BANK_MEM_SIZE;
> - pctl->pull_regs_offset = PULL_REGS_OFFSET;
> - pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH;
> + if (pctl->variant >= PINCTRL_SUN20I_D1) {
> + pctl->bank_mem_size = D1_BANK_MEM_SIZE;
> + pctl->pull_regs_offset = D1_PULL_REGS_OFFSET;
> + pctl->dlevel_field_width = D1_DLEVEL_FIELD_WIDTH;
> + } else {
> + pctl->bank_mem_size = BANK_MEM_SIZE;
> + pctl->pull_regs_offset = PULL_REGS_OFFSET;
> + pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH;
> + }
>
> pctl->irq_array = devm_kcalloc(&pdev->dev,
> IRQ_PER_BANK * pctl->desc->irq_banks,
> diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.h b/drivers/pinctrl/sunxi/pinctrl-sunxi.h
> index c705828add73..f0f48941bc30 100644
> --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.h
> +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.h
> @@ -44,6 +44,10 @@
> #define PULL_REGS_OFFSET 0x1c
> #define PULL_FIELD_WIDTH 2
>
> +#define D1_BANK_MEM_SIZE 0x30
> +#define D1_DLEVEL_FIELD_WIDTH 4
> +#define D1_PULL_REGS_OFFSET 0x24
> +
> #define PINS_PER_BANK 32
>
> #define IRQ_PER_BANK 32
> @@ -88,6 +92,9 @@
> #define PINCTRL_SUN8I_R40 BIT(8)
> #define PINCTRL_SUN8I_V3 BIT(9)
> #define PINCTRL_SUN8I_V3S BIT(10)
> +/* Variants below here have an updated register layout. */
> +#define PINCTRL_SUN20I_D1 BIT(11)
> +#define PINCTRL_SUN20I_D1S BIT(12)
>
> #define PIO_POW_MOD_SEL_REG 0x340
> #define PIO_POW_MOD_CTL_REG 0x344
^ permalink raw reply [relevance 0%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
2022-06-17 13:30 14% ` Victor Hassan
@ 2022-06-28 8:34 6% ` Linus Walleij
0 siblings, 0 replies; 200+ results
From: Linus Walleij @ 2022-06-28 8:34 UTC (permalink / raw)
To: Victor Hassan
Cc: linux, rmk+kernel, yanfei.xu, ardb, tglx, mirq-linux, arnd,
linux-arm-kernel, linux-kernel
On Fri, Jun 17, 2022 at 3:31 PM Victor Hassan <victor@allwinnertech.com> wrote:
> On 4/18/2022 11:08 PM, Victor Hassan wrote:
> > On 18/04/2022 07:21, Linus Walleij wrote:
> >> On Wed, Mar 16, 2022 at 3:33 AM Victor Hassan
> >> <victor@allwinnertech.com> wrote:
> >>
> >>> earlycon uses fixmap to create a memory map,
> >>> So we need to close earlycon before closing fixmap,
> >>> otherwise printk will access illegal addresses.
> >>> After creating a new memory map, we open earlycon again.
> >>>
> >>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
> >>
> >> I think noone really noticed this because everyone on Arm systems
> >> use CONFIG_DEBUG_LL, and that makes printascii hammer out
> >> stuff on the console very early, it even accounts for whether we have
> >> MMU on or not.
> >>
> > Hi Linus,
> > Thank you for the reply. I used earlycon, in early_fixmap_shutdown, the
> > base address of earlycon is in the critical stage of release and
> > reassignment, so early_fixmap_shutdown -> create_mapping should not call
> > earlycon in this process, and create_mapping has a lot of conditions
> > that trigger print, memblock=debug just makes it easier to expose problems.
> >
> >> How are you using this on Arm even? What system and what serial
> >> driver?
> > I'm using serial driver 8250 on arm32, with cmdline: memblock=debug.
> > CONFIG_SERIAL_8250=y
> > CONFIG_SERIAL_8520_CONSOLE=y
> >>
> >> That said, it looks correct.
> >> Acked-by: Linus Walleij <linus.walleij@linaro.org>
>
> Hi Linus,
> Sorry to disturb. Is there any question about this issue? Thank you :)
No, I understand the problem, I provided my ACK.
Maybe you wanna add the patch to Russell's patch tracker so
he can apply it?
https://www.arm.linux.org.uk/developer/patches/
Yours,
Linus Walleij
^ permalink raw reply [relevance 6%]
* [PATCH 6/6] pinctrl: sunxi: Add driver for Allwinner D1/D1s
@ 2022-06-26 2:11 2% ` Samuel Holland
2022-07-02 14:47 0% ` Andre Przywara
0 siblings, 1 reply; 200+ results
From: Samuel Holland @ 2022-06-26 2:11 UTC (permalink / raw)
To: Chen-Yu Tsai, Jernej Skrabec, Linus Walleij
Cc: Samuel Holland, Krzysztof Kozlowski, Maxime Ripard,
Ondrej Jirman, Rob Herring, devicetree, linux-arm-kernel,
linux-gpio, linux-kernel, linux-sunxi
These SoCs contain a pinctrl with a new register layout. Use the variant
parameter to set the right register offsets. This pinctrl also increases
the number of functions per pin from 8 to 16, taking advantage of all 4
bits in the mux config field (so far, only functions 0-8 and 14-15 are
used). This increases the maximum possible number of functions.
D1s is a low pin count version of the D1 SoC, with some pins omitted.
The remaining pins have the same function assignments as D1.
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
drivers/pinctrl/sunxi/Kconfig | 5 +
drivers/pinctrl/sunxi/Makefile | 1 +
drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c | 860 ++++++++++++++++++++++
drivers/pinctrl/sunxi/pinctrl-sunxi.c | 16 +-
drivers/pinctrl/sunxi/pinctrl-sunxi.h | 7 +
5 files changed, 884 insertions(+), 5 deletions(-)
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
index 33751a6a0757..a6ac1c1f2585 100644
--- a/drivers/pinctrl/sunxi/Kconfig
+++ b/drivers/pinctrl/sunxi/Kconfig
@@ -84,6 +84,11 @@ config PINCTRL_SUN9I_A80_R
depends on RESET_CONTROLLER
select PINCTRL_SUNXI
+config PINCTRL_SUN20I_D1
+ bool "Support for the Allwinner D1 PIO"
+ default RISCV && ARCH_SUNXI
+ select PINCTRL_SUNXI
+
config PINCTRL_SUN50I_A64
bool "Support for the Allwinner A64 PIO"
default ARM64 && ARCH_SUNXI
diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile
index d3440c42b9d6..2ff5a55927ad 100644
--- a/drivers/pinctrl/sunxi/Makefile
+++ b/drivers/pinctrl/sunxi/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_SUN8I_A83T_R) += pinctrl-sun8i-a83t-r.o
obj-$(CONFIG_PINCTRL_SUN8I_H3) += pinctrl-sun8i-h3.o
obj-$(CONFIG_PINCTRL_SUN8I_H3_R) += pinctrl-sun8i-h3-r.o
obj-$(CONFIG_PINCTRL_SUN8I_V3S) += pinctrl-sun8i-v3s.o
+obj-$(CONFIG_PINCTRL_SUN20I_D1) += pinctrl-sun20i-d1.o
obj-$(CONFIG_PINCTRL_SUN50I_H5) += pinctrl-sun50i-h5.o
obj-$(CONFIG_PINCTRL_SUN50I_H6) += pinctrl-sun50i-h6.o
obj-$(CONFIG_PINCTRL_SUN50I_H6_R) += pinctrl-sun50i-h6-r.o
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
new file mode 100644
index 000000000000..7247c1f1d92c
--- /dev/null
+++ b/drivers/pinctrl/sunxi/pinctrl-sun20i-d1.c
@@ -0,0 +1,860 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Allwinner D1 SoC pinctrl driver.
+ *
+ * Copyright (c) 2020 wuyan@allwinnertech.com
+ * Copyright (c) 2021-2022 Samuel Holland <samuel@sholland.org>
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/pinctrl/pinctrl.h>
+
+#include "pinctrl-sunxi.h"
+
+static const struct sunxi_desc_pin d1_pins[] = {
+ /* PB */
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 0),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "pwm"),
+ SUNXI_FUNCTION(0x3, "ir"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x5, "spi1"), /* WP */
+ SUNXI_FUNCTION(0x6, "uart0"), /* TX */
+ SUNXI_FUNCTION(0x7, "uart2"), /* TX */
+ SUNXI_FUNCTION(0x8, "spdif"), /* OUT */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 0)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 1),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "pwm"),
+ SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT3 */
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN3 */
+ SUNXI_FUNCTION(0x6, "uart0"), /* RX */
+ SUNXI_FUNCTION(0x7, "uart2"), /* RX */
+ SUNXI_FUNCTION(0x8, "ir"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D0 */
+ SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT2 */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN2 */
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D18 */
+ SUNXI_FUNCTION(0x7, "uart4"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D1 */
+ SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT1 */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN0 */
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D19 */
+ SUNXI_FUNCTION(0x7, "uart4"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D8 */
+ SUNXI_FUNCTION(0x3, "i2s2_dout"), /* DOUT0 */
+ SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */
+ SUNXI_FUNCTION(0x5, "i2s2_din"), /* DIN1 */
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D20 */
+ SUNXI_FUNCTION(0x7, "uart5"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D9 */
+ SUNXI_FUNCTION(0x3, "i2s2"), /* BCLK */
+ SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D21 */
+ SUNXI_FUNCTION(0x7, "uart5"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D16 */
+ SUNXI_FUNCTION(0x3, "i2s2"), /* LRCK */
+ SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D22 */
+ SUNXI_FUNCTION(0x7, "uart3"), /* TX */
+ SUNXI_FUNCTION(0x8, "bist0"), /* BIST_RESULT0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D17 */
+ SUNXI_FUNCTION(0x3, "i2s2"), /* MCLK */
+ SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x5, "ir"), /* RX */
+ SUNXI_FUNCTION(0x6, "lcd0"), /* D23 */
+ SUNXI_FUNCTION(0x7, "uart3"), /* RX */
+ SUNXI_FUNCTION(0x8, "bist1"), /* BIST_RESULT1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 7)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 8),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* DATA3 */
+ SUNXI_FUNCTION(0x3, "pwm"),
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x5, "spi1"), /* HOLD */
+ SUNXI_FUNCTION(0x6, "uart0"), /* TX */
+ SUNXI_FUNCTION(0x7, "uart1"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 8)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 9),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* DATA2 */
+ SUNXI_FUNCTION(0x3, "pwm"),
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x5, "spi1"), /* MISO */
+ SUNXI_FUNCTION(0x6, "uart0"), /* RX */
+ SUNXI_FUNCTION(0x7, "uart1"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 9)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 10),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* DATA1 */
+ SUNXI_FUNCTION(0x3, "pwm"),
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x5, "spi1"), /* MOSI */
+ SUNXI_FUNCTION(0x6, "clk"), /* FANOUT0 */
+ SUNXI_FUNCTION(0x7, "uart1"), /* RTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 10)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 11),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* DATA0 */
+ SUNXI_FUNCTION(0x3, "pwm"),
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x5, "spi1"), /* CLK */
+ SUNXI_FUNCTION(0x6, "clk"), /* FANOUT1 */
+ SUNXI_FUNCTION(0x7, "uart1"), /* CTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 11)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 12),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "dmic"), /* CLK */
+ SUNXI_FUNCTION(0x3, "pwm"),
+ SUNXI_FUNCTION(0x4, "spdif"), /* IN */
+ SUNXI_FUNCTION(0x5, "spi1"), /* CS0 */
+ SUNXI_FUNCTION(0x6, "clk"), /* FANOUT2 */
+ SUNXI_FUNCTION(0x7, "ir"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 0, 12)),
+ /* PC */
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(C, 0),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart2"), /* TX */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x4, "ledc"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 0)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(C, 1),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart2"), /* RX */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* CLK */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* CLK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* CS0 */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* CMD */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* MOSI */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* D2 */
+ SUNXI_FUNCTION(0x4, "boot"), /* SEL0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* MISO */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* D1 */
+ SUNXI_FUNCTION(0x4, "boot"), /* SEL1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* WP */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* D0 */
+ SUNXI_FUNCTION(0x4, "uart3"), /* TX */
+ SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x6, "pll"), /* DBG-CLK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spi0"), /* HOLD */
+ SUNXI_FUNCTION(0x3, "mmc2"), /* D3 */
+ SUNXI_FUNCTION(0x4, "uart3"), /* RX */
+ SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 1, 7)),
+ /* PD */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V0P */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D0P */
+ SUNXI_FUNCTION(0x5, "i2c0"), /* SCK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V0N */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D0N */
+ SUNXI_FUNCTION(0x5, "uart2"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V1P */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D1P */
+ SUNXI_FUNCTION(0x5, "uart2"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V1N */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D1N */
+ SUNXI_FUNCTION(0x5, "uart2"), /* RTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V2P */
+ SUNXI_FUNCTION(0x4, "dsi"), /* CKP */
+ SUNXI_FUNCTION(0x5, "uart2"), /* CTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V2N */
+ SUNXI_FUNCTION(0x4, "dsi"), /* CKN */
+ SUNXI_FUNCTION(0x5, "uart5"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* CKP */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D2P */
+ SUNXI_FUNCTION(0x5, "uart5"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* CKN */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D2N */
+ SUNXI_FUNCTION(0x5, "uart4"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 7)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V3P */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D3P */
+ SUNXI_FUNCTION(0x5, "uart4"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 8)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 9),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */
+ SUNXI_FUNCTION(0x3, "lvds0"), /* V3N */
+ SUNXI_FUNCTION(0x4, "dsi"), /* D3N */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 9)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D14 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V0P */
+ SUNXI_FUNCTION(0x4, "spi1"), /* CS0 */
+ SUNXI_FUNCTION(0x5, "uart3"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 10)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D15 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V0N */
+ SUNXI_FUNCTION(0x4, "spi1"), /* CLK */
+ SUNXI_FUNCTION(0x5, "uart3"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 11)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V1P */
+ SUNXI_FUNCTION(0x4, "spi1"), /* MOSI */
+ SUNXI_FUNCTION(0x5, "i2c0"), /* SDA */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 12)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V1N */
+ SUNXI_FUNCTION(0x4, "spi1"), /* MISO */
+ SUNXI_FUNCTION(0x5, "uart3"), /* RTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 13)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V2P */
+ SUNXI_FUNCTION(0x4, "spi1"), /* HOLD */
+ SUNXI_FUNCTION(0x5, "uart3"), /* CTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 14)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V2N */
+ SUNXI_FUNCTION(0x4, "spi1"), /* WP */
+ SUNXI_FUNCTION(0x5, "ir"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 15)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* CKP */
+ SUNXI_FUNCTION(0x4, "dmic"), /* DATA3 */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 16)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* CKN */
+ SUNXI_FUNCTION(0x4, "dmic"), /* DATA2 */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 17)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V3P */
+ SUNXI_FUNCTION(0x4, "dmic"), /* DATA1 */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 18)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* DE */
+ SUNXI_FUNCTION(0x3, "lvds1"), /* V3N */
+ SUNXI_FUNCTION(0x4, "dmic"), /* DATA0 */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 19)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x4, "dmic"), /* CLK */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 20)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x4, "uart1"), /* TX */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 21)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "spdif"), /* OUT */
+ SUNXI_FUNCTION(0x3, "ir"), /* RX */
+ SUNXI_FUNCTION(0x4, "uart1"), /* RX */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 2, 22)),
+ /* PE */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* HSYNC */
+ SUNXI_FUNCTION(0x3, "uart2"), /* RTS */
+ SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */
+ SUNXI_FUNCTION(0x5, "lcd0"), /* HSYNC */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXCTL/CRS_DV */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* VSYNC */
+ SUNXI_FUNCTION(0x3, "uart2"), /* CTS */
+ SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */
+ SUNXI_FUNCTION(0x5, "lcd0"), /* VSYNC */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXD0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* PCLK */
+ SUNXI_FUNCTION(0x3, "uart2"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
+ SUNXI_FUNCTION(0x6, "uart0"), /* TX */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXD1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "csi0"), /* MCLK */
+ SUNXI_FUNCTION(0x3, "uart2"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
+ SUNXI_FUNCTION(0x6, "uart0"), /* RX */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXCK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D0 */
+ SUNXI_FUNCTION(0x3, "uart4"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
+ SUNXI_FUNCTION(0x6, "d_jtag"), /* MS */
+ SUNXI_FUNCTION(0x7, "r_jtag"), /* MS */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXD0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D1 */
+ SUNXI_FUNCTION(0x3, "uart4"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x5, "ledc"),
+ SUNXI_FUNCTION(0x6, "d_jtag"), /* D1 */
+ SUNXI_FUNCTION(0x7, "r_jtag"), /* D1 */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXD1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D2 */
+ SUNXI_FUNCTION(0x3, "uart5"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x5, "spdif"), /* IN */
+ SUNXI_FUNCTION(0x6, "d_jtag"), /* D0 */
+ SUNXI_FUNCTION(0x7, "r_jtag"), /* D0 */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXCTL/TXEN */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D3 */
+ SUNXI_FUNCTION(0x3, "uart5"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x5, "spdif"), /* OUT */
+ SUNXI_FUNCTION(0x6, "d_jtag"), /* CK */
+ SUNXI_FUNCTION(0x7, "r_jtag"), /* CK */
+ SUNXI_FUNCTION(0x8, "emac"), /* CK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 7)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D4 */
+ SUNXI_FUNCTION(0x3, "uart1"), /* RTS */
+ SUNXI_FUNCTION(0x4, "pwm"),
+ SUNXI_FUNCTION(0x5, "uart3"), /* TX */
+ SUNXI_FUNCTION(0x6, "jtag"), /* MS */
+ SUNXI_FUNCTION(0x8, "emac"), /* MDC */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 8)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D5 */
+ SUNXI_FUNCTION(0x3, "uart1"), /* CTS */
+ SUNXI_FUNCTION(0x4, "pwm"),
+ SUNXI_FUNCTION(0x5, "uart3"), /* RX */
+ SUNXI_FUNCTION(0x6, "jtag"), /* D1 */
+ SUNXI_FUNCTION(0x8, "emac"), /* MDIO */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 9)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D6 */
+ SUNXI_FUNCTION(0x3, "uart1"), /* TX */
+ SUNXI_FUNCTION(0x4, "pwm"),
+ SUNXI_FUNCTION(0x5, "ir"), /* RX */
+ SUNXI_FUNCTION(0x6, "jtag"), /* D0 */
+ SUNXI_FUNCTION(0x8, "emac"), /* EPHY-25M */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 10)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ncsi0"), /* D7 */
+ SUNXI_FUNCTION(0x3, "uart1"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT3 */
+ SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN3 */
+ SUNXI_FUNCTION(0x6, "jtag"), /* CK */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXD2 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 11)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x3, "ncsi0"), /* FIELD */
+ SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT2 */
+ SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN2 */
+ SUNXI_FUNCTION(0x8, "emac"), /* TXD3 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 12)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x3, "pwm"),
+ SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT0 */
+ SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN1 */
+ SUNXI_FUNCTION(0x6, "dmic"), /* DATA3 */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXD2 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 13)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(E, 14),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c1"), /* SCK */
+ SUNXI_FUNCTION(0x3, "d_jtag"), /* MS */
+ SUNXI_FUNCTION(0x4, "i2s0_dout"), /* DOUT1 */
+ SUNXI_FUNCTION(0x5, "i2s0_din"), /* DIN0 */
+ SUNXI_FUNCTION(0x6, "dmic"), /* DATA2 */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXD3 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 14)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(E, 15),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c1"), /* SDA */
+ SUNXI_FUNCTION(0x3, "d_jtag"), /* D1 */
+ SUNXI_FUNCTION(0x4, "pwm"),
+ SUNXI_FUNCTION(0x5, "i2s0"), /* LRCK */
+ SUNXI_FUNCTION(0x6, "dmic"), /* DATA1 */
+ SUNXI_FUNCTION(0x8, "emac"), /* RXCK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 15)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(E, 16),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x3, "d_jtag"), /* D0 */
+ SUNXI_FUNCTION(0x4, "pwm"),
+ SUNXI_FUNCTION(0x5, "i2s0"), /* BCLK */
+ SUNXI_FUNCTION(0x6, "dmic"), /* DATA0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 16)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(E, 17),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x3, "d_jtag"), /* CK */
+ SUNXI_FUNCTION(0x4, "ir"), /* TX */
+ SUNXI_FUNCTION(0x5, "i2s0"), /* MCLK */
+ SUNXI_FUNCTION(0x6, "dmic"), /* CLK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 3, 17)),
+ /* PF */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */
+ SUNXI_FUNCTION(0x3, "jtag"), /* MS */
+ SUNXI_FUNCTION(0x4, "r_jtag"), /* MS */
+ SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT1 */
+ SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */
+ SUNXI_FUNCTION(0x3, "jtag"), /* DI */
+ SUNXI_FUNCTION(0x4, "r_jtag"), /* DI */
+ SUNXI_FUNCTION(0x5, "i2s2_dout"), /* DOUT0 */
+ SUNXI_FUNCTION(0x6, "i2s2_din"), /* DIN1 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */
+ SUNXI_FUNCTION(0x3, "uart0"), /* TX */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x5, "ledc"),
+ SUNXI_FUNCTION(0x6, "spdif"), /* IN */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */
+ SUNXI_FUNCTION(0x3, "jtag"), /* DO */
+ SUNXI_FUNCTION(0x4, "r_jtag"), /* DO */
+ SUNXI_FUNCTION(0x5, "i2s2"), /* BCLK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */
+ SUNXI_FUNCTION(0x3, "uart0"), /* RX */
+ SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION(0x6, "ir"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */
+ SUNXI_FUNCTION(0x3, "jtag"), /* CK */
+ SUNXI_FUNCTION(0x4, "r_jtag"), /* CK */
+ SUNXI_FUNCTION(0x5, "i2s2"), /* LRCK */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x3, "spdif"), /* OUT */
+ SUNXI_FUNCTION(0x4, "ir"), /* RX */
+ SUNXI_FUNCTION(0x5, "i2s2"), /* MCLK */
+ SUNXI_FUNCTION(0x6, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 4, 6)),
+ /* PG */
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */
+ SUNXI_FUNCTION(0x3, "uart3"), /* TX */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXCTRL/CRS_DV */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 0)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */
+ SUNXI_FUNCTION(0x3, "uart3"), /* RX */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXD0 */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 1)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */
+ SUNXI_FUNCTION(0x3, "uart3"), /* RTS */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXD1 */
+ SUNXI_FUNCTION(0x5, "uart4"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 2)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */
+ SUNXI_FUNCTION(0x3, "uart3"), /* CTS */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXCK */
+ SUNXI_FUNCTION(0x5, "uart4"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 3)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */
+ SUNXI_FUNCTION(0x3, "uart5"), /* TX */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXD0 */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 4)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */
+ SUNXI_FUNCTION(0x3, "uart5"), /* RX */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXD1 */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 5)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart1"), /* TX */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXD2 */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 6)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart1"), /* RX */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXD3 */
+ SUNXI_FUNCTION(0x5, "spdif"), /* IN */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 7)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart1"), /* RTS */
+ SUNXI_FUNCTION(0x3, "i2c1"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXD2 */
+ SUNXI_FUNCTION(0x5, "uart3"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 8)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart1"), /* CTS */
+ SUNXI_FUNCTION(0x3, "i2c1"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXD3 */
+ SUNXI_FUNCTION(0x5, "uart3"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 9)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "pwm"),
+ SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* RXCK */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
+ SUNXI_FUNCTION(0x6, "ir"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 10)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1"), /* MCLK */
+ SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* EPHY-25M */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
+ SUNXI_FUNCTION(0x6, "tcon"), /* TRIG0 */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 11)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1"), /* LRCK */
+ SUNXI_FUNCTION(0x3, "i2c0"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* TXCTL/TXEN */
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
+ SUNXI_FUNCTION(0x6, "pwm"),
+ SUNXI_FUNCTION(0x7, "uart1"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 12)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1"), /* BCLK */
+ SUNXI_FUNCTION(0x3, "i2c0"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* CLKIN/RXER */
+ SUNXI_FUNCTION(0x5, "pwm"),
+ SUNXI_FUNCTION(0x6, "ledc"),
+ SUNXI_FUNCTION(0x7, "uart1"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 13)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 14),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1_din"), /* DIN0 */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SCK */
+ SUNXI_FUNCTION(0x4, "emac"), /* MDC */
+ SUNXI_FUNCTION(0x5, "i2s1_dout"), /* DOUT1 */
+ SUNXI_FUNCTION(0x6, "spi0"), /* WP */
+ SUNXI_FUNCTION(0x7, "uart1"), /* RTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 14)),
+ SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 15),
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "i2s1_dout"), /* DOUT0 */
+ SUNXI_FUNCTION(0x3, "i2c2"), /* SDA */
+ SUNXI_FUNCTION(0x4, "emac"), /* MDIO */
+ SUNXI_FUNCTION(0x5, "i2s1_din"), /* DIN1 */
+ SUNXI_FUNCTION(0x6, "spi0"), /* HOLD */
+ SUNXI_FUNCTION(0x7, "uart1"), /* CTS */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 15)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 16),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "ir"), /* RX */
+ SUNXI_FUNCTION(0x3, "tcon"), /* TRIG0 */
+ SUNXI_FUNCTION(0x4, "pwm"),
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT2 */
+ SUNXI_FUNCTION(0x6, "spdif"), /* IN */
+ SUNXI_FUNCTION(0x7, "ledc"),
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 16)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 17),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart2"), /* TX */
+ SUNXI_FUNCTION(0x3, "i2c3"), /* SCK */
+ SUNXI_FUNCTION(0x4, "pwm"),
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT0 */
+ SUNXI_FUNCTION(0x6, "ir"), /* TX */
+ SUNXI_FUNCTION(0x7, "uart0"), /* TX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 17)),
+ SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 18),
+ PINCTRL_SUN20I_D1,
+ SUNXI_FUNCTION(0x0, "gpio_in"),
+ SUNXI_FUNCTION(0x1, "gpio_out"),
+ SUNXI_FUNCTION(0x2, "uart2"), /* RX */
+ SUNXI_FUNCTION(0x3, "i2c3"), /* SDA */
+ SUNXI_FUNCTION(0x4, "pwm"),
+ SUNXI_FUNCTION(0x5, "clk"), /* FANOUT1 */
+ SUNXI_FUNCTION(0x6, "spdif"), /* OUT */
+ SUNXI_FUNCTION(0x7, "uart0"), /* RX */
+ SUNXI_FUNCTION_IRQ_BANK(0xe, 5, 18)),
+};
+
+static const unsigned int d1_irq_bank_map[] = { 1, 2, 3, 4, 5, 6 };
+
+static const struct sunxi_pinctrl_desc d1_pinctrl_data = {
+ .pins = d1_pins,
+ .npins = ARRAY_SIZE(d1_pins),
+ .irq_banks = ARRAY_SIZE(d1_irq_bank_map),
+ .irq_bank_map = d1_irq_bank_map,
+ .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL,
+};
+
+static int d1_pinctrl_probe(struct platform_device *pdev)
+{
+ unsigned long variant = (unsigned long)of_device_get_match_data(&pdev->dev);
+
+ return sunxi_pinctrl_init_with_variant(pdev, &d1_pinctrl_data, variant);
+}
+
+static const struct of_device_id d1_pinctrl_match[] = {
+ {
+ .compatible = "allwinner,sun20i-d1-pinctrl",
+ .data = (void *)PINCTRL_SUN20I_D1
+ },
+ {
+ .compatible = "allwinner,sun20i-d1s-pinctrl",
+ .data = (void *)PINCTRL_SUN20I_D1S
+ },
+ {}
+};
+
+static struct platform_driver d1_pinctrl_driver = {
+ .probe = d1_pinctrl_probe,
+ .driver = {
+ .name = "sun20i-d1-pinctrl",
+ .of_match_table = d1_pinctrl_match,
+ },
+};
+builtin_platform_driver(d1_pinctrl_driver);
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index ec7daaa5666b..350044d4c1b5 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -1297,11 +1297,11 @@ static int sunxi_pinctrl_build_state(struct platform_device *pdev)
/*
* Find an upper bound for the maximum number of functions: in
- * the worst case we have gpio_in, gpio_out, irq and up to four
+ * the worst case we have gpio_in, gpio_out, irq and up to seven
* special functions per pin, plus one entry for the sentinel.
* We'll reallocate that later anyway.
*/
- pctl->functions = kcalloc(4 * pctl->ngroups + 4,
+ pctl->functions = kcalloc(7 * pctl->ngroups + 4,
sizeof(*pctl->functions),
GFP_KERNEL);
if (!pctl->functions)
@@ -1494,9 +1494,15 @@ int sunxi_pinctrl_init_with_variant(struct platform_device *pdev,
pctl->dev = &pdev->dev;
pctl->desc = desc;
pctl->variant = variant;
- pctl->bank_mem_size = BANK_MEM_SIZE;
- pctl->pull_regs_offset = PULL_REGS_OFFSET;
- pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH;
+ if (pctl->variant >= PINCTRL_SUN20I_D1) {
+ pctl->bank_mem_size = D1_BANK_MEM_SIZE;
+ pctl->pull_regs_offset = D1_PULL_REGS_OFFSET;
+ pctl->dlevel_field_width = D1_DLEVEL_FIELD_WIDTH;
+ } else {
+ pctl->bank_mem_size = BANK_MEM_SIZE;
+ pctl->pull_regs_offset = PULL_REGS_OFFSET;
+ pctl->dlevel_field_width = DLEVEL_FIELD_WIDTH;
+ }
pctl->irq_array = devm_kcalloc(&pdev->dev,
IRQ_PER_BANK * pctl->desc->irq_banks,
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.h b/drivers/pinctrl/sunxi/pinctrl-sunxi.h
index c705828add73..f0f48941bc30 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.h
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.h
@@ -44,6 +44,10 @@
#define PULL_REGS_OFFSET 0x1c
#define PULL_FIELD_WIDTH 2
+#define D1_BANK_MEM_SIZE 0x30
+#define D1_DLEVEL_FIELD_WIDTH 4
+#define D1_PULL_REGS_OFFSET 0x24
+
#define PINS_PER_BANK 32
#define IRQ_PER_BANK 32
@@ -88,6 +92,9 @@
#define PINCTRL_SUN8I_R40 BIT(8)
#define PINCTRL_SUN8I_V3 BIT(9)
#define PINCTRL_SUN8I_V3S BIT(10)
+/* Variants below here have an updated register layout. */
+#define PINCTRL_SUN20I_D1 BIT(11)
+#define PINCTRL_SUN20I_D1S BIT(12)
#define PIO_POW_MOD_SEL_REG 0x340
#define PIO_POW_MOD_CTL_REG 0x344
--
2.35.1
^ permalink raw reply related [relevance 2%]
* [PATCH 5.15 091/106] usb: gadget: f_fs: change ep->ep safe in ffs_epfile_io()
2022-06-20 12:51 7% ` [PATCH 5.15 090/106] usb: gadget: f_fs: change ep->status safe in ffs_epfile_io() Greg Kroah-Hartman
@ 2022-06-20 12:51 7% ` Greg Kroah-Hartman
1 sibling, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-06-20 12:51 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Michael Wu, John Keeping, Linyu Yuan
From: Linyu Yuan <quic_linyyuan@quicinc.com>
commit 0698f0209d8032e8869525aeb68f65ee7fde12ad upstream.
In ffs_epfile_io(), when read/write data in blocking mode, it will wait
the completion in interruptible mode, if task receive a signal, it will
terminate the wait, at same time, if function unbind occurs,
ffs_func_unbind() will kfree all eps, ffs_epfile_io() still try to
dequeue request by dereferencing ep which may become invalid.
Fix it by add ep spinlock and will not dereference ep if it is not valid.
Cc: <stable@vger.kernel.org> # 5.15
Reported-by: Michael Wu <michael@allwinnertech.com>
Tested-by: Michael Wu <michael@allwinnertech.com>
Reviewed-by: John Keeping <john@metanate.com>
Signed-off-by: Linyu Yuan <quic_linyyuan@quicinc.com>
Link: https://lore.kernel.org/r/1654863478-26228-3-git-send-email-quic_linyyuan@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/gadget/function/f_fs.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -1080,6 +1080,11 @@ static ssize_t ffs_epfile_io(struct file
spin_unlock_irq(&epfile->ffs->eps_lock);
if (wait_for_completion_interruptible(&io_data->done)) {
+ spin_lock_irq(&epfile->ffs->eps_lock);
+ if (epfile->ep != ep) {
+ ret = -ESHUTDOWN;
+ goto error_lock;
+ }
/*
* To avoid race condition with ffs_epfile_io_complete,
* dequeue the request first then check
@@ -1087,6 +1092,7 @@ static ssize_t ffs_epfile_io(struct file
* condition with req->complete callback.
*/
usb_ep_dequeue(ep->ep, req);
+ spin_unlock_irq(&epfile->ffs->eps_lock);
wait_for_completion(&io_data->done);
interrupted = io_data->status < 0;
}
^ permalink raw reply [relevance 7%]
* [PATCH 5.15 090/106] usb: gadget: f_fs: change ep->status safe in ffs_epfile_io()
@ 2022-06-20 12:51 7% ` Greg Kroah-Hartman
2022-06-20 12:51 7% ` [PATCH 5.15 091/106] usb: gadget: f_fs: change ep->ep " Greg Kroah-Hartman
1 sibling, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-06-20 12:51 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Michael Wu, John Keeping, Linyu Yuan
From: Linyu Yuan <quic_linyyuan@quicinc.com>
commit fb1f16d74e263baa4ad11e31e28b68f144aa55ed upstream.
If a task read/write data in blocking mode, it will wait the completion
in ffs_epfile_io(), if function unbind occurs, ffs_func_unbind() will
kfree ffs ep, once the task wake up, it still dereference the ffs ep to
obtain the request status.
Fix it by moving the request status to io_data which is stack-safe.
Cc: <stable@vger.kernel.org> # 5.15
Reported-by: Michael Wu <michael@allwinnertech.com>
Tested-by: Michael Wu <michael@allwinnertech.com>
Reviewed-by: John Keeping <john@metanate.com>
Signed-off-by: Linyu Yuan <quic_linyyuan@quicinc.com>
Link: https://lore.kernel.org/r/1654863478-26228-2-git-send-email-quic_linyyuan@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/gadget/function/f_fs.c | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -122,8 +122,6 @@ struct ffs_ep {
struct usb_endpoint_descriptor *descs[3];
u8 num;
-
- int status; /* P: epfile->mutex */
};
struct ffs_epfile {
@@ -227,6 +225,9 @@ struct ffs_io_data {
bool use_sg;
struct ffs_data *ffs;
+
+ int status;
+ struct completion done;
};
struct ffs_desc_helper {
@@ -707,12 +708,15 @@ static const struct file_operations ffs_
static void ffs_epfile_io_complete(struct usb_ep *_ep, struct usb_request *req)
{
+ struct ffs_io_data *io_data = req->context;
+
ENTER();
- if (req->context) {
- struct ffs_ep *ep = _ep->driver_data;
- ep->status = req->status ? req->status : req->actual;
- complete(req->context);
- }
+ if (req->status)
+ io_data->status = req->status;
+ else
+ io_data->status = req->actual;
+
+ complete(&io_data->done);
}
static ssize_t ffs_copy_to_iter(void *data, int data_len, struct iov_iter *iter)
@@ -1050,7 +1054,6 @@ static ssize_t ffs_epfile_io(struct file
WARN(1, "%s: data_len == -EINVAL\n", __func__);
ret = -EINVAL;
} else if (!io_data->aio) {
- DECLARE_COMPLETION_ONSTACK(done);
bool interrupted = false;
req = ep->req;
@@ -1066,7 +1069,8 @@ static ssize_t ffs_epfile_io(struct file
io_data->buf = data;
- req->context = &done;
+ init_completion(&io_data->done);
+ req->context = io_data;
req->complete = ffs_epfile_io_complete;
ret = usb_ep_queue(ep->ep, req, GFP_ATOMIC);
@@ -1075,7 +1079,7 @@ static ssize_t ffs_epfile_io(struct file
spin_unlock_irq(&epfile->ffs->eps_lock);
- if (wait_for_completion_interruptible(&done)) {
+ if (wait_for_completion_interruptible(&io_data->done)) {
/*
* To avoid race condition with ffs_epfile_io_complete,
* dequeue the request first then check
@@ -1083,17 +1087,17 @@ static ssize_t ffs_epfile_io(struct file
* condition with req->complete callback.
*/
usb_ep_dequeue(ep->ep, req);
- wait_for_completion(&done);
- interrupted = ep->status < 0;
+ wait_for_completion(&io_data->done);
+ interrupted = io_data->status < 0;
}
if (interrupted)
ret = -EINTR;
- else if (io_data->read && ep->status > 0)
- ret = __ffs_epfile_read_data(epfile, data, ep->status,
+ else if (io_data->read && io_data->status > 0)
+ ret = __ffs_epfile_read_data(epfile, data, io_data->status,
&io_data->data);
else
- ret = ep->status;
+ ret = io_data->status;
goto error_mutex;
} else if (!(req = usb_ep_alloc_request(ep->ep, GFP_ATOMIC))) {
ret = -ENOMEM;
^ permalink raw reply [relevance 7%]
* [PATCH 5.18 114/141] usb: gadget: f_fs: change ep->ep safe in ffs_epfile_io()
2022-06-20 12:50 7% ` [PATCH 5.18 113/141] usb: gadget: f_fs: change ep->status safe in ffs_epfile_io() Greg Kroah-Hartman
@ 2022-06-20 12:50 7% ` Greg Kroah-Hartman
1 sibling, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-06-20 12:50 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Michael Wu, John Keeping, Linyu Yuan
From: Linyu Yuan <quic_linyyuan@quicinc.com>
commit 0698f0209d8032e8869525aeb68f65ee7fde12ad upstream.
In ffs_epfile_io(), when read/write data in blocking mode, it will wait
the completion in interruptible mode, if task receive a signal, it will
terminate the wait, at same time, if function unbind occurs,
ffs_func_unbind() will kfree all eps, ffs_epfile_io() still try to
dequeue request by dereferencing ep which may become invalid.
Fix it by add ep spinlock and will not dereference ep if it is not valid.
Cc: <stable@vger.kernel.org> # 5.15
Reported-by: Michael Wu <michael@allwinnertech.com>
Tested-by: Michael Wu <michael@allwinnertech.com>
Reviewed-by: John Keeping <john@metanate.com>
Signed-off-by: Linyu Yuan <quic_linyyuan@quicinc.com>
Link: https://lore.kernel.org/r/1654863478-26228-3-git-send-email-quic_linyyuan@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/gadget/function/f_fs.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -1080,6 +1080,11 @@ static ssize_t ffs_epfile_io(struct file
spin_unlock_irq(&epfile->ffs->eps_lock);
if (wait_for_completion_interruptible(&io_data->done)) {
+ spin_lock_irq(&epfile->ffs->eps_lock);
+ if (epfile->ep != ep) {
+ ret = -ESHUTDOWN;
+ goto error_lock;
+ }
/*
* To avoid race condition with ffs_epfile_io_complete,
* dequeue the request first then check
@@ -1087,6 +1092,7 @@ static ssize_t ffs_epfile_io(struct file
* condition with req->complete callback.
*/
usb_ep_dequeue(ep->ep, req);
+ spin_unlock_irq(&epfile->ffs->eps_lock);
wait_for_completion(&io_data->done);
interrupted = io_data->status < 0;
}
^ permalink raw reply [relevance 7%]
* [PATCH 5.18 113/141] usb: gadget: f_fs: change ep->status safe in ffs_epfile_io()
@ 2022-06-20 12:50 7% ` Greg Kroah-Hartman
2022-06-20 12:50 7% ` [PATCH 5.18 114/141] usb: gadget: f_fs: change ep->ep " Greg Kroah-Hartman
1 sibling, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-06-20 12:50 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Michael Wu, John Keeping, Linyu Yuan
From: Linyu Yuan <quic_linyyuan@quicinc.com>
commit fb1f16d74e263baa4ad11e31e28b68f144aa55ed upstream.
If a task read/write data in blocking mode, it will wait the completion
in ffs_epfile_io(), if function unbind occurs, ffs_func_unbind() will
kfree ffs ep, once the task wake up, it still dereference the ffs ep to
obtain the request status.
Fix it by moving the request status to io_data which is stack-safe.
Cc: <stable@vger.kernel.org> # 5.15
Reported-by: Michael Wu <michael@allwinnertech.com>
Tested-by: Michael Wu <michael@allwinnertech.com>
Reviewed-by: John Keeping <john@metanate.com>
Signed-off-by: Linyu Yuan <quic_linyyuan@quicinc.com>
Link: https://lore.kernel.org/r/1654863478-26228-2-git-send-email-quic_linyyuan@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/gadget/function/f_fs.c | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -122,8 +122,6 @@ struct ffs_ep {
struct usb_endpoint_descriptor *descs[3];
u8 num;
-
- int status; /* P: epfile->mutex */
};
struct ffs_epfile {
@@ -227,6 +225,9 @@ struct ffs_io_data {
bool use_sg;
struct ffs_data *ffs;
+
+ int status;
+ struct completion done;
};
struct ffs_desc_helper {
@@ -707,12 +708,15 @@ static const struct file_operations ffs_
static void ffs_epfile_io_complete(struct usb_ep *_ep, struct usb_request *req)
{
+ struct ffs_io_data *io_data = req->context;
+
ENTER();
- if (req->context) {
- struct ffs_ep *ep = _ep->driver_data;
- ep->status = req->status ? req->status : req->actual;
- complete(req->context);
- }
+ if (req->status)
+ io_data->status = req->status;
+ else
+ io_data->status = req->actual;
+
+ complete(&io_data->done);
}
static ssize_t ffs_copy_to_iter(void *data, int data_len, struct iov_iter *iter)
@@ -1050,7 +1054,6 @@ static ssize_t ffs_epfile_io(struct file
WARN(1, "%s: data_len == -EINVAL\n", __func__);
ret = -EINVAL;
} else if (!io_data->aio) {
- DECLARE_COMPLETION_ONSTACK(done);
bool interrupted = false;
req = ep->req;
@@ -1066,7 +1069,8 @@ static ssize_t ffs_epfile_io(struct file
io_data->buf = data;
- req->context = &done;
+ init_completion(&io_data->done);
+ req->context = io_data;
req->complete = ffs_epfile_io_complete;
ret = usb_ep_queue(ep->ep, req, GFP_ATOMIC);
@@ -1075,7 +1079,7 @@ static ssize_t ffs_epfile_io(struct file
spin_unlock_irq(&epfile->ffs->eps_lock);
- if (wait_for_completion_interruptible(&done)) {
+ if (wait_for_completion_interruptible(&io_data->done)) {
/*
* To avoid race condition with ffs_epfile_io_complete,
* dequeue the request first then check
@@ -1083,17 +1087,17 @@ static ssize_t ffs_epfile_io(struct file
* condition with req->complete callback.
*/
usb_ep_dequeue(ep->ep, req);
- wait_for_completion(&done);
- interrupted = ep->status < 0;
+ wait_for_completion(&io_data->done);
+ interrupted = io_data->status < 0;
}
if (interrupted)
ret = -EINTR;
- else if (io_data->read && ep->status > 0)
- ret = __ffs_epfile_read_data(epfile, data, ep->status,
+ else if (io_data->read && io_data->status > 0)
+ ret = __ffs_epfile_read_data(epfile, data, io_data->status,
&io_data->data);
else
- ret = ep->status;
+ ret = io_data->status;
goto error_mutex;
} else if (!(req = usb_ep_alloc_request(ep->ep, GFP_ATOMIC))) {
ret = -ENOMEM;
^ permalink raw reply [relevance 7%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
2022-04-18 15:08 14% ` Victor Hassan
@ 2022-06-17 13:30 14% ` Victor Hassan
2022-06-28 8:34 6% ` Linus Walleij
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2022-06-17 13:30 UTC (permalink / raw)
To: Linus Walleij
Cc: linux, rmk+kernel, yanfei.xu, ardb, tglx, mirq-linux, arnd,
linux-arm-kernel, linux-kernel
On 4/18/2022 11:08 PM, Victor Hassan wrote:
> On 18/04/2022 07:21, Linus Walleij wrote:
>> On Wed, Mar 16, 2022 at 3:33 AM Victor Hassan
>> <victor@allwinnertech.com> wrote:
>>
>>> earlycon uses fixmap to create a memory map,
>>> So we need to close earlycon before closing fixmap,
>>> otherwise printk will access illegal addresses.
>>> After creating a new memory map, we open earlycon again.
>>>
>>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>>
>> I think noone really noticed this because everyone on Arm systems
>> use CONFIG_DEBUG_LL, and that makes printascii hammer out
>> stuff on the console very early, it even accounts for whether we have
>> MMU on or not.
>>
> Hi Linus,
> Thank you for the reply. I used earlycon, in early_fixmap_shutdown, the
> base address of earlycon is in the critical stage of release and
> reassignment, so early_fixmap_shutdown -> create_mapping should not call
> earlycon in this process, and create_mapping has a lot of conditions
> that trigger print, memblock=debug just makes it easier to expose problems.
>
>> How are you using this on Arm even? What system and what serial
>> driver?
> I'm using serial driver 8250 on arm32, with cmdline: memblock=debug.
> CONFIG_SERIAL_8250=y
> CONFIG_SERIAL_8520_CONSOLE=y
>>
>> That said, it looks correct.
>> Acked-by: Linus Walleij <linus.walleij@linaro.org>
Hi Linus,
Sorry to disturb. Is there any question about this issue? Thank you :)
^ permalink raw reply [relevance 14%]
* [PATCH 5.18 812/879] thermal: devfreq_cooling: use local ops instead of global ops
2022-06-07 16:51 1% [PATCH 5.18 000/879] 5.18.3-rc1 review Greg Kroah-Hartman
@ 2022-06-07 17:05 7% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-06-07 17:05 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Kant Fan, Lukasz Luba, Rafael J. Wysocki
From: Kant Fan <kant@allwinnertech.com>
commit b947769b8f778db130aad834257fcaca25df2edc upstream.
Fix access illegal address problem in following condition:
There are multiple devfreq cooling devices in system, some of them has
EM model but others do not. Energy model ops such as state2power will
append to global devfreq_cooling_ops when the cooling device with
EM model is registered. It makes the cooling device without EM model
also use devfreq_cooling_ops after appending when registered later by
of_devfreq_cooling_register_power() or of_devfreq_cooling_register().
The IPA governor regards the cooling devices without EM model as a power
actor, because they also have energy model ops, and will access illegal
address at dfc->em_pd when execute cdev->ops->get_requested_power,
cdev->ops->state2power or cdev->ops->power2state.
Fixes: 615510fe13bd2 ("thermal: devfreq_cooling: remove old power model and use EM")
Cc: 5.13+ <stable@vger.kernel.org> # 5.13+
Signed-off-by: Kant Fan <kant@allwinnertech.com>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/thermal/devfreq_cooling.c | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
--- a/drivers/thermal/devfreq_cooling.c
+++ b/drivers/thermal/devfreq_cooling.c
@@ -358,21 +358,28 @@ of_devfreq_cooling_register_power(struct
struct thermal_cooling_device *cdev;
struct device *dev = df->dev.parent;
struct devfreq_cooling_device *dfc;
+ struct thermal_cooling_device_ops *ops;
char *name;
int err, num_opps;
- dfc = kzalloc(sizeof(*dfc), GFP_KERNEL);
- if (!dfc)
+ ops = kmemdup(&devfreq_cooling_ops, sizeof(*ops), GFP_KERNEL);
+ if (!ops)
return ERR_PTR(-ENOMEM);
+ dfc = kzalloc(sizeof(*dfc), GFP_KERNEL);
+ if (!dfc) {
+ err = -ENOMEM;
+ goto free_ops;
+ }
+
dfc->devfreq = df;
dfc->em_pd = em_pd_get(dev);
if (dfc->em_pd) {
- devfreq_cooling_ops.get_requested_power =
+ ops->get_requested_power =
devfreq_cooling_get_requested_power;
- devfreq_cooling_ops.state2power = devfreq_cooling_state2power;
- devfreq_cooling_ops.power2state = devfreq_cooling_power2state;
+ ops->state2power = devfreq_cooling_state2power;
+ ops->power2state = devfreq_cooling_power2state;
dfc->power_ops = dfc_power;
@@ -407,8 +414,7 @@ of_devfreq_cooling_register_power(struct
if (!name)
goto remove_qos_req;
- cdev = thermal_of_cooling_device_register(np, name, dfc,
- &devfreq_cooling_ops);
+ cdev = thermal_of_cooling_device_register(np, name, dfc, ops);
kfree(name);
if (IS_ERR(cdev)) {
@@ -429,6 +435,8 @@ free_table:
kfree(dfc->freq_table);
free_dfc:
kfree(dfc);
+free_ops:
+ kfree(ops);
return ERR_PTR(err);
}
@@ -510,11 +518,13 @@ EXPORT_SYMBOL_GPL(devfreq_cooling_em_reg
void devfreq_cooling_unregister(struct thermal_cooling_device *cdev)
{
struct devfreq_cooling_device *dfc;
+ const struct thermal_cooling_device_ops *ops;
struct device *dev;
if (IS_ERR_OR_NULL(cdev))
return;
+ ops = cdev->ops;
dfc = cdev->devdata;
dev = dfc->devfreq->dev.parent;
@@ -525,5 +535,6 @@ void devfreq_cooling_unregister(struct t
kfree(dfc->freq_table);
kfree(dfc);
+ kfree(ops);
}
EXPORT_SYMBOL_GPL(devfreq_cooling_unregister);
^ permalink raw reply [relevance 7%]
* [PATCH 5.18 000/879] 5.18.3-rc1 review
@ 2022-06-07 16:51 1% Greg Kroah-Hartman
2022-06-07 17:05 7% ` [PATCH 5.18 812/879] thermal: devfreq_cooling: use local ops instead of global ops Greg Kroah-Hartman
0 siblings, 1 reply; 200+ results
From: Greg Kroah-Hartman @ 2022-06-07 16:51 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, slade
This is the start of the stable review cycle for the 5.18.3 release.
There are 879 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 09 Jun 2022 16:48:02 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.18.3-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.18.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.18.3-rc1
Tony Lindgren <tony@atomide.com>
tty: n_gsm: Fix packet data hex dump output
Ziyang Xuan <william.xuanziyang@huawei.com>
macsec: fix UAF bug for real_dev
Jia-Ju Bai <baijiaju1990@gmail.com>
md: bcache: check the return value of kzalloc() in detached_dev_do_request()
Xiao Ni <xni@redhat.com>
md: fix double free of io_acct_set bioset
Xiao Ni <xni@redhat.com>
md: Don't set mddev private to NULL in raid0 pers->free
Namjae Jeon <linkinjeon@kernel.org>
fs/ntfs3: Fix invalid free in log_replay
Christian Brauner <brauner@kernel.org>
exportfs: support idmapped mounts
Christian Brauner <brauner@kernel.org>
fs: add two trivial lookup helpers
Eric Biggers <ebiggers@google.com>
ext4: only allow test_dummy_encryption when supported
Xiao Yang <yangx.jy@fujitsu.com>
RDMA/rxe: Generate a completion for unsupported/invalid opcode
Yixing Liu <liuyixing1@huawei.com>
RDMA/hns: Remove the num_cqc_timer variable
Carlos Llamas <cmllamas@google.com>
binder: fix sender_euid type in uapi header
Dan Carpenter <dan.carpenter@oracle.com>
staging: r8188eu: delete rtw_wx_read/write32()
Jason A. Donenfeld <Jason@zx2c4.com>
Revert "random: use static branch for crng_ready()"
Zhengjun Xing <zhengjun.xing@linux.intel.com>
perf evlist: Extend arch_evsel__must_be_in_group to support hybrid systems
Waiman Long <longman@redhat.com>
kseltest/cgroup: Make test_stress.sh work if run interactively
Sean Young <sean@mess.org>
media: lirc: add missing exceptions for lirc uapi header file
Alex Elder <elder@linaro.org>
net: ipa: fix page free in ipa_endpoint_replenish_one()
Alex Elder <elder@linaro.org>
net: ipa: fix page free in ipa_endpoint_trans_release()
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp: fix reset-controller leak on probe errors
Mao Jinlong <quic_jinlmao@quicinc.com>
coresight: core: Fix coresight device probe failure issue
Tejun Heo <tj@kernel.org>
blk-iolatency: Fix inflight count imbalances and IO hangs on offline
Eugenio Pérez <eperezma@redhat.com>
vdpasim: allow to enable a vq repeatedly
Dinh Nguyen <dinguyen@kernel.org>
dt-bindings: gpio: altera: correct interrupt-cells
Akira Yokosawa <akiyks@gmail.com>
docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0
Steve French <stfrench@microsoft.com>
SMB3: EBADF/EIO errors in rename/open caused by race condition in smb2_compound_op
Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
misc: fastrpc: fix list iterator in fastrpc_req_mem_unmap_impl
Luís Henriques <lhenriques@suse.de>
ceph: fix decoding of client session messages flags
Arnd Bergmann <arnd@arndb.de>
ARM: pxa: maybe fix gpio lookup tables
Jonathan Bakker <xc-racer2@live.ca>
ARM: dts: s5pv210: Remove spi-cs-high on panel in Aries
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp: fix struct clk leak on probe errors
Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
clk: tegra: Add missing reset deassertion
Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
arm64: tegra: Add missing DFLL reset on Tegra210
Kathiravan T <quic_kathirav@quicinc.com>
arm64: dts: qcom: ipq8074: fix the sleep clock frequency
Xiaomeng Tong <xiam0nd.tong@gmail.com>
gma500: fix an incorrect NULL check on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator
Jiri Slaby <jirislaby@kernel.org>
serial: pch: don't overwrite xmit->buf[0] by x_char
Coly Li <colyli@suse.de>
bcache: avoid journal no-space deadlock by reserving 1 journal bucket
Coly Li <colyli@suse.de>
bcache: remove incremental dirty sector counting for bch_sectors_dirty_init()
Coly Li <colyli@suse.de>
bcache: improve multithreaded bch_sectors_dirty_init()
Coly Li <colyli@suse.de>
bcache: improve multithreaded bch_btree_check()
Xiaomeng Tong <xiam0nd.tong@gmail.com>
stm: ltdc: fix two incorrect NULL checks on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
carl9170: tx: fix an incorrect use of list iterator
Mark Brown <broonie@kernel.org>
ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control
Alexander Wetzel <alexander@wetzel-home.de>
rtl818x: Prevent using not initialized queues
Yi Yang <yiyang13@huawei.com>
xtensa/simdisk: fix proc_read_simdisk()
Miaohe Lin <linmiaohe@huawei.com>
mm/memremap: fix missing call to untrack_pfn() in pagemap_range()
Mike Kravetz <mike.kravetz@oracle.com>
hugetlb: fix huge_pmd_unshare address update
Christophe de Dinechin <dinechin@redhat.com>
nodemask.h: fix compilation error with GCC12
Mel Gorman <mgorman@techsingularity.net>
mm/page_alloc: always attempt to allocate at least one page during bulk allocation
Eric Dumazet <edumazet@google.com>
mm/page_owner: use strscpy() instead of strlcpy()
Dong Aisheng <aisheng.dong@nxp.com>
Revert "mm/cma.c: remove redundant cma_mutex lock"
Masami Hiramatsu <mhiramat@kernel.org>
kprobes: Fix build errors with CONFIG_KRETPROBES=n
Yunfei Wang <yf.wang@mediatek.com>
iommu/dma: Fix iova map result check bug
Xiaomeng Tong <xiam0nd.tong@gmail.com>
iommu/msm: Fix an incorrect NULL check on list iterator
Hyunchul Lee <hyc.lee@gmail.com>
ksmbd: fix outstanding credits related bugs
Song Liu <song@kernel.org>
ftrace: Clean up hash direct_functions on register failures
Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
Maciej W. Rozycki <macro@orcam.me.uk>
MIPS: IP30: Remove incorrect `cpu_has_fpu' override
Maciej W. Rozycki <macro@orcam.me.uk>
MIPS: IP27: Remove incorrect `cpu_has_fpu' override
Vincent Whitchurch <vincent.whitchurch@axis.com>
um: Fix out-of-bounds read in LDT setup
Johannes Berg <johannes.berg@intel.com>
um: chan_user: Fix winch_tramp() return value
Johannes Berg <johannes.berg@intel.com>
um: Use asm-generic/dma-mapping.h
Johannes Berg <johannes.berg@intel.com>
um: virtio_uml: Fix broken device handling in time-travel
Felix Fietkau <nbd@nbd.name>
mac80211: upgrade passive scan to active scan on DFS channels after beacon rx
Dimitri John Ledkov <dimitri.ledkov@canonical.com>
cfg80211: declare MODULE_FIRMWARE for regulatory.db
Felix Fietkau <nbd@nbd.name>
mt76: fix use-after-free by removing a non-RCU wcid pointer
Kant Fan <kant@allwinnertech.com>
thermal: devfreq_cooling: use local ops instead of global ops
Max Filippov <jcmvbkbc@gmail.com>
irqchip: irq-xtensa-mx: fix initial IRQ affinity
Pali Rohár <pali@kernel.org>
irqchip/armada-370-xp: Do not touch Performance Counter Overflow on A375, A38x, A39x
Guo Ren <guoren@kernel.org>
csky: patch_text: Fixup last cpu should be master
Bean Huo <beanhuo@micron.com>
mmc: core: Allows to override the timeout value for ioctl() path
Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
RDMA/hfi1: Fix potential integer multiplication overflow errors
Puyou Lu <puyou.lu@gmail.com>
lib/string_helpers: fix not adding strarray to device's resource list
Sean Christopherson <seanjc@google.com>
Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug
GUO Zihua <guozihua@huawei.com>
ima: remove the IMA_TEMPLATE Kconfig option
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: coda: Add more H264 levels for CODA960
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: coda: Fix reported H264 profile
Tokunori Ikegami <ikegami.t@gmail.com>
mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N
Tokunori Ikegami <ikegami.t@gmail.com>
mtd: cfi_cmdset_0002: Move and rename chip_check/chip_ready/chip_good_for_write
Xiaomeng Tong <xiam0nd.tong@gmail.com>
md: fix an incorrect NULL check in md_reload_sb
Xiaomeng Tong <xiam0nd.tong@gmail.com>
md: fix an incorrect NULL check in does_sb_need_changing
Jani Nikula <jani.nikula@intel.com>
drm/i915/dsi: fix VBT send packet port selection for ICL+
Brian Norris <briannorris@chromium.org>
drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX
Xiaomeng Tong <xiam0nd.tong@gmail.com>
drm/nouveau/kms/nv50-: atom: fix an incorrect NULL check on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
drm/nouveau/clk: Fix an incorrect NULL check on list iterator
Lucas Stach <l.stach@pengutronix.de>
drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem
Lyude Paul <lyude@redhat.com>
drm/nouveau/subdev/bus: Ratelimit logging for fault errors
Dave Airlie <airlied@redhat.com>
drm/amdgpu/cs: make commands with 0 chunks illegal behaviour.
Mickaël Salaün <mic@digikod.net>
landlock: Fix same-layer rule unions
Mickaël Salaün <mic@digikod.net>
landlock: Create find_rule() from unmask_layers()
Mickaël Salaün <mic@digikod.net>
landlock: Reduce the maximum number of layers to 16
Mickaël Salaün <mic@digikod.net>
landlock: Define access_mask_t to enforce a consistent access mask size
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Test landlock_create_ruleset(2) argument check ordering
Mickaël Salaün <mic@digikod.net>
landlock: Change landlock_restrict_self(2) check ordering
Mickaël Salaün <mic@digikod.net>
landlock: Change landlock_add_rule(2) argument check ordering
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add tests for O_PATH
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Fully test file rename with "remove" access
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Extend access right tests to directories
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add tests for unknown access rights
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Extend tests for minimal valid attribute size
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Make tests build with old libc
Mickaël Salaün <mic@digikod.net>
landlock: Fix landlock_add_rule(2) documentation
Mickaël Salaün <mic@digikod.net>
samples/landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
samples/landlock: Add clang-format exceptions
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Normalize array assignment
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add clang-format exceptions
Mickaël Salaün <mic@digikod.net>
landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
landlock: Add clang-format exceptions
Manivannan Sadhasivam <mani@kernel.org>
scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled
Xiaomeng Tong <xiam0nd.tong@gmail.com>
scsi: dc395x: Fix a missing check on list iterator
Junxiao Bi via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock
Alexander Aring <aahringo@redhat.com>
dlm: fix missing lkb refcount handling
Alexander Aring <aahringo@redhat.com>
dlm: fix wake_up() calls for pending remove
Dan Carpenter <dan.carpenter@oracle.com>
dlm: uninitialized variable on error in dlm_listen_for_all()
Alexander Aring <aahringo@redhat.com>
dlm: fix plock invalid read
Sven Schnelle <svens@linux.ibm.com>
s390/stp: clock_delta should be signed
Nico Boehr <nrb@linux.ibm.com>
s390/perf: obtain sie_block from the right address
Rei Yamamoto <yamamoto.rei@jp.fujitsu.com>
mm, compaction: fast_find_migrateblock() should return pfn in the target zone
Damien Le Moal <damien.lemoal@opensource.wdc.com>
block: Fix potential deadlock in blk_ia_range_sysfs_show()
Denis Efremov <denis.e.efremov@oracle.com>
staging: r8188eu: prevent ->Ssid overflow in rtw_wx_set_scan()
Johan Hovold <johan+linaro@kernel.org>
PCI: qcom: Fix unbalanced PHY init on probe errors
Johan Hovold <johan+linaro@kernel.org>
PCI: qcom: Fix runtime PM imbalance on probe errors
Johan Hovold <johan+linaro@kernel.org>
PCI: qcom: Fix pipe clock imbalance
Bjorn Helgaas <bhelgaas@google.com>
PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: add beige goby PCI ID
Gautam Menghani <gautammenghani201@gmail.com>
tracing: Initialize integer variable to prevent garbage return value
Wonhyuk Yang <vvghjk1234@gmail.com>
tracing: Fix return value of trace_pid_write()
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
tracing: Fix potential double free in create_var_ref()
Steven Rostedt (Google) <rostedt@goodmis.org>
tracing: Have event format check not flag %p* on __get_dynamic_array()
Laurent Vivier <laurent@vivier.eu>
tty: goldfish: Introduce gf_ioread32()/gf_iowrite32()
Sakari Ailus <sakari.ailus@linux.intel.com>
ACPI: property: Release subnode properties with data nodes
Jan Kara <jack@suse.cz>
ext4: avoid cycles in directory h-tree
Jan Kara <jack@suse.cz>
ext4: verify dir block before splitting it
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search
Theodore Ts'o <tytso@mit.edu>
ext4: filter out EXT4_FC_REPLAY from on-disk superblock field s_state
Ye Bin <yebin10@huawei.com>
ext4: fix bug_on in ext4_writepages
Eric Biggers <ebiggers@google.com>
ext4: fix memory leak in parse_apply_sb_mount_options()
Ye Bin <yebin10@huawei.com>
ext4: fix warning in ext4_handle_inode_extension
Baokun Li <libaokun1@huawei.com>
ext4: fix race condition between ext4_write and ext4_convert_inline_data
Ojaswin Mujoo <ojaswin@linux.ibm.com>
ext4: fix journal_ioprio mount option handling
Ye Bin <yebin10@huawei.com>
ext4: fix use-after-free in ext4_rename_dir_prepare
Dmitry Monakhov <dmtrmonakhov@yandex-team.ru>
ext4: mark group as trimmed only if it was fully scanned
Jan Kara <jack@suse.cz>
bfq: Make sure bfqg for which we are queueing requests is online
Jan Kara <jack@suse.cz>
bfq: Get rid of __bio_blkcg() usage
Jan Kara <jack@suse.cz>
bfq: Track whether bfq_group is still online
Jan Kara <jack@suse.cz>
bfq: Remove pointless bfq_init_rq() calls
Jan Kara <jack@suse.cz>
bfq: Drop pointless unlock-lock pair
Jan Kara <jack@suse.cz>
bfq: Update cgroup information before merging bio
Jan Kara <jack@suse.cz>
bfq: Split shared queues on move between cgroups
Jan Kara <jack@suse.cz>
bfq: Avoid merging queues with different parents
Jan Kara <jack@suse.cz>
bfq: Avoid false marking of bic as stably merged
Aditya Garg <gargaditya08@live.com>
efi: Do not import certificates from UEFI Secure Boot for T2 Macs
Zhihao Cheng <chengzhihao1@huawei.com>
fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according skipped pages
Miaoqian Lin <linmq006@gmail.com>
ipmi:ipmb: Fix refcount leak in ipmi_ipmb_probe
Johannes Berg <johannes.berg@intel.com>
iwlwifi: mei: fix potential NULL-ptr deref
Avraham Stern <avraham.stern@intel.com>
iwlwifi: mei: clear the sap data header before sending
Emmanuel Grumbach <emmanuel.grumbach@intel.com>
iwlwifi: mvm: fix assert 1F04 upon reconfig
Johannes Berg <johannes.berg@intel.com>
iwlwifi: fw: init SAR GEO table only if data is present
Johannes Berg <johannes.berg@intel.com>
wifi: mac80211: fix use-after-free in chanctx code
Peter Zijlstra <peterz@infradead.org>
objtool: Fix symbol creation
Mikulas Patocka <mpatocka@redhat.com>
objtool: Fix objtool regression on x32 systems
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check for inline inode
Chao Yu <chao@kernel.org>
f2fs: fix fallocate to use file_modified to update permissions consistently
Eric Biggers <ebiggers@google.com>
f2fs: don't use casefolded comparison for "." and ".."
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on total_data_blocks
Jaegeuk Kim <jaegeuk@kernel.org>
f2fs: don't need inode lock for system hidden quota
Chao Yu <chao@kernel.org>
f2fs: fix deadloop in foreground GC
Chao Yu <chao@kernel.org>
f2fs: fix to clear dirty inode in f2fs_evict_inode()
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on block address in f2fs_do_zero_range()
Chao Yu <chao@kernel.org>
f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count()
Olga Kornievskaia <kolga@netapp.com>
NFSv4.1 mark qualified async operations as MOVEABLE tasks
Benjamin Coddington <bcodding@redhat.com>
NFSv4: Fix free of uninitialized nfs4_label on referral lookup.
Javier Martinez Canillas <javierm@redhat.com>
video: fbdev: vesafb: Fix a use-after-free due early fb_info cleanup
Zhengjun Xing <zhengjun.xing@linux.intel.com>
perf jevents: Fix event syntax error caused by ExtSel
Daniel Bristot de Oliveira <bristot@kernel.org>
tracing/timerlat: Notify IRQ new max latency only if stop tracing is set
Daniel Bristot de Oliveira <bristot@kernel.org>
rtla: Remove procps-ng dependency
Daniel Bristot de Oliveira <bristot@kernel.org>
rtla: Fix __set_sched_attr error message
John Kacur <jkacur@redhat.com>
rtla: Minor grammar fix for rtla README
John Kacur <jkacur@redhat.com>
rtla: Don't overwrite existing directory mode
Wan Jiabing <wanjiabing@vivo.com>
rtla: Avoid record NULL pointer dereference
Leo Yan <leo.yan@linaro.org>
perf c2c: Use stdio interface if slang is not supported
Jiri Olsa <jolsa@kernel.org>
perf build: Fix btf__load_from_kernel_by_id() feature check
Tiezhu Yang <yangtiezhu@loongson.cn>
MIPS: RALINK: Define pci_remap_iospace under CONFIG_PCI_DRIVERS_GENERIC
Palmer Dabbelt <palmer@rivosinc.com>
RISC-V: Fix the XIP build
Palmer Dabbelt <palmer@rivosinc.com>
RISC-V: Split out the XIP fixups into their own file
Li Huafei <lihuafei1@huawei.com>
tracing: Reset the function filter after completing trampoline/graph selftest
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
i2c: rcar: fix PM ref counts in probe error paths
Tali Perry <tali.perry1@gmail.com>
i2c: npcm: Handle spurious interrupts
Tyrone Ting <kfting@nuvoton.com>
i2c: npcm: Correct register access width
Tali Perry <tali.perry1@gmail.com>
i2c: npcm: Fix timeout calculation
Joerg Roedel <jroedel@suse.de>
iommu/amd: Increase timeout waiting for GA log enablement
Amelie Delaunay <amelie.delaunay@foss.st.com>
dmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler()
Amelie Delaunay <amelie.delaunay@foss.st.com>
dmaengine: stm32-mdma: remove GISR1 register
Miaoqian Lin <linmq006@gmail.com>
video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup
Dave Wysochanski <dwysocha@redhat.com>
NFS: Pass i_size to fscache_unuse_cookie() when a file is released
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Further fixes to the writeback error handling
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Don't report errors from nfs_pageio_complete() more than once
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Do not report flush errors in nfs_write_end()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Don't report ENOSPC write errors twice
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Do not report EINTR/ERESTARTSYS as mapping errors
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
dmaengine: idxd: Fix the error handling path in idxd_cdev_register()
Nathan Chancellor <nathan@kernel.org>
i2c: at91: Initialize dma_buf in at91_twi_xfer()
Miles Chen <miles.chen@mediatek.com>
iommu/mediatek: Fix NULL pointer dereference when printing dev_name
Guenter Roeck <linux@roeck-us.net>
MIPS: Loongson: Use hwmon_device_register_with_groups() to register hwmon
Jean-Philippe Brucker <jean-philippe@linaro.org>
iommu/arm-smmu-v3-sva: Fix mm use-after-free
Rex-BC Chen <rex-bc.chen@mediatek.com>
cpufreq: mediatek: Unregister platform device on exit
Jia-Wei Chang <jia-wei.chang@mediatek.com>
cpufreq: mediatek: Use module_init and add module_exit
Michael Walle <michael@walle.cc>
i2c: at91: use dma safe buffers
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Add mutex for m4u_group and m4u_dom in data
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Remove clk_disable in mtk_iommu_remove
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Add list_del in mtk_iommu_remove
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Fix 2 HW sharing pgtable issue
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
iommu/amd: Do not call sleep while holding spinlock
Mario Limonciello <mario.limonciello@amd.com>
iommu/amd: Enable swiotlb in all cases
Guo Ren <guoren@kernel.org>
riscv: Fixup difference with defconfig
Jakob Koschel <jakobkoschel@gmail.com>
f2fs: fix dereference of stale list iterator after loop body
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on inline_dots inode
Jayesh Choudhary <j-choudhary@ti.com>
dmaengine: ti: k3-psil-am62: Update PSIL thread for saul.
Dan Carpenter <dan.carpenter@oracle.com>
OPP: call of_node_put() on error path in _bandwidth_supported()
Dmitry Torokhov <dmitry.torokhov@gmail.com>
Input: stmfts - do not leave device disabled in stmfts_input_open
Wanpeng Li <wanpengli@tencent.com>
KVM: LAPIC: Drop pending LAPIC timer injection when canceling the timer
Hector Martin <marcan@marcan.st>
pinctrl: apple: Use a raw spinlock for the regmap
Douglas Miller <doug.miller@cornelisnetworks.com>
RDMA/hfi1: Prevent use of lock before it is initialized
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
RDMA/rxe: Fix an error handling path in rxe_get_mcg()
Björn Ardö <bjorn.ardo@axis.com>
mailbox: forward the hrtimer if not queued and under a lock
Julian Schroeder <jumaco@amazon.com>
nfsd: destroy percpu stats counters after reply cache shutdown
Yang Yingliang <yangyingliang@huawei.com>
mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
gpio: sim: Use correct order for the parameters of devm_kcalloc()
Christophe Leroy <christophe.leroy@csgroup.eu>
powerpc/fsl_book3e: Don't set rodata RO too early
Vaibhav Jain <vaibhav@linux.ibm.com>
powerpc/papr_scm: Fix leaking nvdimm_events_map elements
Miaoqian Lin <linmq006@gmail.com>
powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup
Miaoqian Lin <linmq006@gmail.com>
powerpc/xive: Fix refcount leak in xive_spapr_init
Randy Dunlap <rdunlap@infradead.org>
macintosh: via-pmu and via-cuda need RTC_LIB
Kajol Jain <kjain@linux.ibm.com>
powerpc/perf: Fix the threshold compare group constraint for power9
Kajol Jain <kjain@linux.ibm.com>
powerpc/perf: Fix the threshold compare group constraint for power10
Russell Currey <ruscur@russell.cc>
powerpc/powernv: Get STF barrier requirements from device-tree
Russell Currey <ruscur@russell.cc>
powerpc/powernv: Get L1D flush requirements from device-tree
Michael Ellerman <mpe@ellerman.id.au>
powerpc/64: Only WARN if __pa()/__va() called with bad addresses
Mario Limonciello <mario.limonciello@amd.com>
mailbox: pcc: Fix an invalid-load caught by the address sanitizer
Kan Liang <kan.liang@linux.intel.com>
perf stat: Always keep perf metrics topdown events in a group
Ian Rogers <irogers@google.com>
perf evlist: Keep topdown counters in weak group
Yang Yingliang <yangyingliang@huawei.com>
hwrng: omap3-rom - fix using wrong clk_disable() in omap_rom_rng_runtime_resume()
Dan Williams <dan.j.williams@intel.com>
cxl/mem: Drop mem_enabled check from wait_for_media()
Daire McNamara <daire.mcnamara@microchip.com>
PCI: microchip: Fix potential race in interrupt handling
Fabiano Rosas <farosas@linux.ibm.com>
KVM: PPC: Book3S HV: Fix vcore_blocked tracepoint
Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits
Miaoqian Lin <linmq006@gmail.com>
Input: sparcspkr - fix refcount leak in bbc_beep_probe
Jane Chu <jane.chu@oracle.com>
mce: fix set_mce_nospec to always unmap the whole page
Jane Chu <jane.chu@oracle.com>
x86/mce: relocate set{clear}_mce_nospec() functions
Mina Almasry <almasrymina@google.com>
hugetlbfs: fix hugetlbfs_statfs() locking
Michael Walle <michael@walle.cc>
ARM: dts: lan966x: swap dma channels for crypto node
Eugen Hristev <eugen.hristev@microchip.com>
ARM: dts: at91: sama7g5: remove interrupt-parent from gic node
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
crypto: cryptd - Protect per-CPU resource by disabling BH.
Corentin Labbe <clabbe@baylibre.com>
crypto: sun8i-ss - handle zero sized sg
Corentin Labbe <clabbe@baylibre.com>
crypto: sun8i-ss - rework handling of IV
Qi Zheng <zhengqi.arch@bytedance.com>
tty: fix deadlock caused by calling printk() under tty_port->lock
Alexey Dobriyan <adobriyan@gmail.com>
module: fix [e_shstrndx].sh_size=0 OOB access
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
module.h: simplify MODULE_IMPORT_NS
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
PCI: mediatek-gen3: Assert resets to ensure expected init state
Francesco Dolcini <francesco.dolcini@toradex.com>
PCI: imx6: Fix PERST# start-up sequence
Waiman Long <longman@redhat.com>
ipc/mqueue: use get_tree_nodev() in mqueue_get_tree()
Alexey Dobriyan <adobriyan@gmail.com>
proc: fix dentry/inode overinstantiating under /proc/${pid}/net
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: atmel-classd: Remove endianness flag on class d component
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: atmel-pdmic: Remove endianness flag on pdmic component
Robert Marko <robert.marko@sartura.hr>
arm64: dts: marvell: espressobin-ultra: enable front USB3 port
Robert Marko <robert.marko@sartura.hr>
arm64: dts: marvell: espressobin-ultra: fix SPI-NOR config
Yangyang Li <liyangyang20@huawei.com>
RDMA/hns: Add the detection for CMDQ status in the device initialization process
Randy Dunlap <rdunlap@infradead.org>
powerpc/4xx/cpm: Fix return value of __setup() handler
Randy Dunlap <rdunlap@infradead.org>
powerpc/idle: Fix return value of __setup() handler
Yang Yingliang <yangyingliang@huawei.com>
pinctrl: renesas: core: Fix possible null-ptr-deref in sh_pfc_map_resources()
Geert Uytterhoeven <geert+renesas@glider.be>
pinctrl: renesas: r8a779f0: Fix GPIO function on I2C-capable pins
Geert Uytterhoeven <geert+renesas@glider.be>
pinctrl: renesas: r8a779a0: Fix GPIO function on I2C-capable pins
Randy Dunlap <rdunlap@infradead.org>
powerpc/8xx: export 'cpm_setbrg' for modules
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/dpu: fix error check return value of irq_of_parse_and_map()
Kuniyuki Iwashima <kuniyu@amazon.co.jp>
list: fix a data-race around ep->rdllist
Heming Zhao via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: fix mounting crash if journal is not alloced
Sudeep Holla <sudeep.holla@arm.com>
firmware: arm_ffa: Remove incorrect assignment of driver_data
Sudeep Holla <sudeep.holla@arm.com>
firmware: arm_ffa: Fix uuid parameter to ffa_partition_probe
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
drivers/base/memory: fix an unlikely reference counting issue in __add_memory_block()
Muchun Song <songmuchun@bytedance.com>
dax: fix cache flush on PMD-mapped pages
Miaohe Lin <linmiaohe@huawei.com>
drivers/base/node.c: fix compaction sysfs file leak
Jacky Li <jackyli@google.com>
crypto: ccp - Fix the INIT_EX data file open failure
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
pinctrl: mvebu: Fix irq_of_parse_and_map() return value
Dan Williams <dan.j.williams@intel.com>
nvdimm: Allow overwrite in the presence of disabled dimms
Dan Williams <dan.j.williams@intel.com>
nvdimm: Fix firmware activation deadlock scenarios
Cristian Marussi <cristian.marussi@arm.com>
firmware: arm_scmi: Fix list protocols enumeration in the base protocol
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
ASoC: sh: rz-ssi: Propagate error codes returned from platform_get_irq_byname()
Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
arm64: dts: ti: k3-am64-mcu: remove incorrect UART base clock rates
QintaoShen <unSimple1993@163.com>
soc: bcm: Check for NULL return of devm_kzalloc()
Gustavo A. R. Silva <gustavoars@kernel.org>
scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac()
Lv Ruyi <lv.ruyi@zte.com.cn>
mfd: ipaq-micro: Fix error check return value of platform_get_irq()
Hari Bathini <hbathini@linux.ibm.com>
powerpc/fadump: fix PT_LOAD segment for boot memory area
Andrea Parri (Microsoft) <parri.andrea@gmail.com>
Drivers: hv: vmbus: Fix handling of messages with transaction ID of zero
Vinod Koul <vkoul@kernel.org>
arm64: dts: qcom: qrb5165-rb5: Fix can-clock node name
Fabien Parent <fparent@baylibre.com>
pinctrl: mediatek: mt8195: enable driver on mtk platforms
Caleb Connolly <kc@postmarketos.org>
pinctrl/rockchip: support deferring other gpio params
Chuanhong Guo <gch981213@gmail.com>
arm: mediatek: select arch timer for mt7629
Chia-I Wu <olvaffe@gmail.com>
drm/msm: return the average load over the polling period
Chia-I Wu <olvaffe@gmail.com>
drm/msm: simplify gpu_busy callback
Stefan Wahren <stefan.wahren@i2se.com>
pinctrl: bcm2835: implement hook for missing gpio-ranges
Stefan Wahren <stefan.wahren@i2se.com>
gpiolib: of: Introduce hook for missing gpio-ranges
Corentin Labbe <clabbe@baylibre.com>
crypto: marvell/cesa - ECB does not IV
Vladis Dronov <vdronov@redhat.com>
hwrng: cn10k - Make check_rng_health() return an error code
Vladis Dronov <vdronov@redhat.com>
hwrng: cn10k - Optimize cn10k_rng_read()
Hangyu Hua <hbh25y@gmail.com>
misc: ocxl: fix possible double free in ocxl_file_register_afu
Stefan Wahren <stefan.wahren@i2se.com>
ARM: dts: bcm2835-rpi-b: Fix GPIO line names
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT
Vinod Koul <vkoul@kernel.org>
arm64: dts: qcom: sm8450: Fix missing iommus for qup1
Vinod Koul <vkoul@kernel.org>
arm64: dts: qcom: sm8450: Fix missing iommus for qup
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: qcom: sdx55: remove wrong unit address from RPMH RSC clocks
Bryan O'Donoghue <bryan.odonoghue@linaro.org>
dt-bindings: soc: qcom: smd-rpm: Fix missing MSM8936 compatible
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Fix PHY post-reset delay on Avenger96
Marc Kleine-Budde <mkl@pengutronix.de>
can: xilinx_can: mark bit timing constants as const
Guenter Roeck <linux@roeck-us.net>
platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls
Max Krummenacher <max.krummenacher@toradex.com>
ARM: dts: imx6dl-colibri: Fix I2C pinmuxing
Tzung-Bi Shih <tzungbi@kernel.org>
platform/chrome: cros_ec: fix error handling in cros_ec_register()
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - set COMPRESSION capability for DH895XCC
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - set CIPHER capability for DH895XCC
Sudeep Holla <sudeep.holla@arm.com>
arm64: dts: juno: Fix SCMI power domain IDs for ETF and CS funnel
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Leave most VM-Exit info fields unmodified on failed VM-Entry
Dan Williams <dan.j.williams@intel.com>
cxl/pci: Make cxl_dvsec_ranges() failure not fatal to cxl_pci
Dan Williams <dan.j.williams@intel.com>
cxl/pci: Add debug for DVSEC range init failures
Bjorn Andersson <bjorn.andersson@linaro.org>
soc: qcom: llcc: Add MODULE_DEVICE_TABLE()
Stephen Boyd <swboyd@chromium.org>
arm64: dts: qcom: sc7280-herobrine: Drop outputs on fpmcu pins
Stephen Boyd <swboyd@chromium.org>
arm64: dts: qcom: sc7280: Fix sar1_irq_odl node name
Thorsten Scherer <t.scherer@eckelmann.de>
ARM: dts: ci4x10: Adapt to changes in imx6qdl.dtsi regarding fec clocks
Jiantao Zhang <water.zhangjiantao@huawei.com>
PCI: dwc: Fix setting error return on MSI DMA mapping failure
Miaoqian Lin <linmq006@gmail.com>
PCI: mediatek: Fix refcount leak in mtk_pcie_subsys_powerup()
Dan Carpenter <dan.carpenter@oracle.com>
PCI: rockchip: Fix find_first_zero_bit() limit
Dan Carpenter <dan.carpenter@oracle.com>
PCI: cadence: Fix find_first_zero_bit() limit
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
arm64: defconfig: reenable SM_DISPCC_8250
Miaoqian Lin <linmq006@gmail.com>
soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc
Miaoqian Lin <linmq006@gmail.com>
soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc
Andre Przywara <andre.przywara@arm.com>
ARM: dts: suniv: F1C100: fix watchdog compatible
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM5301X: Update pin controller node name
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
memory: samsung: exynos5422-dmc: Avoid some over memory allocation
Mario Limonciello <mario.limonciello@amd.com>
PCI/ACPI: Allow D3 only if Root Port can signal and wake from D3
Allen-KH Cheng <allen-kh.cheng@mediatek.com>
arm64: dts: mt8192: Fix nor_flash status disable typo
Shawn Lin <shawn.lin@rock-chips.com>
arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399
Sean Young <sean@mess.org>
media: lirc: revert removal of unused feature flags
liuyacan <liuyacan@corp.netease.com>
Revert "net/smc: fix listen processing for SMC-Rv2"
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Bluetooth: hci_conn: Fix hci_connect_le_sync
Robin Murphy <robin.murphy@arm.com>
dma-direct: don't over-decrypt memory
liuyacan <liuyacan@corp.netease.com>
net/smc: fix listen processing for SMC-Rv2
liuyacan <liuyacan@corp.netease.com>
net/smc: postpone sk_refcnt increment in connect()
Randy Dunlap <rdunlap@infradead.org>
net: dsa: restrict SMSC_LAN9303_I2C kconfig
Ioana Ciornei <ioana.ciornei@nxp.com>
dpaa2-eth: unmap the SGT buffer before accessing its contents
Ioana Ciornei <ioana.ciornei@nxp.com>
dpaa2-eth: use the correct software annotation field
Ioana Ciornei <ioana.ciornei@nxp.com>
dpaa2-eth: retrieve the virtual address before dma_unmap
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
hinic: Avoid some over memory allocation
David Howells <dhowells@redhat.com>
rxrpc: Fix decision on when to generate an IDLE ACK
David Howells <dhowells@redhat.com>
rxrpc: Don't let ack.previousPacket regress
David Howells <dhowells@redhat.com>
rxrpc: Fix overlapping ACK accounting
David Howells <dhowells@redhat.com>
rxrpc: Don't try to resend the request if we're receiving the reply
David Howells <dhowells@redhat.com>
rxrpc: Fix listen() setting the bar too high for the prealloc rings
David Howells <dhowells@redhat.com>
rxrpc: Fix locking issue
Adam Wujek <dev_public@wujek.eu>
hwmon: (pmbus) Check PEC support before reading other registers
Guenter Roeck <linux@roeck-us.net>
hwmon: (dimmtemp) Fix bitmap handling
Yongzhi Liu <lyz_cs@pku.edu.cn>
hv_netvsc: Fix potential dereference of NULL pointer
Taehee Yoo <ap420073@gmail.com>
amt: fix memory leak for advertisement message
Taehee Yoo <ap420073@gmail.com>
amt: fix gateway mode stuck
Jakub Kicinski <kuba@kernel.org>
net: stmmac: fix out-of-bounds access in a selftest
Kan Liang <kan.liang@linux.intel.com>
perf parse-events: Support different format of the topdown event name
Alexey Khoroshilov <khoroshilov@ispras.ru>
ASoC: max98090: Move check for invalid values before casting in max98090_put_enab_tlv()
Hangbin Liu <liuhangbin@gmail.com>
bonding: fix missed rcu protection
Duoming Zhou <duoming@zju.edu.cn>
NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx
John Garry <john.garry@huawei.com>
scsi: hisi_sas: Fix memory ordering in hisi_sas_task_deliver()
John Garry <john.garry@huawei.com>
scsi: hisi_sas: Fix rescan after deleting a disk
Harini Katakam <harini.katakam@xilinx.com>
net: macb: Fix PTP one step sync support
Ulf Hansson <ulf.hansson@linaro.org>
PM: domains: Fix initialization of genpd's next_wakeup
Heikki Krogerus <heikki.krogerus@linux.intel.com>
platform/x86: intel_cht_int33fe: Set driver data
Ulf Hansson <ulf.hansson@linaro.org>
cpuidle: riscv-sbi: Fix code to allow a genpd governor to be used
Ulf Hansson <ulf.hansson@linaro.org>
cpuidle: psci: Fix regression leading to no genpd governor
Yang Yingliang <yangyingliang@huawei.com>
ASoC: wm2000: fix missing clk_disable_unprepare() on error in wm2000_anc_transition()
YueHaibing <yuehaibing@huawei.com>
ASoC: codecs: lpass: Fix passing zero to 'PTR_ERR'
Jan Kara <jack@suse.cz>
bfq: Allow current waker to defend against a tentative one
Jan Kara <jack@suse.cz>
bfq: Relax waker detection for shared queues
Miaoqian Lin <linmq006@gmail.com>
thermal/drivers/imx_sc_thermal: Fix refcount leak in imx_sc_thermal_probe
Yang Yingliang <yangyingliang@huawei.com>
thermal/core: Fix memory leak in __thermal_cooling_device_register()
Zheng Yongjun <zhengyongjun3@huawei.com>
thermal/drivers/broadcom: Fix potential NULL dereference in sr_thermal_probe
Stefan Wahren <stefan.wahren@i2se.com>
thermal/drivers/bcm2711: Don't clamp temperature at zero
Nathan Chancellor <nathan@kernel.org>
drm/i915: Fix CFI violation with show_dynamic_id()
Abhinav Kumar <quic_abhinavk@quicinc.com>
drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path
Hangbin Liu <liuhangbin@gmail.com>
selftests/bpf: Add missed ima_setup.sh in Makefile
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm: don't free the IRQ if it was not requested
Lai Jiangshan <jiangshan.ljs@antgroup.com>
x86/sev: Annotate stack change in the #VC handler
Hangyu Hua <hbh25y@gmail.com>
drm: msm: fix possible memory leak in mdp5_crtc_cursor_set()
Miaoqian Lin <linmq006@gmail.com>
drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init
Douglas Anderson <dianders@chromium.org>
drm/msm/dsi: don't powerup at modeset time for parade-ps8640
Eric Biggers <ebiggers@google.com>
ext4: reject the 'commit' option on ext2 filesystems
Moshe Tal <moshet@nvidia.com>
net/mlx5e: Correct the calculation of max channels for rep
Gao Xiang <hsiangkao@linux.alibaba.com>
erofs: fix buffer copy overflow of ztailpacking feature
Wolfgang Bumiller <w.bumiller@proxmox.com>
blk-cgroup: always terminate io.stat lines
Miaoqian Lin <linmq006@gmail.com>
regulator: scmi: Fix refcount leak in scmi_regulator_probe
Jonas Karlman <jonas@kwiboo.se>
media: rkvdec: h264: Fix bit depth wrap in pps packet
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: rkvdec: h264: Fix dpb_valid implementation
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: rkvdec: Stop overclocking the decoder
Yang Yingliang <yangyingliang@huawei.com>
media: i2c: ov5648: fix wrong pointer passed to IS_ERR() and PTR_ERR()
Mike Pagano <mpagano@gentoo.org>
media: i2c: ov2640: Depend on V4L2_ASYNC
Dongliang Mu <mudongliangabcd@gmail.com>
media: ov7670: remove ov7670_power_off from ov7670_remove
Andre Przywara <andre.przywara@arm.com>
kselftest/arm64: bti: force static linking
Miaoqian Lin <linmq006@gmail.com>
ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_*
Zheng Bin <zhengbin13@huawei.com>
net: hinic: add missing destroy_workqueue in hinic_pf_to_mgmt_init
Eric Dumazet <edumazet@google.com>
sctp: read sk->sk_bound_dev_if once in sctp_rcv()
Eric Dumazet <edumazet@google.com>
net: annotate races around sk->sk_bound_dev_if
Geert Uytterhoeven <geert@linux-m68k.org>
m68k: math-emu: Fix dependencies of math emulation support
Keith Busch <kbusch@kernel.org>
nvme: set dma alignment to dword
Mark Rutland <mark.rutland@arm.com>
irqchip/gic-v3: Fix priority mask handling
Mark Rutland <mark.rutland@arm.com>
irqchip/gic-v3: Refactor ISB + EOIR at ack time
Mark Rutland <mark.rutland@arm.com>
irqchip/gic-v3: Ensure pseudo-NMIs have an ISB between ack and handling
Dylan Yudaken <dylany@fb.com>
io_uring: only wake when the correct events are set
Pavel Begunkov <asml.silence@gmail.com>
io_uring: avoid io-wq -EAGAIN looping for !IOPOLL
Yunfei Dong <yunfei.dong@mediatek.com>
media: mediatek: vcodec: Fix v4l2 compliance decoder cmd test fail
Sean Wang <sean.wang@mediatek.com>
Bluetooth: btmtksdio: fix the reset takes too long
Sean Wang <sean.wang@mediatek.com>
Bluetooth: btmtksdio: fix possible FW initialization failure
Sean Wang <sean.wang@mediatek.com>
Bluetooth: btmtksdio: fix use-after-free at btmtksdio_recv_event
Niels Dossche <dossche.niels@gmail.com>
Bluetooth: protect le accept and resolv lists with hdev->lock
Niels Dossche <dossche.niels@gmail.com>
Bluetooth: use hdev lock for accept_list and reject_list in conn req
Niels Dossche <dossche.niels@gmail.com>
Bluetooth: use hdev lock in activate_scan for hci_is_adv_monitoring
Ying Hsu <yinghsu@chromium.org>
Bluetooth: fix dangling sco_conn and use-after-free in sco_sock_timeout
Sean Wang <sean.wang@mediatek.com>
Bluetooth: mt7921s: Fix the incorrect pointer check
Benjamin Gaignard <benjamin.gaignard@collabora.com>
media: hantro: HEVC: Fix tile info buffer value computation
Eugen Hristev <eugen.hristev@microchip.com>
media: atmel: atmel-sama5d2-isc: fix wrong mask in YUYV format check
Michael Rodin <mrodin@de.adit-jv.com>
media: vsp1: Fix offset calculation for plane cropping
Randy Dunlap <rdunlap@infradead.org>
media: make RADIO_ADAPTERS tristate
Pavel Skripkin <paskripkin@gmail.com>
media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init
Miaoqian Lin <linmq006@gmail.com>
media: exynos4-is: Change clk_disable to clk_disable_unprepare
Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
media: i2c: rdacm2x: properly set subdev entity function
Miaoqian Lin <linmq006@gmail.com>
media: atmel: atmel-isc: Fix PM disable depth imbalance in atmel_isc_probe
Miaoqian Lin <linmq006@gmail.com>
media: st-delta: Fix PM disable depth imbalance in delta_probe
Peter Chiu <chui-hao.chiu@mediatek.com>
mt76: mt7915: fix twt table_mask to u16 in mt7915_dev
Felix Fietkau <nbd@nbd.name>
mt76: fix tx status related use-after-free race on station removal
Felix Fietkau <nbd@nbd.name>
mt76: do not attempt to reorder received 802.3 packets without agg session
Sean Wang <sean.wang@mediatek.com>
mt76: mt7921: fix kernel crash at mt7921_pci_remove
Deren Wu <deren.wu@mediatek.com>
mt76: fix antenna config missing in 6G cap
Lorenzo Bianconi <lorenzo@kernel.org>
mt76: mt7915: report rx mode value in mt7915_mac_fill_rx_rate
Lorenzo Bianconi <lorenzo@kernel.org>
mt76: mt7915: do not pass data pointer to mt7915_mcu_muru_debug_set
Lorenzo Bianconi <lorenzo@kernel.org>
mt76: mt7915: fix possible NULL pointer dereference in mt7915_mac_fill_rx_vector
Lorenzo Bianconi <lorenzo@kernel.org>
mt76: mt7915: fix possible uninitialized pointer dereference in mt7986_wmac_gpio_setup
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
mt76: mt7921: Fix the error handling path of mt7921_pci_probe()
Lorenzo Bianconi <lorenzo@kernel.org>
mt76: mt7915: fix unbounded shift in mt7915_mcu_beacon_mbss
Lorenzo Bianconi <lorenzo@kernel.org>
mt76: mt7921: honor pm user configuration in mt7921_sniffer_interface_iter
Felix Fietkau <nbd@nbd.name>
mt76: mt7915: fix DBDC default band selection on MT7915D
Miaoqian Lin <linmq006@gmail.com>
media: exynos4-is: Fix PM disable depth imbalance in fimc_is_probe
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
media: aspeed: Fix an error handling path in aspeed_video_probe()
Josh Poimboeuf <jpoimboe@kernel.org>
scripts/faddr2line: Fix overlapping text section failures
Phil Auld <pauld@redhat.com>
kselftest/cgroup: fix test_stress.sh to use OUTPUT dir
Bart Van Assche <bvanassche@acm.org>
block: Fix the bio.bi_opf comment
Miaoqian Lin <linmq006@gmail.com>
ASoC: samsung: Fix refcount leak in aries_audio_probe
Christoph Hellwig <hch@lst.de>
dma-direct: don't fail on highmem CMA pages in dma_direct_alloc_pages
Pierre Gondois <Pierre.Gondois@arm.com>
PM: EM: Decrement policy counter
Miaoqian Lin <linmq006@gmail.com>
regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt
Miaoqian Lin <linmq006@gmail.com>
ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: imx-hdmi: Fix refcount leak in imx_hdmi_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe
Basavaraj Natikar <Basavaraj.Natikar@amd.com>
HID: amd_sfh: Modify the hid name
Basavaraj Natikar <Basavaraj.Natikar@amd.com>
HID: amd_sfh: Modify the bus name
Ajay Singh <ajay.kathat@microchip.com>
wilc1000: fix crash observed in AP mode with cfg80211_register_netdevice()
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix dmabuf ptr assignment in lpfc_ct_reject_event()
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix element offset in __lpfc_sli_release_iocbq_s4()
Baochen Qiang <quic_bqiang@quicinc.com>
ath11k: Don't check arvif->is_started before sending management frames
Ravi Bangoria <ravi.bangoria@amd.com>
perf/amd/ibs: Use interrupt regs ip for stack unwinding
Jerome Marchand <jmarchan@redhat.com>
samples: bpf: Don't fail for a missing VMLINUX_BTF when VMLINUX_H is provided
Konrad Dybcio <konrad.dybcio@somainline.org>
regulator: qcom_smd: Fix up PM8950 regulator configuration
Viresh Kumar <viresh.kumar@linaro.org>
Revert "cpufreq: Fix possible race in cpufreq online error path"
Andrii Nakryiko <andrii@kernel.org>
selftests/bpf: Prevent skeleton generation race
Yang Yingliang <yangyingliang@huawei.com>
spi: spi-fsl-qspi: check return value after calling platform_get_resource_byname()
Andreas Gruenbacher <agruenba@redhat.com>
iomap: iomap_write_failed fix
Mark Rutland <mark.rutland@arm.com>
arm64: stackleak: fix current_top_of_stack()
Xiaomeng Tong <xiam0nd.tong@gmail.com>
media: uvcvideo: Fix missing check to determine if element is found in list
Dan Carpenter <dan.carpenter@oracle.com>
drm/msm: return an error pointer in msm_gem_prime_get_sg_table()
Jessica Zhang <quic_jesszhan@quicinc.com>
drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is detected
Jessica Zhang <quic_jesszhan@quicinc.com>
drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is detected
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: fix event thread stuck in wait_event after kthread_stop()
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/dsi: fix address for second DSI PHY on SDM660
Vinod Polimera <quic_vpolimer@quicinc.com>
drm/msm/disp/dpu1: avoid clearing hw interrupts if hw_intr is null during drm uninit
Ilkka Koskinen <ilkka@os.amperecomputing.com>
ACPI: AGDI: Fix missing prototype warning for acpi_agdi_init()
Peter Zijlstra <peterz@infradead.org>
linkage: Fix issue with missing symbol size
H. Nikolaus Schaller <hns@goldelico.com>
wl1251: dynamically allocate memory used for DMA
Zev Weiss <zev@bewilderbeest.net>
regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET
Tong Tiangen <tongtiangen@huawei.com>
arm64: fix types in copy_highpage()
Randy Dunlap <rdunlap@infradead.org>
x86/mm: Cleanup the control_va_addr_alignment() __setup handler
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value
Daniel Thompson <daniel.thompson@linaro.org>
irqchip/exiu: Fix acknowledgment of edge triggered interrupts
Randy Dunlap <rdunlap@infradead.org>
x86: Fix return value of __setup handlers
Johannes Berg <johannes.berg@intel.com>
nl80211: don't hold RTNL in color change request
Christoph Hellwig <hch@lst.de>
virtio_blk: fix the discard_granularity and discard_alignment queue limits
James Clark <james.clark@arm.com>
perf tools: Use Python devtools for version autodetection rather than runtime
Ian Abbott <abbotti@mev.co.uk>
spi: cadence-quadspi: fix Direct Access Mode disable for SoCFPGA
Yang Yingliang <yangyingliang@huawei.com>
drm/rockchip: vop: fix possible null-ptr-deref in vop_bind()
Daniel Latypov <dlatypov@google.com>
kunit: fix debugfs code to use enum kunit_status, not bool
Luca Weiss <luca@z3ntu.xyz>
drm/msm: Fix null pointer dereferences without iommu
Pin-Yen Lin <treapking@chromium.org>
drm/bridge: it6505: Send DPCD SET_POWER to downstream
Jagan Teki <jagan@amarulasolutions.com>
drm/panel: panel-simple: Fix proper bpc for AM-1280800N3TZQW-T00H
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm: add missing include to msm_drv.c
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/hdmi: fix error check return value of irq_of_parse_and_map()
Yang Yingliang <yangyingliang@huawei.com>
drm/msm/hdmi: check return value after calling platform_get_resource_byname()
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/dsi: fix error checks and return values for DSI xmit functions
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: do not stop transmitting phy test pattern during DP phy compliance test
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: reset DP controller before transmit phy test pattern
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/dp: fix error check return value of irq_of_parse_and_map()
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: stop event kernel thread when DP unbind
Vinod Polimera <quic_vpolimer@quicinc.com>
drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after memory free during pm runtime resume
Yang Jihong <yangjihong1@huawei.com>
perf tools: Add missing headers needed by util/data.h
Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
ASoC: rk3328: fix disabling mclk on pclk probe failure
Josh Poimboeuf <jpoimboe@redhat.com>
x86/speculation: Add missing prototype for unpriv_ebpf_notify()
Yang Yingliang <yangyingliang@huawei.com>
mtd: rawnand: intel: fix possible null-ptr-deref in ebu_nand_probe()
Yang Yingliang <yangyingliang@huawei.com>
mtd: rawnand: cadence: fix possible null-ptr-deref in cadence_nand_dt_probe()
Matthieu Baerts <matthieu.baerts@tessares.net>
x86/pm: Fix false positive kmemleak report in msr_build_context()
Chen-Tsung Hsieh <chentsung@chromium.org>
mtd: spi-nor: core: Check written SR value in spi_nor_write_16bit_sr_and_check()
Andrii Nakryiko <andrii@kernel.org>
libbpf: Fix logic for finding matching program for CO-RE relocation
Colin Ian King <colin.king@intel.com>
selftests/resctrl: Fix null pointer dereference on open failed
Colin Ian King <colin.king@intel.com>
drm/v3d: Fix null pointer dereference of pointer perfmon
Kiwoong Kim <kwmad.kim@samsung.com>
scsi: ufs: core: Exclude UECxx from SFR dump list
Bart Van Assche <bvanassche@acm.org>
scsi: ufs: qcom: Fix ufs_qcom_resume()
Dan Carpenter <dan.carpenter@oracle.com>
scsi: iscsi: Fix harmless double shift bug
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dpu: adjust display_v_end for eDP and DP
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm: properly add and remove internal bridges
Yuanchu Xie <yuanchu@google.com>
selftests/damon: add damon to selftests root Makefile
Nuno Sá <nuno.sa@analog.com>
of: overlay: do not break notify on NOTIFY_{OK|STOP}
Luca Ceresoli <luca.ceresoli@bootlin.com>
spi: rockchip: fix missing error on unsupported SPI_CS_HIGH
Amir Goldstein <amir73il@gmail.com>
fsnotify: fix wrong lockdep annotations
Amir Goldstein <amir73il@gmail.com>
inotify: show inotify mask flags in proc fdinfo
Bjørn Mork <bjorn@mork.no>
mtdblock: warn if opened on NAND
Colin Ian King <colin.king@intel.com>
ALSA: pcm: Check for null pointer of pointer substream before dereferencing it
Marek Vasut <marex@denx.de>
drm/panel: simple: Add missing bus flags for Innolux G070Y2-L01
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
media: imx: imx-mipi-csis: Fix active format initialization on source pad
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
media: imx: imx-mipi-csis: Rename csi_state to mipi_csis_device
Chen-Yu Tsai <wenst@chromium.org>
media: hantro: Empty encoder capture buffers by default
Chen-Yu Tsai <wenst@chromium.org>
media: hantro: Implement support for encoder commands
Ming Qian <ming.qian@nxp.com>
media: amphion: fix decoder's interlaced field
Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
media: i2c: max9286: fix kernel oops when removing module
Dan Carpenter <dan.carpenter@oracle.com>
ath9k_htc: fix potential out of bounds access with invalid rxstatus->rs_keyix
John Ogness <john.ogness@linutronix.de>
printk: wake waiters for safe and NMI contexts
John Ogness <john.ogness@linutronix.de>
printk: add missing memory barrier to wake_up_klogd()
Schspa Shi <schspa@gmail.com>
cpufreq: Fix possible race in cpufreq online error path
Robert Foss <robert.foss@linaro.org>
drm/bridge: Fix it6505 Kconfig DRM_DP_AUX_BUS dependency
Zheng Yongjun <zhengyongjun3@huawei.com>
spi: img-spfi: Fix pm_runtime_get_sync() error checking
Chengming Zhou <zhouchengming@bytedance.com>
sched/psi: report zeroes for CPU full at the system level
Chengming Zhou <zhouchengming@bytedance.com>
sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
Marco Elver <elver@google.com>
signal: Deliver SIGTRAP on perf event asynchronously if blocked
Nícolas F. R. A. Prado <nfraprado@collabora.com>
drm/mediatek: dpi: Use mt8183 output formats for mt8192
Wei Yongjun <weiyongjun1@huawei.com>
regulator: da9121: Fix uninit-value in da9121_assign_chip_model()
Miaoqian Lin <linmq006@gmail.com>
drm/bridge: Fix error handling in analogix_dp_probe
Miaoqian Lin <linmq006@gmail.com>
HID: elan: Fix potential double free in elan_input_configured
Jonathan Teh <jonathan.teh@outlook.com>
HID: hid-led: fix maximum brightness for Dream Cheeky
Zheyu Ma <zheyuma97@gmail.com>
mtd: rawnand: denali: Use managed device resources
Nícolas F. R. A. Prado <nfraprado@collabora.com>
drm/bridge: anx7625: Use uint8 for lane-swing arrays
Stanislav Fomichev <sdf@google.com>
bpf: Move rcu lock management out of BPF_PROG_RUN routines
Tyler Hicks <tyhicks@linux.microsoft.com>
EDAC/dmc520: Don't print an error for each unconfigured interrupt line
Arnd Bergmann <arnd@arndb.de>
drbd: fix duplicate array initializer
Christoph Hellwig <hch@lst.de>
drbd: use bdev_alignment_offset instead of queue_alignment_offset
Christoph Hellwig <hch@lst.de>
drbd: use bdev based limit helpers in drbd_send_sizes
Christoph Hellwig <hch@lst.de>
drbd: remove assign_p_sizes_qlim
Christoph Hellwig <hch@lst.de>
target: remove an incorrect unmap zeroes data deduction
Ansuel Smith <ansuelsmth@gmail.com>
net: dsa: qca8k: correctly handle mdio read error
Gavin Wan <Gavin.Wan@amd.com>
drm/amd/amdgpu: Remove static from variable in RLCG Reg RW
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
device property: Allow error pointer to be passed to fwnode APIs
Jan Kiszka <jan.kiszka@siemens.com>
efi: Add missing prototype for efi_capsule_setup_info
Javier Martinez Canillas <javierm@redhat.com>
efi: Allow to enable EFI runtime services by default on RT
Kevin Hao <haokexin@gmail.com>
cpufreq: governor: Use kobject release() method to free dbs_data
Lin Ma <linma@zju.edu.cn>
NFC: NULL out the dev->rfkill to prevent UAF
Lv Ruyi <lv.ruyi@zte.com.cn>
ixp4xx_eth: fix error check return value of platform_get_irq()
Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
net: dsa: mt7530: 1G can also support 1000BASE-X link mode
YueHaibing <yuehaibing@huawei.com>
net: ethernet: ti: am65-cpsw: Fix build error without PHYLINK
Paul E. McKenney <paulmck@kernel.org>
scftorture: Fix distribution of short handler delays
Miaoqian Lin <linmq006@gmail.com>
spi: spi-ti-qspi: Fix return value handling of wait_for_completion_timeout
Yongqiang Sun <yongqiang.sun@amd.com>
drm/amd/amdgpu: Fix asm/hypervisor.h build error.
Jiasheng Jiang <jiasheng@iscas.ac.cn>
drm: mali-dp: potential dereference of null pointer
Zhou Qingyang <zhou1615@umn.edu>
drm/komeda: Fix an undefined behavior bug in komeda_plane_add()
Johannes Berg <johannes.berg@intel.com>
nl80211: show SSID for P2P_GO interfaces
Paolo Abeni <pabeni@redhat.com>
mptcp: reset the packet scheduler on PRIO change
Paolo Abeni <pabeni@redhat.com>
mptcp: reset the packet scheduler on incoming MP_PRIO
Paolo Abeni <pabeni@redhat.com>
mptcp: optimize release_cb for the common case
Maciej W. Rozycki <macro@orcam.me.uk>
x86/PCI: Fix ALi M1487 (IBC) PIRQ router link value interpretation
Andrii Nakryiko <andrii@kernel.org>
libbpf: Don't error out on CO-RE relos for overriden weak subprogs
Maxime Ripard <maxime@cerno.tech>
drm/vc4: txp: Force alpha to be 0xff if it's disabled
Maxime Ripard <maxime@cerno.tech>
drm/vc4: txp: Don't set TXP_VSTART_AT_EOF
Maxime Ripard <maxime@cerno.tech>
drm/vc4: hvs: Reset muxes at probe time
Yongqiang Sun <yongqiang.sun@amd.com>
drm/amd/amdgpu: Only reserve vram for firmware with vega9 MS_HYPERV host.
Miles Chen <miles.chen@mediatek.com>
drm/mediatek: Fix mtk_cec_mask()
Maxime Ripard <maxime@cerno.tech>
drm/vc4: hvs: Fix frame count register readout
Maxime Ripard <maxime@cerno.tech>
drm/vc4: kms: Take old state core clock rate into account
Chen-Yu Tsai <wenst@chromium.org>
drm/mediatek: Fix DPI component detection for MT8192
Rex-BC Chen <rex-bc.chen@mediatek.com>
drm/mediatek: Add vblank register/unregister callback functions
Ammar Faizi <ammarfaizi2@gnuweeb.org>
x86/delay: Fix the wrong asm constraint in delay_loop()
Akira Yokosawa <akiyks@gmail.com>
docs: driver-api/thermal/intel_dptf: Use copyright symbol
Miaoqian Lin <linmq006@gmail.com>
ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe
Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
ASoC: SOF: ipc3-topology: Set scontrol->priv to NULL after freeing it
Hui Wang <hui.wang@canonical.com>
ASoC: cs35l41: Fix an out-of-bounds access in otp_packed_element_t
Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
ASoC: codecs: Fix error handling in power domain init and exit handlers
Kuldeep Singh <singh.kuldeep87k@gmail.com>
spi: qcom-qspi: Add minItems to interconnect-names
Chuanhong Guo <gch981213@gmail.com>
mtd: spinand: gigadevice: fix Quad IO for GD5F1GQ5UExxG
Marek Vasut <marex@denx.de>
drm: bridge: icn6211: Fix HFP_HSW_HBP_HI and HFP_MIN handling
Marek Vasut <marex@denx.de>
drm: bridge: icn6211: Fix register layout
Lucas Stach <l.stach@pengutronix.de>
drm/bridge: adv7511: clean up CEC adapter when probe fails
Yang Yingliang <yangyingliang@huawei.com>
drm/bridge: anx7625: add missing destroy_workqueue() in anx7625_i2c_probe()
Jani Nikula <jani.nikula@intel.com>
drm/edid: fix invalid EDID extension block filtering
Wenli Looi <wlooi@ucalgary.ca>
ath9k: fix ar9003_get_eepmisc
YueHaibing <yuehaibing@huawei.com>
drm/bridge: it6505: Fix build error
Nicolas Belin <nbelin@baylibre.com>
drm: bridge: it66121: Fix the register page length
Niels Dossche <dossche.niels@gmail.com>
ath11k: acquire ab->base_lock in unassign when finding the peer by addr
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Fix an invalid read
Chuansheng Liu <chuansheng.liu@intel.com>
fbdev: defio: fix the pagelist corruption
Geert Uytterhoeven <geert@linux-m68k.org>
drm/ssd130x: Reduce temporary buffer sizes
Geert Uytterhoeven <geert@linux-m68k.org>
drm/ssd130x: Fix rectangle updates
Geert Uytterhoeven <geert@linux-m68k.org>
drm/format-helper: Fix XRGB888 to monochrome conversion
Geert Uytterhoeven <geert@linux-m68k.org>
drm/format-helper: Rename drm_fb_xrgb8888_to_mono_reversed()
YueHaibing <yuehaibing@huawei.com>
drm/solomon: Make DRM_SSD130X depends on MMU
Chen-Yu Tsai <wens@csie.org>
drm: ssd130x: Always apply segment remap setting
Chen-Yu Tsai <wens@csie.org>
drm: ssd130x: Fix COM scan direction register mask
Tom Rix <trix@redhat.com>
drm/bridge: anx7625: check the return on anx7625_aux_trans
Noralf Trønnes <noralf@tronnes.org>
dt-bindings: display: sitronix, st7735r: Fix backlight in example
Wan Jiabing <wanjiabing@vivo.com>
drm/omap: fix NULL but dereferenced coccicheck error
Dan Carpenter <dan.carpenter@oracle.com>
drm/selftests: missing error code in igt_buddy_alloc_smoke()
Nikita Yushchenko <nikita.yoush@cogentembedded.com>
drm/bridge_connector: enable HPD by default if supported
Linus Torvalds <torvalds@linux-foundation.org>
drm: fix EDID struct for old ARM OABI format
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Input: gpio-keys - cancel delayed work only in case of GPIO
Shyam Prasad N <sprasad@microsoft.com>
cifs: do not use tcpStatus after negotiate completes
Douglas Miller <doug.miller@cornelisnetworks.com>
RDMA/hfi1: Prevent panic when SDMA is disabled
Steve French <stfrench@microsoft.com>
smb3: check for null tcon
Vasily Averin <vasily.averin@linux.dev>
fanotify: fix incorrect fmode_t casts
Peng Wu <wupeng58@huawei.com>
powerpc/iommu: Add missing of_node_put in iommu_init_early_dart
Finn Thain <fthain@linux-m68k.org>
macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled
Lv Ruyi <lv.ruyi@zte.com.cn>
powerpc/powernv: fix missing of_node_put in uv_init()
Lv Ruyi <lv.ruyi@zte.com.cn>
powerpc/xics: fix refcount leak in icp_opal_init()
Haren Myneni <haren@linux.ibm.com>
powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr
Enzo Matsumiya <ematsumiya@suse.de>
cifs: return ENOENT for DFS lookup_cache_entry()
Vasily Averin <vasily.averin@linux.dev>
tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate
Matthew Wilcox (Oracle) <willy@infradead.org>
alpha: fix alloc_zeroed_user_highpage_movable()
Nicholas Piggin <npiggin@gmail.com>
KVM: PPC: Book3S HV Nested: L2 LPCR should inherit L1 LPES setting
Parshuram Thombare <pthombar@cadence.com>
PCI: cadence: Clear FLR in device capabilities register
Yicong Yang <yangyicong@hisilicon.com>
PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store()
Laurent Dufour <ldufour@linux.ibm.com>
powerpc/rtas: Keep MSR[RI] set when calling RTAS
Conor Dooley <conor.dooley@microchip.com>
PCI: microchip: Add missing chained_irq_enter()/exit() calls
Viresh Kumar <viresh.kumar@linaro.org>
cpufreq: Avoid unnecessary frequency updates due to mismatch
Peng Wu <wupeng58@huawei.com>
ARM: hisi: Add missing of_node_put after of_find_compatible_node
Vijaya Krishna Nivarthi <quic_vnivarth@quicinc.com>
arm64: dts: qcom: sc7280-qcard: Configure CTS pin to bias-bus-hold for bluetooth
Vijaya Krishna Nivarthi <quic_vnivarth@quicinc.com>
arm64: dts: qcom: sc7280-idp: Configure CTS pin to bias-bus-hold for bluetooth
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM
Peng Wu <wupeng58@huawei.com>
ARM: versatile: Add missing of_node_put in dcscb_init
Yang Yingliang <yangyingliang@huawei.com>
pinctrl: renesas: rzn1: Fix possible null-ptr-deref in sh_pfc_map_resources()
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
fat: add ratelimit to fat*_ent_bread()
Hari Bathini <hbathini@linux.ibm.com>
powerpc/fadump: Fix fadump to work with a different endian capture kernel
Janusz Krzysztofik <jmkrzyszt@gmail.com>
ARM: OMAP1: clock: Fix UART rate reporting algorithm
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Move generic implicit fb quirk entries into quirks.c
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Add quirk bits for enabling/disabling generic implicit fb
Joel Selvaraj <jo@jsfamily.in>
arm64: dts: qcom: sdm845-xiaomi-beryllium: fix typo in panel's vddio-supply property
Zixuan Fu <r33s3n6@gmail.com>
fs: jfs: fix possible NULL pointer dereference in dbFree()
QintaoShen <unSimple1993@163.com>
soc: ti: ti_sci_pm_domains: Check for null return of devm_kcalloc
Marco Chiappero <marco.chiappero@intel.com>
crypto: qat - fix off-by-one error in PFVF debug print
Gilad Ben-Yossef <gilad@benyossef.com>
crypto: ccree - use fine grained DMA mapping dir
Brian Norris <briannorris@chromium.org>
PM / devfreq: rk3399_dmc: Disable edev on remove()
Konrad Dybcio <konrad.dybcio@somainline.org>
arm64: dts: qcom: msm8994: Fix BLSP[12]_DMA channels count
Konrad Dybcio <konrad.dybcio@somainline.org>
arm64: dts: qcom: msm8994: Fix the cont_splash_mem address
Mario Limonciello <mario.limonciello@amd.com>
ASoC: amd: Add driver data to acp6x machine driver
Krzysztof Kozlowski <krzk@kernel.org>
ARM: dts: s5pv210: align DMA channels with dtschema
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: socfpga: align interrupt controller node name with dtschema
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: ox820: align interrupt controller node name with dtschema
Mika Westerberg <mika.westerberg@linux.intel.com>
PCI/ASPM: Make Intel DG2 L1 acceptable latency unlimited
Niels Dossche <dossche.niels@gmail.com>
IB/rdmavt: add missing locks in rvt_ruc_loopback
Daniel Latypov <dlatypov@google.com>
kunit: fix executor OOM error handling logic on non-UML
Bodo Stroesser <bostroesser@gmail.com>
scsi: target: tcmu: Avoid holding XArray lock when calling lock_page
Linus Torvalds <torvalds@linux-foundation.org>
linux/types.h: reinstate "__bitwise__" macro for user space use
Bob Peterson <rpeterso@redhat.com>
gfs2: use i_lock spin_lock for inode qadata
Yonghong Song <yhs@fb.com>
selftests/bpf: fix btf_dump/btf_dump due to recent clang change
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
char: tpm: cr50_i2c: Suppress duplicated error message in .remove()
Jakub Kicinski <kuba@kernel.org>
eth: tg3: silence the GCC 12 array-bounds warning
David Howells <dhowells@redhat.com>
afs: Adjust ACK interpretation to try and cope with NAT
David Howells <dhowells@redhat.com>
rxrpc, afs: Fix selection of abort codes
David Howells <dhowells@redhat.com>
rxrpc: Return an error to sendmsg if call failed
Mårten Lindahl <marten.lindahl@axis.com>
hwmon: (pmbus) Add get_voltage/set_voltage ops
Geert Uytterhoeven <geert@linux-m68k.org>
m68k: atari: Make Atari ROM port I/O write macros return void
Yuntao Wang <ytcoode@gmail.com>
selftests/bpf: Add missing trampoline program type to trampoline_count test
Alex Elder <elder@linaro.org>
net: ipa: ignore endianness if there is no header
Borislav Petkov <bp@suse.de>
x86/microcode: Add explicit CPU vendor dependency
Vincent Mailhol <mailhol.vincent@wanadoo.fr>
can: mcp251xfd: silence clang's -Wunaligned-access warning
Chaitanya Kulkarni <kch@nvidia.com>
nvme: set non-mdts limits in nvme_scan_work
Pierre Gondois <Pierre.Gondois@arm.com>
ACPI: CPPC: Assume no transition latency if no PCCT
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC: rt1015p: remove dependency on GPIOLIB
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC: max98357a: remove dependency on GPIOLIB
Laibin Qiu <qiulaibin@huawei.com>
blk-throttle: Set BIO_THROTTLED when bio has been throttled
Andre Przywara <andre.przywara@arm.com>
of/fdt: Ignore disabled memory nodes
Ping-Ke Shih <pkshih@realtek.com>
rtw89: cfo: check mac_id to avoid out-of-bounds
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: hantro: Stop using H.264 parameter pic_num
Kwanghoon Son <k.son@samsung.com>
media: exynos4-is: Fix compile warning
Fabio Estevam <festevam@denx.de>
net: phy: micrel: Allow probing without .driver_data
Daniel Latypov <dlatypov@google.com>
kunit: tool: make parser stop overwriting status of suites w/ no_tests
Omar Sandoval <osandov@fb.com>
btrfs: fix anon_dev leak in create_subvol()
Hans de Goede <hdegoede@redhat.com>
drm/amdgpu: Move mutex_init(&smu->message_lock) to smu_early_init()
Sathishkumar S <sathishkumar.sundararaju@amd.com>
drm/amd/pm: update smartshift powerboost calc for smu13
Sathishkumar S <sathishkumar.sundararaju@amd.com>
drm/amd/pm: update smartshift powerboost calc for smu12
Xie Yongji <xieyongji@bytedance.com>
nbd: Fix hung on disconnect request if socket is closed before
Lin Ma <linma@zju.edu.cn>
ASoC: rt5645: Fix errorenous cleanup order
Smith, Kyle Miller (Nimble Kernel) <kyles@hpe.com>
nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags
Jason A. Donenfeld <Jason@zx2c4.com>
openrisc: start CPU timer early in boot
Yunfei Dong <yunfei.dong@mediatek.com>
media: mediatek: vcodec: prevent kernel crash when rmmod mtk-vcodec-dec.ko
Pavan Chebbi <pavan.chebbi@broadcom.com>
bnxt_en: Configure ptp filters during bnxt open
Zijun Hu <quic_zijuhu@quicinc.com>
Bluetooth: btusb: Set HCI_QUIRK_BROKEN_ERR_DATA_REPORTING for QCA
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Bluetooth: btusb: Set HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN for QCA
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Bluetooth: HCI: Add HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN quirk
Lukas Wunner <lukas@wunner.de>
usbnet: Run unregister_netdev() before unbind() again
Hans Verkuil <hverkuil-cisco@xs4all.nl>
media: cec-adap.c: fix is_configuring state
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
media: imon: reorganize serialization
Hans Verkuil <hverkuil-cisco@xs4all.nl>
media: ccs-core.c: fix failure to call clk_disable_unprepare
Benjamin Gaignard <benjamin.gaignard@collabora.com>
media: hantro: HEVC: unconditionnaly set pps_{cb/cr}_qp_offset values
Philipp Zabel <p.zabel@pengutronix.de>
media: coda: limit frame interval enumeration to supported encoder frame sizes
Hangyu Hua <hbh25y@gmail.com>
media: rga: fix possible memory leak in rga_probe
Felix Fietkau <nbd@nbd.name>
mt76: fix encap offload ethernet type check
Felix Fietkau <nbd@nbd.name>
mt76: mt7921: accept rx frames with non-standard VHT MCS10-11
Felix Fietkau <nbd@nbd.name>
mt76: mt7915: accept rx frames with non-standard VHT MCS10-11
Dongliang Mu <mudongliangabcd@gmail.com>
rtlwifi: Use pr_warn instead of WARN_ONCE
Daniel Latypov <dlatypov@google.com>
kunit: bail out of test filtering logic quicker if OOM
Corey Minyard <cminyard@mvista.com>
ipmi: Fix pr_fmt to avoid compilation issues
Corey Minyard <cminyard@mvista.com>
ipmi: Add an intializer for ipmi_smi_msg struct
Corey Minyard <cminyard@mvista.com>
ipmi:ssif: Check for NULL msg when handling events and messages
Mario Limonciello <mario.limonciello@amd.com>
ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default
Zheng Bin <zhengbin13@huawei.com>
ASoC: SOF: amd: add missing platform_device_unregister in acp_pci_rn_probe
Christian Brauner <brauner@kernel.org>
fs: hold writers when changing mount's idmapping
Mikulas Patocka <mpatocka@redhat.com>
dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
Patrice Chotard <patrice.chotard@foss.st.com>
spi: stm32-qspi: Fix wait_cmd timeout in APM mode
Hao Jia <jiahao.os@bytedance.com>
sched/core: Avoid obvious double update_rq_clock warning
Ravi Bangoria <ravi.bangoria@amd.com>
perf/amd/ibs: Cascade pmu init functions' return value
Heiko Carstens <hca@linux.ibm.com>
s390/preempt: disable __preempt_count_add() optimization for PROFILE_ALL_BRANCHES
Eric Dumazet <edumazet@google.com>
net: remove two BUG() from skb_checksum_help()
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Alter FPIN stat accounting logic
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Inhibit aborts if external loopback plug is inserted
Xiang Chen <chenxiang66@hisilicon.com>
scsi: hisi_sas: Undo RPM resume for failed notify phy event for v3 HW
Brent Lu <brent.lu@intel.com>
ASoC: Intel: sof_ssp_amp: fix no DMIC BE Link on Chromebooks
Gavin Li <gavinl@nvidia.com>
net/mlx5: Increase FW pre-init timeout for health recovery
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: tscs454: Add endianness flag in snd_soc_component_driver
Zhen Lei <thunder.leizhen@huawei.com>
of: Support more than one crash kernel regions for kexec -s
Thierry Reding <treding@nvidia.com>
drm/tegra: gem: Do not try to dereference ERR_PTR()
Dongliang Mu <mudongliangabcd@gmail.com>
HID: bigben: fix slab-out-of-bounds Write in bigben_probe
Jacob Keller <jacob.e.keller@intel.com>
ice: always check VF VSI pointer values
Nícolas F. R. A. Prado <nfraprado@collabora.com>
regulator: mt6315: Enforce regulator-compatible, not name
Alice Wong <shiwei.wong@amd.com>
drm/amdgpu/ucode: Remove firmware load type check in amdgpu_ucode_free_bo
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu/psp: move PSP memory alloc from hw_init to sw_init
Petr Machata <petrm@nvidia.com>
mlxsw: Treat LLDP packets as control
Petr Machata <petrm@nvidia.com>
mlxsw: spectrum_dcb: Do not warn about priority changes
Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
ASoC: SOF: ipc3-topology: Correct get_control_data for non bytes payload
Mark Brown <broonie@kernel.org>
ASoC: dapm: Don't fold register value changes into notifications
Mark Bloch <mbloch@nvidia.com>
net/mlx5: fs, delete the FTE when there are no rules attached to it
Ziyang Xuan <william.xuanziyang@huawei.com>
net/mlx5: use kvfree() for kvzalloc() in mlx5_ct_fs_smfs_matcher_create
jianghaoran <jianghaoran@kylinos.cn>
ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL
Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
scsi: target: tcmu: Fix possible data corruption
Wen Gong <quic_wgong@quicinc.com>
ath11k: fix warning of not found station for bssid in message
Max Filippov <jcmvbkbc@gmail.com>
xtensa: move trace_hardirqs_off call back to entry.S
Jessica Zhang <quic_jesszhan@quicinc.com>
drm/msm/dpu: Clean up CRC debug logs
Lv Ruyi <lv.ruyi@zte.com.cn>
drm: msm: fix error check return value of irq_of_parse_and_map()
Alexandru Elisei <alexandru.elisei@arm.com>
arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall
Abhishek Kumar <kuabhs@chromium.org>
ath10k: skip ath10k_halt during suspend for driver state RESTARTING
Evan Quan <evan.quan@amd.com>
drm/amd/pm: fix the compile warning
Mukul Joshi <mukul.joshi@amd.com>
drm/amdkfd: Fix circular lock dependency warning
Steven Price <steven.price@arm.com>
drm/plane: Move range check for format_count earlier
Hans de Goede <hdegoede@redhat.com>
ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408
Hari Chandrakanthan <quic_haric@quicinc.com>
ath11k: disable spectral scan during spectral deinit
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp()
Minghao Chi <chi.minghao@zte.com.cn>
scsi: ufs: Use pm_runtime_resume_and_get() instead of pm_runtime_get_sync()
Haohui Mai <ricetons@gmail.com>
drm/amdgpu/sdma: Fix incorrect calculations of the wptr of the doorbells
Lv Ruyi <lv.ruyi@zte.com.cn>
scsi: megaraid: Fix error check return value of register_chrdev()
Vignesh Raghavendra <vigneshr@ti.com>
drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit
Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
mmc: jz4740: Apply DMA engine limits to maximum segment size
Heming Zhao <heming.zhao@suse.com>
md/bitmap: don't set sb values if can't pass sanity check
Zheyu Ma <zheyuma97@gmail.com>
media: cx25821: Fix the warning when removing the module
Zheyu Ma <zheyuma97@gmail.com>
media: pci: cx23885: Fix the error handling in cx23885_initdev()
Vikash Garodia <quic_vgarodia@quicinc.com>
media: venus: do not queue internal buffers from previous sequence
Luca Weiss <luca.weiss@fairphone.com>
media: venus: hfi: avoid null dereference in deinit
Zheyu Ma <zheyuma97@gmail.com>
media: i2c: dw9714: Disable the regulator when the driver fails to probe
Sakari Ailus <sakari.ailus@linux.intel.com>
media: Revert "media: dw9768: activate runtime PM and turn off device"
Thibaut VARÈNE <hacks+kernel@slashdirt.org>
ath9k: fix QCA9561 PA bias level
Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
net: macb: In ZynqMP initialization make SGMII phy configuration optional
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
ASoC: rsnd: care return value from rsnd_node_fixed_index()
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
ASoC: rsnd: care default case on rsnd_ssiu_busif_err_status_clear()
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
drm/amd/pm: fix double free in si_parse_power_table()
Huang Rui <ray.huang@amd.com>
drm/amdgpu/pm: fix the null pointer while the smu is disabled
Ulf Hansson <ulf.hansson@linaro.org>
cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix call trace observed during I/O with CMF enabled
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Protect memory leak for NPIV ports sending PLOGI_RJT
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix null pointer dereference after failing to issue FLOGI and PLOGI
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix SCSI I/O completion and abort handler deadlock
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Move cfg_log_verbose check before calling lpfc_dmp_dbg()
Christoph Hellwig <hch@lst.de>
loop: implement ->free_disk
Eric Dumazet <edumazet@google.com>
tcp: consume incoming skb leading to a reset
Len Brown <len.brown@intel.com>
tools/power turbostat: fix ICX DRAM power numbers
Biju Das <biju.das.jz@bp.renesas.com>
spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA direction
Po-Hao Huang <phhuang@realtek.com>
rtw88: 8821c: fix debugfs rssi value
Po-Hao Huang <phhuang@realtek.com>
rtw88: fix incorrect frequency reported
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
ALSA: jack: Access input_dev under mutex
Haowen Bai <baihaowen@meizu.com>
sfc: ef10: Fix assigning negative value to unsigned variable
Paul E. McKenney <paulmck@kernel.org>
rcu: Make TASKS_RUDE_RCU select IRQ_WORK
Paul E. McKenney <paulmck@kernel.org>
rcu-tasks: Handle sparse cpu_possible_mask in rcu_tasks_invoke_cbs()
Padmanabha Srinivasaiah <treasure4paddy@gmail.com>
rcu-tasks: Fix race in schedule and flush work
Saaem Rizvi <syerizvi@amd.com>
drm/amd/display: Disabling Z10 on DCN31
Liviu Dudau <liviu.dudau@arm.com>
drm/komeda: return early if drm_universal_plane_init() fails.
Peter Seiderer <ps.report@gmx.net>
mac80211: minstrel_ht: fix where rate stats are stored (fixes debugfs output)
Runqing Yang <rainkin1993@gmail.com>
libbpf: Fix a bug with checking bpf_probe_read_kernel() support in old kernels
Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
ACPICA: Avoid cache flush inside virtual machines
Mike Travis <mike.travis@hpe.com>
x86/platform/uv: Update TSC sync state for UV5
Daniel Vetter <daniel.vetter@ffwll.ch>
fbcon: Consistently protect deferred_takeover with console_lock()
Niels Dossche <dossche.niels@gmail.com>
ipv6: fix locking issues with loops over idev->addr_list
Haowen Bai <baihaowen@meizu.com>
ipw2x00: Fix potential NULL dereference in libipw_xmit()
Haowen Bai <baihaowen@meizu.com>
b43: Fix assigning negative value to unsigned variable
Haowen Bai <baihaowen@meizu.com>
b43legacy: Fix assigning negative value to unsigned variable
Niels Dossche <dossche.niels@gmail.com>
mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue
Po Hao Huang <phhuang@realtek.com>
rtw89: fix misconfiguration on hw_scan channel time
Zong-Zhe Yang <kevin_yang@realtek.com>
rtw89: ser: fix CAM leaks occurring in L2 reset
Yuntao Wang <ytcoode@gmail.com>
selftests/bpf: Fix file descriptor leak in load_kallsyms()
Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
ath11k: Change max no of active probe SSID and BSSID to fw capability
Quentin Monnet <quentin@isovalent.com>
selftests/bpf: Fix parsing of prog types in UAPI hdr for bpftool sync
Nikolay Borisov <nborisov@suse.com>
selftests/bpf: Fix vfs_link kprobe definition
Liu Zixian <liuzixian4@huawei.com>
drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes
Wen Gong <quic_wgong@quicinc.com>
ath11k: fix the warning of dev_wake in mhi_pm_disable_transition()
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: validate the screen formats
Arunpravin <Arunpravin.PaneerSelvam@amd.com>
drm/selftests: fix a shift-out-of-bounds bug
Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>
iommu/vt-d: Add RPLS to quirk list to skip TE disabling
Naohiro Aota <naohiro.aota@wdc.com>
btrfs: zoned: fix comparison of alloc_offset vs meta_write_pointer
Naohiro Aota <naohiro.aota@wdc.com>
btrfs: zoned: finish block group when there are no more allocatable bytes left
Naohiro Aota <naohiro.aota@wdc.com>
btrfs: zoned: zone finish unused block group
Naohiro Aota <naohiro.aota@wdc.com>
btrfs: zoned: properly finish block group on metadata write
Filipe Manana <fdmanana@suse.com>
btrfs: fix deadlock between concurrent dio writes when low on free data space
Qu Wenruo <wqu@suse.com>
btrfs: fix the error handling for submit_extent_page() for btrfs_do_readpage()
Qu Wenruo <wqu@suse.com>
btrfs: repair super block num_devices automatically
Qu Wenruo <wqu@suse.com>
btrfs: return correct error number for __extent_writepage_io()
Qu Wenruo <wqu@suse.com>
btrfs: add "0x" prefix for unsupported optional features
Eric W. Biederman <ebiederm@xmission.com>
ptrace: Reimplement PTRACE_KILL by always sending SIGKILL
Eric W. Biederman <ebiederm@xmission.com>
ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP
Eric W. Biederman <ebiederm@xmission.com>
ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP
Eric W. Biederman <ebiederm@xmission.com>
kthread: Don't allocate kthread_struct for init and umh
Kristen Carlson Accardi <kristen@linux.intel.com>
x86/sgx: Set active memcg prior to shmem allocation
Baoquan He <bhe@redhat.com>
x86/kexec: fix memory leak of elf header buffer
Kan Liang <kan.liang@linux.intel.com>
perf/x86/intel: Fix event constraints for ICL
Ammar Faizi <ammarfaizi2@gnuweeb.org>
x86/MCE/AMD: Fix memory leak when threshold_create_bank() fails
Michael Niewöhner <linux@mniewoehner.de>
platform/x86: intel-hid: fix _DSM function index handling
Mathias Nyman <mathias.nyman@linux.intel.com>
xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI
Kishon Vijay Abraham I <kishon@ti.com>
xhci: Set HCD flag to defer primary roothub registration
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: when extending a file with falloc we should make files not-sparse
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: fix potential double free during failed mount
Paulo Alcantara <pc@cjr.nz>
cifs: fix ntlmssp on old servers
Enzo Matsumiya <ematsumiya@suse.de>
cifs: don't call cifs_dfs_query_info_nonascii_quirk() if nodfs was set
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Restore ntfs_xattr_get_acl and ntfs_xattr_set_acl functions
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Update i_ctime when xattr is added
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
fs/ntfs3: Fix some memory leaks in an error handling path of 'log_replay()'
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: In function ntfs_set_acl_ex do not change inode->i_mode if called from function ntfs_init_acl
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Check new size for limits
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Keep preallocated only if option prealloc enabled
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Fix fiemap + fix shrink file size (to remove preallocated space)
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Update valid size if -EIOCBQUEUED
Mikulas Patocka <mpatocka@redhat.com>
fs/ntfs3: provide block_invalidate_folio to fix memory leak
Kishon Vijay Abraham I <kishon@ti.com>
usb: core: hcd: Add support for deferring roothub registration
Albert Wang <albertccwang@google.com>
usb: dwc3: gadget: Move null pinter check to proper place
Linus Walleij <linus.walleij@linaro.org>
usb: isp1760: Fix out-of-bounds array access
Monish Kumar R <monish.kumar.r@intel.com>
USB: new quirk for Dell Gen 2 devices
Carl Yin(殷张成) <carl.yin@quectel.com>
USB: serial: option: add Quectel BG95 modem
Johan Hovold <johan@kernel.org>
USB: serial: pl2303: fix type detection for odd device
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Cancel pending work at closing a MIDI substream
Marios Levogiannis <marios.levogiannis@gmail.com>
ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS
Rik van der Kemp <rik@upto11.nl>
ALSA: hda/realtek: Enable 4-speaker output for Dell XPS 15 9520 laptop
Kailang Yang <kailang@realtek.com>
ALSA: hda/realtek - Add new type for ALC245
Nathan Chancellor <nathan@kernel.org>
riscv: Move alternative length validation into subsection
Tobias Klauser <tklauser@distanz.ch>
riscv: Wire up memfd_secret in UAPI header
Samuel Holland <samuel@sholland.org>
riscv: Fix irq_work when SMP is disabled
Alexandre Ghiti <alexandre.ghiti@canonical.com>
riscv: Initialize thread pointer before calling C functions
Xianting Tian <xianting.tian@linux.alibaba.com>
RISC-V: Mark IORESOURCE_EXCLUSIVE for reserved mem instead of IORESOURCE_BUSY
Helge Deller <deller@gmx.de>
parisc/stifb: Keep track of hardware path of graphics card
Helge Deller <deller@gmx.de>
parisc/stifb: Implement fb_is_primary_device()
Mikulas Patocka <mpatocka@redhat.com>
parisc: fix a crash with multicore scheduler
Niklas Cassel <niklas.cassel@wdc.com>
binfmt_flat: do not stop relocating GOT entries prematurely on riscv
Stephen Boyd <swboyd@chromium.org>
arm64: Initialize jump labels before setup_machine_fdt()
-------------
Diffstat:
Documentation/accounting/psi.rst | 9 +-
Documentation/conf.py | 2 +-
.../bindings/display/sitronix,st7735r.yaml | 1 +
.../devicetree/bindings/gpio/gpio-altera.txt | 5 +-
.../bindings/regulator/mt6315-regulator.yaml | 2 +-
.../devicetree/bindings/soc/qcom/qcom,smd-rpm.yaml | 1 +
.../bindings/spi/qcom,spi-qcom-qspi.yaml | 1 +
Documentation/driver-api/thermal/intel_dptf.rst | 2 +-
Documentation/sound/alsa-configuration.rst | 4 +-
Documentation/userspace-api/landlock.rst | 4 +-
.../userspace-api/media/lirc.h.rst.exceptions | 2 +
Makefile | 4 +-
arch/alpha/include/asm/page.h | 2 +-
arch/arm/boot/dts/bcm2835-rpi-b.dts | 13 +-
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 22 +-
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 2 +-
arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts | 4 +-
arch/arm/boot/dts/bcm5301x.dtsi | 2 +-
arch/arm/boot/dts/exynos5250-smdk5250.dts | 4 +-
arch/arm/boot/dts/imx6dl-eckelmann-ci4x10.dts | 6 +-
arch/arm/boot/dts/imx6qdl-colibri.dtsi | 6 +-
arch/arm/boot/dts/lan966x.dtsi | 6 +-
arch/arm/boot/dts/ox820.dtsi | 2 +-
arch/arm/boot/dts/qcom-sdx65.dtsi | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 3 +-
arch/arm/boot/dts/s5pv210.dtsi | 12 +-
arch/arm/boot/dts/sama7g5.dtsi | 1 -
arch/arm/boot/dts/socfpga.dtsi | 2 +-
arch/arm/boot/dts/socfpga_arria10.dtsi | 2 +-
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 1 +
arch/arm/boot/dts/suniv-f1c100s.dtsi | 4 +-
arch/arm/include/asm/arch_gicv3.h | 7 +-
arch/arm/kernel/signal.c | 1 +
arch/arm/mach-hisi/platsmp.c | 4 +
arch/arm/mach-mediatek/Kconfig | 1 +
arch/arm/mach-omap1/clock.c | 2 +-
arch/arm/mach-pxa/cm-x300.c | 8 +-
arch/arm/mach-pxa/magician.c | 2 +-
arch/arm/mach-pxa/tosa.c | 4 +-
arch/arm/mach-vexpress/dcscb.c | 1 +
arch/arm64/Kconfig.platforms | 1 +
arch/arm64/boot/dts/arm/juno-r1-scmi.dts | 4 +-
arch/arm64/boot/dts/arm/juno-r2-scmi.dts | 4 +-
.../dts/marvell/armada-3720-espressobin-ultra.dts | 5 -
arch/arm64/boot/dts/mediatek/mt8192.dtsi | 2 +-
arch/arm64/boot/dts/nvidia/tegra210.dtsi | 5 +-
arch/arm64/boot/dts/qcom/ipq8074.dtsi | 2 +-
arch/arm64/boot/dts/qcom/msm8994.dtsi | 8 +-
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 2 +-
arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi | 4 +-
arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 18 +-
arch/arm64/boot/dts/qcom/sc7280-qcard.dtsi | 19 +-
.../boot/dts/qcom/sdm845-xiaomi-beryllium.dts | 2 +-
arch/arm64/boot/dts/qcom/sm8450.dtsi | 6 +
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
arch/arm64/boot/dts/ti/k3-am64-mcu.dtsi | 2 -
arch/arm64/configs/defconfig | 1 +
arch/arm64/include/asm/arch_gicv3.h | 6 -
arch/arm64/include/asm/processor.h | 10 +-
arch/arm64/kernel/setup.c | 7 +-
arch/arm64/kernel/signal.c | 1 +
arch/arm64/kernel/signal32.c | 1 +
arch/arm64/kernel/sys_compat.c | 2 +-
arch/arm64/mm/copypage.c | 4 +-
arch/csky/kernel/probes/kprobes.c | 2 +-
arch/m68k/Kconfig.cpu | 2 +-
arch/m68k/include/asm/raw_io.h | 6 +-
arch/m68k/kernel/signal.c | 1 +
.../include/asm/mach-ip27/cpu-feature-overrides.h | 1 -
.../include/asm/mach-ip30/cpu-feature-overrides.h | 1 -
arch/mips/include/asm/mach-ralink/spaces.h | 2 +
arch/openrisc/include/asm/timex.h | 1 +
arch/openrisc/kernel/head.S | 9 +
arch/parisc/include/asm/fb.h | 4 +
arch/parisc/kernel/processor.c | 2 -
arch/parisc/kernel/topology.c | 16 +-
arch/powerpc/include/asm/page.h | 7 +-
arch/powerpc/include/asm/vas.h | 2 +-
arch/powerpc/kernel/entry_64.S | 24 +-
arch/powerpc/kernel/fadump.c | 8 +-
arch/powerpc/kernel/idle.c | 2 +-
arch/powerpc/kernel/rtas.c | 9 +
arch/powerpc/kvm/book3s_hv.c | 12 +-
arch/powerpc/kvm/book3s_hv_nested.c | 3 +-
arch/powerpc/kvm/trace_hv.h | 8 +-
arch/powerpc/mm/nohash/fsl_book3e.c | 15 +-
arch/powerpc/perf/isa207-common.c | 12 +-
arch/powerpc/platforms/4xx/cpm.c | 2 +-
arch/powerpc/platforms/8xx/cpm1.c | 1 +
arch/powerpc/platforms/powernv/opal-fadump.c | 94 +--
arch/powerpc/platforms/powernv/opal-fadump.h | 10 +-
arch/powerpc/platforms/powernv/setup.c | 9 +
arch/powerpc/platforms/powernv/ultravisor.c | 1 +
arch/powerpc/platforms/powernv/vas-fault.c | 2 +-
arch/powerpc/platforms/powernv/vas-window.c | 4 +-
arch/powerpc/platforms/powernv/vas.h | 2 +-
arch/powerpc/platforms/pseries/papr_scm.c | 54 +-
arch/powerpc/sysdev/dart_iommu.c | 6 +-
arch/powerpc/sysdev/fsl_rio.c | 2 +
arch/powerpc/sysdev/xics/icp-opal.c | 1 +
arch/powerpc/sysdev/xive/spapr.c | 7 +-
arch/riscv/Makefile | 4 +
arch/riscv/include/asm/alternative-macros.h | 4 +-
arch/riscv/include/asm/asm.h | 26 -
arch/riscv/include/asm/irq_work.h | 2 +-
arch/riscv/include/asm/unistd.h | 1 -
arch/riscv/include/asm/xip_fixup.h | 31 +
arch/riscv/include/uapi/asm/unistd.h | 1 +
arch/riscv/kernel/head.S | 2 +
arch/riscv/kernel/setup.c | 4 +-
arch/riscv/kernel/suspend_entry.S | 1 +
arch/riscv/mm/init.c | 2 +-
arch/s390/include/asm/cio.h | 2 +-
arch/s390/include/asm/kexec.h | 10 +
arch/s390/include/asm/preempt.h | 15 +-
arch/s390/kernel/perf_event.c | 2 +-
arch/s390/kernel/time.c | 8 +-
arch/sparc/kernel/signal32.c | 1 +
arch/sparc/kernel/signal_64.c | 1 +
arch/um/drivers/chan_user.c | 9 +-
arch/um/drivers/virtio_uml.c | 33 +-
arch/um/include/asm/Kbuild | 1 +
arch/um/include/asm/thread_info.h | 2 +
arch/um/kernel/exec.c | 2 +-
arch/um/kernel/process.c | 2 +-
arch/um/kernel/ptrace.c | 8 +-
arch/um/kernel/signal.c | 4 +-
arch/x86/Kconfig | 4 +-
arch/x86/entry/entry_64.S | 1 +
arch/x86/entry/vdso/vma.c | 2 +-
arch/x86/events/amd/ibs.c | 55 +-
arch/x86/events/intel/core.c | 2 +-
arch/x86/include/asm/acenv.h | 14 +-
arch/x86/include/asm/kexec.h | 8 +
arch/x86/include/asm/set_memory.h | 52 --
arch/x86/include/asm/suspend_32.h | 2 +-
arch/x86/include/asm/suspend_64.h | 12 +-
arch/x86/kernel/apic/apic.c | 2 +-
arch/x86/kernel/apic/x2apic_uv_x.c | 8 +-
arch/x86/kernel/cpu/intel.c | 2 +-
arch/x86/kernel/cpu/mce/amd.c | 32 +-
arch/x86/kernel/cpu/mce/core.c | 6 +-
arch/x86/kernel/cpu/sgx/encl.c | 105 ++-
arch/x86/kernel/cpu/sgx/encl.h | 7 +-
arch/x86/kernel/cpu/sgx/main.c | 9 +-
arch/x86/kernel/machine_kexec_64.c | 12 +-
arch/x86/kernel/signal_compat.c | 2 +
arch/x86/kernel/step.c | 3 +-
arch/x86/kernel/sys_x86_64.c | 7 +-
arch/x86/kvm/lapic.c | 1 +
arch/x86/kvm/vmx/nested.c | 45 +-
arch/x86/kvm/vmx/vmcs.h | 5 +
arch/x86/lib/delay.c | 4 +-
arch/x86/mm/pat/memtype.c | 2 +-
arch/x86/mm/pat/set_memory.c | 49 +-
arch/x86/pci/irq.c | 19 +-
arch/x86/um/ldt.c | 6 +-
arch/xtensa/kernel/entry.S | 19 +-
arch/xtensa/kernel/ptrace.c | 4 +-
arch/xtensa/kernel/signal.c | 4 +-
arch/xtensa/kernel/traps.c | 11 +-
arch/xtensa/platforms/iss/simdisk.c | 18 +-
block/bfq-cgroup.c | 111 +--
block/bfq-iosched.c | 64 +-
block/bfq-iosched.h | 7 +-
block/blk-cgroup.c | 9 +-
block/blk-cgroup.h | 2 +-
block/blk-ia-ranges.c | 7 +-
block/blk-iocost.c | 5 +-
block/blk-iolatency.c | 130 ++--
block/blk-throttle.c | 3 +-
crypto/cryptd.c | 23 +-
drivers/acpi/arm64/agdi.c | 1 +
drivers/acpi/cppc_acpi.c | 17 +-
drivers/acpi/property.c | 18 +-
drivers/acpi/sleep.c | 12 +
drivers/base/memory.c | 5 +-
drivers/base/node.c | 1 +
drivers/base/power/domain.c | 1 +
drivers/base/property.c | 89 +--
drivers/block/drbd/drbd_main.c | 62 +-
drivers/block/loop.c | 16 +-
drivers/block/nbd.c | 13 +-
drivers/block/virtio_blk.c | 7 +-
drivers/bluetooth/btmtksdio.c | 26 +-
drivers/bluetooth/btusb.c | 6 +
drivers/char/hw_random/cn10k-rng.c | 31 +-
drivers/char/hw_random/omap3-rom-rng.c | 2 +-
drivers/char/ipmi/ipmi_ipmb.c | 1 +
drivers/char/ipmi/ipmi_msghandler.c | 4 +-
drivers/char/ipmi/ipmi_poweroff.c | 4 +-
drivers/char/ipmi/ipmi_ssif.c | 23 +
drivers/char/ipmi/ipmi_watchdog.c | 14 +-
drivers/char/random.c | 12 +-
drivers/char/tpm/tpm_tis_i2c_cr50.c | 4 +-
drivers/clk/tegra/clk-dfll.c | 12 +
drivers/cpufreq/cpufreq.c | 11 +
drivers/cpufreq/cpufreq_governor.c | 20 +-
drivers/cpufreq/cpufreq_governor.h | 1 +
drivers/cpufreq/mediatek-cpufreq.c | 18 +-
drivers/cpuidle/cpuidle-psci-domain.c | 4 +-
drivers/cpuidle/cpuidle-psci.c | 46 ++
drivers/cpuidle/cpuidle-riscv-sbi.c | 4 +-
.../crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 115 ++--
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 30 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 10 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h | 14 +-
drivers/crypto/ccp/sev-dev.c | 30 +-
drivers/crypto/ccree/cc_buffer_mgr.c | 27 +-
drivers/crypto/marvell/cesa/cipher.c | 1 -
drivers/crypto/nx/nx-common-powernv.c | 2 +-
drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c | 2 +-
.../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 13 +-
drivers/cxl/mem.c | 4 -
drivers/cxl/pci.c | 40 +-
drivers/devfreq/rk3399_dmc.c | 2 +
drivers/dma/idxd/cdev.c | 8 +-
drivers/dma/stm32-mdma.c | 23 +-
drivers/dma/ti/k3-psil-am62.c | 8 +-
drivers/edac/dmc520_edac.c | 2 +-
drivers/firmware/arm_ffa/driver.c | 4 +-
drivers/firmware/arm_scmi/base.c | 2 +-
drivers/firmware/efi/Kconfig | 15 +
drivers/firmware/efi/efi.c | 2 +-
drivers/gpio/gpio-rockchip.c | 24 +-
drivers/gpio/gpio-sim.c | 4 +-
drivers/gpio/gpiolib-of.c | 5 +
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 13 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 95 ++-
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 3 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 10 +-
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 4 +-
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 8 +-
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 8 +-
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 7 +-
drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 2 +-
drivers/gpu/drm/amd/amdkfd/kfd_device.c | 2 +
drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 1 +
drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 7 +-
.../gpu/drm/amd/display/dc/dcn31/dcn31_resource.c | 1 +
drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 2 +-
drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c | 14 +-
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 8 +-
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 4 +-
drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c | 60 +-
.../gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c | 62 +-
drivers/gpu/drm/arm/display/komeda/komeda_plane.c | 10 +-
drivers/gpu/drm/arm/malidp_crtc.c | 5 +-
drivers/gpu/drm/bridge/Kconfig | 2 +
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 +
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 31 +-
drivers/gpu/drm/bridge/analogix/anx7625.c | 21 +-
drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +-
drivers/gpu/drm/bridge/chipone-icn6211.c | 155 ++++-
drivers/gpu/drm/bridge/ite-it6505.c | 29 +-
drivers/gpu/drm/bridge/ite-it66121.c | 2 +-
drivers/gpu/drm/drm_bridge_connector.c | 4 +-
drivers/gpu/drm/drm_edid.c | 6 +-
drivers/gpu/drm/drm_format_helper.c | 74 +-
drivers/gpu/drm/drm_plane.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 6 +
drivers/gpu/drm/gma500/psb_intel_display.c | 7 +-
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 33 +-
drivers/gpu/drm/i915/i915_perf.c | 4 +-
drivers/gpu/drm/i915/i915_perf_types.h | 2 +-
drivers/gpu/drm/mediatek/mtk_cec.c | 2 +-
drivers/gpu/drm/mediatek/mtk_disp_drv.h | 16 +-
drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 22 +-
drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 20 +-
drivers/gpu/drm/mediatek/mtk_dpi.c | 4 +-
drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 14 +-
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 4 +
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 29 +-
drivers/gpu/drm/mediatek/mtk_drm_drv.c | 2 +
drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 19 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 16 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 5 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 3 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c | 3 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c | 2 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 10 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 14 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 6 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.h | 4 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.h | 2 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 20 +-
drivers/gpu/drm/msm/dp/dp_ctrl.c | 16 +-
drivers/gpu/drm/msm/dp/dp_display.c | 55 +-
drivers/gpu/drm/msm/dp/dp_drm.c | 4 +
drivers/gpu/drm/msm/dsi/dsi_host.c | 21 +-
drivers/gpu/drm/msm/dsi/dsi_manager.c | 35 +-
drivers/gpu/drm/msm/dsi/phy/dsi_phy_14nm.c | 2 +-
drivers/gpu/drm/msm/hdmi/hdmi.c | 10 +-
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 3 +
drivers/gpu/drm/msm/msm_drv.c | 11 +-
drivers/gpu/drm/msm/msm_gem_prime.c | 2 +-
drivers/gpu/drm/msm/msm_gpu.c | 3 +-
drivers/gpu/drm/msm/msm_gpu.h | 12 +-
drivers/gpu/drm/msm/msm_gpu_devfreq.c | 90 ++-
drivers/gpu/drm/msm/msm_kms.h | 1 +
drivers/gpu/drm/nouveau/dispnv50/atom.h | 6 +-
drivers/gpu/drm/nouveau/dispnv50/crc.c | 27 +-
drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h | 2 +
drivers/gpu/drm/nouveau/nvkm/subdev/bus/gf100.c | 14 +-
drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv31.c | 6 +-
drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv50.c | 6 +-
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c | 6 +-
drivers/gpu/drm/omapdrm/omap_overlay.c | 2 +-
drivers/gpu/drm/panel/panel-simple.c | 3 +-
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
drivers/gpu/drm/selftests/test-drm_buddy.c | 10 +-
drivers/gpu/drm/solomon/Kconfig | 2 +-
drivers/gpu/drm/solomon/ssd130x.c | 42 +-
drivers/gpu/drm/stm/ltdc.c | 16 +-
drivers/gpu/drm/tegra/gem.c | 1 +
drivers/gpu/drm/tilcdc/tilcdc_external.c | 8 +-
drivers/gpu/drm/tiny/repaper.c | 2 +-
drivers/gpu/drm/v3d/v3d_perfmon.c | 3 +-
drivers/gpu/drm/vc4/vc4_crtc.c | 2 +-
drivers/gpu/drm/vc4/vc4_drv.h | 1 +
drivers/gpu/drm/vc4/vc4_hvs.c | 49 +-
drivers/gpu/drm/vc4/vc4_kms.c | 5 +-
drivers/gpu/drm/vc4/vc4_regs.h | 12 +-
drivers/gpu/drm/vc4/vc4_txp.c | 8 +-
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 30 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 1 -
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 14 +-
drivers/hid/amd-sfh-hid/amd_sfh_hid.c | 4 +-
drivers/hid/amd-sfh-hid/amd_sfh_hid.h | 2 +-
drivers/hid/hid-bigbenff.c | 6 +
drivers/hid/hid-elan.c | 2 -
drivers/hid/hid-led.c | 2 +-
drivers/hv/channel.c | 6 +-
drivers/hwmon/peci/dimmtemp.c | 6 +-
drivers/hwmon/pmbus/pmbus_core.c | 95 ++-
drivers/hwtracing/coresight/coresight-core.c | 33 +-
drivers/i2c/busses/i2c-at91-master.c | 11 +
drivers/i2c/busses/i2c-npcm7xx.c | 103 ++-
drivers/i2c/busses/i2c-rcar.c | 15 +-
drivers/infiniband/hw/hfi1/file_ops.c | 2 +
drivers/infiniband/hw/hfi1/init.c | 2 +-
drivers/infiniband/hw/hfi1/sdma.c | 12 +-
drivers/infiniband/hw/hns/hns_roce_device.h | 7 +-
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 24 +-
drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 2 +-
drivers/infiniband/hw/hns/hns_roce_main.c | 2 +-
drivers/infiniband/sw/rdmavt/qp.c | 6 +-
drivers/infiniband/sw/rxe/rxe_mcast.c | 6 +-
drivers/infiniband/sw/rxe/rxe_req.c | 2 +-
drivers/input/keyboard/gpio_keys.c | 2 +-
drivers/input/misc/sparcspkr.c | 1 +
drivers/input/touchscreen/stmfts.c | 16 +-
drivers/iommu/amd/init.c | 2 +-
drivers/iommu/amd/iommu.c | 7 -
drivers/iommu/amd/iommu_v2.c | 12 +-
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 13 +-
drivers/iommu/dma-iommu.c | 7 +-
drivers/iommu/intel/iommu.c | 2 +-
drivers/iommu/msm_iommu.c | 11 +-
drivers/iommu/mtk_iommu.c | 30 +-
drivers/iommu/mtk_iommu.h | 2 +
drivers/iommu/mtk_iommu_v1.c | 7 +
drivers/irqchip/irq-armada-370-xp.c | 11 +-
drivers/irqchip/irq-aspeed-i2c-ic.c | 4 +-
drivers/irqchip/irq-aspeed-scu-ic.c | 4 +-
drivers/irqchip/irq-gic-v3.c | 183 +++--
drivers/irqchip/irq-sni-exiu.c | 25 +-
drivers/irqchip/irq-xtensa-mx.c | 18 +-
drivers/macintosh/Kconfig | 6 +
drivers/macintosh/Makefile | 3 +-
drivers/macintosh/via-pmu.c | 2 +-
drivers/mailbox/mailbox.c | 19 +-
drivers/mailbox/pcc.c | 2 +-
drivers/md/bcache/btree.c | 58 +-
drivers/md/bcache/btree.h | 2 +-
drivers/md/bcache/journal.c | 31 +-
drivers/md/bcache/journal.h | 2 +
drivers/md/bcache/request.c | 6 +
drivers/md/bcache/super.c | 1 +
drivers/md/bcache/writeback.c | 101 +--
drivers/md/bcache/writeback.h | 2 +-
drivers/md/md-bitmap.c | 44 +-
drivers/md/md.c | 22 +-
drivers/md/raid0.c | 1 -
drivers/media/cec/core/cec-adap.c | 6 +-
drivers/media/i2c/Kconfig | 1 +
drivers/media/i2c/ccs/ccs-core.c | 7 +-
drivers/media/i2c/dw9714.c | 1 +
drivers/media/i2c/dw9768.c | 6 -
drivers/media/i2c/max9286.c | 19 +-
drivers/media/i2c/ov5648.c | 4 +-
drivers/media/i2c/ov7670.c | 1 -
drivers/media/i2c/rdacm20.c | 2 +-
drivers/media/i2c/rdacm21.c | 2 +-
drivers/media/pci/cx23885/cx23885-core.c | 6 +-
drivers/media/pci/cx25821/cx25821-core.c | 2 +-
drivers/media/platform/amphion/vdec.c | 2 +-
drivers/media/platform/aspeed/aspeed-video.c | 4 +-
drivers/media/platform/atmel/atmel-sama5d2-isc.c | 7 +-
drivers/media/platform/chips-media/coda-common.c | 35 +-
.../platform/mediatek/vcodec/mtk_vcodec_dec.c | 13 +-
.../platform/mediatek/vcodec/mtk_vcodec_dec_drv.c | 6 +-
drivers/media/platform/nxp/imx-mipi-csis.c | 561 ++++++++-------
drivers/media/platform/qcom/venus/helpers.c | 34 +-
drivers/media/platform/qcom/venus/hfi.c | 3 +
drivers/media/platform/renesas/vsp1/vsp1_rpf.c | 6 +-
drivers/media/platform/rockchip/rga/rga.c | 6 +-
.../media/platform/samsung/exynos4-is/fimc-is.c | 6 +-
.../platform/samsung/exynos4-is/fimc-isp-video.h | 2 +-
drivers/media/platform/st/sti/delta/delta-v4l2.c | 6 +-
drivers/media/radio/Kconfig | 4 +-
drivers/media/rc/bpf-lirc.c | 8 +-
drivers/media/rc/imon.c | 99 ++-
drivers/media/usb/pvrusb2/pvrusb2-hdw.c | 7 +-
drivers/media/usb/uvc/uvc_v4l2.c | 20 +-
drivers/memory/samsung/exynos5422-dmc.c | 5 +-
drivers/mfd/davinci_voicecodec.c | 6 +-
drivers/mfd/ipaq-micro.c | 2 +-
drivers/misc/fastrpc.c | 9 +-
drivers/misc/ocxl/file.c | 2 +
drivers/mmc/core/block.c | 8 +-
drivers/mmc/host/jz4740_mmc.c | 20 +
drivers/mmc/host/sdhci_am654.c | 23 +-
drivers/mtd/chips/cfi_cmdset_0002.c | 103 ++-
drivers/mtd/mtdblock.c | 8 +-
drivers/mtd/nand/raw/cadence-nand-controller.c | 5 +-
drivers/mtd/nand/raw/denali_pci.c | 15 +-
drivers/mtd/nand/raw/intel-nand-controller.c | 2 +-
drivers/mtd/nand/spi/gigadevice.c | 10 +-
drivers/mtd/spi-nor/core.c | 9 +
drivers/net/amt.c | 11 +-
drivers/net/bonding/bond_main.c | 15 +-
drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 2 +-
drivers/net/can/xilinx_can.c | 4 +-
drivers/net/dsa/Kconfig | 3 +-
drivers/net/dsa/mt7530.c | 14 +-
drivers/net/dsa/qca8k.c | 7 +-
drivers/net/ethernet/broadcom/Makefile | 5 +
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c | 56 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.h | 2 +
drivers/net/ethernet/cadence/macb_main.c | 42 +-
drivers/net/ethernet/cadence/macb_ptp.c | 4 +-
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 12 +-
drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c | 2 +
drivers/net/ethernet/huawei/hinic/hinic_hw_wq.c | 2 +-
drivers/net/ethernet/intel/ice/ice_devlink.c | 5 +-
drivers/net/ethernet/intel/ice/ice_repr.c | 7 +-
drivers/net/ethernet/intel/ice/ice_sriov.c | 32 +-
drivers/net/ethernet/intel/ice/ice_vf_lib.c | 28 +-
drivers/net/ethernet/intel/ice/ice_virtchnl.c | 5 +
drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c | 7 +-
drivers/net/ethernet/mellanox/mlx5/core/devlink.c | 4 +-
drivers/net/ethernet/mellanox/mlx5/core/en.h | 1 +
.../ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 9 +
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 10 +-
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 10 +-
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/lib/tout.c | 1 +
drivers/net/ethernet/mellanox/mlx5/core/lib/tout.h | 1 +
drivers/net/ethernet/mellanox/mlx5/core/main.c | 23 +-
.../net/ethernet/mellanox/mlx5/core/mlx5_core.h | 2 +-
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c | 13 -
.../net/ethernet/mellanox/mlxsw/spectrum_trap.c | 2 +-
drivers/net/ethernet/sfc/ef10.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 13 +-
drivers/net/ethernet/ti/Kconfig | 1 +
drivers/net/ethernet/xscale/ptp_ixp46x.c | 2 +-
drivers/net/hyperv/netvsc_drv.c | 5 +-
drivers/net/ipa/ipa_endpoint.c | 41 +-
drivers/net/macsec.c | 7 +
drivers/net/phy/micrel.c | 11 +-
drivers/net/usb/asix_devices.c | 6 +-
drivers/net/usb/smsc95xx.c | 3 +-
drivers/net/usb/usbnet.c | 6 +-
drivers/net/wireless/ath/ath10k/mac.c | 20 +-
drivers/net/wireless/ath/ath11k/mac.c | 16 +-
drivers/net/wireless/ath/ath11k/pci.c | 12 +-
drivers/net/wireless/ath/ath11k/spectral.c | 17 +-
drivers/net/wireless/ath/ath11k/wmi.c | 11 +-
drivers/net/wireless/ath/ath11k/wmi.h | 12 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 +-
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 8 +
drivers/net/wireless/ath/carl9170/tx.c | 3 +
drivers/net/wireless/broadcom/b43/phy_n.c | 2 +-
drivers/net/wireless/broadcom/b43legacy/phy.c | 2 +-
drivers/net/wireless/intel/ipw2x00/libipw_tx.c | 2 +-
drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 3 +
drivers/net/wireless/intel/iwlwifi/mei/main.c | 3 +
drivers/net/wireless/intel/iwlwifi/mvm/power.c | 3 +
drivers/net/wireless/marvell/mwifiex/11h.c | 2 +
drivers/net/wireless/mediatek/mt76/agg-rx.c | 5 +-
drivers/net/wireless/mediatek/mt76/mac80211.c | 8 +-
drivers/net/wireless/mediatek/mt76/mt76.h | 2 +-
drivers/net/wireless/mediatek/mt76/mt7603/main.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt7615/main.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 4 +-
.../net/wireless/mediatek/mt76/mt7915/debugfs.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c | 2 +
drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 35 +-
drivers/net/wireless/mediatek/mt76/mt7915/main.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 20 +-
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h | 2 +-
drivers/net/wireless/mediatek/mt76/mt7915/soc.c | 2 +
drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 6 +-
drivers/net/wireless/mediatek/mt76/mt7921/main.c | 6 +-
drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 10 +-
drivers/net/wireless/mediatek/mt76/tx.c | 11 +-
drivers/net/wireless/microchip/wilc1000/mon.c | 4 +-
drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c | 8 +-
drivers/net/wireless/realtek/rtlwifi/usb.c | 2 +-
drivers/net/wireless/realtek/rtw88/rtw8821c.c | 4 +
drivers/net/wireless/realtek/rtw88/rx.c | 3 +-
drivers/net/wireless/realtek/rtw89/cam.c | 14 +-
drivers/net/wireless/realtek/rtw89/fw.c | 2 +-
drivers/net/wireless/realtek/rtw89/phy.c | 5 +
drivers/net/wireless/realtek/rtw89/ser.c | 21 +
drivers/net/wireless/ti/wl1251/event.c | 22 +-
drivers/net/wireless/ti/wl1251/io.c | 20 +-
drivers/net/wireless/ti/wl1251/tx.c | 15 +-
drivers/nfc/st21nfca/se.c | 17 +-
drivers/nfc/st21nfca/st21nfca.h | 1 +
drivers/nvdimm/core.c | 9 -
drivers/nvdimm/pmem.c | 30 +-
drivers/nvdimm/security.c | 5 -
drivers/nvme/host/core.c | 21 +-
drivers/nvme/host/pci.c | 1 +
drivers/of/fdt.c | 3 +
drivers/of/kexec.c | 9 +
drivers/of/overlay.c | 4 +-
drivers/opp/of.c | 2 +-
drivers/pci/controller/cadence/pci-j721e.c | 3 +
drivers/pci/controller/cadence/pcie-cadence-ep.c | 21 +-
drivers/pci/controller/cadence/pcie-cadence.h | 3 +
drivers/pci/controller/dwc/pci-imx6.c | 23 +-
drivers/pci/controller/dwc/pcie-designware-host.c | 3 +-
drivers/pci/controller/dwc/pcie-qcom.c | 15 +-
drivers/pci/controller/pcie-mediatek-gen3.c | 8 +
drivers/pci/controller/pcie-mediatek.c | 1 +
drivers/pci/controller/pcie-microchip-host.c | 16 +-
drivers/pci/controller/pcie-rockchip-ep.c | 3 +-
drivers/pci/pci-acpi.c | 41 +-
drivers/pci/pci.c | 12 +-
drivers/pci/pcie/aer.c | 7 +-
drivers/pci/quirks.c | 47 ++
drivers/phy/qualcomm/phy-qcom-qmp.c | 11 +-
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 18 +
drivers/pinctrl/mediatek/Kconfig | 1 +
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 2 +-
drivers/pinctrl/pinctrl-apple-gpio.c | 1 +
drivers/pinctrl/pinctrl-rockchip.c | 54 +-
drivers/pinctrl/pinctrl-rockchip.h | 7 +-
drivers/pinctrl/renesas/core.c | 7 +-
drivers/pinctrl/renesas/pfc-r8a779a0.c | 29 +
drivers/pinctrl/renesas/pfc-r8a779f0.c | 21 +
drivers/pinctrl/renesas/pinctrl-rzn1.c | 10 +-
drivers/platform/chrome/cros_ec.c | 16 +-
drivers/platform/chrome/cros_ec_chardev.c | 2 +-
drivers/platform/chrome/cros_ec_proto.c | 50 +-
drivers/platform/mips/cpu_hwmon.c | 127 ++--
drivers/platform/x86/intel/chtwc_int33fe.c | 2 +
drivers/platform/x86/intel/hid.c | 2 +-
drivers/regulator/core.c | 7 +-
drivers/regulator/da9121-regulator.c | 2 +
drivers/regulator/pfuze100-regulator.c | 2 +
drivers/regulator/qcom_smd-regulator.c | 35 +-
drivers/regulator/scmi-regulator.c | 2 +-
drivers/s390/cio/chsc.c | 4 +-
drivers/scsi/dc395x.c | 15 +-
drivers/scsi/fcoe/fcoe_ctlr.c | 2 +-
drivers/scsi/hisi_sas/hisi_sas_main.c | 49 +-
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 10 +-
drivers/scsi/lpfc/lpfc.h | 1 +
drivers/scsi/lpfc/lpfc_els.c | 112 +--
drivers/scsi/lpfc/lpfc_hbadisc.c | 3 +
drivers/scsi/lpfc/lpfc_init.c | 51 +-
drivers/scsi/lpfc/lpfc_logmsg.h | 6 +-
drivers/scsi/lpfc/lpfc_nportdisc.c | 10 +-
drivers/scsi/lpfc/lpfc_scsi.c | 37 +-
drivers/scsi/lpfc/lpfc_sli.c | 48 +-
drivers/scsi/megaraid.c | 2 +-
drivers/scsi/ufs/ti-j721e-ufs.c | 6 +-
drivers/scsi/ufs/ufs-qcom.c | 14 +-
drivers/scsi/ufs/ufshcd.c | 7 +-
drivers/soc/bcm/bcm63xx/bcm-pmb.c | 3 +
drivers/soc/qcom/llcc-qcom.c | 1 +
drivers/soc/qcom/smp2p.c | 1 +
drivers/soc/qcom/smsm.c | 1 +
drivers/soc/ti/ti_sci_pm_domains.c | 2 +
drivers/spi/spi-cadence-quadspi.c | 2 +-
drivers/spi/spi-fsl-qspi.c | 4 +
drivers/spi/spi-img-spfi.c | 2 +-
drivers/spi/spi-rockchip.c | 8 +
drivers/spi/spi-rspi.c | 15 +-
drivers/spi/spi-stm32-qspi.c | 3 +-
drivers/spi/spi-ti-qspi.c | 5 +-
drivers/staging/media/hantro/hantro_drv.c | 17 +-
drivers/staging/media/hantro/hantro_g2_hevc_dec.c | 11 +-
drivers/staging/media/hantro/hantro_h264.c | 2 -
drivers/staging/media/hantro/hantro_v4l2.c | 67 +-
drivers/staging/media/rkvdec/rkvdec-h264.c | 37 +-
drivers/staging/media/rkvdec/rkvdec.c | 6 -
drivers/staging/r8188eu/os_dep/ioctl_linux.c | 92 +--
drivers/target/target_core_device.c | 1 -
drivers/target/target_core_user.c | 50 +-
drivers/thermal/broadcom/bcm2711_thermal.c | 5 +-
drivers/thermal/broadcom/sr-thermal.c | 3 +
drivers/thermal/devfreq_cooling.c | 25 +-
drivers/thermal/imx_sc_thermal.c | 6 +-
drivers/thermal/thermal_core.c | 1 +
drivers/tty/goldfish.c | 20 +-
drivers/tty/n_gsm.c | 31 +-
drivers/tty/serial/pch_uart.c | 27 +-
drivers/tty/tty_buffer.c | 3 +-
drivers/usb/core/hcd.c | 29 +-
drivers/usb/core/quirks.c | 3 +
drivers/usb/dwc3/gadget.c | 6 +-
drivers/usb/host/xhci-pci.c | 2 +
drivers/usb/host/xhci.c | 2 +
drivers/usb/isp1760/isp1760-core.c | 8 +
drivers/usb/serial/option.c | 2 +
drivers/usb/serial/pl2303.c | 3 +
drivers/vdpa/vdpa_sim/vdpa_sim.c | 5 +-
drivers/video/console/sticon.c | 5 +-
drivers/video/console/sticore.c | 32 +-
drivers/video/fbdev/amba-clcd.c | 5 +-
drivers/video/fbdev/core/fb_defio.c | 9 +-
drivers/video/fbdev/core/fbcon.c | 5 +-
drivers/video/fbdev/sticore.h | 3 +
drivers/video/fbdev/stifb.c | 4 +-
drivers/video/fbdev/vesafb.c | 5 +-
fs/afs/misc.c | 5 +-
fs/afs/rotate.c | 4 +
fs/afs/rxrpc.c | 8 +-
fs/afs/write.c | 1 +
fs/binfmt_flat.c | 27 +-
fs/btrfs/block-group.c | 8 +
fs/btrfs/block-group.h | 2 +
fs/btrfs/disk-io.c | 4 +-
fs/btrfs/extent_io.c | 27 +-
fs/btrfs/extent_io.h | 1 -
fs/btrfs/inode.c | 81 ++-
fs/btrfs/ioctl.c | 49 +-
fs/btrfs/volumes.c | 8 +-
fs/btrfs/zoned.c | 44 +-
fs/btrfs/zoned.h | 5 +
fs/ceph/mds_client.c | 14 +-
fs/cifs/cifsfs.c | 10 +-
fs/cifs/cifsglob.h | 15 +-
fs/cifs/connect.c | 67 +-
fs/cifs/dfs_cache.c | 6 +-
fs/cifs/fs_context.c | 29 +-
fs/cifs/fs_context.h | 2 +-
fs/cifs/misc.c | 7 +-
fs/cifs/sess.c | 6 +-
fs/cifs/smb2inode.c | 2 -
fs/cifs/smb2ops.c | 9 +-
fs/cifs/smb2pdu.c | 3 +-
fs/cifs/smb2transport.c | 3 +-
fs/dax.c | 3 +-
fs/dlm/lock.c | 15 +-
fs/dlm/lowcomms.c | 2 +-
fs/dlm/plock.c | 12 +-
fs/erofs/decompressor.c | 5 +-
fs/exec.c | 6 +-
fs/exportfs/expfs.c | 5 +-
fs/ext4/ext4.h | 6 -
fs/ext4/extents.c | 20 +-
fs/ext4/inline.c | 12 +
fs/ext4/inode.c | 13 +-
fs/ext4/mballoc.c | 18 +-
fs/ext4/namei.c | 84 ++-
fs/ext4/super.c | 87 ++-
fs/f2fs/dir.c | 3 +-
fs/f2fs/f2fs.h | 29 +-
fs/f2fs/file.c | 20 +-
fs/f2fs/hash.c | 11 +-
fs/f2fs/inline.c | 29 +-
fs/f2fs/inode.c | 19 +-
fs/f2fs/namei.c | 7 +
fs/f2fs/segment.c | 42 +-
fs/f2fs/segment.h | 33 +-
fs/f2fs/super.c | 6 +-
fs/fat/fatent.c | 7 +-
fs/fs-writeback.c | 13 +-
fs/gfs2/quota.c | 32 +-
fs/hugetlbfs/inode.c | 4 +-
fs/io_uring.c | 7 +-
fs/iomap/buffered-io.c | 3 +-
fs/jfs/jfs_dmap.c | 3 +-
fs/ksmbd/connection.c | 2 +-
fs/ksmbd/smb2misc.c | 2 +-
fs/ksmbd/smb_common.c | 4 +-
fs/namei.c | 70 +-
fs/namespace.c | 5 +-
fs/nfs/file.c | 50 +-
fs/nfs/fscache.c | 7 +-
fs/nfs/nfs4namespace.c | 9 +-
fs/nfs/nfs4proc.c | 41 +-
fs/nfs/nfs4state.c | 9 +-
fs/nfs/nfs4xdr.c | 4 +-
fs/nfs/pagelist.c | 3 +
fs/nfs/pnfs.c | 2 +
fs/nfs/unlink.c | 8 +
fs/nfs/write.c | 54 +-
fs/nfsd/nfscache.c | 2 +-
fs/notify/fanotify/fanotify_user.c | 4 +-
fs/notify/fdinfo.c | 11 +-
fs/notify/inotify/inotify.h | 12 +
fs/notify/inotify/inotify_user.c | 2 +-
fs/notify/mark.c | 6 +-
fs/ntfs3/file.c | 12 +-
fs/ntfs3/frecord.c | 10 +-
fs/ntfs3/fslog.c | 12 +-
fs/ntfs3/inode.c | 9 +-
fs/ntfs3/xattr.c | 112 ++-
fs/ocfs2/dlmfs/userdlm.c | 16 +-
fs/ocfs2/inode.c | 4 +-
fs/ocfs2/journal.c | 33 +-
fs/ocfs2/journal.h | 2 +
fs/ocfs2/super.c | 15 +
fs/proc/generic.c | 3 +
fs/proc/proc_net.c | 3 +
fs/seq_file.c | 32 +
include/drm/drm_edid.h | 6 +-
include/drm/drm_format_helper.h | 5 +-
include/linux/blk_types.h | 5 +-
include/linux/bpf.h | 119 +---
include/linux/compat.h | 1 +
include/linux/efi.h | 2 +
include/linux/fwnode.h | 10 +-
include/linux/goldfish.h | 15 +-
include/linux/gpio/driver.h | 12 +
include/linux/ipmi_smi.h | 6 +
include/linux/kexec.h | 46 +-
include/linux/kprobes.h | 2 +-
include/linux/linkage.h | 15 +-
include/linux/list.h | 16 +-
include/linux/mailbox_controller.h | 1 +
include/linux/module.h | 3 +-
include/linux/mtd/cfi.h | 1 +
include/linux/namei.h | 6 +
include/linux/nfs_fs_sb.h | 1 +
include/linux/nfs_xdr.h | 2 +-
include/linux/nodemask.h | 13 +-
include/linux/platform_data/cros_ec_proto.h | 3 +
include/linux/ptp_classify.h | 3 +
include/linux/ptrace.h | 7 -
include/linux/sched/signal.h | 2 +-
include/linux/sched/task.h | 2 +
include/linux/seq_file.h | 4 +
include/linux/set_memory.h | 10 +-
include/linux/usb/hcd.h | 2 +
include/net/bluetooth/hci.h | 9 +
include/net/bluetooth/hci_core.h | 8 +-
include/net/if_inet6.h | 8 +
include/net/ip.h | 2 +-
include/net/sock.h | 5 +-
include/scsi/libfcoe.h | 3 +-
include/scsi/libiscsi.h | 6 +-
include/sound/cs35l41.h | 1 -
include/sound/jack.h | 1 +
include/trace/events/rxrpc.h | 2 +-
include/trace/events/vmscan.h | 4 +-
include/uapi/asm-generic/siginfo.h | 7 +
include/uapi/linux/android/binder.h | 2 +-
include/uapi/linux/landlock.h | 9 +-
include/uapi/linux/lirc.h | 7 +
include/uapi/linux/types.h | 3 +
init/Kconfig | 5 +
init/main.c | 2 +-
ipc/mqueue.c | 14 +
kernel/bpf/cgroup.c | 124 +++-
kernel/dma/debug.c | 2 +-
kernel/dma/direct.c | 31 +-
kernel/events/core.c | 4 +-
kernel/fork.c | 22 +-
kernel/kexec_file.c | 34 -
kernel/kprobes.c | 144 ++--
kernel/module.c | 4 +
kernel/power/energy_model.c | 2 +
kernel/printk/printk.c | 61 +-
kernel/ptrace.c | 5 +-
kernel/rcu/Kconfig | 1 +
kernel/rcu/tasks.h | 5 +-
kernel/scftorture.c | 5 +-
kernel/sched/core.c | 6 +-
kernel/sched/deadline.c | 5 +-
kernel/sched/fair.c | 8 +-
kernel/sched/pelt.h | 4 +-
kernel/sched/psi.c | 15 +-
kernel/sched/rt.c | 5 +-
kernel/sched/sched.h | 32 +-
kernel/signal.c | 18 +-
kernel/trace/bpf_trace.c | 5 +-
kernel/trace/ftrace.c | 5 +-
kernel/trace/trace.c | 6 +-
kernel/trace/trace_boot.c | 2 +-
kernel/trace/trace_events.c | 13 +-
kernel/trace/trace_events_hist.c | 3 +
kernel/trace/trace_osnoise.c | 9 +-
kernel/trace/trace_selftest.c | 3 +
kernel/umh.c | 6 +-
lib/kunit/debugfs.c | 2 +-
lib/kunit/executor.c | 32 +-
lib/kunit/executor_test.c | 4 +-
lib/string_helpers.c | 3 +
mm/cma.c | 4 +-
mm/compaction.c | 2 +
mm/hugetlb.c | 9 +-
mm/memremap.c | 2 +-
mm/page_alloc.c | 4 +-
mm/page_owner.c | 2 +-
net/bluetooth/hci_conn.c | 7 +-
net/bluetooth/hci_event.c | 35 +-
net/bluetooth/hci_request.c | 2 +
net/bluetooth/sco.c | 23 +-
net/core/dev.c | 8 +-
net/ipv4/tcp_input.c | 28 +-
net/ipv6/addrconf.c | 33 +-
net/ipv6/datagram.c | 6 +-
net/ipv6/udp.c | 11 +-
net/mac80211/chan.c | 7 +-
net/mac80211/ieee80211_i.h | 5 +
net/mac80211/rc80211_minstrel_ht.c | 3 +
net/mac80211/scan.c | 20 +
net/mptcp/pm.c | 19 +-
net/mptcp/pm_netlink.c | 2 +
net/mptcp/protocol.c | 18 +-
net/mptcp/protocol.h | 1 +
net/nfc/core.c | 1 +
net/rxrpc/ar-internal.h | 15 +-
net/rxrpc/call_accept.c | 6 +-
net/rxrpc/call_event.c | 7 +-
net/rxrpc/call_object.c | 18 +-
net/rxrpc/conn_object.c | 2 +-
net/rxrpc/input.c | 58 +-
net/rxrpc/net_ns.c | 2 +-
net/rxrpc/output.c | 20 +-
net/rxrpc/proc.c | 10 +-
net/rxrpc/recvmsg.c | 8 +-
net/rxrpc/sendmsg.c | 6 +
net/rxrpc/sysctl.c | 4 +-
net/sctp/input.c | 4 +-
net/smc/af_smc.c | 2 +-
net/wireless/nl80211.c | 4 +-
net/wireless/reg.c | 4 +
samples/bpf/Makefile | 9 +-
samples/landlock/sandboxer.c | 104 +--
scripts/faddr2line | 150 ++--
security/integrity/ima/Kconfig | 14 +-
.../integrity/platform_certs/keyring_handler.h | 8 +
security/integrity/platform_certs/load_uefi.c | 33 +
security/landlock/cred.c | 4 +-
security/landlock/cred.h | 8 +-
security/landlock/fs.c | 191 ++++--
security/landlock/fs.h | 11 +-
security/landlock/limits.h | 8 +-
security/landlock/object.c | 6 +-
security/landlock/object.h | 6 +-
security/landlock/ptrace.c | 10 +-
security/landlock/ruleset.c | 84 +--
security/landlock/ruleset.h | 35 +-
security/landlock/syscalls.c | 95 +--
sound/core/jack.c | 34 +-
sound/core/pcm_memory.c | 3 +-
sound/pci/hda/patch_realtek.c | 21 +-
sound/soc/amd/yc/acp6x-mach.c | 29 +-
sound/soc/atmel/atmel-classd.c | 1 -
sound/soc/atmel/atmel-pdmic.c | 1 -
sound/soc/codecs/Kconfig | 2 -
sound/soc/codecs/cs35l41-lib.c | 14 +-
sound/soc/codecs/lpass-macro-common.c | 35 +-
sound/soc/codecs/max98090.c | 6 +-
sound/soc/codecs/rk3328_codec.c | 2 +-
sound/soc/codecs/rt5514.c | 2 +-
sound/soc/codecs/rt5645.c | 7 +-
sound/soc/codecs/tscs454.c | 12 +-
sound/soc/codecs/wm2000.c | 6 +-
sound/soc/fsl/imx-hdmi.c | 1 +
sound/soc/fsl/imx-sgtl5000.c | 14 +-
sound/soc/intel/boards/bytcr_rt5640.c | 12 +
sound/soc/intel/boards/sof_ssp_amp.c | 16 +-
sound/soc/mediatek/mt2701/mt2701-wm8960.c | 9 +-
sound/soc/mediatek/mt8173/mt8173-max98090.c | 5 +-
sound/soc/mxs/mxs-saif.c | 1 +
sound/soc/samsung/aries_wm8994.c | 2 +-
sound/soc/sh/rcar/core.c | 15 +-
sound/soc/sh/rcar/dma.c | 9 +-
sound/soc/sh/rcar/rsnd.h | 2 +-
sound/soc/sh/rcar/src.c | 7 +-
sound/soc/sh/rcar/ssi.c | 14 +-
sound/soc/sh/rcar/ssiu.c | 11 +-
sound/soc/sh/rz-ssi.c | 22 +-
sound/soc/soc-dapm.c | 2 -
sound/soc/sof/amd/pci-rn.c | 1 +
sound/soc/sof/ipc3-topology.c | 40 +-
sound/soc/ti/j721e-evm.c | 44 +-
sound/usb/implicit.c | 10 +-
sound/usb/midi.c | 3 +
sound/usb/quirks.c | 6 +
sound/usb/usbaudio.h | 6 +
.../test-libbpf-btf__load_from_kernel_by_id.c | 5 +-
tools/lib/bpf/libbpf.c | 22 +-
tools/objtool/check.c | 9 +-
tools/objtool/elf.c | 200 ++++--
tools/objtool/include/objtool/elf.h | 4 +-
tools/perf/Makefile.config | 39 +-
tools/perf/arch/x86/util/evlist.c | 2 +-
tools/perf/arch/x86/util/evsel.c | 12 +
tools/perf/builtin-c2c.c | 6 +-
tools/perf/builtin-stat.c | 7 +-
tools/perf/pmu-events/jevents.c | 2 +-
tools/perf/util/data.h | 1 +
tools/perf/util/evlist.c | 12 +-
tools/perf/util/evsel.c | 19 +
tools/perf/util/evsel.h | 3 +
tools/power/x86/turbostat/turbostat.c | 1 +
tools/testing/kunit/kunit_parser.py | 7 +-
.../test_is_test_passed-no_tests_no_plan.log | 2 +-
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/arm64/bti/Makefile | 4 +-
tools/testing/selftests/bpf/Makefile | 12 +-
.../selftests/bpf/prog_tests/trampoline_count.c | 134 ++--
.../bpf/progs/btf_dump_test_case_syntax.c | 2 +-
tools/testing/selftests/bpf/progs/profiler.inc.h | 5 +-
.../selftests/bpf/progs/test_trampoline_count.c | 16 +-
.../selftests/bpf/test_bpftool_synctypes.py | 2 +-
tools/testing/selftests/bpf/trace_helpers.c | 9 +-
tools/testing/selftests/cgroup/test_stress.sh | 2 +-
tools/testing/selftests/landlock/base_test.c | 177 +++--
tools/testing/selftests/landlock/common.h | 66 +-
tools/testing/selftests/landlock/fs_test.c | 753 ++++++++++++++-------
tools/testing/selftests/landlock/ptrace_test.c | 40 +-
tools/testing/selftests/resctrl/fill_buf.c | 4 +-
tools/tracing/rtla/Makefile | 5 +-
tools/tracing/rtla/README.txt | 13 +-
tools/tracing/rtla/src/osnoise_hist.c | 5 +-
tools/tracing/rtla/src/osnoise_top.c | 9 +-
tools/tracing/rtla/src/timerlat_hist.c | 11 +-
tools/tracing/rtla/src/timerlat_top.c | 11 +-
tools/tracing/rtla/src/utils.c | 108 ++-
tools/tracing/rtla/src/utils.h | 3 +-
951 files changed, 9396 insertions(+), 5279 deletions(-)
^ permalink raw reply [relevance 1%]
* [PATCH 5.17 710/772] thermal: devfreq_cooling: use local ops instead of global ops
2022-06-07 16:53 1% [PATCH 5.17 000/772] 5.17.14-rc1 review Greg Kroah-Hartman
@ 2022-06-07 17:05 7% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-06-07 17:05 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Kant Fan, Lukasz Luba, Rafael J. Wysocki
From: Kant Fan <kant@allwinnertech.com>
commit b947769b8f778db130aad834257fcaca25df2edc upstream.
Fix access illegal address problem in following condition:
There are multiple devfreq cooling devices in system, some of them has
EM model but others do not. Energy model ops such as state2power will
append to global devfreq_cooling_ops when the cooling device with
EM model is registered. It makes the cooling device without EM model
also use devfreq_cooling_ops after appending when registered later by
of_devfreq_cooling_register_power() or of_devfreq_cooling_register().
The IPA governor regards the cooling devices without EM model as a power
actor, because they also have energy model ops, and will access illegal
address at dfc->em_pd when execute cdev->ops->get_requested_power,
cdev->ops->state2power or cdev->ops->power2state.
Fixes: 615510fe13bd2 ("thermal: devfreq_cooling: remove old power model and use EM")
Cc: 5.13+ <stable@vger.kernel.org> # 5.13+
Signed-off-by: Kant Fan <kant@allwinnertech.com>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/thermal/devfreq_cooling.c | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
--- a/drivers/thermal/devfreq_cooling.c
+++ b/drivers/thermal/devfreq_cooling.c
@@ -358,21 +358,28 @@ of_devfreq_cooling_register_power(struct
struct thermal_cooling_device *cdev;
struct device *dev = df->dev.parent;
struct devfreq_cooling_device *dfc;
+ struct thermal_cooling_device_ops *ops;
char *name;
int err, num_opps;
- dfc = kzalloc(sizeof(*dfc), GFP_KERNEL);
- if (!dfc)
+ ops = kmemdup(&devfreq_cooling_ops, sizeof(*ops), GFP_KERNEL);
+ if (!ops)
return ERR_PTR(-ENOMEM);
+ dfc = kzalloc(sizeof(*dfc), GFP_KERNEL);
+ if (!dfc) {
+ err = -ENOMEM;
+ goto free_ops;
+ }
+
dfc->devfreq = df;
dfc->em_pd = em_pd_get(dev);
if (dfc->em_pd) {
- devfreq_cooling_ops.get_requested_power =
+ ops->get_requested_power =
devfreq_cooling_get_requested_power;
- devfreq_cooling_ops.state2power = devfreq_cooling_state2power;
- devfreq_cooling_ops.power2state = devfreq_cooling_power2state;
+ ops->state2power = devfreq_cooling_state2power;
+ ops->power2state = devfreq_cooling_power2state;
dfc->power_ops = dfc_power;
@@ -407,8 +414,7 @@ of_devfreq_cooling_register_power(struct
if (!name)
goto remove_qos_req;
- cdev = thermal_of_cooling_device_register(np, name, dfc,
- &devfreq_cooling_ops);
+ cdev = thermal_of_cooling_device_register(np, name, dfc, ops);
kfree(name);
if (IS_ERR(cdev)) {
@@ -429,6 +435,8 @@ free_table:
kfree(dfc->freq_table);
free_dfc:
kfree(dfc);
+free_ops:
+ kfree(ops);
return ERR_PTR(err);
}
@@ -510,11 +518,13 @@ EXPORT_SYMBOL_GPL(devfreq_cooling_em_reg
void devfreq_cooling_unregister(struct thermal_cooling_device *cdev)
{
struct devfreq_cooling_device *dfc;
+ const struct thermal_cooling_device_ops *ops;
struct device *dev;
if (IS_ERR_OR_NULL(cdev))
return;
+ ops = cdev->ops;
dfc = cdev->devdata;
dev = dfc->devfreq->dev.parent;
@@ -525,5 +535,6 @@ void devfreq_cooling_unregister(struct t
kfree(dfc->freq_table);
kfree(dfc);
+ kfree(ops);
}
EXPORT_SYMBOL_GPL(devfreq_cooling_unregister);
^ permalink raw reply [relevance 7%]
* [PATCH 5.17 000/772] 5.17.14-rc1 review
@ 2022-06-07 16:53 1% Greg Kroah-Hartman
2022-06-07 17:05 7% ` [PATCH 5.17 710/772] thermal: devfreq_cooling: use local ops instead of global ops Greg Kroah-Hartman
0 siblings, 1 reply; 200+ results
From: Greg Kroah-Hartman @ 2022-06-07 16:53 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, slade
This is the start of the stable review cycle for the 5.17.14 release.
There are 772 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 09 Jun 2022 16:48:02 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.17.14-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.17.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.17.14-rc1
Tony Lindgren <tony@atomide.com>
tty: n_gsm: Fix packet data hex dump output
Jia-Ju Bai <baijiaju1990@gmail.com>
md: bcache: check the return value of kzalloc() in detached_dev_do_request()
Xiao Ni <xni@redhat.com>
md: fix double free of io_acct_set bioset
Xiao Ni <xni@redhat.com>
md: Don't set mddev private to NULL in raid0 pers->free
Namjae Jeon <linkinjeon@kernel.org>
fs/ntfs3: Fix invalid free in log_replay
Christian Brauner <brauner@kernel.org>
exportfs: support idmapped mounts
Christian Brauner <brauner@kernel.org>
fs: add two trivial lookup helpers
Eric Biggers <ebiggers@google.com>
ext4: only allow test_dummy_encryption when supported
Maciej W. Rozycki <macro@orcam.me.uk>
MIPS: IP30: Remove incorrect `cpu_has_fpu' override
Maciej W. Rozycki <macro@orcam.me.uk>
MIPS: IP27: Remove incorrect `cpu_has_fpu' override
Xiao Yang <yangx.jy@fujitsu.com>
RDMA/rxe: Generate a completion for unsupported/invalid opcode
Yixing Liu <liuyixing1@huawei.com>
RDMA/hns: Remove the num_cqc_timer variable
Dan Carpenter <dan.carpenter@oracle.com>
staging: r8188eu: delete rtw_wx_read/write32()
Jason A. Donenfeld <Jason@zx2c4.com>
Revert "random: use static branch for crng_ready()"
David Gow <davidgow@google.com>
list: test: Add a test for list_is_head()
Zhengjun Xing <zhengjun.xing@linux.intel.com>
perf evlist: Extend arch_evsel__must_be_in_group to support hybrid systems
Waiman Long <longman@redhat.com>
kseltest/cgroup: Make test_stress.sh work if run interactively
Alex Elder <elder@linaro.org>
net: ipa: fix page free in ipa_endpoint_replenish_one()
Alex Elder <elder@linaro.org>
net: ipa: fix page free in ipa_endpoint_trans_release()
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp: fix reset-controller leak on probe errors
Mao Jinlong <quic_jinlmao@quicinc.com>
coresight: core: Fix coresight device probe failure issue
Tejun Heo <tj@kernel.org>
blk-iolatency: Fix inflight count imbalances and IO hangs on offline
Eugenio Pérez <eperezma@redhat.com>
vdpasim: allow to enable a vq repeatedly
Dinh Nguyen <dinguyen@kernel.org>
dt-bindings: gpio: altera: correct interrupt-cells
Akira Yokosawa <akiyks@gmail.com>
docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0
Steve French <stfrench@microsoft.com>
SMB3: EBADF/EIO errors in rename/open caused by race condition in smb2_compound_op
Luís Henriques <lhenriques@suse.de>
ceph: fix decoding of client session messages flags
Arnd Bergmann <arnd@arndb.de>
ARM: pxa: maybe fix gpio lookup tables
Jonathan Bakker <xc-racer2@live.ca>
ARM: dts: s5pv210: Remove spi-cs-high on panel in Aries
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp: fix struct clk leak on probe errors
Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
clk: tegra: Add missing reset deassertion
Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
arm64: tegra: Add missing DFLL reset on Tegra210
Kathiravan T <quic_kathirav@quicinc.com>
arm64: dts: qcom: ipq8074: fix the sleep clock frequency
Xiaomeng Tong <xiam0nd.tong@gmail.com>
gma500: fix an incorrect NULL check on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator
Jiri Slaby <jirislaby@kernel.org>
serial: pch: don't overwrite xmit->buf[0] by x_char
Coly Li <colyli@suse.de>
bcache: avoid journal no-space deadlock by reserving 1 journal bucket
Coly Li <colyli@suse.de>
bcache: remove incremental dirty sector counting for bch_sectors_dirty_init()
Coly Li <colyli@suse.de>
bcache: improve multithreaded bch_sectors_dirty_init()
Coly Li <colyli@suse.de>
bcache: improve multithreaded bch_btree_check()
Xiaomeng Tong <xiam0nd.tong@gmail.com>
stm: ltdc: fix two incorrect NULL checks on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
carl9170: tx: fix an incorrect use of list iterator
Mark Brown <broonie@kernel.org>
ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control
Alexander Wetzel <alexander@wetzel-home.de>
rtl818x: Prevent using not initialized queues
Yi Yang <yiyang13@huawei.com>
xtensa/simdisk: fix proc_read_simdisk()
Miaohe Lin <linmiaohe@huawei.com>
mm/memremap: fix missing call to untrack_pfn() in pagemap_range()
Mike Kravetz <mike.kravetz@oracle.com>
hugetlb: fix huge_pmd_unshare address update
Christophe de Dinechin <dinechin@redhat.com>
nodemask.h: fix compilation error with GCC12
Mel Gorman <mgorman@techsingularity.net>
mm/page_alloc: always attempt to allocate at least one page during bulk allocation
Dong Aisheng <aisheng.dong@nxp.com>
Revert "mm/cma.c: remove redundant cma_mutex lock"
Yunfei Wang <yf.wang@mediatek.com>
iommu/dma: Fix iova map result check bug
Xiaomeng Tong <xiam0nd.tong@gmail.com>
iommu/msm: Fix an incorrect NULL check on list iterator
Hyunchul Lee <hyc.lee@gmail.com>
ksmbd: fix outstanding credits related bugs
Song Liu <song@kernel.org>
ftrace: Clean up hash direct_functions on register failures
Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
Vincent Whitchurch <vincent.whitchurch@axis.com>
um: Fix out-of-bounds read in LDT setup
Johannes Berg <johannes.berg@intel.com>
um: chan_user: Fix winch_tramp() return value
Johannes Berg <johannes.berg@intel.com>
um: Use asm-generic/dma-mapping.h
Johannes Berg <johannes.berg@intel.com>
um: virtio_uml: Fix broken device handling in time-travel
Felix Fietkau <nbd@nbd.name>
mac80211: upgrade passive scan to active scan on DFS channels after beacon rx
Dimitri John Ledkov <dimitri.ledkov@canonical.com>
cfg80211: declare MODULE_FIRMWARE for regulatory.db
Felix Fietkau <nbd@nbd.name>
mt76: fix use-after-free by removing a non-RCU wcid pointer
Kant Fan <kant@allwinnertech.com>
thermal: devfreq_cooling: use local ops instead of global ops
Max Filippov <jcmvbkbc@gmail.com>
irqchip: irq-xtensa-mx: fix initial IRQ affinity
Pali Rohár <pali@kernel.org>
irqchip/armada-370-xp: Do not touch Performance Counter Overflow on A375, A38x, A39x
Guo Ren <guoren@kernel.org>
csky: patch_text: Fixup last cpu should be master
Bean Huo <beanhuo@micron.com>
mmc: core: Allows to override the timeout value for ioctl() path
Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
RDMA/hfi1: Fix potential integer multiplication overflow errors
Puyou Lu <puyou.lu@gmail.com>
lib/string_helpers: fix not adding strarray to device's resource list
Sean Christopherson <seanjc@google.com>
Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug
GUO Zihua <guozihua@huawei.com>
ima: remove the IMA_TEMPLATE Kconfig option
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: coda: Add more H264 levels for CODA960
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: coda: Fix reported H264 profile
Tokunori Ikegami <ikegami.t@gmail.com>
mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N
Tokunori Ikegami <ikegami.t@gmail.com>
mtd: cfi_cmdset_0002: Move and rename chip_check/chip_ready/chip_good_for_write
Xiaomeng Tong <xiam0nd.tong@gmail.com>
md: fix an incorrect NULL check in md_reload_sb
Xiaomeng Tong <xiam0nd.tong@gmail.com>
md: fix an incorrect NULL check in does_sb_need_changing
Jani Nikula <jani.nikula@intel.com>
drm/i915/dsi: fix VBT send packet port selection for ICL+
Brian Norris <briannorris@chromium.org>
drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX
Xiaomeng Tong <xiam0nd.tong@gmail.com>
drm/nouveau/kms/nv50-: atom: fix an incorrect NULL check on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
drm/nouveau/clk: Fix an incorrect NULL check on list iterator
Lucas Stach <l.stach@pengutronix.de>
drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem
Lyude Paul <lyude@redhat.com>
drm/nouveau/subdev/bus: Ratelimit logging for fault errors
Dave Airlie <airlied@redhat.com>
drm/amdgpu/cs: make commands with 0 chunks illegal behaviour.
Mickaël Salaün <mic@digikod.net>
landlock: Fix same-layer rule unions
Mickaël Salaün <mic@digikod.net>
landlock: Create find_rule() from unmask_layers()
Mickaël Salaün <mic@digikod.net>
landlock: Reduce the maximum number of layers to 16
Mickaël Salaün <mic@digikod.net>
landlock: Define access_mask_t to enforce a consistent access mask size
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Test landlock_create_ruleset(2) argument check ordering
Mickaël Salaün <mic@digikod.net>
landlock: Change landlock_restrict_self(2) check ordering
Mickaël Salaün <mic@digikod.net>
landlock: Change landlock_add_rule(2) argument check ordering
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add tests for O_PATH
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Fully test file rename with "remove" access
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Extend access right tests to directories
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add tests for unknown access rights
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Extend tests for minimal valid attribute size
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Make tests build with old libc
Mickaël Salaün <mic@digikod.net>
landlock: Fix landlock_add_rule(2) documentation
Mickaël Salaün <mic@digikod.net>
samples/landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
samples/landlock: Add clang-format exceptions
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Normalize array assignment
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add clang-format exceptions
Mickaël Salaün <mic@digikod.net>
landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
landlock: Add clang-format exceptions
Manivannan Sadhasivam <mani@kernel.org>
scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled
Xiaomeng Tong <xiam0nd.tong@gmail.com>
scsi: dc395x: Fix a missing check on list iterator
Junxiao Bi via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock
Alexander Aring <aahringo@redhat.com>
dlm: fix missing lkb refcount handling
Alexander Aring <aahringo@redhat.com>
dlm: fix wake_up() calls for pending remove
Dan Carpenter <dan.carpenter@oracle.com>
dlm: uninitialized variable on error in dlm_listen_for_all()
Alexander Aring <aahringo@redhat.com>
dlm: fix plock invalid read
Sven Schnelle <svens@linux.ibm.com>
s390/stp: clock_delta should be signed
Nico Boehr <nrb@linux.ibm.com>
s390/perf: obtain sie_block from the right address
Rei Yamamoto <yamamoto.rei@jp.fujitsu.com>
mm, compaction: fast_find_migrateblock() should return pfn in the target zone
Damien Le Moal <damien.lemoal@opensource.wdc.com>
block: Fix potential deadlock in blk_ia_range_sysfs_show()
Denis Efremov <denis.e.efremov@oracle.com>
staging: r8188eu: prevent ->Ssid overflow in rtw_wx_set_scan()
Johan Hovold <johan+linaro@kernel.org>
PCI: qcom: Fix unbalanced PHY init on probe errors
Johan Hovold <johan+linaro@kernel.org>
PCI: qcom: Fix runtime PM imbalance on probe errors
Bjorn Helgaas <bhelgaas@google.com>
PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: add beige goby PCI ID
Gautam Menghani <gautammenghani201@gmail.com>
tracing: Initialize integer variable to prevent garbage return value
Wonhyuk Yang <vvghjk1234@gmail.com>
tracing: Fix return value of trace_pid_write()
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
tracing: Fix potential double free in create_var_ref()
Laurent Vivier <laurent@vivier.eu>
tty: goldfish: Introduce gf_ioread32()/gf_iowrite32()
Sakari Ailus <sakari.ailus@linux.intel.com>
ACPI: property: Release subnode properties with data nodes
Jan Kara <jack@suse.cz>
ext4: avoid cycles in directory h-tree
Jan Kara <jack@suse.cz>
ext4: verify dir block before splitting it
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search
Theodore Ts'o <tytso@mit.edu>
ext4: filter out EXT4_FC_REPLAY from on-disk superblock field s_state
Ye Bin <yebin10@huawei.com>
ext4: fix bug_on in ext4_writepages
Eric Biggers <ebiggers@google.com>
ext4: fix memory leak in parse_apply_sb_mount_options()
Ye Bin <yebin10@huawei.com>
ext4: fix warning in ext4_handle_inode_extension
Baokun Li <libaokun1@huawei.com>
ext4: fix race condition between ext4_write and ext4_convert_inline_data
Ojaswin Mujoo <ojaswin@linux.ibm.com>
ext4: fix journal_ioprio mount option handling
Ye Bin <yebin10@huawei.com>
ext4: fix use-after-free in ext4_rename_dir_prepare
Dmitry Monakhov <dmtrmonakhov@yandex-team.ru>
ext4: mark group as trimmed only if it was fully scanned
Jan Kara <jack@suse.cz>
bfq: Make sure bfqg for which we are queueing requests is online
Jan Kara <jack@suse.cz>
bfq: Get rid of __bio_blkcg() usage
Jan Kara <jack@suse.cz>
bfq: Track whether bfq_group is still online
Jan Kara <jack@suse.cz>
bfq: Remove pointless bfq_init_rq() calls
Jan Kara <jack@suse.cz>
bfq: Drop pointless unlock-lock pair
Jan Kara <jack@suse.cz>
bfq: Update cgroup information before merging bio
Jan Kara <jack@suse.cz>
bfq: Split shared queues on move between cgroups
Jan Kara <jack@suse.cz>
bfq: Avoid merging queues with different parents
Jan Kara <jack@suse.cz>
bfq: Avoid false marking of bic as stably merged
Aditya Garg <gargaditya08@live.com>
efi: Do not import certificates from UEFI Secure Boot for T2 Macs
Zhihao Cheng <chengzhihao1@huawei.com>
fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according skipped pages
Johannes Berg <johannes.berg@intel.com>
iwlwifi: mei: fix potential NULL-ptr deref
Avraham Stern <avraham.stern@intel.com>
iwlwifi: mei: clear the sap data header before sending
Emmanuel Grumbach <emmanuel.grumbach@intel.com>
iwlwifi: mvm: fix assert 1F04 upon reconfig
Johannes Berg <johannes.berg@intel.com>
iwlwifi: fw: init SAR GEO table only if data is present
Johannes Berg <johannes.berg@intel.com>
wifi: mac80211: fix use-after-free in chanctx code
Peter Zijlstra <peterz@infradead.org>
objtool: Fix symbol creation
Mikulas Patocka <mpatocka@redhat.com>
objtool: Fix objtool regression on x32 systems
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check for inline inode
Chao Yu <chao@kernel.org>
f2fs: fix fallocate to use file_modified to update permissions consistently
Eric Biggers <ebiggers@google.com>
f2fs: don't use casefolded comparison for "." and ".."
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on total_data_blocks
Jaegeuk Kim <jaegeuk@kernel.org>
f2fs: don't need inode lock for system hidden quota
Chao Yu <chao@kernel.org>
f2fs: fix deadloop in foreground GC
Chao Yu <chao@kernel.org>
f2fs: fix to clear dirty inode in f2fs_evict_inode()
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on block address in f2fs_do_zero_range()
Chao Yu <chao@kernel.org>
f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count()
Olga Kornievskaia <kolga@netapp.com>
NFSv4.1 mark qualified async operations as MOVEABLE tasks
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Convert GFP_NOFS to GFP_KERNEL
Benjamin Coddington <bcodding@redhat.com>
NFSv4: Fix free of uninitialized nfs4_label on referral lookup.
Javier Martinez Canillas <javierm@redhat.com>
video: fbdev: vesafb: Fix a use-after-free due early fb_info cleanup
Zhengjun Xing <zhengjun.xing@linux.intel.com>
perf jevents: Fix event syntax error caused by ExtSel
Daniel Bristot de Oliveira <bristot@kernel.org>
tracing/timerlat: Notify IRQ new max latency only if stop tracing is set
Daniel Bristot de Oliveira <bristot@kernel.org>
rtla: Fix __set_sched_attr error message
John Kacur <jkacur@redhat.com>
rtla: Minor grammar fix for rtla README
John Kacur <jkacur@redhat.com>
rtla: Don't overwrite existing directory mode
Leo Yan <leo.yan@linaro.org>
perf c2c: Use stdio interface if slang is not supported
Jiri Olsa <jolsa@kernel.org>
perf build: Fix btf__load_from_kernel_by_id() feature check
Tiezhu Yang <yangtiezhu@loongson.cn>
MIPS: RALINK: Define pci_remap_iospace under CONFIG_PCI_DRIVERS_GENERIC
Palmer Dabbelt <palmer@rivosinc.com>
RISC-V: Fix the XIP build
Li Huafei <lihuafei1@huawei.com>
tracing: Reset the function filter after completing trampoline/graph selftest
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
i2c: rcar: fix PM ref counts in probe error paths
Tali Perry <tali.perry1@gmail.com>
i2c: npcm: Handle spurious interrupts
Tyrone Ting <kfting@nuvoton.com>
i2c: npcm: Correct register access width
Tali Perry <tali.perry1@gmail.com>
i2c: npcm: Fix timeout calculation
Joerg Roedel <jroedel@suse.de>
iommu/amd: Increase timeout waiting for GA log enablement
Amelie Delaunay <amelie.delaunay@foss.st.com>
dmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler()
Amelie Delaunay <amelie.delaunay@foss.st.com>
dmaengine: stm32-mdma: remove GISR1 register
Miaoqian Lin <linmq006@gmail.com>
video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Further fixes to the writeback error handling
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Don't report errors from nfs_pageio_complete() more than once
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Do not report flush errors in nfs_write_end()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Don't report ENOSPC write errors twice
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Do not report EINTR/ERESTARTSYS as mapping errors
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
dmaengine: idxd: Fix the error handling path in idxd_cdev_register()
Nathan Chancellor <nathan@kernel.org>
i2c: at91: Initialize dma_buf in at91_twi_xfer()
Miles Chen <miles.chen@mediatek.com>
iommu/mediatek: Fix NULL pointer dereference when printing dev_name
Guenter Roeck <linux@roeck-us.net>
MIPS: Loongson: Use hwmon_device_register_with_groups() to register hwmon
Jean-Philippe Brucker <jean-philippe@linaro.org>
iommu/arm-smmu-v3-sva: Fix mm use-after-free
Rex-BC Chen <rex-bc.chen@mediatek.com>
cpufreq: mediatek: Unregister platform device on exit
Jia-Wei Chang <jia-wei.chang@mediatek.com>
cpufreq: mediatek: Use module_init and add module_exit
Michael Walle <michael@walle.cc>
i2c: at91: use dma safe buffers
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Add mutex for m4u_group and m4u_dom in data
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Remove clk_disable in mtk_iommu_remove
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Add list_del in mtk_iommu_remove
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Fix 2 HW sharing pgtable issue
Mario Limonciello <mario.limonciello@amd.com>
iommu/amd: Enable swiotlb in all cases
Guo Ren <guoren@kernel.org>
riscv: Fixup difference with defconfig
Jakob Koschel <jakobkoschel@gmail.com>
f2fs: fix dereference of stale list iterator after loop body
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on inline_dots inode
Dan Carpenter <dan.carpenter@oracle.com>
OPP: call of_node_put() on error path in _bandwidth_supported()
Dmitry Torokhov <dmitry.torokhov@gmail.com>
Input: stmfts - do not leave device disabled in stmfts_input_open
Wanpeng Li <wanpengli@tencent.com>
KVM: LAPIC: Drop pending LAPIC timer injection when canceling the timer
Hector Martin <marcan@marcan.st>
pinctrl: apple: Use a raw spinlock for the regmap
Douglas Miller <doug.miller@cornelisnetworks.com>
RDMA/hfi1: Prevent use of lock before it is initialized
Björn Ardö <bjorn.ardo@axis.com>
mailbox: forward the hrtimer if not queued and under a lock
Julian Schroeder <jumaco@amazon.com>
nfsd: destroy percpu stats counters after reply cache shutdown
Yang Yingliang <yangyingliang@huawei.com>
mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
gpio: sim: Use correct order for the parameters of devm_kcalloc()
Christophe Leroy <christophe.leroy@csgroup.eu>
powerpc/fsl_book3e: Don't set rodata RO too early
Miaoqian Lin <linmq006@gmail.com>
powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup
Miaoqian Lin <linmq006@gmail.com>
powerpc/xive: Fix refcount leak in xive_spapr_init
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
powerpc/xive: Add some error handling code to 'xive_spapr_init()'
Randy Dunlap <rdunlap@infradead.org>
macintosh: via-pmu and via-cuda need RTC_LIB
Kajol Jain <kjain@linux.ibm.com>
powerpc/perf: Fix the threshold compare group constraint for power9
Kajol Jain <kjain@linux.ibm.com>
powerpc/perf: Fix the threshold compare group constraint for power10
Russell Currey <ruscur@russell.cc>
powerpc/powernv: Get STF barrier requirements from device-tree
Russell Currey <ruscur@russell.cc>
powerpc/powernv: Get L1D flush requirements from device-tree
Michael Ellerman <mpe@ellerman.id.au>
powerpc/64: Only WARN if __pa()/__va() called with bad addresses
Mario Limonciello <mario.limonciello@amd.com>
mailbox: pcc: Fix an invalid-load caught by the address sanitizer
Kan Liang <kan.liang@linux.intel.com>
perf stat: Always keep perf metrics topdown events in a group
Ian Rogers <irogers@google.com>
perf evlist: Keep topdown counters in weak group
Yang Yingliang <yangyingliang@huawei.com>
hwrng: omap3-rom - fix using wrong clk_disable() in omap_rom_rng_runtime_resume()
Daire McNamara <daire.mcnamara@microchip.com>
PCI: microchip: Fix potential race in interrupt handling
Fabiano Rosas <farosas@linux.ibm.com>
KVM: PPC: Book3S HV: Fix vcore_blocked tracepoint
Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits
Miaoqian Lin <linmq006@gmail.com>
Input: sparcspkr - fix refcount leak in bbc_beep_probe
Jane Chu <jane.chu@oracle.com>
mce: fix set_mce_nospec to always unmap the whole page
Jane Chu <jane.chu@oracle.com>
x86/mce: relocate set{clear}_mce_nospec() functions
Mina Almasry <almasrymina@google.com>
hugetlbfs: fix hugetlbfs_statfs() locking
Eugen Hristev <eugen.hristev@microchip.com>
ARM: dts: at91: sama7g5: remove interrupt-parent from gic node
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
crypto: cryptd - Protect per-CPU resource by disabling BH.
Corentin Labbe <clabbe@baylibre.com>
crypto: sun8i-ss - handle zero sized sg
Corentin Labbe <clabbe@baylibre.com>
crypto: sun8i-ss - rework handling of IV
Qi Zheng <zhengqi.arch@bytedance.com>
tty: fix deadlock caused by calling printk() under tty_port->lock
Alexey Dobriyan <adobriyan@gmail.com>
module: fix [e_shstrndx].sh_size=0 OOB access
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
module.h: simplify MODULE_IMPORT_NS
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
PCI: mediatek-gen3: Assert resets to ensure expected init state
Francesco Dolcini <francesco.dolcini@toradex.com>
PCI: imx6: Fix PERST# start-up sequence
Waiman Long <longman@redhat.com>
ipc/mqueue: use get_tree_nodev() in mqueue_get_tree()
Alexey Dobriyan <adobriyan@gmail.com>
proc: fix dentry/inode overinstantiating under /proc/${pid}/net
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: atmel-classd: Remove endianness flag on class d component
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: atmel-pdmic: Remove endianness flag on pdmic component
Robert Marko <robert.marko@sartura.hr>
arm64: dts: marvell: espressobin-ultra: enable front USB3 port
Robert Marko <robert.marko@sartura.hr>
arm64: dts: marvell: espressobin-ultra: fix SPI-NOR config
Yangyang Li <liyangyang20@huawei.com>
RDMA/hns: Add the detection for CMDQ status in the device initialization process
Randy Dunlap <rdunlap@infradead.org>
powerpc/4xx/cpm: Fix return value of __setup() handler
Randy Dunlap <rdunlap@infradead.org>
powerpc/idle: Fix return value of __setup() handler
Yang Yingliang <yangyingliang@huawei.com>
pinctrl: renesas: core: Fix possible null-ptr-deref in sh_pfc_map_resources()
Geert Uytterhoeven <geert+renesas@glider.be>
pinctrl: renesas: r8a779a0: Fix GPIO function on I2C-capable pins
Randy Dunlap <rdunlap@infradead.org>
powerpc/8xx: export 'cpm_setbrg' for modules
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/dpu: fix error check return value of irq_of_parse_and_map()
Kuniyuki Iwashima <kuniyu@amazon.co.jp>
list: fix a data-race around ep->rdllist
Heming Zhao via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: fix mounting crash if journal is not alloced
Sudeep Holla <sudeep.holla@arm.com>
firmware: arm_ffa: Remove incorrect assignment of driver_data
Sudeep Holla <sudeep.holla@arm.com>
firmware: arm_ffa: Fix uuid parameter to ffa_partition_probe
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
drivers/base/memory: fix an unlikely reference counting issue in __add_memory_block()
Muchun Song <songmuchun@bytedance.com>
dax: fix cache flush on PMD-mapped pages
Miaohe Lin <linmiaohe@huawei.com>
drivers/base/node.c: fix compaction sysfs file leak
Jacky Li <jackyli@google.com>
crypto: ccp - Fix the INIT_EX data file open failure
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
pinctrl: mvebu: Fix irq_of_parse_and_map() return value
Dan Williams <dan.j.williams@intel.com>
nvdimm: Allow overwrite in the presence of disabled dimms
Dan Williams <dan.j.williams@intel.com>
nvdimm: Fix firmware activation deadlock scenarios
Cristian Marussi <cristian.marussi@arm.com>
firmware: arm_scmi: Fix list protocols enumeration in the base protocol
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
ASoC: sh: rz-ssi: Propagate error codes returned from platform_get_irq_byname()
Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
arm64: dts: ti: k3-am64-mcu: remove incorrect UART base clock rates
QintaoShen <unSimple1993@163.com>
soc: bcm: Check for NULL return of devm_kzalloc()
Gustavo A. R. Silva <gustavoars@kernel.org>
scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac()
Lv Ruyi <lv.ruyi@zte.com.cn>
mfd: ipaq-micro: Fix error check return value of platform_get_irq()
Hari Bathini <hbathini@linux.ibm.com>
powerpc/fadump: fix PT_LOAD segment for boot memory area
Andrea Parri (Microsoft) <parri.andrea@gmail.com>
Drivers: hv: vmbus: Fix handling of messages with transaction ID of zero
Vinod Koul <vkoul@kernel.org>
arm64: dts: qcom: qrb5165-rb5: Fix can-clock node name
Fabien Parent <fparent@baylibre.com>
pinctrl: mediatek: mt8195: enable driver on mtk platforms
Caleb Connolly <kc@postmarketos.org>
pinctrl/rockchip: support deferring other gpio params
Chuanhong Guo <gch981213@gmail.com>
arm: mediatek: select arch timer for mt7629
Chia-I Wu <olvaffe@gmail.com>
drm/msm: return the average load over the polling period
Chia-I Wu <olvaffe@gmail.com>
drm/msm: simplify gpu_busy callback
Stefan Wahren <stefan.wahren@i2se.com>
pinctrl: bcm2835: implement hook for missing gpio-ranges
Stefan Wahren <stefan.wahren@i2se.com>
gpiolib: of: Introduce hook for missing gpio-ranges
Corentin Labbe <clabbe@baylibre.com>
crypto: marvell/cesa - ECB does not IV
Vladis Dronov <vdronov@redhat.com>
hwrng: cn10k - Make check_rng_health() return an error code
Vladis Dronov <vdronov@redhat.com>
hwrng: cn10k - Optimize cn10k_rng_read()
Hangyu Hua <hbh25y@gmail.com>
misc: ocxl: fix possible double free in ocxl_file_register_afu
Stefan Wahren <stefan.wahren@i2se.com>
ARM: dts: bcm2835-rpi-b: Fix GPIO line names
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: qcom: sdx55: remove wrong unit address from RPMH RSC clocks
Bryan O'Donoghue <bryan.odonoghue@linaro.org>
dt-bindings: soc: qcom: smd-rpm: Fix missing MSM8936 compatible
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Fix PHY post-reset delay on Avenger96
Marc Kleine-Budde <mkl@pengutronix.de>
can: xilinx_can: mark bit timing constants as const
Guenter Roeck <linux@roeck-us.net>
platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls
Max Krummenacher <max.krummenacher@toradex.com>
ARM: dts: imx6dl-colibri: Fix I2C pinmuxing
Tzung-Bi Shih <tzungbi@kernel.org>
platform/chrome: cros_ec: fix error handling in cros_ec_register()
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - set COMPRESSION capability for DH895XCC
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - set CIPHER capability for DH895XCC
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Leave most VM-Exit info fields unmodified on failed VM-Entry
Bjorn Andersson <bjorn.andersson@linaro.org>
soc: qcom: llcc: Add MODULE_DEVICE_TABLE()
Thorsten Scherer <t.scherer@eckelmann.de>
ARM: dts: ci4x10: Adapt to changes in imx6qdl.dtsi regarding fec clocks
Jiantao Zhang <water.zhangjiantao@huawei.com>
PCI: dwc: Fix setting error return on MSI DMA mapping failure
Miaoqian Lin <linmq006@gmail.com>
PCI: mediatek: Fix refcount leak in mtk_pcie_subsys_powerup()
Dan Carpenter <dan.carpenter@oracle.com>
PCI: rockchip: Fix find_first_zero_bit() limit
Dan Carpenter <dan.carpenter@oracle.com>
PCI: cadence: Fix find_first_zero_bit() limit
Miaoqian Lin <linmq006@gmail.com>
soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc
Miaoqian Lin <linmq006@gmail.com>
soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc
Andre Przywara <andre.przywara@arm.com>
ARM: dts: suniv: F1C100: fix watchdog compatible
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM5301X: Update pin controller node name
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
memory: samsung: exynos5422-dmc: Avoid some over memory allocation
Mario Limonciello <mario.limonciello@amd.com>
PCI/ACPI: Allow D3 only if Root Port can signal and wake from D3
Allen-KH Cheng <allen-kh.cheng@mediatek.com>
arm64: dts: mt8192: Fix nor_flash status disable typo
Shawn Lin <shawn.lin@rock-chips.com>
arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399
liuyacan <liuyacan@corp.netease.com>
Revert "net/smc: fix listen processing for SMC-Rv2"
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Bluetooth: hci_conn: Fix hci_connect_le_sync
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Bluetooth: hci_sync: Cleanup hci_conn if it cannot be aborted
Robin Murphy <robin.murphy@arm.com>
dma-direct: don't over-decrypt memory
liuyacan <liuyacan@corp.netease.com>
net/smc: fix listen processing for SMC-Rv2
liuyacan <liuyacan@corp.netease.com>
net/smc: postpone sk_refcnt increment in connect()
Randy Dunlap <rdunlap@infradead.org>
net: dsa: restrict SMSC_LAN9303_I2C kconfig
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
hinic: Avoid some over memory allocation
David Howells <dhowells@redhat.com>
rxrpc: Fix decision on when to generate an IDLE ACK
David Howells <dhowells@redhat.com>
rxrpc: Don't let ack.previousPacket regress
David Howells <dhowells@redhat.com>
rxrpc: Fix overlapping ACK accounting
David Howells <dhowells@redhat.com>
rxrpc: Don't try to resend the request if we're receiving the reply
David Howells <dhowells@redhat.com>
rxrpc: Fix listen() setting the bar too high for the prealloc rings
David Howells <dhowells@redhat.com>
rxrpc: Fix locking issue
Adam Wujek <dev_public@wujek.eu>
hwmon: (pmbus) Check PEC support before reading other registers
Yongzhi Liu <lyz_cs@pku.edu.cn>
hv_netvsc: Fix potential dereference of NULL pointer
Taehee Yoo <ap420073@gmail.com>
amt: fix memory leak for advertisement message
Taehee Yoo <ap420073@gmail.com>
amt: fix gateway mode stuck
Jakub Kicinski <kuba@kernel.org>
net: stmmac: fix out-of-bounds access in a selftest
Kan Liang <kan.liang@linux.intel.com>
perf parse-events: Support different format of the topdown event name
Alexey Khoroshilov <khoroshilov@ispras.ru>
ASoC: max98090: Move check for invalid values before casting in max98090_put_enab_tlv()
Hangbin Liu <liuhangbin@gmail.com>
bonding: fix missed rcu protection
Duoming Zhou <duoming@zju.edu.cn>
NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx
John Garry <john.garry@huawei.com>
scsi: hisi_sas: Fix rescan after deleting a disk
Harini Katakam <harini.katakam@xilinx.com>
net: macb: Fix PTP one step sync support
Ulf Hansson <ulf.hansson@linaro.org>
PM: domains: Fix initialization of genpd's next_wakeup
Yang Yingliang <yangyingliang@huawei.com>
ASoC: wm2000: fix missing clk_disable_unprepare() on error in wm2000_anc_transition()
Jan Kara <jack@suse.cz>
bfq: Allow current waker to defend against a tentative one
Jan Kara <jack@suse.cz>
bfq: Relax waker detection for shared queues
Miaoqian Lin <linmq006@gmail.com>
thermal/drivers/imx_sc_thermal: Fix refcount leak in imx_sc_thermal_probe
Yang Yingliang <yangyingliang@huawei.com>
thermal/core: Fix memory leak in __thermal_cooling_device_register()
Zheng Yongjun <zhengyongjun3@huawei.com>
thermal/drivers/broadcom: Fix potential NULL dereference in sr_thermal_probe
Stefan Wahren <stefan.wahren@i2se.com>
thermal/drivers/bcm2711: Don't clamp temperature at zero
Nathan Chancellor <nathan@kernel.org>
drm/i915: Fix CFI violation with show_dynamic_id()
Abhinav Kumar <quic_abhinavk@quicinc.com>
drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path
Hangbin Liu <liuhangbin@gmail.com>
selftests/bpf: Add missed ima_setup.sh in Makefile
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm: don't free the IRQ if it was not requested
Lai Jiangshan <jiangshan.ljs@antgroup.com>
x86/sev: Annotate stack change in the #VC handler
Hangyu Hua <hbh25y@gmail.com>
drm: msm: fix possible memory leak in mdp5_crtc_cursor_set()
Miaoqian Lin <linmq006@gmail.com>
drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init
Eric Biggers <ebiggers@google.com>
ext4: reject the 'commit' option on ext2 filesystems
Moshe Tal <moshet@nvidia.com>
net/mlx5e: Correct the calculation of max channels for rep
Gao Xiang <hsiangkao@linux.alibaba.com>
erofs: fix buffer copy overflow of ztailpacking feature
Miaoqian Lin <linmq006@gmail.com>
regulator: scmi: Fix refcount leak in scmi_regulator_probe
Jonas Karlman <jonas@kwiboo.se>
media: rkvdec: h264: Fix bit depth wrap in pps packet
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: rkvdec: h264: Fix dpb_valid implementation
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: rkvdec: Stop overclocking the decoder
Yang Yingliang <yangyingliang@huawei.com>
media: i2c: ov5648: fix wrong pointer passed to IS_ERR() and PTR_ERR()
Dongliang Mu <mudongliangabcd@gmail.com>
media: ov7670: remove ov7670_power_off from ov7670_remove
Andre Przywara <andre.przywara@arm.com>
kselftest/arm64: bti: force static linking
Miaoqian Lin <linmq006@gmail.com>
ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_*
Zheng Bin <zhengbin13@huawei.com>
net: hinic: add missing destroy_workqueue in hinic_pf_to_mgmt_init
Eric Dumazet <edumazet@google.com>
sctp: read sk->sk_bound_dev_if once in sctp_rcv()
Geert Uytterhoeven <geert@linux-m68k.org>
m68k: math-emu: Fix dependencies of math emulation support
Keith Busch <kbusch@kernel.org>
nvme: set dma alignment to dword
Mark Rutland <mark.rutland@arm.com>
irqchip/gic-v3: Fix priority mask handling
Mark Rutland <mark.rutland@arm.com>
irqchip/gic-v3: Refactor ISB + EOIR at ack time
Mark Rutland <mark.rutland@arm.com>
irqchip/gic-v3: Ensure pseudo-NMIs have an ISB between ack and handling
Dylan Yudaken <dylany@fb.com>
io_uring: only wake when the correct events are set
Jens Axboe <axboe@kernel.dk>
io_uring: fix assuming triggered poll waitqueue is the single poll
Jens Axboe <axboe@kernel.dk>
io_uring: cache poll/double-poll state with a request flag
Pavel Begunkov <asml.silence@gmail.com>
io_uring: avoid io-wq -EAGAIN looping for !IOPOLL
Yunfei Dong <yunfei.dong@mediatek.com>
media: mediatek: vcodec: Fix v4l2 compliance decoder cmd test fail
Sean Wang <sean.wang@mediatek.com>
Bluetooth: btmtksdio: fix use-after-free at btmtksdio_recv_event
Niels Dossche <dossche.niels@gmail.com>
Bluetooth: protect le accept and resolv lists with hdev->lock
Niels Dossche <dossche.niels@gmail.com>
Bluetooth: use hdev lock for accept_list and reject_list in conn req
Niels Dossche <dossche.niels@gmail.com>
Bluetooth: use hdev lock in activate_scan for hci_is_adv_monitoring
Ying Hsu <yinghsu@chromium.org>
Bluetooth: fix dangling sco_conn and use-after-free in sco_sock_timeout
Benjamin Gaignard <benjamin.gaignard@collabora.com>
media: hantro: HEVC: Fix tile info buffer value computation
Eugen Hristev <eugen.hristev@microchip.com>
media: atmel: atmel-sama5d2-isc: fix wrong mask in YUYV format check
Michael Rodin <mrodin@de.adit-jv.com>
media: vsp1: Fix offset calculation for plane cropping
Pavel Skripkin <paskripkin@gmail.com>
media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init
Miaoqian Lin <linmq006@gmail.com>
media: exynos4-is: Change clk_disable to clk_disable_unprepare
Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
media: i2c: rdacm2x: properly set subdev entity function
Miaoqian Lin <linmq006@gmail.com>
media: atmel: atmel-isc: Fix PM disable depth imbalance in atmel_isc_probe
Miaoqian Lin <linmq006@gmail.com>
media: st-delta: Fix PM disable depth imbalance in delta_probe
Peter Chiu <chui-hao.chiu@mediatek.com>
mt76: mt7915: fix twt table_mask to u16 in mt7915_dev
Felix Fietkau <nbd@nbd.name>
mt76: fix tx status related use-after-free race on station removal
Felix Fietkau <nbd@nbd.name>
mt76: do not attempt to reorder received 802.3 packets without agg session
Sean Wang <sean.wang@mediatek.com>
mt76: mt7921: fix kernel crash at mt7921_pci_remove
Deren Wu <deren.wu@mediatek.com>
mt76: fix antenna config missing in 6G cap
Lorenzo Bianconi <lorenzo@kernel.org>
mt76: mt7915: do not pass data pointer to mt7915_mcu_muru_debug_set
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
mt76: mt7921: Fix the error handling path of mt7921_pci_probe()
Miaoqian Lin <linmq006@gmail.com>
media: exynos4-is: Fix PM disable depth imbalance in fimc_is_probe
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
media: aspeed: Fix an error handling path in aspeed_video_probe()
Josh Poimboeuf <jpoimboe@kernel.org>
scripts/faddr2line: Fix overlapping text section failures
Phil Auld <pauld@redhat.com>
kselftest/cgroup: fix test_stress.sh to use OUTPUT dir
Bart Van Assche <bvanassche@acm.org>
block: Fix the bio.bi_opf comment
Miaoqian Lin <linmq006@gmail.com>
ASoC: samsung: Fix refcount leak in aries_audio_probe
Christoph Hellwig <hch@lst.de>
dma-direct: don't fail on highmem CMA pages in dma_direct_alloc_pages
Pierre Gondois <Pierre.Gondois@arm.com>
PM: EM: Decrement policy counter
Miaoqian Lin <linmq006@gmail.com>
regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt
Miaoqian Lin <linmq006@gmail.com>
ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: imx-hdmi: Fix refcount leak in imx_hdmi_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe
Basavaraj Natikar <Basavaraj.Natikar@amd.com>
HID: amd_sfh: Modify the hid name
Basavaraj Natikar <Basavaraj.Natikar@amd.com>
HID: amd_sfh: Modify the bus name
Ajay Singh <ajay.kathat@microchip.com>
wilc1000: fix crash observed in AP mode with cfg80211_register_netdevice()
Baochen Qiang <quic_bqiang@quicinc.com>
ath11k: Don't check arvif->is_started before sending management frames
Ravi Bangoria <ravi.bangoria@amd.com>
perf/amd/ibs: Use interrupt regs ip for stack unwinding
Jerome Marchand <jmarchan@redhat.com>
samples: bpf: Don't fail for a missing VMLINUX_BTF when VMLINUX_H is provided
Konrad Dybcio <konrad.dybcio@somainline.org>
regulator: qcom_smd: Fix up PM8950 regulator configuration
Viresh Kumar <viresh.kumar@linaro.org>
Revert "cpufreq: Fix possible race in cpufreq online error path"
Andrii Nakryiko <andrii@kernel.org>
selftests/bpf: Prevent skeleton generation race
Yang Yingliang <yangyingliang@huawei.com>
spi: spi-fsl-qspi: check return value after calling platform_get_resource_byname()
Andreas Gruenbacher <agruenba@redhat.com>
iomap: iomap_write_failed fix
Mark Rutland <mark.rutland@arm.com>
arm64: stackleak: fix current_top_of_stack()
Xiaomeng Tong <xiam0nd.tong@gmail.com>
media: uvcvideo: Fix missing check to determine if element is found in list
Dan Carpenter <dan.carpenter@oracle.com>
drm/msm: return an error pointer in msm_gem_prime_get_sg_table()
Jessica Zhang <quic_jesszhan@quicinc.com>
drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is detected
Jessica Zhang <quic_jesszhan@quicinc.com>
drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is detected
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: fix event thread stuck in wait_event after kthread_stop()
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/dsi: fix address for second DSI PHY on SDM660
Vinod Polimera <quic_vpolimer@quicinc.com>
drm/msm/disp/dpu1: avoid clearing hw interrupts if hw_intr is null during drm uninit
Zev Weiss <zev@bewilderbeest.net>
regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET
Tong Tiangen <tongtiangen@huawei.com>
arm64: fix types in copy_highpage()
Randy Dunlap <rdunlap@infradead.org>
x86/mm: Cleanup the control_va_addr_alignment() __setup handler
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value
Daniel Thompson <daniel.thompson@linaro.org>
irqchip/exiu: Fix acknowledgment of edge triggered interrupts
Randy Dunlap <rdunlap@infradead.org>
x86: Fix return value of __setup handlers
Johannes Berg <johannes.berg@intel.com>
nl80211: don't hold RTNL in color change request
Christoph Hellwig <hch@lst.de>
virtio_blk: fix the discard_granularity and discard_alignment queue limits
James Clark <james.clark@arm.com>
perf tools: Use Python devtools for version autodetection rather than runtime
Ian Abbott <abbotti@mev.co.uk>
spi: cadence-quadspi: fix Direct Access Mode disable for SoCFPGA
Yang Yingliang <yangyingliang@huawei.com>
drm/rockchip: vop: fix possible null-ptr-deref in vop_bind()
Daniel Latypov <dlatypov@google.com>
kunit: fix debugfs code to use enum kunit_status, not bool
Jagan Teki <jagan@amarulasolutions.com>
drm/panel: panel-simple: Fix proper bpc for AM-1280800N3TZQW-T00H
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm: add missing include to msm_drv.c
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/hdmi: fix error check return value of irq_of_parse_and_map()
Yang Yingliang <yangyingliang@huawei.com>
drm/msm/hdmi: check return value after calling platform_get_resource_byname()
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/dsi: fix error checks and return values for DSI xmit functions
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: do not stop transmitting phy test pattern during DP phy compliance test
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: reset DP controller before transmit phy test pattern
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/dp: fix error check return value of irq_of_parse_and_map()
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: stop event kernel thread when DP unbind
Vinod Polimera <quic_vpolimer@quicinc.com>
drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after memory free during pm runtime resume
Yang Jihong <yangjihong1@huawei.com>
perf tools: Add missing headers needed by util/data.h
Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
ASoC: rk3328: fix disabling mclk on pclk probe failure
Josh Poimboeuf <jpoimboe@redhat.com>
x86/speculation: Add missing prototype for unpriv_ebpf_notify()
Yang Yingliang <yangyingliang@huawei.com>
mtd: rawnand: intel: fix possible null-ptr-deref in ebu_nand_probe()
Yang Yingliang <yangyingliang@huawei.com>
mtd: rawnand: cadence: fix possible null-ptr-deref in cadence_nand_dt_probe()
Matthieu Baerts <matthieu.baerts@tessares.net>
x86/pm: Fix false positive kmemleak report in msr_build_context()
Chen-Tsung Hsieh <chentsung@chromium.org>
mtd: spi-nor: core: Check written SR value in spi_nor_write_16bit_sr_and_check()
Andrii Nakryiko <andrii@kernel.org>
libbpf: Fix logic for finding matching program for CO-RE relocation
Colin Ian King <colin.king@intel.com>
selftests/resctrl: Fix null pointer dereference on open failed
Colin Ian King <colin.king@intel.com>
drm/v3d: Fix null pointer dereference of pointer perfmon
Kiwoong Kim <kwmad.kim@samsung.com>
scsi: ufs: core: Exclude UECxx from SFR dump list
Bart Van Assche <bvanassche@acm.org>
scsi: ufs: qcom: Fix ufs_qcom_resume()
Dan Carpenter <dan.carpenter@oracle.com>
scsi: iscsi: Fix harmless double shift bug
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dpu: adjust display_v_end for eDP and DP
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm: properly add and remove internal bridges
Yuanchu Xie <yuanchu@google.com>
selftests/damon: add damon to selftests root Makefile
Nuno Sá <nuno.sa@analog.com>
of: overlay: do not break notify on NOTIFY_{OK|STOP}
Luca Ceresoli <luca.ceresoli@bootlin.com>
spi: rockchip: fix missing error on unsupported SPI_CS_HIGH
Jon Lin <jon.lin@rock-chips.com>
spi: rockchip: Preset cs-high and clk polarity in setup progress
Jon Lin <jon.lin@rock-chips.com>
spi: rockchip: Stop spi slave dma receiver when cs inactive
Amir Goldstein <amir73il@gmail.com>
fsnotify: fix wrong lockdep annotations
Amir Goldstein <amir73il@gmail.com>
inotify: show inotify mask flags in proc fdinfo
Bjørn Mork <bjorn@mork.no>
mtdblock: warn if opened on NAND
Colin Ian King <colin.king@intel.com>
ALSA: pcm: Check for null pointer of pointer substream before dereferencing it
Marek Vasut <marex@denx.de>
drm/panel: simple: Add missing bus flags for Innolux G070Y2-L01
Chen-Yu Tsai <wenst@chromium.org>
media: hantro: Empty encoder capture buffers by default
Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
media: i2c: max9286: fix kernel oops when removing module
Jacopo Mondi <jacopo+renesas@jmondi.org>
media: i2c: max9286: Use "maxim,gpio-poc" property
Dan Carpenter <dan.carpenter@oracle.com>
ath9k_htc: fix potential out of bounds access with invalid rxstatus->rs_keyix
John Ogness <john.ogness@linutronix.de>
printk: wake waiters for safe and NMI contexts
John Ogness <john.ogness@linutronix.de>
printk: add missing memory barrier to wake_up_klogd()
John Ogness <john.ogness@linutronix.de>
printk: use atomic updates for klogd work
Schspa Shi <schspa@gmail.com>
cpufreq: Fix possible race in cpufreq online error path
Zheng Yongjun <zhengyongjun3@huawei.com>
spi: img-spfi: Fix pm_runtime_get_sync() error checking
Chengming Zhou <zhouchengming@bytedance.com>
sched/psi: report zeroes for CPU full at the system level
Chengming Zhou <zhouchengming@bytedance.com>
sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
Marco Elver <elver@google.com>
signal: Deliver SIGTRAP on perf event asynchronously if blocked
Nícolas F. R. A. Prado <nfraprado@collabora.com>
drm/mediatek: dpi: Use mt8183 output formats for mt8192
Wei Yongjun <weiyongjun1@huawei.com>
regulator: da9121: Fix uninit-value in da9121_assign_chip_model()
Miaoqian Lin <linmq006@gmail.com>
drm/bridge: Fix error handling in analogix_dp_probe
Miaoqian Lin <linmq006@gmail.com>
HID: elan: Fix potential double free in elan_input_configured
Jonathan Teh <jonathan.teh@outlook.com>
HID: hid-led: fix maximum brightness for Dream Cheeky
Zheyu Ma <zheyuma97@gmail.com>
mtd: rawnand: denali: Use managed device resources
Nícolas F. R. A. Prado <nfraprado@collabora.com>
drm/bridge: anx7625: Use uint8 for lane-swing arrays
Tyler Hicks <tyhicks@linux.microsoft.com>
EDAC/dmc520: Don't print an error for each unconfigured interrupt line
Arnd Bergmann <arnd@arndb.de>
drbd: fix duplicate array initializer
Christoph Hellwig <hch@lst.de>
target: remove an incorrect unmap zeroes data deduction
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
device property: Allow error pointer to be passed to fwnode APIs
Jan Kiszka <jan.kiszka@siemens.com>
efi: Add missing prototype for efi_capsule_setup_info
Javier Martinez Canillas <javierm@redhat.com>
efi: Allow to enable EFI runtime services by default on RT
Lin Ma <linma@zju.edu.cn>
NFC: NULL out the dev->rfkill to prevent UAF
Lv Ruyi <lv.ruyi@zte.com.cn>
ixp4xx_eth: fix error check return value of platform_get_irq()
Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
net: dsa: mt7530: 1G can also support 1000BASE-X link mode
Paul E. McKenney <paulmck@kernel.org>
scftorture: Fix distribution of short handler delays
Miaoqian Lin <linmq006@gmail.com>
spi: spi-ti-qspi: Fix return value handling of wait_for_completion_timeout
Jiasheng Jiang <jiasheng@iscas.ac.cn>
drm: mali-dp: potential dereference of null pointer
Zhou Qingyang <zhou1615@umn.edu>
drm/komeda: Fix an undefined behavior bug in komeda_plane_add()
Johannes Berg <johannes.berg@intel.com>
nl80211: show SSID for P2P_GO interfaces
Paolo Abeni <pabeni@redhat.com>
mptcp: reset the packet scheduler on PRIO change
Paolo Abeni <pabeni@redhat.com>
mptcp: reset the packet scheduler on incoming MP_PRIO
Paolo Abeni <pabeni@redhat.com>
mptcp: optimize release_cb for the common case
Maciej W. Rozycki <macro@orcam.me.uk>
x86/PCI: Fix ALi M1487 (IBC) PIRQ router link value interpretation
Andrii Nakryiko <andrii@kernel.org>
libbpf: Don't error out on CO-RE relos for overriden weak subprogs
Maxime Ripard <maxime@cerno.tech>
drm/vc4: txp: Force alpha to be 0xff if it's disabled
Maxime Ripard <maxime@cerno.tech>
drm/vc4: txp: Don't set TXP_VSTART_AT_EOF
Maxime Ripard <maxime@cerno.tech>
drm/vc4: hvs: Reset muxes at probe time
Miles Chen <miles.chen@mediatek.com>
drm/mediatek: Fix mtk_cec_mask()
Maxime Ripard <maxime@cerno.tech>
drm/vc4: hvs: Fix frame count register readout
Maxime Ripard <maxime@cerno.tech>
drm/vc4: kms: Take old state core clock rate into account
Chen-Yu Tsai <wenst@chromium.org>
drm/mediatek: Fix DPI component detection for MT8192
Rex-BC Chen <rex-bc.chen@mediatek.com>
drm/mediatek: Add vblank register/unregister callback functions
Ammar Faizi <ammarfaizi2@gnuweeb.org>
x86/delay: Fix the wrong asm constraint in delay_loop()
Miaoqian Lin <linmq006@gmail.com>
ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe
Hui Wang <hui.wang@canonical.com>
ASoC: cs35l41: Fix an out-of-bounds access in otp_packed_element_t
Kuldeep Singh <singh.kuldeep87k@gmail.com>
spi: qcom-qspi: Add minItems to interconnect-names
Chuanhong Guo <gch981213@gmail.com>
mtd: spinand: gigadevice: fix Quad IO for GD5F1GQ5UExxG
Marek Vasut <marex@denx.de>
drm: bridge: icn6211: Fix HFP_HSW_HBP_HI and HFP_MIN handling
Marek Vasut <marex@denx.de>
drm: bridge: icn6211: Fix register layout
Lucas Stach <l.stach@pengutronix.de>
drm/bridge: adv7511: clean up CEC adapter when probe fails
Jani Nikula <jani.nikula@intel.com>
drm/edid: fix invalid EDID extension block filtering
Wenli Looi <wlooi@ucalgary.ca>
ath9k: fix ar9003_get_eepmisc
Nicolas Belin <nbelin@baylibre.com>
drm: bridge: it66121: Fix the register page length
Niels Dossche <dossche.niels@gmail.com>
ath11k: acquire ab->base_lock in unassign when finding the peer by addr
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Fix an invalid read
Noralf Trønnes <noralf@tronnes.org>
dt-bindings: display: sitronix, st7735r: Fix backlight in example
Wan Jiabing <wanjiabing@vivo.com>
drm/omap: fix NULL but dereferenced coccicheck error
Nikita Yushchenko <nikita.yoush@cogentembedded.com>
drm/bridge_connector: enable HPD by default if supported
Linus Torvalds <torvalds@linux-foundation.org>
drm: fix EDID struct for old ARM OABI format
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Input: gpio-keys - cancel delayed work only in case of GPIO
Shyam Prasad N <sprasad@microsoft.com>
cifs: do not use tcpStatus after negotiate completes
Douglas Miller <doug.miller@cornelisnetworks.com>
RDMA/hfi1: Prevent panic when SDMA is disabled
Steve French <stfrench@microsoft.com>
smb3: check for null tcon
Vasily Averin <vvs@openvz.org>
fanotify: fix incorrect fmode_t casts
Peng Wu <wupeng58@huawei.com>
powerpc/iommu: Add missing of_node_put in iommu_init_early_dart
Finn Thain <fthain@linux-m68k.org>
macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled
Lv Ruyi <lv.ruyi@zte.com.cn>
powerpc/powernv: fix missing of_node_put in uv_init()
Lv Ruyi <lv.ruyi@zte.com.cn>
powerpc/xics: fix refcount leak in icp_opal_init()
Haren Myneni <haren@linux.ibm.com>
powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr
Enzo Matsumiya <ematsumiya@suse.de>
cifs: return ENOENT for DFS lookup_cache_entry()
Vasily Averin <vvs@openvz.org>
tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate
Matthew Wilcox (Oracle) <willy@infradead.org>
alpha: fix alloc_zeroed_user_highpage_movable()
Nicholas Piggin <npiggin@gmail.com>
KVM: PPC: Book3S HV Nested: L2 LPCR should inherit L1 LPES setting
Parshuram Thombare <pthombar@cadence.com>
PCI: cadence: Clear FLR in device capabilities register
Yicong Yang <yangyicong@hisilicon.com>
PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store()
Laurent Dufour <ldufour@linux.ibm.com>
powerpc/rtas: Keep MSR[RI] set when calling RTAS
Conor Dooley <conor.dooley@microchip.com>
PCI: microchip: Add missing chained_irq_enter()/exit() calls
Viresh Kumar <viresh.kumar@linaro.org>
cpufreq: Avoid unnecessary frequency updates due to mismatch
Peng Wu <wupeng58@huawei.com>
ARM: hisi: Add missing of_node_put after of_find_compatible_node
Vijaya Krishna Nivarthi <quic_vnivarth@quicinc.com>
arm64: dts: qcom: sc7280-idp: Configure CTS pin to bias-bus-hold for bluetooth
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM
Peng Wu <wupeng58@huawei.com>
ARM: versatile: Add missing of_node_put in dcscb_init
Yang Yingliang <yangyingliang@huawei.com>
pinctrl: renesas: rzn1: Fix possible null-ptr-deref in sh_pfc_map_resources()
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
fat: add ratelimit to fat*_ent_bread()
Hari Bathini <hbathini@linux.ibm.com>
powerpc/fadump: Fix fadump to work with a different endian capture kernel
Janusz Krzysztofik <jmkrzyszt@gmail.com>
ARM: OMAP1: clock: Fix UART rate reporting algorithm
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Move generic implicit fb quirk entries into quirks.c
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Add quirk bits for enabling/disabling generic implicit fb
Joel Selvaraj <jo@jsfamily.in>
arm64: dts: qcom: sdm845-xiaomi-beryllium: fix typo in panel's vddio-supply property
Zixuan Fu <r33s3n6@gmail.com>
fs: jfs: fix possible NULL pointer dereference in dbFree()
QintaoShen <unSimple1993@163.com>
soc: ti: ti_sci_pm_domains: Check for null return of devm_kcalloc
Marco Chiappero <marco.chiappero@intel.com>
crypto: qat - fix off-by-one error in PFVF debug print
Gilad Ben-Yossef <gilad@benyossef.com>
crypto: ccree - use fine grained DMA mapping dir
Brian Norris <briannorris@chromium.org>
PM / devfreq: rk3399_dmc: Disable edev on remove()
Konrad Dybcio <konrad.dybcio@somainline.org>
arm64: dts: qcom: msm8994: Fix BLSP[12]_DMA channels count
Konrad Dybcio <konrad.dybcio@somainline.org>
arm64: dts: qcom: msm8994: Fix the cont_splash_mem address
Mario Limonciello <mario.limonciello@amd.com>
ASoC: amd: Add driver data to acp6x machine driver
Krzysztof Kozlowski <krzk@kernel.org>
ARM: dts: s5pv210: align DMA channels with dtschema
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: socfpga: align interrupt controller node name with dtschema
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: ox820: align interrupt controller node name with dtschema
Mika Westerberg <mika.westerberg@linux.intel.com>
PCI/ASPM: Make Intel DG2 L1 acceptable latency unlimited
Niels Dossche <dossche.niels@gmail.com>
IB/rdmavt: add missing locks in rvt_ruc_loopback
Daniel Latypov <dlatypov@google.com>
kunit: fix executor OOM error handling logic on non-UML
Bodo Stroesser <bostroesser@gmail.com>
scsi: target: tcmu: Avoid holding XArray lock when calling lock_page
Bob Peterson <rpeterso@redhat.com>
gfs2: use i_lock spin_lock for inode qadata
Yonghong Song <yhs@fb.com>
selftests/bpf: fix btf_dump/btf_dump due to recent clang change
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
char: tpm: cr50_i2c: Suppress duplicated error message in .remove()
Jakub Kicinski <kuba@kernel.org>
eth: tg3: silence the GCC 12 array-bounds warning
David Howells <dhowells@redhat.com>
afs: Adjust ACK interpretation to try and cope with NAT
David Howells <dhowells@redhat.com>
rxrpc, afs: Fix selection of abort codes
David Howells <dhowells@redhat.com>
rxrpc: Return an error to sendmsg if call failed
Geert Uytterhoeven <geert@linux-m68k.org>
m68k: atari: Make Atari ROM port I/O write macros return void
Yuntao Wang <ytcoode@gmail.com>
selftests/bpf: Add missing trampoline program type to trampoline_count test
Alex Elder <elder@linaro.org>
net: ipa: ignore endianness if there is no header
Borislav Petkov <bp@suse.de>
x86/microcode: Add explicit CPU vendor dependency
Vincent Mailhol <mailhol.vincent@wanadoo.fr>
can: mcp251xfd: silence clang's -Wunaligned-access warning
Chaitanya Kulkarni <kch@nvidia.com>
nvme: set non-mdts limits in nvme_scan_work
Pierre Gondois <Pierre.Gondois@arm.com>
ACPI: CPPC: Assume no transition latency if no PCCT
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC: rt1015p: remove dependency on GPIOLIB
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC: max98357a: remove dependency on GPIOLIB
Laibin Qiu <qiulaibin@huawei.com>
blk-throttle: Set BIO_THROTTLED when bio has been throttled
Andre Przywara <andre.przywara@arm.com>
of/fdt: Ignore disabled memory nodes
Ping-Ke Shih <pkshih@realtek.com>
rtw89: cfo: check mac_id to avoid out-of-bounds
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: hantro: Stop using H.264 parameter pic_num
Kwanghoon Son <k.son@samsung.com>
media: exynos4-is: Fix compile warning
Fabio Estevam <festevam@denx.de>
net: phy: micrel: Allow probing without .driver_data
Daniel Latypov <dlatypov@google.com>
kunit: tool: make parser stop overwriting status of suites w/ no_tests
Omar Sandoval <osandov@fb.com>
btrfs: fix anon_dev leak in create_subvol()
Sathishkumar S <sathishkumar.sundararaju@amd.com>
drm/amd/pm: update smartshift powerboost calc for smu13
Sathishkumar S <sathishkumar.sundararaju@amd.com>
drm/amd/pm: update smartshift powerboost calc for smu12
Xie Yongji <xieyongji@bytedance.com>
nbd: Fix hung on disconnect request if socket is closed before
Lin Ma <linma@zju.edu.cn>
ASoC: rt5645: Fix errorenous cleanup order
Smith, Kyle Miller (Nimble Kernel) <kyles@hpe.com>
nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags
Jason A. Donenfeld <Jason@zx2c4.com>
openrisc: start CPU timer early in boot
Zijun Hu <quic_zijuhu@quicinc.com>
Bluetooth: btusb: Set HCI_QUIRK_BROKEN_ERR_DATA_REPORTING for QCA
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Bluetooth: btusb: Set HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN for QCA
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Bluetooth: HCI: Add HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN quirk
Lukas Wunner <lukas@wunner.de>
usbnet: Run unregister_netdev() before unbind() again
Hans Verkuil <hverkuil-cisco@xs4all.nl>
media: cec-adap.c: fix is_configuring state
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
media: imon: reorganize serialization
Hans Verkuil <hverkuil-cisco@xs4all.nl>
media: ccs-core.c: fix failure to call clk_disable_unprepare
Benjamin Gaignard <benjamin.gaignard@collabora.com>
media: hantro: HEVC: unconditionnaly set pps_{cb/cr}_qp_offset values
Philipp Zabel <p.zabel@pengutronix.de>
media: coda: limit frame interval enumeration to supported encoder frame sizes
Hangyu Hua <hbh25y@gmail.com>
media: rga: fix possible memory leak in rga_probe
Felix Fietkau <nbd@nbd.name>
mt76: fix encap offload ethernet type check
Felix Fietkau <nbd@nbd.name>
mt76: mt7921: accept rx frames with non-standard VHT MCS10-11
Dongliang Mu <mudongliangabcd@gmail.com>
rtlwifi: Use pr_warn instead of WARN_ONCE
Daniel Latypov <dlatypov@google.com>
kunit: bail out of test filtering logic quicker if OOM
Corey Minyard <cminyard@mvista.com>
ipmi: Fix pr_fmt to avoid compilation issues
Corey Minyard <cminyard@mvista.com>
ipmi: Add an intializer for ipmi_smi_msg struct
Corey Minyard <cminyard@mvista.com>
ipmi:ssif: Check for NULL msg when handling events and messages
Mario Limonciello <mario.limonciello@amd.com>
ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default
Zheng Bin <zhengbin13@huawei.com>
ASoC: SOF: amd: add missing platform_device_unregister in acp_pci_rn_probe
Mikulas Patocka <mpatocka@redhat.com>
dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
Patrice Chotard <patrice.chotard@foss.st.com>
spi: stm32-qspi: Fix wait_cmd timeout in APM mode
Hao Jia <jiahao.os@bytedance.com>
sched/core: Avoid obvious double update_rq_clock warning
Ravi Bangoria <ravi.bangoria@amd.com>
perf/amd/ibs: Cascade pmu init functions' return value
Heiko Carstens <hca@linux.ibm.com>
s390/preempt: disable __preempt_count_add() optimization for PROFILE_ALL_BRANCHES
Eric Dumazet <edumazet@google.com>
net: remove two BUG() from skb_checksum_help()
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Alter FPIN stat accounting logic
Xiang Chen <chenxiang66@hisilicon.com>
scsi: hisi_sas: Undo RPM resume for failed notify phy event for v3 HW
Gavin Li <gavinl@nvidia.com>
net/mlx5: Increase FW pre-init timeout for health recovery
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: tscs454: Add endianness flag in snd_soc_component_driver
Zhen Lei <thunder.leizhen@huawei.com>
of: Support more than one crash kernel regions for kexec -s
Thierry Reding <treding@nvidia.com>
drm/tegra: gem: Do not try to dereference ERR_PTR()
Dongliang Mu <mudongliangabcd@gmail.com>
HID: bigben: fix slab-out-of-bounds Write in bigben_probe
Nícolas F. R. A. Prado <nfraprado@collabora.com>
regulator: mt6315: Enforce regulator-compatible, not name
Alice Wong <shiwei.wong@amd.com>
drm/amdgpu/ucode: Remove firmware load type check in amdgpu_ucode_free_bo
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu/psp: move PSP memory alloc from hw_init to sw_init
Petr Machata <petrm@nvidia.com>
mlxsw: Treat LLDP packets as control
Petr Machata <petrm@nvidia.com>
mlxsw: spectrum_dcb: Do not warn about priority changes
Mark Brown <broonie@kernel.org>
ASoC: dapm: Don't fold register value changes into notifications
Mark Bloch <mbloch@nvidia.com>
net/mlx5: fs, delete the FTE when there are no rules attached to it
jianghaoran <jianghaoran@kylinos.cn>
ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL
Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
scsi: target: tcmu: Fix possible data corruption
Wen Gong <quic_wgong@quicinc.com>
ath11k: fix warning of not found station for bssid in message
Max Filippov <jcmvbkbc@gmail.com>
xtensa: move trace_hardirqs_off call back to entry.S
Jessica Zhang <quic_jesszhan@quicinc.com>
drm/msm/dpu: Clean up CRC debug logs
Lv Ruyi <lv.ruyi@zte.com.cn>
drm: msm: fix error check return value of irq_of_parse_and_map()
Alexandru Elisei <alexandru.elisei@arm.com>
arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall
Abhishek Kumar <kuabhs@chromium.org>
ath10k: skip ath10k_halt during suspend for driver state RESTARTING
Evan Quan <evan.quan@amd.com>
drm/amd/pm: fix the compile warning
Steven Price <steven.price@arm.com>
drm/plane: Move range check for format_count earlier
Hans de Goede <hdegoede@redhat.com>
ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408
Hari Chandrakanthan <quic_haric@quicinc.com>
ath11k: disable spectral scan during spectral deinit
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp()
Minghao Chi <chi.minghao@zte.com.cn>
scsi: ufs: Use pm_runtime_resume_and_get() instead of pm_runtime_get_sync()
Haohui Mai <ricetons@gmail.com>
drm/amdgpu/sdma: Fix incorrect calculations of the wptr of the doorbells
Lv Ruyi <lv.ruyi@zte.com.cn>
scsi: megaraid: Fix error check return value of register_chrdev()
Vignesh Raghavendra <vigneshr@ti.com>
drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit
Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
mmc: jz4740: Apply DMA engine limits to maximum segment size
Heming Zhao <heming.zhao@suse.com>
md/bitmap: don't set sb values if can't pass sanity check
Zheyu Ma <zheyuma97@gmail.com>
media: cx25821: Fix the warning when removing the module
Zheyu Ma <zheyuma97@gmail.com>
media: pci: cx23885: Fix the error handling in cx23885_initdev()
Vikash Garodia <quic_vgarodia@quicinc.com>
media: venus: do not queue internal buffers from previous sequence
Luca Weiss <luca.weiss@fairphone.com>
media: venus: hfi: avoid null dereference in deinit
Sakari Ailus <sakari.ailus@linux.intel.com>
media: Revert "media: dw9768: activate runtime PM and turn off device"
Thibaut VARÈNE <hacks+kernel@slashdirt.org>
ath9k: fix QCA9561 PA bias level
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
ASoC: rsnd: care return value from rsnd_node_fixed_index()
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
ASoC: rsnd: care default case on rsnd_ssiu_busif_err_status_clear()
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
drm/amd/pm: fix double free in si_parse_power_table()
Ulf Hansson <ulf.hansson@linaro.org>
cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix call trace observed during I/O with CMF enabled
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix SCSI I/O completion and abort handler deadlock
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Move cfg_log_verbose check before calling lpfc_dmp_dbg()
Eric Dumazet <edumazet@google.com>
tcp: consume incoming skb leading to a reset
Len Brown <len.brown@intel.com>
tools/power turbostat: fix ICX DRAM power numbers
Biju Das <biju.das.jz@bp.renesas.com>
spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA direction
Po-Hao Huang <phhuang@realtek.com>
rtw88: 8821c: fix debugfs rssi value
Po-Hao Huang <phhuang@realtek.com>
rtw88: fix incorrect frequency reported
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
ALSA: jack: Access input_dev under mutex
Haowen Bai <baihaowen@meizu.com>
sfc: ef10: Fix assigning negative value to unsigned variable
Paul E. McKenney <paulmck@kernel.org>
rcu: Make TASKS_RUDE_RCU select IRQ_WORK
Paul E. McKenney <paulmck@kernel.org>
rcu-tasks: Handle sparse cpu_possible_mask in rcu_tasks_invoke_cbs()
Padmanabha Srinivasaiah <treasure4paddy@gmail.com>
rcu-tasks: Fix race in schedule and flush work
Saaem Rizvi <syerizvi@amd.com>
drm/amd/display: Disabling Z10 on DCN31
Liviu Dudau <liviu.dudau@arm.com>
drm/komeda: return early if drm_universal_plane_init() fails.
Peter Seiderer <ps.report@gmx.net>
mac80211: minstrel_ht: fix where rate stats are stored (fixes debugfs output)
Runqing Yang <rainkin1993@gmail.com>
libbpf: Fix a bug with checking bpf_probe_read_kernel() support in old kernels
Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
ACPICA: Avoid cache flush inside virtual machines
Mike Travis <mike.travis@hpe.com>
x86/platform/uv: Update TSC sync state for UV5
Daniel Vetter <daniel.vetter@ffwll.ch>
fbcon: Consistently protect deferred_takeover with console_lock()
Niels Dossche <dossche.niels@gmail.com>
ipv6: fix locking issues with loops over idev->addr_list
Haowen Bai <baihaowen@meizu.com>
ipw2x00: Fix potential NULL dereference in libipw_xmit()
Haowen Bai <baihaowen@meizu.com>
b43: Fix assigning negative value to unsigned variable
Haowen Bai <baihaowen@meizu.com>
b43legacy: Fix assigning negative value to unsigned variable
Niels Dossche <dossche.niels@gmail.com>
mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue
Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
ath11k: Change max no of active probe SSID and BSSID to fw capability
Quentin Monnet <quentin@isovalent.com>
selftests/bpf: Fix parsing of prog types in UAPI hdr for bpftool sync
Nikolay Borisov <nborisov@suse.com>
selftests/bpf: Fix vfs_link kprobe definition
Liu Zixian <liuzixian4@huawei.com>
drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes
Wen Gong <quic_wgong@quicinc.com>
ath11k: fix the warning of dev_wake in mhi_pm_disable_transition()
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: validate the screen formats
Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>
iommu/vt-d: Add RPLS to quirk list to skip TE disabling
Naohiro Aota <naohiro.aota@wdc.com>
btrfs: zoned: fix comparison of alloc_offset vs meta_write_pointer
Naohiro Aota <naohiro.aota@wdc.com>
btrfs: zoned: finish block group when there are no more allocatable bytes left
Naohiro Aota <naohiro.aota@wdc.com>
btrfs: zoned: zone finish unused block group
Naohiro Aota <naohiro.aota@wdc.com>
btrfs: zoned: properly finish block group on metadata write
Qu Wenruo <wqu@suse.com>
btrfs: fix the error handling for submit_extent_page() for btrfs_do_readpage()
Qu Wenruo <wqu@suse.com>
btrfs: repair super block num_devices automatically
Qu Wenruo <wqu@suse.com>
btrfs: return correct error number for __extent_writepage_io()
Qu Wenruo <wqu@suse.com>
btrfs: add "0x" prefix for unsupported optional features
Eric W. Biederman <ebiederm@xmission.com>
ptrace: Reimplement PTRACE_KILL by always sending SIGKILL
Eric W. Biederman <ebiederm@xmission.com>
ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP
Eric W. Biederman <ebiederm@xmission.com>
ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP
Eric W. Biederman <ebiederm@xmission.com>
kthread: Don't allocate kthread_struct for init and umh
Kristen Carlson Accardi <kristen@linux.intel.com>
x86/sgx: Set active memcg prior to shmem allocation
Baoquan He <bhe@redhat.com>
x86/kexec: fix memory leak of elf header buffer
Kan Liang <kan.liang@linux.intel.com>
perf/x86/intel: Fix event constraints for ICL
Ammar Faizi <ammarfaizi2@gnuweeb.org>
x86/MCE/AMD: Fix memory leak when threshold_create_bank() fails
Michael Niewöhner <linux@mniewoehner.de>
platform/x86: intel-hid: fix _DSM function index handling
Mathias Nyman <mathias.nyman@linux.intel.com>
xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: when extending a file with falloc we should make files not-sparse
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: fix potential double free during failed mount
Paulo Alcantara <pc@cjr.nz>
cifs: fix ntlmssp on old servers
Enzo Matsumiya <ematsumiya@suse.de>
cifs: don't call cifs_dfs_query_info_nonascii_quirk() if nodfs was set
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Restore ntfs_xattr_get_acl and ntfs_xattr_set_acl functions
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Update i_ctime when xattr is added
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
fs/ntfs3: Fix some memory leaks in an error handling path of 'log_replay()'
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: In function ntfs_set_acl_ex do not change inode->i_mode if called from function ntfs_init_acl
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Check new size for limits
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Keep preallocated only if option prealloc enabled
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Fix fiemap + fix shrink file size (to remove preallocated space)
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Update valid size if -EIOCBQUEUED
Kishon Vijay Abraham I <kishon@ti.com>
usb: core: hcd: Add support for deferring roothub registration
Albert Wang <albertccwang@google.com>
usb: dwc3: gadget: Move null pinter check to proper place
Linus Walleij <linus.walleij@linaro.org>
usb: isp1760: Fix out-of-bounds array access
Monish Kumar R <monish.kumar.r@intel.com>
USB: new quirk for Dell Gen 2 devices
Carl Yin(殷张成) <carl.yin@quectel.com>
USB: serial: option: add Quectel BG95 modem
Johan Hovold <johan@kernel.org>
USB: serial: pl2303: fix type detection for odd device
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Cancel pending work at closing a MIDI substream
Marios Levogiannis <marios.levogiannis@gmail.com>
ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS
Rik van der Kemp <rik@upto11.nl>
ALSA: hda/realtek: Enable 4-speaker output for Dell XPS 15 9520 laptop
Kailang Yang <kailang@realtek.com>
ALSA: hda/realtek - Add new type for ALC245
Nathan Chancellor <nathan@kernel.org>
riscv: Move alternative length validation into subsection
Tobias Klauser <tklauser@distanz.ch>
riscv: Wire up memfd_secret in UAPI header
Samuel Holland <samuel@sholland.org>
riscv: Fix irq_work when SMP is disabled
Alexandre Ghiti <alexandre.ghiti@canonical.com>
riscv: Initialize thread pointer before calling C functions
Xianting Tian <xianting.tian@linux.alibaba.com>
RISC-V: Mark IORESOURCE_EXCLUSIVE for reserved mem instead of IORESOURCE_BUSY
Helge Deller <deller@gmx.de>
parisc/stifb: Keep track of hardware path of graphics card
Helge Deller <deller@gmx.de>
parisc/stifb: Implement fb_is_primary_device()
Niklas Cassel <niklas.cassel@wdc.com>
binfmt_flat: do not stop relocating GOT entries prematurely on riscv
Stephen Boyd <swboyd@chromium.org>
arm64: Initialize jump labels before setup_machine_fdt()
-------------
Diffstat:
Documentation/accounting/psi.rst | 9 +-
Documentation/conf.py | 2 +-
.../bindings/display/sitronix,st7735r.yaml | 1 +
.../devicetree/bindings/gpio/gpio-altera.txt | 5 +-
.../bindings/regulator/mt6315-regulator.yaml | 2 +-
.../devicetree/bindings/soc/qcom/qcom,smd-rpm.yaml | 1 +
.../bindings/spi/qcom,spi-qcom-qspi.yaml | 1 +
Documentation/sound/alsa-configuration.rst | 4 +-
Documentation/userspace-api/landlock.rst | 4 +-
Makefile | 4 +-
arch/alpha/include/asm/page.h | 2 +-
arch/arm/boot/dts/bcm2835-rpi-b.dts | 13 +-
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 22 +-
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 2 +-
arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts | 4 +-
arch/arm/boot/dts/bcm5301x.dtsi | 2 +-
arch/arm/boot/dts/exynos5250-smdk5250.dts | 4 +-
arch/arm/boot/dts/imx6dl-eckelmann-ci4x10.dts | 6 +-
arch/arm/boot/dts/imx6qdl-colibri.dtsi | 6 +-
arch/arm/boot/dts/ox820.dtsi | 2 +-
arch/arm/boot/dts/qcom-sdx65.dtsi | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 3 +-
arch/arm/boot/dts/s5pv210.dtsi | 12 +-
arch/arm/boot/dts/sama7g5.dtsi | 1 -
arch/arm/boot/dts/socfpga.dtsi | 2 +-
arch/arm/boot/dts/socfpga_arria10.dtsi | 2 +-
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 1 +
arch/arm/boot/dts/suniv-f1c100s.dtsi | 4 +-
arch/arm/include/asm/arch_gicv3.h | 7 +-
arch/arm/kernel/signal.c | 1 +
arch/arm/mach-hisi/platsmp.c | 4 +
arch/arm/mach-mediatek/Kconfig | 1 +
arch/arm/mach-omap1/clock.c | 2 +-
arch/arm/mach-pxa/cm-x300.c | 8 +-
arch/arm/mach-pxa/magician.c | 2 +-
arch/arm/mach-pxa/tosa.c | 4 +-
arch/arm/mach-vexpress/dcscb.c | 1 +
arch/arm64/Kconfig.platforms | 1 +
.../dts/marvell/armada-3720-espressobin-ultra.dts | 5 -
arch/arm64/boot/dts/mediatek/mt8192.dtsi | 2 +-
arch/arm64/boot/dts/nvidia/tegra210.dtsi | 5 +-
arch/arm64/boot/dts/qcom/ipq8074.dtsi | 2 +-
arch/arm64/boot/dts/qcom/msm8994.dtsi | 8 +-
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 2 +-
arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 18 +-
.../boot/dts/qcom/sdm845-xiaomi-beryllium.dts | 2 +-
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
arch/arm64/boot/dts/ti/k3-am64-mcu.dtsi | 2 -
arch/arm64/include/asm/arch_gicv3.h | 6 -
arch/arm64/include/asm/processor.h | 10 +-
arch/arm64/kernel/setup.c | 7 +-
arch/arm64/kernel/signal.c | 1 +
arch/arm64/kernel/signal32.c | 1 +
arch/arm64/kernel/sys_compat.c | 2 +-
arch/arm64/mm/copypage.c | 4 +-
arch/csky/kernel/probes/kprobes.c | 2 +-
arch/m68k/Kconfig.cpu | 2 +-
arch/m68k/include/asm/raw_io.h | 6 +-
arch/m68k/kernel/signal.c | 1 +
.../include/asm/mach-ip27/cpu-feature-overrides.h | 1 -
.../include/asm/mach-ip30/cpu-feature-overrides.h | 1 -
arch/mips/include/asm/mach-ralink/spaces.h | 2 +
arch/openrisc/include/asm/timex.h | 1 +
arch/openrisc/kernel/head.S | 9 +
arch/parisc/include/asm/fb.h | 4 +
arch/powerpc/include/asm/page.h | 7 +-
arch/powerpc/include/asm/vas.h | 2 +-
arch/powerpc/kernel/entry_64.S | 24 +-
arch/powerpc/kernel/fadump.c | 8 +-
arch/powerpc/kernel/idle.c | 2 +-
arch/powerpc/kernel/rtas.c | 9 +
arch/powerpc/kvm/book3s_hv.c | 12 +-
arch/powerpc/kvm/book3s_hv_nested.c | 3 +-
arch/powerpc/kvm/trace_hv.h | 8 +-
arch/powerpc/mm/nohash/fsl_book3e.c | 15 +-
arch/powerpc/perf/isa207-common.c | 12 +-
arch/powerpc/platforms/4xx/cpm.c | 2 +-
arch/powerpc/platforms/8xx/cpm1.c | 1 +
arch/powerpc/platforms/powernv/opal-fadump.c | 94 +--
arch/powerpc/platforms/powernv/opal-fadump.h | 10 +-
arch/powerpc/platforms/powernv/setup.c | 9 +
arch/powerpc/platforms/powernv/ultravisor.c | 1 +
arch/powerpc/platforms/powernv/vas-fault.c | 2 +-
arch/powerpc/platforms/powernv/vas-window.c | 4 +-
arch/powerpc/platforms/powernv/vas.h | 2 +-
arch/powerpc/sysdev/dart_iommu.c | 6 +-
arch/powerpc/sysdev/fsl_rio.c | 2 +
arch/powerpc/sysdev/xics/icp-opal.c | 1 +
arch/powerpc/sysdev/xive/spapr.c | 43 +-
arch/riscv/Makefile | 4 +
arch/riscv/include/asm/alternative-macros.h | 4 +-
arch/riscv/include/asm/irq_work.h | 2 +-
arch/riscv/include/asm/unistd.h | 1 -
arch/riscv/include/uapi/asm/unistd.h | 1 +
arch/riscv/kernel/head.S | 1 +
arch/riscv/kernel/setup.c | 4 +-
arch/riscv/mm/init.c | 2 +-
arch/s390/include/asm/cio.h | 2 +-
arch/s390/include/asm/kexec.h | 10 +
arch/s390/include/asm/preempt.h | 15 +-
arch/s390/kernel/perf_event.c | 2 +-
arch/s390/kernel/time.c | 8 +-
arch/sparc/kernel/signal32.c | 1 +
arch/sparc/kernel/signal_64.c | 1 +
arch/um/drivers/chan_user.c | 9 +-
arch/um/drivers/virtio_uml.c | 33 +-
arch/um/include/asm/Kbuild | 1 +
arch/um/include/asm/thread_info.h | 2 +
arch/um/kernel/exec.c | 2 +-
arch/um/kernel/process.c | 2 +-
arch/um/kernel/ptrace.c | 8 +-
arch/um/kernel/signal.c | 4 +-
arch/x86/Kconfig | 4 +-
arch/x86/entry/entry_64.S | 1 +
arch/x86/entry/vdso/vma.c | 2 +-
arch/x86/events/amd/ibs.c | 55 +-
arch/x86/events/intel/core.c | 2 +-
arch/x86/include/asm/acenv.h | 14 +-
arch/x86/include/asm/kexec.h | 8 +
arch/x86/include/asm/set_memory.h | 52 --
arch/x86/include/asm/suspend_32.h | 2 +-
arch/x86/include/asm/suspend_64.h | 12 +-
arch/x86/kernel/apic/apic.c | 2 +-
arch/x86/kernel/apic/x2apic_uv_x.c | 8 +-
arch/x86/kernel/cpu/intel.c | 2 +-
arch/x86/kernel/cpu/mce/amd.c | 32 +-
arch/x86/kernel/cpu/mce/core.c | 6 +-
arch/x86/kernel/cpu/sgx/encl.c | 105 ++-
arch/x86/kernel/cpu/sgx/encl.h | 7 +-
arch/x86/kernel/cpu/sgx/main.c | 9 +-
arch/x86/kernel/machine_kexec_64.c | 12 +-
arch/x86/kernel/signal_compat.c | 2 +
arch/x86/kernel/step.c | 3 +-
arch/x86/kernel/sys_x86_64.c | 7 +-
arch/x86/kvm/lapic.c | 1 +
arch/x86/kvm/vmx/nested.c | 45 +-
arch/x86/kvm/vmx/vmcs.h | 5 +
arch/x86/lib/delay.c | 4 +-
arch/x86/mm/pat/memtype.c | 2 +-
arch/x86/mm/pat/set_memory.c | 49 +-
arch/x86/pci/irq.c | 19 +-
arch/x86/um/ldt.c | 6 +-
arch/xtensa/kernel/entry.S | 19 +-
arch/xtensa/kernel/ptrace.c | 4 +-
arch/xtensa/kernel/signal.c | 4 +-
arch/xtensa/kernel/traps.c | 11 +-
arch/xtensa/platforms/iss/simdisk.c | 18 +-
block/bfq-cgroup.c | 111 +--
block/bfq-iosched.c | 64 +-
block/bfq-iosched.h | 7 +-
block/blk-ia-ranges.c | 7 +-
block/blk-iolatency.c | 122 ++--
block/blk-throttle.c | 3 +-
crypto/cryptd.c | 23 +-
drivers/acpi/cppc_acpi.c | 17 +-
drivers/acpi/property.c | 18 +-
drivers/acpi/sleep.c | 12 +
drivers/base/memory.c | 5 +-
drivers/base/node.c | 1 +
drivers/base/power/domain.c | 1 +
drivers/base/property.c | 89 +--
drivers/block/drbd/drbd_main.c | 11 +-
drivers/block/nbd.c | 13 +-
drivers/block/virtio_blk.c | 7 +-
drivers/bluetooth/btmtksdio.c | 3 +-
drivers/bluetooth/btusb.c | 6 +
drivers/char/hw_random/cn10k-rng.c | 31 +-
drivers/char/hw_random/omap3-rom-rng.c | 2 +-
drivers/char/ipmi/ipmi_msghandler.c | 4 +-
drivers/char/ipmi/ipmi_poweroff.c | 4 +-
drivers/char/ipmi/ipmi_ssif.c | 23 +
drivers/char/ipmi/ipmi_watchdog.c | 14 +-
drivers/char/random.c | 12 +-
drivers/char/tpm/tpm_tis_i2c_cr50.c | 4 +-
drivers/clk/tegra/clk-dfll.c | 12 +
drivers/cpufreq/cpufreq.c | 11 +
drivers/cpufreq/mediatek-cpufreq.c | 18 +-
drivers/cpuidle/cpuidle-psci.c | 46 ++
.../crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 115 ++--
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 30 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 10 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h | 14 +-
drivers/crypto/ccp/sev-dev.c | 30 +-
drivers/crypto/ccree/cc_buffer_mgr.c | 27 +-
drivers/crypto/marvell/cesa/cipher.c | 1 -
drivers/crypto/nx/nx-common-powernv.c | 2 +-
drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c | 2 +-
.../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 13 +-
drivers/devfreq/rk3399_dmc.c | 2 +
drivers/dma/idxd/cdev.c | 8 +-
drivers/dma/stm32-mdma.c | 23 +-
drivers/edac/dmc520_edac.c | 2 +-
drivers/firmware/arm_ffa/driver.c | 4 +-
drivers/firmware/arm_scmi/base.c | 2 +-
drivers/firmware/efi/Kconfig | 15 +
drivers/firmware/efi/efi.c | 2 +-
drivers/gpio/gpio-rockchip.c | 24 +-
drivers/gpio/gpio-sim.c | 4 +-
drivers/gpio/gpiolib-of.c | 5 +
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 95 ++-
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 3 +-
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 4 +-
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 8 +-
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 8 +-
.../gpu/drm/amd/display/dc/dcn31/dcn31_resource.c | 1 +
drivers/gpu/drm/amd/pm/powerplay/kv_dpm.c | 14 +-
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c | 8 +-
drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c | 60 +-
.../gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c | 62 +-
drivers/gpu/drm/arm/display/komeda/komeda_plane.c | 10 +-
drivers/gpu/drm/arm/malidp_crtc.c | 5 +-
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 +
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 31 +-
drivers/gpu/drm/bridge/analogix/anx7625.c | 12 +-
drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +-
drivers/gpu/drm/bridge/chipone-icn6211.c | 155 ++++-
drivers/gpu/drm/bridge/ite-it66121.c | 2 +-
drivers/gpu/drm/drm_bridge_connector.c | 4 +-
drivers/gpu/drm/drm_edid.c | 6 +-
drivers/gpu/drm/drm_plane.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 6 +
drivers/gpu/drm/gma500/psb_intel_display.c | 7 +-
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 33 +-
drivers/gpu/drm/i915/i915_perf.c | 4 +-
drivers/gpu/drm/i915/i915_perf_types.h | 2 +-
drivers/gpu/drm/mediatek/mtk_cec.c | 2 +-
drivers/gpu/drm/mediatek/mtk_disp_drv.h | 16 +-
drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 22 +-
drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 20 +-
drivers/gpu/drm/mediatek/mtk_dpi.c | 4 +-
drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 14 +-
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 4 +
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 29 +-
drivers/gpu/drm/mediatek/mtk_drm_drv.c | 2 +
drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 19 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 16 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 3 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_interrupts.c | 3 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c | 2 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 10 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 14 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 6 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.h | 4 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.h | 2 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 20 +-
drivers/gpu/drm/msm/dp/dp_ctrl.c | 16 +-
drivers/gpu/drm/msm/dp/dp_display.c | 55 +-
drivers/gpu/drm/msm/dp/dp_drm.c | 4 +
drivers/gpu/drm/msm/dsi/dsi_host.c | 21 +-
drivers/gpu/drm/msm/dsi/dsi_manager.c | 3 +
drivers/gpu/drm/msm/dsi/phy/dsi_phy_14nm.c | 2 +-
drivers/gpu/drm/msm/hdmi/hdmi.c | 10 +-
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 3 +
drivers/gpu/drm/msm/msm_drv.c | 11 +-
drivers/gpu/drm/msm/msm_gem_prime.c | 2 +-
drivers/gpu/drm/msm/msm_gpu.h | 12 +-
drivers/gpu/drm/msm/msm_gpu_devfreq.c | 90 ++-
drivers/gpu/drm/msm/msm_kms.h | 1 +
drivers/gpu/drm/nouveau/dispnv50/atom.h | 6 +-
drivers/gpu/drm/nouveau/dispnv50/crc.c | 27 +-
drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h | 2 +
drivers/gpu/drm/nouveau/nvkm/subdev/bus/gf100.c | 14 +-
drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv31.c | 6 +-
drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv50.c | 6 +-
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c | 6 +-
drivers/gpu/drm/omapdrm/omap_overlay.c | 2 +-
drivers/gpu/drm/panel/panel-simple.c | 3 +-
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
drivers/gpu/drm/stm/ltdc.c | 16 +-
drivers/gpu/drm/tegra/gem.c | 1 +
drivers/gpu/drm/tilcdc/tilcdc_external.c | 8 +-
drivers/gpu/drm/v3d/v3d_perfmon.c | 3 +-
drivers/gpu/drm/vc4/vc4_crtc.c | 2 +-
drivers/gpu/drm/vc4/vc4_drv.h | 1 +
drivers/gpu/drm/vc4/vc4_hvs.c | 49 +-
drivers/gpu/drm/vc4/vc4_kms.c | 5 +-
drivers/gpu/drm/vc4/vc4_regs.h | 12 +-
drivers/gpu/drm/vc4/vc4_txp.c | 8 +-
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 30 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 1 -
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 14 +-
drivers/hid/amd-sfh-hid/amd_sfh_hid.c | 4 +-
drivers/hid/amd-sfh-hid/amd_sfh_hid.h | 2 +-
drivers/hid/hid-bigbenff.c | 6 +
drivers/hid/hid-elan.c | 2 -
drivers/hid/hid-led.c | 2 +-
drivers/hv/channel.c | 6 +-
drivers/hwmon/pmbus/pmbus_core.c | 28 +-
drivers/hwtracing/coresight/coresight-core.c | 33 +-
drivers/i2c/busses/i2c-at91-master.c | 11 +
drivers/i2c/busses/i2c-npcm7xx.c | 103 ++-
drivers/i2c/busses/i2c-rcar.c | 15 +-
drivers/infiniband/hw/hfi1/file_ops.c | 2 +
drivers/infiniband/hw/hfi1/init.c | 2 +-
drivers/infiniband/hw/hfi1/sdma.c | 12 +-
drivers/infiniband/hw/hns/hns_roce_device.h | 7 +-
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 24 +-
drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 2 +-
drivers/infiniband/hw/hns/hns_roce_main.c | 2 +-
drivers/infiniband/sw/rdmavt/qp.c | 6 +-
drivers/infiniband/sw/rxe/rxe_req.c | 2 +-
drivers/input/keyboard/gpio_keys.c | 2 +-
drivers/input/misc/sparcspkr.c | 1 +
drivers/input/touchscreen/stmfts.c | 16 +-
drivers/iommu/amd/init.c | 2 +-
drivers/iommu/amd/iommu.c | 7 -
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 13 +-
drivers/iommu/dma-iommu.c | 7 +-
drivers/iommu/intel/iommu.c | 2 +-
drivers/iommu/msm_iommu.c | 11 +-
drivers/iommu/mtk_iommu.c | 30 +-
drivers/iommu/mtk_iommu.h | 2 +
drivers/iommu/mtk_iommu_v1.c | 7 +
drivers/irqchip/irq-armada-370-xp.c | 11 +-
drivers/irqchip/irq-aspeed-i2c-ic.c | 4 +-
drivers/irqchip/irq-aspeed-scu-ic.c | 4 +-
drivers/irqchip/irq-gic-v3.c | 183 +++--
drivers/irqchip/irq-sni-exiu.c | 25 +-
drivers/irqchip/irq-xtensa-mx.c | 18 +-
drivers/macintosh/Kconfig | 6 +
drivers/macintosh/Makefile | 3 +-
drivers/macintosh/via-pmu.c | 2 +-
drivers/mailbox/mailbox.c | 19 +-
drivers/mailbox/pcc.c | 2 +-
drivers/md/bcache/btree.c | 58 +-
drivers/md/bcache/btree.h | 2 +-
drivers/md/bcache/journal.c | 31 +-
drivers/md/bcache/journal.h | 2 +
drivers/md/bcache/request.c | 6 +
drivers/md/bcache/super.c | 1 +
drivers/md/bcache/writeback.c | 101 +--
drivers/md/bcache/writeback.h | 2 +-
drivers/md/md-bitmap.c | 44 +-
drivers/md/md.c | 22 +-
drivers/md/raid0.c | 1 -
drivers/media/cec/core/cec-adap.c | 6 +-
drivers/media/i2c/ccs/ccs-core.c | 7 +-
drivers/media/i2c/dw9768.c | 6 -
drivers/media/i2c/max9286.c | 137 ++--
drivers/media/i2c/ov5648.c | 4 +-
drivers/media/i2c/ov7670.c | 1 -
drivers/media/i2c/rdacm20.c | 2 +-
drivers/media/i2c/rdacm21.c | 2 +-
drivers/media/pci/cx23885/cx23885-core.c | 6 +-
drivers/media/pci/cx25821/cx25821-core.c | 2 +-
drivers/media/platform/aspeed-video.c | 4 +-
drivers/media/platform/atmel/atmel-sama5d2-isc.c | 7 +-
drivers/media/platform/coda/coda-common.c | 35 +-
drivers/media/platform/exynos4-is/fimc-is.c | 6 +-
drivers/media/platform/exynos4-is/fimc-isp-video.h | 2 +-
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c | 13 +-
.../media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c | 3 +
drivers/media/platform/qcom/venus/helpers.c | 34 +-
drivers/media/platform/qcom/venus/hfi.c | 3 +
drivers/media/platform/rockchip/rga/rga.c | 6 +-
drivers/media/platform/sti/delta/delta-v4l2.c | 6 +-
drivers/media/platform/vsp1/vsp1_rpf.c | 6 +-
drivers/media/rc/imon.c | 99 ++-
drivers/media/usb/pvrusb2/pvrusb2-hdw.c | 7 +-
drivers/media/usb/uvc/uvc_v4l2.c | 20 +-
drivers/memory/samsung/exynos5422-dmc.c | 5 +-
drivers/mfd/davinci_voicecodec.c | 6 +-
drivers/mfd/ipaq-micro.c | 2 +-
drivers/misc/ocxl/file.c | 2 +
drivers/mmc/core/block.c | 8 +-
drivers/mmc/host/jz4740_mmc.c | 20 +
drivers/mmc/host/sdhci_am654.c | 23 +-
drivers/mtd/chips/cfi_cmdset_0002.c | 103 ++-
drivers/mtd/mtdblock.c | 8 +-
drivers/mtd/nand/raw/cadence-nand-controller.c | 5 +-
drivers/mtd/nand/raw/denali_pci.c | 15 +-
drivers/mtd/nand/raw/intel-nand-controller.c | 2 +-
drivers/mtd/nand/spi/gigadevice.c | 10 +-
drivers/mtd/spi-nor/core.c | 9 +
drivers/net/amt.c | 11 +-
drivers/net/bonding/bond_main.c | 15 +-
drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 2 +-
drivers/net/can/xilinx_can.c | 4 +-
drivers/net/dsa/Kconfig | 3 +-
drivers/net/dsa/mt7530.c | 14 +-
drivers/net/ethernet/broadcom/Makefile | 5 +
drivers/net/ethernet/cadence/macb_main.c | 40 +-
drivers/net/ethernet/cadence/macb_ptp.c | 4 +-
drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c | 2 +
drivers/net/ethernet/huawei/hinic/hinic_hw_wq.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/devlink.c | 4 +-
drivers/net/ethernet/mellanox/mlx5/core/en.h | 1 +
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 9 +
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 10 +-
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 10 +-
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/lib/tout.c | 1 +
drivers/net/ethernet/mellanox/mlx5/core/lib/tout.h | 1 +
drivers/net/ethernet/mellanox/mlx5/core/main.c | 23 +-
.../net/ethernet/mellanox/mlx5/core/mlx5_core.h | 2 +-
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c | 13 -
.../net/ethernet/mellanox/mlxsw/spectrum_trap.c | 2 +-
drivers/net/ethernet/sfc/ef10.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 13 +-
drivers/net/ethernet/xscale/ptp_ixp46x.c | 2 +-
drivers/net/hyperv/netvsc_drv.c | 5 +-
drivers/net/ipa/ipa_endpoint.c | 36 +-
drivers/net/phy/micrel.c | 11 +-
drivers/net/usb/asix_devices.c | 6 +-
drivers/net/usb/smsc95xx.c | 3 +-
drivers/net/usb/usbnet.c | 6 +-
drivers/net/wireless/ath/ath10k/mac.c | 20 +-
drivers/net/wireless/ath/ath11k/mac.c | 16 +-
drivers/net/wireless/ath/ath11k/pci.c | 12 +-
drivers/net/wireless/ath/ath11k/spectral.c | 17 +-
drivers/net/wireless/ath/ath11k/wmi.c | 11 +-
drivers/net/wireless/ath/ath11k/wmi.h | 12 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 +-
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 8 +
drivers/net/wireless/ath/carl9170/tx.c | 3 +
drivers/net/wireless/broadcom/b43/phy_n.c | 2 +-
drivers/net/wireless/broadcom/b43legacy/phy.c | 2 +-
drivers/net/wireless/intel/ipw2x00/libipw_tx.c | 2 +-
drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 3 +
drivers/net/wireless/intel/iwlwifi/mei/main.c | 3 +
drivers/net/wireless/intel/iwlwifi/mvm/power.c | 3 +
drivers/net/wireless/marvell/mwifiex/11h.c | 2 +
drivers/net/wireless/mediatek/mt76/agg-rx.c | 5 +-
drivers/net/wireless/mediatek/mt76/mac80211.c | 8 +-
drivers/net/wireless/mediatek/mt76/mt76.h | 2 +-
drivers/net/wireless/mediatek/mt76/mt7603/main.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt7615/main.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 4 +-
.../net/wireless/mediatek/mt76/mt7915/debugfs.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 4 +-
drivers/net/wireless/mediatek/mt76/mt7915/main.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h | 2 +-
drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 6 +-
drivers/net/wireless/mediatek/mt76/mt7921/main.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 10 +-
drivers/net/wireless/mediatek/mt76/tx.c | 11 +-
drivers/net/wireless/microchip/wilc1000/mon.c | 4 +-
drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c | 8 +-
drivers/net/wireless/realtek/rtlwifi/usb.c | 2 +-
drivers/net/wireless/realtek/rtw88/rtw8821c.c | 4 +
drivers/net/wireless/realtek/rtw88/rx.c | 3 +-
drivers/net/wireless/realtek/rtw89/phy.c | 5 +
drivers/nfc/st21nfca/se.c | 17 +-
drivers/nfc/st21nfca/st21nfca.h | 1 +
drivers/nvdimm/core.c | 9 -
drivers/nvdimm/pmem.c | 30 +-
drivers/nvdimm/security.c | 5 -
drivers/nvme/host/core.c | 21 +-
drivers/nvme/host/pci.c | 1 +
drivers/of/fdt.c | 3 +
drivers/of/kexec.c | 9 +
drivers/of/overlay.c | 4 +-
drivers/opp/of.c | 2 +-
drivers/pci/controller/cadence/pci-j721e.c | 3 +
drivers/pci/controller/cadence/pcie-cadence-ep.c | 21 +-
drivers/pci/controller/cadence/pcie-cadence.h | 3 +
drivers/pci/controller/dwc/pci-imx6.c | 23 +-
drivers/pci/controller/dwc/pcie-designware-host.c | 3 +-
drivers/pci/controller/dwc/pcie-qcom.c | 9 +-
drivers/pci/controller/pcie-mediatek-gen3.c | 8 +
drivers/pci/controller/pcie-mediatek.c | 1 +
drivers/pci/controller/pcie-microchip-host.c | 16 +-
drivers/pci/controller/pcie-rockchip-ep.c | 3 +-
drivers/pci/pci-acpi.c | 41 +-
drivers/pci/pci.c | 12 +-
drivers/pci/pcie/aer.c | 7 +-
drivers/pci/quirks.c | 47 ++
drivers/phy/qualcomm/phy-qcom-qmp.c | 11 +-
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 18 +
drivers/pinctrl/mediatek/Kconfig | 1 +
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 2 +-
drivers/pinctrl/pinctrl-apple-gpio.c | 1 +
drivers/pinctrl/pinctrl-rockchip.c | 54 +-
drivers/pinctrl/pinctrl-rockchip.h | 7 +-
drivers/pinctrl/renesas/core.c | 7 +-
drivers/pinctrl/renesas/pfc-r8a779a0.c | 29 +
drivers/pinctrl/renesas/pinctrl-rzn1.c | 10 +-
drivers/platform/chrome/cros_ec.c | 16 +-
drivers/platform/chrome/cros_ec_chardev.c | 2 +-
drivers/platform/chrome/cros_ec_proto.c | 50 +-
drivers/platform/mips/cpu_hwmon.c | 127 ++--
drivers/platform/x86/intel/hid.c | 2 +-
drivers/regulator/core.c | 7 +-
drivers/regulator/da9121-regulator.c | 2 +
drivers/regulator/pfuze100-regulator.c | 2 +
drivers/regulator/qcom_smd-regulator.c | 35 +-
drivers/regulator/scmi-regulator.c | 2 +-
drivers/s390/cio/chsc.c | 4 +-
drivers/scsi/dc395x.c | 15 +-
drivers/scsi/fcoe/fcoe_ctlr.c | 2 +-
drivers/scsi/hisi_sas/hisi_sas_main.c | 47 +-
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 10 +-
drivers/scsi/lpfc/lpfc_els.c | 49 +-
drivers/scsi/lpfc/lpfc_init.c | 51 +-
drivers/scsi/lpfc/lpfc_logmsg.h | 6 +-
drivers/scsi/lpfc/lpfc_scsi.c | 37 +-
drivers/scsi/lpfc/lpfc_sli.c | 6 +-
drivers/scsi/megaraid.c | 2 +-
drivers/scsi/ufs/ti-j721e-ufs.c | 6 +-
drivers/scsi/ufs/ufs-qcom.c | 14 +-
drivers/scsi/ufs/ufshcd.c | 7 +-
drivers/soc/bcm/bcm63xx/bcm-pmb.c | 3 +
drivers/soc/qcom/llcc-qcom.c | 1 +
drivers/soc/qcom/smp2p.c | 1 +
drivers/soc/qcom/smsm.c | 1 +
drivers/soc/ti/ti_sci_pm_domains.c | 2 +
drivers/spi/spi-cadence-quadspi.c | 2 +-
drivers/spi/spi-fsl-qspi.c | 4 +
drivers/spi/spi-img-spfi.c | 2 +-
drivers/spi/spi-rockchip.c | 113 +++-
drivers/spi/spi-rspi.c | 15 +-
drivers/spi/spi-stm32-qspi.c | 3 +-
drivers/spi/spi-ti-qspi.c | 5 +-
drivers/staging/media/hantro/hantro_g2_hevc_dec.c | 11 +-
drivers/staging/media/hantro/hantro_h264.c | 2 -
drivers/staging/media/hantro/hantro_v4l2.c | 8 +-
drivers/staging/media/rkvdec/rkvdec-h264.c | 37 +-
drivers/staging/media/rkvdec/rkvdec.c | 6 -
drivers/staging/r8188eu/os_dep/ioctl_linux.c | 98 +--
drivers/target/target_core_device.c | 1 -
drivers/target/target_core_user.c | 50 +-
drivers/thermal/broadcom/bcm2711_thermal.c | 5 +-
drivers/thermal/broadcom/sr-thermal.c | 3 +
drivers/thermal/devfreq_cooling.c | 25 +-
drivers/thermal/imx_sc_thermal.c | 6 +-
drivers/thermal/thermal_core.c | 1 +
drivers/tty/goldfish.c | 20 +-
drivers/tty/n_gsm.c | 31 +-
drivers/tty/serial/pch_uart.c | 27 +-
drivers/tty/tty_buffer.c | 3 +-
drivers/usb/core/hcd.c | 29 +-
drivers/usb/core/quirks.c | 3 +
drivers/usb/dwc3/gadget.c | 6 +-
drivers/usb/host/xhci-pci.c | 2 +
drivers/usb/isp1760/isp1760-core.c | 8 +
drivers/usb/serial/option.c | 2 +
drivers/usb/serial/pl2303.c | 3 +
drivers/vdpa/vdpa_sim/vdpa_sim.c | 5 +-
drivers/video/console/sticon.c | 5 +-
drivers/video/console/sticore.c | 32 +-
drivers/video/fbdev/amba-clcd.c | 5 +-
drivers/video/fbdev/core/fbcon.c | 5 +-
drivers/video/fbdev/sticore.h | 3 +
drivers/video/fbdev/stifb.c | 4 +-
drivers/video/fbdev/vesafb.c | 5 +-
fs/afs/misc.c | 5 +-
fs/afs/rotate.c | 4 +
fs/afs/rxrpc.c | 8 +-
fs/afs/write.c | 1 +
fs/binfmt_flat.c | 27 +-
fs/btrfs/block-group.c | 8 +
fs/btrfs/block-group.h | 2 +
fs/btrfs/disk-io.c | 4 +-
fs/btrfs/extent_io.c | 27 +-
fs/btrfs/extent_io.h | 1 -
fs/btrfs/ioctl.c | 49 +-
fs/btrfs/volumes.c | 8 +-
fs/btrfs/zoned.c | 44 +-
fs/btrfs/zoned.h | 5 +
fs/ceph/mds_client.c | 14 +-
fs/cifs/cifsfs.c | 10 +-
fs/cifs/cifsglob.h | 15 +-
fs/cifs/connect.c | 67 +-
fs/cifs/dfs_cache.c | 6 +-
fs/cifs/fs_context.c | 29 +-
fs/cifs/fs_context.h | 2 +-
fs/cifs/misc.c | 7 +-
fs/cifs/sess.c | 6 +-
fs/cifs/smb2inode.c | 2 -
fs/cifs/smb2ops.c | 9 +-
fs/cifs/smb2pdu.c | 3 +-
fs/cifs/smb2transport.c | 3 +-
fs/dax.c | 3 +-
fs/dlm/lock.c | 15 +-
fs/dlm/lowcomms.c | 2 +-
fs/dlm/plock.c | 12 +-
fs/erofs/decompressor.c | 5 +-
fs/exec.c | 6 +-
fs/exportfs/expfs.c | 5 +-
fs/ext4/ext4.h | 6 -
fs/ext4/extents.c | 20 +-
fs/ext4/inline.c | 12 +
fs/ext4/inode.c | 13 +-
fs/ext4/mballoc.c | 18 +-
fs/ext4/namei.c | 84 ++-
fs/ext4/super.c | 87 ++-
fs/f2fs/dir.c | 3 +-
fs/f2fs/f2fs.h | 29 +-
fs/f2fs/file.c | 20 +-
fs/f2fs/hash.c | 11 +-
fs/f2fs/inline.c | 29 +-
fs/f2fs/inode.c | 19 +-
fs/f2fs/namei.c | 7 +
fs/f2fs/segment.c | 42 +-
fs/f2fs/segment.h | 33 +-
fs/f2fs/super.c | 6 +-
fs/fat/fatent.c | 7 +-
fs/fs-writeback.c | 13 +-
fs/gfs2/quota.c | 32 +-
fs/hugetlbfs/inode.c | 4 +-
fs/io_uring.c | 45 +-
fs/iomap/buffered-io.c | 3 +-
fs/jfs/jfs_dmap.c | 3 +-
fs/ksmbd/connection.c | 2 +-
fs/ksmbd/smb2misc.c | 2 +-
fs/ksmbd/smb_common.c | 4 +-
fs/namei.c | 70 +-
fs/nfs/file.c | 50 +-
fs/nfs/inode.c | 6 +-
fs/nfs/nfs4namespace.c | 9 +-
fs/nfs/nfs4proc.c | 56 +-
fs/nfs/nfs4state.c | 11 +-
fs/nfs/nfs4xdr.c | 4 +-
fs/nfs/pagelist.c | 3 +
fs/nfs/pnfs.c | 6 +-
fs/nfs/unlink.c | 8 +
fs/nfs/write.c | 54 +-
fs/nfsd/nfscache.c | 2 +-
fs/notify/fanotify/fanotify_user.c | 4 +-
fs/notify/fdinfo.c | 11 +-
fs/notify/inotify/inotify.h | 12 +
fs/notify/inotify/inotify_user.c | 2 +-
fs/notify/mark.c | 6 +-
fs/ntfs3/file.c | 12 +-
fs/ntfs3/frecord.c | 10 +-
fs/ntfs3/fslog.c | 12 +-
fs/ntfs3/inode.c | 8 +-
fs/ntfs3/xattr.c | 112 ++-
fs/ocfs2/dlmfs/userdlm.c | 16 +-
fs/ocfs2/inode.c | 4 +-
fs/ocfs2/journal.c | 33 +-
fs/ocfs2/journal.h | 2 +
fs/ocfs2/super.c | 15 +
fs/proc/generic.c | 3 +
fs/proc/proc_net.c | 3 +
fs/seq_file.c | 32 +
include/drm/drm_edid.h | 6 +-
include/linux/blk_types.h | 5 +-
include/linux/bpf.h | 4 +-
include/linux/compat.h | 1 +
include/linux/efi.h | 2 +
include/linux/fwnode.h | 10 +-
include/linux/goldfish.h | 15 +-
include/linux/gpio/driver.h | 12 +
include/linux/ipmi_smi.h | 6 +
include/linux/kexec.h | 46 +-
include/linux/list.h | 16 +-
include/linux/mailbox_controller.h | 1 +
include/linux/module.h | 3 +-
include/linux/mtd/cfi.h | 1 +
include/linux/namei.h | 6 +
include/linux/nfs_fs_sb.h | 1 +
include/linux/nfs_xdr.h | 2 +-
include/linux/nodemask.h | 13 +-
include/linux/platform_data/cros_ec_proto.h | 3 +
include/linux/ptp_classify.h | 3 +
include/linux/ptrace.h | 7 -
include/linux/sched/signal.h | 2 +-
include/linux/sched/task.h | 2 +
include/linux/seq_file.h | 4 +
include/linux/set_memory.h | 10 +-
include/linux/usb/hcd.h | 2 +
include/net/bluetooth/hci.h | 9 +
include/net/bluetooth/hci_core.h | 10 +-
include/net/if_inet6.h | 8 +
include/scsi/libfcoe.h | 3 +-
include/scsi/libiscsi.h | 6 +-
include/sound/cs35l41.h | 1 -
include/sound/jack.h | 1 +
include/trace/events/rxrpc.h | 2 +-
include/trace/events/vmscan.h | 4 +-
include/uapi/asm-generic/siginfo.h | 7 +
include/uapi/linux/landlock.h | 9 +-
init/Kconfig | 5 +
init/main.c | 2 +-
ipc/mqueue.c | 14 +
kernel/dma/debug.c | 2 +-
kernel/dma/direct.c | 31 +-
kernel/events/core.c | 4 +-
kernel/fork.c | 22 +-
kernel/kexec_file.c | 34 -
kernel/module.c | 4 +
kernel/power/energy_model.c | 2 +
kernel/printk/printk.c | 63 +-
kernel/ptrace.c | 5 +-
kernel/rcu/Kconfig | 1 +
kernel/rcu/tasks.h | 5 +-
kernel/scftorture.c | 5 +-
kernel/sched/core.c | 6 +-
kernel/sched/deadline.c | 5 +-
kernel/sched/fair.c | 8 +-
kernel/sched/pelt.h | 4 +-
kernel/sched/psi.c | 15 +-
kernel/sched/rt.c | 5 +-
kernel/sched/sched.h | 32 +-
kernel/signal.c | 18 +-
kernel/trace/ftrace.c | 5 +-
kernel/trace/trace.c | 6 +-
kernel/trace/trace_boot.c | 2 +-
kernel/trace/trace_events_hist.c | 3 +
kernel/trace/trace_osnoise.c | 9 +-
kernel/trace/trace_selftest.c | 3 +
kernel/umh.c | 6 +-
lib/kunit/debugfs.c | 2 +-
lib/kunit/executor.c | 32 +-
lib/kunit/executor_test.c | 4 +-
lib/list-test.c | 19 +
lib/string_helpers.c | 3 +
mm/cma.c | 4 +-
mm/compaction.c | 2 +
mm/hugetlb.c | 9 +-
mm/memremap.c | 2 +-
mm/page_alloc.c | 4 +-
net/bluetooth/hci_conn.c | 39 +-
net/bluetooth/hci_event.c | 46 +-
net/bluetooth/hci_request.c | 2 +
net/bluetooth/hci_sync.c | 11 +-
net/bluetooth/sco.c | 23 +-
net/core/dev.c | 8 +-
net/ipv4/tcp_input.c | 28 +-
net/ipv6/addrconf.c | 33 +-
net/mac80211/chan.c | 7 +-
net/mac80211/ieee80211_i.h | 5 +
net/mac80211/rc80211_minstrel_ht.c | 3 +
net/mac80211/scan.c | 20 +
net/mptcp/pm.c | 19 +-
net/mptcp/pm_netlink.c | 2 +
net/mptcp/protocol.c | 18 +-
net/mptcp/protocol.h | 1 +
net/nfc/core.c | 1 +
net/rxrpc/ar-internal.h | 15 +-
net/rxrpc/call_accept.c | 6 +-
net/rxrpc/call_event.c | 7 +-
net/rxrpc/call_object.c | 18 +-
net/rxrpc/conn_object.c | 2 +-
net/rxrpc/input.c | 58 +-
net/rxrpc/net_ns.c | 2 +-
net/rxrpc/output.c | 20 +-
net/rxrpc/proc.c | 10 +-
net/rxrpc/recvmsg.c | 8 +-
net/rxrpc/sendmsg.c | 6 +
net/rxrpc/sysctl.c | 4 +-
net/sctp/input.c | 4 +-
net/smc/af_smc.c | 2 +-
net/wireless/nl80211.c | 4 +-
net/wireless/reg.c | 4 +
samples/bpf/Makefile | 9 +-
samples/landlock/sandboxer.c | 104 +--
scripts/faddr2line | 150 ++--
security/integrity/ima/Kconfig | 14 +-
.../integrity/platform_certs/keyring_handler.h | 8 +
security/integrity/platform_certs/load_uefi.c | 33 +
security/landlock/cred.c | 4 +-
security/landlock/cred.h | 8 +-
security/landlock/fs.c | 191 ++++--
security/landlock/fs.h | 11 +-
security/landlock/limits.h | 8 +-
security/landlock/object.c | 6 +-
security/landlock/object.h | 6 +-
security/landlock/ptrace.c | 10 +-
security/landlock/ruleset.c | 84 +--
security/landlock/ruleset.h | 35 +-
security/landlock/syscalls.c | 95 +--
sound/core/jack.c | 34 +-
sound/core/pcm_memory.c | 3 +-
sound/pci/hda/patch_realtek.c | 21 +-
sound/soc/amd/yc/acp6x-mach.c | 29 +-
sound/soc/atmel/atmel-classd.c | 1 -
sound/soc/atmel/atmel-pdmic.c | 1 -
sound/soc/codecs/Kconfig | 2 -
sound/soc/codecs/cs35l41-lib.c | 14 +-
sound/soc/codecs/max98090.c | 6 +-
sound/soc/codecs/rk3328_codec.c | 2 +-
sound/soc/codecs/rt5514.c | 2 +-
sound/soc/codecs/rt5645.c | 7 +-
sound/soc/codecs/tscs454.c | 12 +-
sound/soc/codecs/wm2000.c | 6 +-
sound/soc/fsl/imx-hdmi.c | 1 +
sound/soc/fsl/imx-sgtl5000.c | 14 +-
sound/soc/intel/boards/bytcr_rt5640.c | 12 +
sound/soc/mediatek/mt2701/mt2701-wm8960.c | 9 +-
sound/soc/mediatek/mt8173/mt8173-max98090.c | 5 +-
sound/soc/mxs/mxs-saif.c | 1 +
sound/soc/samsung/aries_wm8994.c | 2 +-
sound/soc/sh/rcar/core.c | 15 +-
sound/soc/sh/rcar/dma.c | 9 +-
sound/soc/sh/rcar/rsnd.h | 2 +-
sound/soc/sh/rcar/src.c | 7 +-
sound/soc/sh/rcar/ssi.c | 14 +-
sound/soc/sh/rcar/ssiu.c | 11 +-
sound/soc/sh/rz-ssi.c | 22 +-
sound/soc/soc-dapm.c | 2 -
sound/soc/sof/amd/pci-rn.c | 1 +
sound/soc/ti/j721e-evm.c | 44 +-
sound/usb/implicit.c | 10 +-
sound/usb/midi.c | 3 +
sound/usb/quirks.c | 6 +
sound/usb/usbaudio.h | 6 +
.../test-libbpf-btf__load_from_kernel_by_id.c | 5 +-
tools/lib/bpf/libbpf.c | 22 +-
tools/objtool/check.c | 9 +-
tools/objtool/elf.c | 200 ++++--
tools/objtool/include/objtool/elf.h | 4 +-
tools/perf/Makefile.config | 39 +-
tools/perf/arch/x86/util/evlist.c | 2 +-
tools/perf/arch/x86/util/evsel.c | 12 +
tools/perf/builtin-c2c.c | 6 +-
tools/perf/builtin-stat.c | 7 +-
tools/perf/pmu-events/jevents.c | 2 +-
tools/perf/util/data.h | 1 +
tools/perf/util/evlist.c | 12 +-
tools/perf/util/evsel.c | 19 +
tools/perf/util/evsel.h | 3 +
tools/power/x86/turbostat/turbostat.c | 1 +
tools/testing/kunit/kunit_parser.py | 7 +-
.../test_is_test_passed-no_tests_no_plan.log | 2 +-
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/arm64/bti/Makefile | 4 +-
tools/testing/selftests/bpf/Makefile | 12 +-
.../selftests/bpf/prog_tests/trampoline_count.c | 134 ++--
.../bpf/progs/btf_dump_test_case_syntax.c | 2 +-
tools/testing/selftests/bpf/progs/profiler.inc.h | 5 +-
.../selftests/bpf/progs/test_trampoline_count.c | 16 +-
.../selftests/bpf/test_bpftool_synctypes.py | 2 +-
tools/testing/selftests/cgroup/test_stress.sh | 2 +-
tools/testing/selftests/landlock/base_test.c | 177 +++--
tools/testing/selftests/landlock/common.h | 66 +-
tools/testing/selftests/landlock/fs_test.c | 753 ++++++++++++++-------
tools/testing/selftests/landlock/ptrace_test.c | 40 +-
tools/testing/selftests/resctrl/fill_buf.c | 4 +-
tools/tracing/rtla/Makefile | 3 +-
tools/tracing/rtla/README.txt | 12 +-
tools/tracing/rtla/src/utils.c | 2 +-
840 files changed, 8058 insertions(+), 4338 deletions(-)
^ permalink raw reply [relevance 1%]
* [PATCH 5.15 608/667] thermal: devfreq_cooling: use local ops instead of global ops
2022-06-07 16:54 1% [PATCH 5.15 000/667] 5.15.46-rc1 review Greg Kroah-Hartman
@ 2022-06-07 17:04 7% ` Greg Kroah-Hartman
0 siblings, 0 replies; 200+ results
From: Greg Kroah-Hartman @ 2022-06-07 17:04 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Kant Fan, Lukasz Luba, Rafael J. Wysocki
From: Kant Fan <kant@allwinnertech.com>
commit b947769b8f778db130aad834257fcaca25df2edc upstream.
Fix access illegal address problem in following condition:
There are multiple devfreq cooling devices in system, some of them has
EM model but others do not. Energy model ops such as state2power will
append to global devfreq_cooling_ops when the cooling device with
EM model is registered. It makes the cooling device without EM model
also use devfreq_cooling_ops after appending when registered later by
of_devfreq_cooling_register_power() or of_devfreq_cooling_register().
The IPA governor regards the cooling devices without EM model as a power
actor, because they also have energy model ops, and will access illegal
address at dfc->em_pd when execute cdev->ops->get_requested_power,
cdev->ops->state2power or cdev->ops->power2state.
Fixes: 615510fe13bd2 ("thermal: devfreq_cooling: remove old power model and use EM")
Cc: 5.13+ <stable@vger.kernel.org> # 5.13+
Signed-off-by: Kant Fan <kant@allwinnertech.com>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/thermal/devfreq_cooling.c | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
--- a/drivers/thermal/devfreq_cooling.c
+++ b/drivers/thermal/devfreq_cooling.c
@@ -358,21 +358,28 @@ of_devfreq_cooling_register_power(struct
struct thermal_cooling_device *cdev;
struct device *dev = df->dev.parent;
struct devfreq_cooling_device *dfc;
+ struct thermal_cooling_device_ops *ops;
char *name;
int err, num_opps;
- dfc = kzalloc(sizeof(*dfc), GFP_KERNEL);
- if (!dfc)
+ ops = kmemdup(&devfreq_cooling_ops, sizeof(*ops), GFP_KERNEL);
+ if (!ops)
return ERR_PTR(-ENOMEM);
+ dfc = kzalloc(sizeof(*dfc), GFP_KERNEL);
+ if (!dfc) {
+ err = -ENOMEM;
+ goto free_ops;
+ }
+
dfc->devfreq = df;
dfc->em_pd = em_pd_get(dev);
if (dfc->em_pd) {
- devfreq_cooling_ops.get_requested_power =
+ ops->get_requested_power =
devfreq_cooling_get_requested_power;
- devfreq_cooling_ops.state2power = devfreq_cooling_state2power;
- devfreq_cooling_ops.power2state = devfreq_cooling_power2state;
+ ops->state2power = devfreq_cooling_state2power;
+ ops->power2state = devfreq_cooling_power2state;
dfc->power_ops = dfc_power;
@@ -407,8 +414,7 @@ of_devfreq_cooling_register_power(struct
if (!name)
goto remove_qos_req;
- cdev = thermal_of_cooling_device_register(np, name, dfc,
- &devfreq_cooling_ops);
+ cdev = thermal_of_cooling_device_register(np, name, dfc, ops);
kfree(name);
if (IS_ERR(cdev)) {
@@ -429,6 +435,8 @@ free_table:
kfree(dfc->freq_table);
free_dfc:
kfree(dfc);
+free_ops:
+ kfree(ops);
return ERR_PTR(err);
}
@@ -510,11 +518,13 @@ EXPORT_SYMBOL_GPL(devfreq_cooling_em_reg
void devfreq_cooling_unregister(struct thermal_cooling_device *cdev)
{
struct devfreq_cooling_device *dfc;
+ const struct thermal_cooling_device_ops *ops;
struct device *dev;
if (IS_ERR_OR_NULL(cdev))
return;
+ ops = cdev->ops;
dfc = cdev->devdata;
dev = dfc->devfreq->dev.parent;
@@ -525,5 +535,6 @@ void devfreq_cooling_unregister(struct t
kfree(dfc->freq_table);
kfree(dfc);
+ kfree(ops);
}
EXPORT_SYMBOL_GPL(devfreq_cooling_unregister);
^ permalink raw reply [relevance 7%]
* [PATCH 5.15 000/667] 5.15.46-rc1 review
@ 2022-06-07 16:54 1% Greg Kroah-Hartman
2022-06-07 17:04 7% ` [PATCH 5.15 608/667] thermal: devfreq_cooling: use local ops instead of global ops Greg Kroah-Hartman
0 siblings, 1 reply; 200+ results
From: Greg Kroah-Hartman @ 2022-06-07 16:54 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, slade
This is the start of the stable review cycle for the 5.15.46 release.
There are 667 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 09 Jun 2022 16:48:02 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.46-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.15.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 5.15.46-rc1
Jia-Ju Bai <baijiaju1990@gmail.com>
md: bcache: check the return value of kzalloc() in detached_dev_do_request()
Xiao Ni <xni@redhat.com>
md: fix double free of io_acct_set bioset
Xiao Ni <xni@redhat.com>
md: Don't set mddev private to NULL in raid0 pers->free
Namjae Jeon <linkinjeon@kernel.org>
fs/ntfs3: Fix invalid free in log_replay
Christian Brauner <brauner@kernel.org>
exportfs: support idmapped mounts
Christian Brauner <brauner@kernel.org>
fs: add two trivial lookup helpers
Mike Tipton <mdtipton@codeaurora.org>
interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate
Stephen Boyd <swboyd@chromium.org>
interconnect: qcom: sc7180: Drop IP0 interconnects
Eric Biggers <ebiggers@google.com>
ext4: only allow test_dummy_encryption when supported
Maciej W. Rozycki <macro@orcam.me.uk>
MIPS: IP30: Remove incorrect `cpu_has_fpu' override
Maciej W. Rozycki <macro@orcam.me.uk>
MIPS: IP27: Remove incorrect `cpu_has_fpu' override
Xiao Yang <yangx.jy@fujitsu.com>
RDMA/rxe: Generate a completion for unsupported/invalid opcode
Yixing Liu <liuyixing1@huawei.com>
RDMA/hns: Remove the num_cqc_timer variable
Dan Carpenter <dan.carpenter@oracle.com>
staging: r8188eu: delete rtw_wx_read/write32()
Jason A. Donenfeld <Jason@zx2c4.com>
Revert "random: use static branch for crng_ready()"
David Gow <davidgow@google.com>
list: test: Add a test for list_is_head()
Waiman Long <longman@redhat.com>
kseltest/cgroup: Make test_stress.sh work if run interactively
Alex Elder <elder@linaro.org>
net: ipa: fix page free in ipa_endpoint_replenish_one()
Alex Elder <elder@linaro.org>
net: ipa: fix page free in ipa_endpoint_trans_release()
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp: fix reset-controller leak on probe errors
Mao Jinlong <quic_jinlmao@quicinc.com>
coresight: core: Fix coresight device probe failure issue
Tejun Heo <tj@kernel.org>
blk-iolatency: Fix inflight count imbalances and IO hangs on offline
Eugenio Pérez <eperezma@redhat.com>
vdpasim: allow to enable a vq repeatedly
Dinh Nguyen <dinguyen@kernel.org>
dt-bindings: gpio: altera: correct interrupt-cells
Akira Yokosawa <akiyks@gmail.com>
docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0
Steve French <stfrench@microsoft.com>
SMB3: EBADF/EIO errors in rename/open caused by race condition in smb2_compound_op
Arnd Bergmann <arnd@arndb.de>
ARM: pxa: maybe fix gpio lookup tables
Jonathan Bakker <xc-racer2@live.ca>
ARM: dts: s5pv210: Remove spi-cs-high on panel in Aries
Johan Hovold <johan+linaro@kernel.org>
phy: qcom-qmp: fix struct clk leak on probe errors
Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
clk: tegra: Add missing reset deassertion
Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
arm64: tegra: Add missing DFLL reset on Tegra210
Kathiravan T <quic_kathirav@quicinc.com>
arm64: dts: qcom: ipq8074: fix the sleep clock frequency
Xiaomeng Tong <xiam0nd.tong@gmail.com>
gma500: fix an incorrect NULL check on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator
Jiri Slaby <jirislaby@kernel.org>
serial: pch: don't overwrite xmit->buf[0] by x_char
Coly Li <colyli@suse.de>
bcache: avoid journal no-space deadlock by reserving 1 journal bucket
Coly Li <colyli@suse.de>
bcache: remove incremental dirty sector counting for bch_sectors_dirty_init()
Coly Li <colyli@suse.de>
bcache: improve multithreaded bch_sectors_dirty_init()
Coly Li <colyli@suse.de>
bcache: improve multithreaded bch_btree_check()
Xiaomeng Tong <xiam0nd.tong@gmail.com>
stm: ltdc: fix two incorrect NULL checks on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
carl9170: tx: fix an incorrect use of list iterator
Mark Brown <broonie@kernel.org>
ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control
Alexander Wetzel <alexander@wetzel-home.de>
rtl818x: Prevent using not initialized queues
Yi Yang <yiyang13@huawei.com>
xtensa/simdisk: fix proc_read_simdisk()
Miaohe Lin <linmiaohe@huawei.com>
mm/memremap: fix missing call to untrack_pfn() in pagemap_range()
Mike Kravetz <mike.kravetz@oracle.com>
hugetlb: fix huge_pmd_unshare address update
Christophe de Dinechin <dinechin@redhat.com>
nodemask.h: fix compilation error with GCC12
Mel Gorman <mgorman@techsingularity.net>
mm/page_alloc: always attempt to allocate at least one page during bulk allocation
Dong Aisheng <aisheng.dong@nxp.com>
Revert "mm/cma.c: remove redundant cma_mutex lock"
Yunfei Wang <yf.wang@mediatek.com>
iommu/dma: Fix iova map result check bug
Xiaomeng Tong <xiam0nd.tong@gmail.com>
iommu/msm: Fix an incorrect NULL check on list iterator
Hyunchul Lee <hyc.lee@gmail.com>
ksmbd: fix outstanding credits related bugs
Song Liu <song@kernel.org>
ftrace: Clean up hash direct_functions on register failures
Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
Vincent Whitchurch <vincent.whitchurch@axis.com>
um: Fix out-of-bounds read in LDT setup
Johannes Berg <johannes.berg@intel.com>
um: chan_user: Fix winch_tramp() return value
Johannes Berg <johannes.berg@intel.com>
um: Use asm-generic/dma-mapping.h
Felix Fietkau <nbd@nbd.name>
mac80211: upgrade passive scan to active scan on DFS channels after beacon rx
Dimitri John Ledkov <dimitri.ledkov@canonical.com>
cfg80211: declare MODULE_FIRMWARE for regulatory.db
Kant Fan <kant@allwinnertech.com>
thermal: devfreq_cooling: use local ops instead of global ops
Max Filippov <jcmvbkbc@gmail.com>
irqchip: irq-xtensa-mx: fix initial IRQ affinity
Pali Rohár <pali@kernel.org>
irqchip/armada-370-xp: Do not touch Performance Counter Overflow on A375, A38x, A39x
Guo Ren <guoren@linux.alibaba.com>
csky: patch_text: Fixup last cpu should be master
Bean Huo <beanhuo@micron.com>
mmc: core: Allows to override the timeout value for ioctl() path
Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
RDMA/hfi1: Fix potential integer multiplication overflow errors
Sean Christopherson <seanjc@google.com>
Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug
GUO Zihua <guozihua@huawei.com>
ima: remove the IMA_TEMPLATE Kconfig option
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: coda: Add more H264 levels for CODA960
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: coda: Fix reported H264 profile
Tokunori Ikegami <ikegami.t@gmail.com>
mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N
Tokunori Ikegami <ikegami.t@gmail.com>
mtd: cfi_cmdset_0002: Move and rename chip_check/chip_ready/chip_good_for_write
Xiaomeng Tong <xiam0nd.tong@gmail.com>
md: fix an incorrect NULL check in md_reload_sb
Xiaomeng Tong <xiam0nd.tong@gmail.com>
md: fix an incorrect NULL check in does_sb_need_changing
Jani Nikula <jani.nikula@intel.com>
drm/i915/dsi: fix VBT send packet port selection for ICL+
Brian Norris <briannorris@chromium.org>
drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX
Xiaomeng Tong <xiam0nd.tong@gmail.com>
drm/nouveau/kms/nv50-: atom: fix an incorrect NULL check on list iterator
Xiaomeng Tong <xiam0nd.tong@gmail.com>
drm/nouveau/clk: Fix an incorrect NULL check on list iterator
Lucas Stach <l.stach@pengutronix.de>
drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem
Lyude Paul <lyude@redhat.com>
drm/nouveau/subdev/bus: Ratelimit logging for fault errors
Dave Airlie <airlied@redhat.com>
drm/amdgpu/cs: make commands with 0 chunks illegal behaviour.
Mickaël Salaün <mic@digikod.net>
landlock: Fix same-layer rule unions
Mickaël Salaün <mic@digikod.net>
landlock: Create find_rule() from unmask_layers()
Mickaël Salaün <mic@digikod.net>
landlock: Reduce the maximum number of layers to 16
Mickaël Salaün <mic@digikod.net>
landlock: Define access_mask_t to enforce a consistent access mask size
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Test landlock_create_ruleset(2) argument check ordering
Mickaël Salaün <mic@digikod.net>
landlock: Change landlock_restrict_self(2) check ordering
Mickaël Salaün <mic@digikod.net>
landlock: Change landlock_add_rule(2) argument check ordering
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add tests for O_PATH
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Fully test file rename with "remove" access
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Extend access right tests to directories
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add tests for unknown access rights
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Extend tests for minimal valid attribute size
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Make tests build with old libc
Mickaël Salaün <mic@digikod.net>
landlock: Fix landlock_add_rule(2) documentation
Mickaël Salaün <mic@digikod.net>
samples/landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
samples/landlock: Add clang-format exceptions
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Normalize array assignment
Mickaël Salaün <mic@digikod.net>
selftests/landlock: Add clang-format exceptions
Mickaël Salaün <mic@digikod.net>
landlock: Format with clang-format
Mickaël Salaün <mic@digikod.net>
landlock: Add clang-format exceptions
Manivannan Sadhasivam <mani@kernel.org>
scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled
Xiaomeng Tong <xiam0nd.tong@gmail.com>
scsi: dc395x: Fix a missing check on list iterator
Junxiao Bi via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock
Alexander Aring <aahringo@redhat.com>
dlm: fix missing lkb refcount handling
Dan Carpenter <dan.carpenter@oracle.com>
dlm: uninitialized variable on error in dlm_listen_for_all()
Alexander Aring <aahringo@redhat.com>
dlm: fix plock invalid read
Sven Schnelle <svens@linux.ibm.com>
s390/stp: clock_delta should be signed
Nico Boehr <nrb@linux.ibm.com>
s390/perf: obtain sie_block from the right address
Rei Yamamoto <yamamoto.rei@jp.fujitsu.com>
mm, compaction: fast_find_migrateblock() should return pfn in the target zone
Denis Efremov <denis.e.efremov@oracle.com>
staging: r8188eu: prevent ->Ssid overflow in rtw_wx_set_scan()
Johan Hovold <johan+linaro@kernel.org>
PCI: qcom: Fix unbalanced PHY init on probe errors
Johan Hovold <johan+linaro@kernel.org>
PCI: qcom: Fix runtime PM imbalance on probe errors
Bjorn Helgaas <bhelgaas@google.com>
PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu: add beige goby PCI ID
Gautam Menghani <gautammenghani201@gmail.com>
tracing: Initialize integer variable to prevent garbage return value
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
tracing: Fix potential double free in create_var_ref()
Laurent Vivier <laurent@vivier.eu>
tty: goldfish: Introduce gf_ioread32()/gf_iowrite32()
Sakari Ailus <sakari.ailus@linux.intel.com>
ACPI: property: Release subnode properties with data nodes
Jan Kara <jack@suse.cz>
ext4: avoid cycles in directory h-tree
Jan Kara <jack@suse.cz>
ext4: verify dir block before splitting it
Baokun Li <libaokun1@huawei.com>
ext4: fix bug_on in __es_tree_search
Theodore Ts'o <tytso@mit.edu>
ext4: filter out EXT4_FC_REPLAY from on-disk superblock field s_state
Ye Bin <yebin10@huawei.com>
ext4: fix bug_on in ext4_writepages
Ye Bin <yebin10@huawei.com>
ext4: fix warning in ext4_handle_inode_extension
Baokun Li <libaokun1@huawei.com>
ext4: fix race condition between ext4_write and ext4_convert_inline_data
Ye Bin <yebin10@huawei.com>
ext4: fix use-after-free in ext4_rename_dir_prepare
Dmitry Monakhov <dmtrmonakhov@yandex-team.ru>
ext4: mark group as trimmed only if it was fully scanned
Jan Kara <jack@suse.cz>
bfq: Make sure bfqg for which we are queueing requests is online
Jan Kara <jack@suse.cz>
bfq: Get rid of __bio_blkcg() usage
Jan Kara <jack@suse.cz>
bfq: Track whether bfq_group is still online
Jan Kara <jack@suse.cz>
bfq: Remove pointless bfq_init_rq() calls
Jan Kara <jack@suse.cz>
bfq: Drop pointless unlock-lock pair
Jan Kara <jack@suse.cz>
bfq: Update cgroup information before merging bio
Jan Kara <jack@suse.cz>
bfq: Split shared queues on move between cgroups
Jan Kara <jack@suse.cz>
bfq: Avoid merging queues with different parents
Jan Kara <jack@suse.cz>
bfq: Avoid false marking of bic as stably merged
Aditya Garg <gargaditya08@live.com>
efi: Do not import certificates from UEFI Secure Boot for T2 Macs
Zhihao Cheng <chengzhihao1@huawei.com>
fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according skipped pages
Emmanuel Grumbach <emmanuel.grumbach@intel.com>
iwlwifi: mvm: fix assert 1F04 upon reconfig
Johannes Berg <johannes.berg@intel.com>
wifi: mac80211: fix use-after-free in chanctx code
Peter Zijlstra <peterz@infradead.org>
objtool: Fix symbol creation
Mikulas Patocka <mpatocka@redhat.com>
objtool: Fix objtool regression on x32 systems
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check for inline inode
Chao Yu <chao@kernel.org>
f2fs: fix fallocate to use file_modified to update permissions consistently
Eric Biggers <ebiggers@google.com>
f2fs: don't use casefolded comparison for "." and ".."
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on total_data_blocks
Jaegeuk Kim <jaegeuk@kernel.org>
f2fs: don't need inode lock for system hidden quota
Chao Yu <chao@kernel.org>
f2fs: fix deadloop in foreground GC
Chao Yu <chao@kernel.org>
f2fs: fix to clear dirty inode in f2fs_evict_inode()
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on block address in f2fs_do_zero_range()
Chao Yu <chao@kernel.org>
f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count()
Olga Kornievskaia <kolga@netapp.com>
NFSv4.1 mark qualified async operations as MOVEABLE tasks
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Convert GFP_NOFS to GFP_KERNEL
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFS: Create a new nfs_alloc_fattr_with_label() function
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Always initialise fattr->label in nfs_fattr_alloc()
Javier Martinez Canillas <javierm@redhat.com>
video: fbdev: vesafb: Fix a use-after-free due early fb_info cleanup
Zhengjun Xing <zhengjun.xing@linux.intel.com>
perf jevents: Fix event syntax error caused by ExtSel
Leo Yan <leo.yan@linaro.org>
perf c2c: Use stdio interface if slang is not supported
Jiri Olsa <jolsa@kernel.org>
perf build: Fix btf__load_from_kernel_by_id() feature check
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
i2c: rcar: fix PM ref counts in probe error paths
Tali Perry <tali.perry1@gmail.com>
i2c: npcm: Handle spurious interrupts
Tyrone Ting <kfting@nuvoton.com>
i2c: npcm: Correct register access width
Tali Perry <tali.perry1@gmail.com>
i2c: npcm: Fix timeout calculation
Joerg Roedel <jroedel@suse.de>
iommu/amd: Increase timeout waiting for GA log enablement
Amelie Delaunay <amelie.delaunay@foss.st.com>
dmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler()
Amelie Delaunay <amelie.delaunay@foss.st.com>
dmaengine: stm32-mdma: remove GISR1 register
Miaoqian Lin <linmq006@gmail.com>
video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Further fixes to the writeback error handling
Trond Myklebust <trond.myklebust@hammerspace.com>
NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Don't report errors from nfs_pageio_complete() more than once
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Do not report flush errors in nfs_write_end()
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Don't report ENOSPC write errors twice
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS
Trond Myklebust <trond.myklebust@hammerspace.com>
NFS: Do not report EINTR/ERESTARTSYS as mapping errors
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
dmaengine: idxd: Fix the error handling path in idxd_cdev_register()
Nathan Chancellor <nathan@kernel.org>
i2c: at91: Initialize dma_buf in at91_twi_xfer()
Miles Chen <miles.chen@mediatek.com>
iommu/mediatek: Fix NULL pointer dereference when printing dev_name
Guenter Roeck <linux@roeck-us.net>
MIPS: Loongson: Use hwmon_device_register_with_groups() to register hwmon
Jean-Philippe Brucker <jean-philippe@linaro.org>
iommu/arm-smmu-v3-sva: Fix mm use-after-free
Rex-BC Chen <rex-bc.chen@mediatek.com>
cpufreq: mediatek: Unregister platform device on exit
Jia-Wei Chang <jia-wei.chang@mediatek.com>
cpufreq: mediatek: Use module_init and add module_exit
Michael Walle <michael@walle.cc>
i2c: at91: use dma safe buffers
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Add mutex for m4u_group and m4u_dom in data
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Remove clk_disable in mtk_iommu_remove
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Add list_del in mtk_iommu_remove
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Fix 2 HW sharing pgtable issue
Mario Limonciello <mario.limonciello@amd.com>
iommu/amd: Enable swiotlb in all cases
Jakob Koschel <jakobkoschel@gmail.com>
f2fs: fix dereference of stale list iterator after loop body
Chao Yu <chao@kernel.org>
f2fs: fix to do sanity check on inline_dots inode
Chao Yu <chao@kernel.org>
f2fs: support fault injection for dquot_initialize()
Dan Carpenter <dan.carpenter@oracle.com>
OPP: call of_node_put() on error path in _bandwidth_supported()
Dmitry Torokhov <dmitry.torokhov@gmail.com>
Input: stmfts - do not leave device disabled in stmfts_input_open
Wanpeng Li <wanpengli@tencent.com>
KVM: LAPIC: Drop pending LAPIC timer injection when canceling the timer
Douglas Miller <doug.miller@cornelisnetworks.com>
RDMA/hfi1: Prevent use of lock before it is initialized
Björn Ardö <bjorn.ardo@axis.com>
mailbox: forward the hrtimer if not queued and under a lock
Julian Schroeder <jumaco@amazon.com>
nfsd: destroy percpu stats counters after reply cache shutdown
Yang Yingliang <yangyingliang@huawei.com>
mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe()
Miaoqian Lin <linmq006@gmail.com>
powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup
Miaoqian Lin <linmq006@gmail.com>
powerpc/xive: Fix refcount leak in xive_spapr_init
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
powerpc/xive: Add some error handling code to 'xive_spapr_init()'
Randy Dunlap <rdunlap@infradead.org>
macintosh: via-pmu and via-cuda need RTC_LIB
Kajol Jain <kjain@linux.ibm.com>
powerpc/perf: Fix the threshold compare group constraint for power9
Kajol Jain <kjain@linux.ibm.com>
powerpc/perf: Fix the threshold compare group constraint for power10
Michael Ellerman <mpe@ellerman.id.au>
powerpc/64: Only WARN if __pa()/__va() called with bad addresses
Yang Yingliang <yangyingliang@huawei.com>
hwrng: omap3-rom - fix using wrong clk_disable() in omap_rom_rng_runtime_resume()
Daire McNamara <daire.mcnamara@microchip.com>
PCI: microchip: Fix potential race in interrupt handling
Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits
Miaoqian Lin <linmq006@gmail.com>
Input: sparcspkr - fix refcount leak in bbc_beep_probe
Mina Almasry <almasrymina@google.com>
hugetlbfs: fix hugetlbfs_statfs() locking
Eugen Hristev <eugen.hristev@microchip.com>
ARM: dts: at91: sama7g5: remove interrupt-parent from gic node
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
crypto: cryptd - Protect per-CPU resource by disabling BH.
Corentin Labbe <clabbe@baylibre.com>
crypto: sun8i-ss - handle zero sized sg
Corentin Labbe <clabbe@baylibre.com>
crypto: sun8i-ss - rework handling of IV
Qi Zheng <zhengqi.arch@bytedance.com>
tty: fix deadlock caused by calling printk() under tty_port->lock
Francesco Dolcini <francesco.dolcini@toradex.com>
PCI: imx6: Fix PERST# start-up sequence
Waiman Long <longman@redhat.com>
ipc/mqueue: use get_tree_nodev() in mqueue_get_tree()
Alexey Dobriyan <adobriyan@gmail.com>
proc: fix dentry/inode overinstantiating under /proc/${pid}/net
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: atmel-classd: Remove endianness flag on class d component
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: atmel-pdmic: Remove endianness flag on pdmic component
Robert Marko <robert.marko@sartura.hr>
arm64: dts: marvell: espressobin-ultra: enable front USB3 port
Robert Marko <robert.marko@sartura.hr>
arm64: dts: marvell: espressobin-ultra: fix SPI-NOR config
Yangyang Li <liyangyang20@huawei.com>
RDMA/hns: Add the detection for CMDQ status in the device initialization process
Randy Dunlap <rdunlap@infradead.org>
powerpc/4xx/cpm: Fix return value of __setup() handler
Randy Dunlap <rdunlap@infradead.org>
powerpc/idle: Fix return value of __setup() handler
Yang Yingliang <yangyingliang@huawei.com>
pinctrl: renesas: core: Fix possible null-ptr-deref in sh_pfc_map_resources()
Geert Uytterhoeven <geert+renesas@glider.be>
pinctrl: renesas: r8a779a0: Fix GPIO function on I2C-capable pins
Randy Dunlap <rdunlap@infradead.org>
powerpc/8xx: export 'cpm_setbrg' for modules
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/dpu: fix error check return value of irq_of_parse_and_map()
Kuniyuki Iwashima <kuniyu@amazon.co.jp>
list: fix a data-race around ep->rdllist
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
list: introduce list_is_head() helper and re-use it in list.h
Sudeep Holla <sudeep.holla@arm.com>
firmware: arm_ffa: Remove incorrect assignment of driver_data
Sudeep Holla <sudeep.holla@arm.com>
firmware: arm_ffa: Fix uuid parameter to ffa_partition_probe
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
drivers/base/memory: fix an unlikely reference counting issue in __add_memory_block()
Muchun Song <songmuchun@bytedance.com>
dax: fix cache flush on PMD-mapped pages
Miaohe Lin <linmiaohe@huawei.com>
drivers/base/node.c: fix compaction sysfs file leak
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
pinctrl: mvebu: Fix irq_of_parse_and_map() return value
Dan Williams <dan.j.williams@intel.com>
nvdimm: Allow overwrite in the presence of disabled dimms
Dan Williams <dan.j.williams@intel.com>
nvdimm: Fix firmware activation deadlock scenarios
Cristian Marussi <cristian.marussi@arm.com>
firmware: arm_scmi: Fix list protocols enumeration in the base protocol
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
ASoC: sh: rz-ssi: Propagate error codes returned from platform_get_irq_byname()
Heiner Kallweit <hkallweit1@gmail.com>
ASoC: sh: rz-ssi: Check return value of pm_runtime_resume_and_get()
Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
arm64: dts: ti: k3-am64-mcu: remove incorrect UART base clock rates
QintaoShen <unSimple1993@163.com>
soc: bcm: Check for NULL return of devm_kzalloc()
Gustavo A. R. Silva <gustavoars@kernel.org>
scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac()
Lv Ruyi <lv.ruyi@zte.com.cn>
mfd: ipaq-micro: Fix error check return value of platform_get_irq()
Hari Bathini <hbathini@linux.ibm.com>
powerpc/fadump: fix PT_LOAD segment for boot memory area
Andrea Parri (Microsoft) <parri.andrea@gmail.com>
Drivers: hv: vmbus: Fix handling of messages with transaction ID of zero
Vinod Koul <vkoul@kernel.org>
arm64: dts: qcom: qrb5165-rb5: Fix can-clock node name
Fabien Parent <fparent@baylibre.com>
pinctrl: mediatek: mt8195: enable driver on mtk platforms
Caleb Connolly <kc@postmarketos.org>
pinctrl/rockchip: support deferring other gpio params
Chuanhong Guo <gch981213@gmail.com>
arm: mediatek: select arch timer for mt7629
Stefan Wahren <stefan.wahren@i2se.com>
pinctrl: bcm2835: implement hook for missing gpio-ranges
Stefan Wahren <stefan.wahren@i2se.com>
gpiolib: of: Introduce hook for missing gpio-ranges
Corentin Labbe <clabbe@baylibre.com>
crypto: marvell/cesa - ECB does not IV
Hangyu Hua <hbh25y@gmail.com>
misc: ocxl: fix possible double free in ocxl_file_register_afu
Stefan Wahren <stefan.wahren@i2se.com>
ARM: dts: bcm2835-rpi-b: Fix GPIO line names
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C
Phil Elwell <phil@raspberrypi.com>
ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Fix PHY post-reset delay on Avenger96
Marc Kleine-Budde <mkl@pengutronix.de>
can: xilinx_can: mark bit timing constants as const
Guenter Roeck <linux@roeck-us.net>
platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls
Max Krummenacher <max.krummenacher@toradex.com>
ARM: dts: imx6dl-colibri: Fix I2C pinmuxing
Tzung-Bi Shih <tzungbi@kernel.org>
platform/chrome: cros_ec: fix error handling in cros_ec_register()
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - set COMPRESSION capability for DH895XCC
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - set CIPHER capability for DH895XCC
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - set COMPRESSION capability for QAT GEN2
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - set CIPHER capability for QAT GEN2
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault
Sean Christopherson <seanjc@google.com>
KVM: nVMX: Leave most VM-Exit info fields unmodified on failed VM-Entry
Bjorn Andersson <bjorn.andersson@linaro.org>
soc: qcom: llcc: Add MODULE_DEVICE_TABLE()
Thorsten Scherer <t.scherer@eckelmann.de>
ARM: dts: ci4x10: Adapt to changes in imx6qdl.dtsi regarding fec clocks
Jiantao Zhang <water.zhangjiantao@huawei.com>
PCI: dwc: Fix setting error return on MSI DMA mapping failure
Miaoqian Lin <linmq006@gmail.com>
PCI: mediatek: Fix refcount leak in mtk_pcie_subsys_powerup()
Dan Carpenter <dan.carpenter@oracle.com>
PCI: rockchip: Fix find_first_zero_bit() limit
Dan Carpenter <dan.carpenter@oracle.com>
PCI: cadence: Fix find_first_zero_bit() limit
Miaoqian Lin <linmq006@gmail.com>
soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc
Miaoqian Lin <linmq006@gmail.com>
soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc
Andre Przywara <andre.przywara@arm.com>
ARM: dts: suniv: F1C100: fix watchdog compatible
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM5301X: Update pin controller node name
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM5301X: update CRU block description
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
memory: samsung: exynos5422-dmc: Avoid some over memory allocation
Mario Limonciello <mario.limonciello@amd.com>
PCI/ACPI: Allow D3 only if Root Port can signal and wake from D3
Allen-KH Cheng <allen-kh.cheng@mediatek.com>
arm64: dts: mt8192: Fix nor_flash status disable typo
Shawn Lin <shawn.lin@rock-chips.com>
arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399
Robin Murphy <robin.murphy@arm.com>
dma-direct: don't over-decrypt memory
Christoph Hellwig <hch@lst.de>
dma-direct: always leak memory that can't be re-encrypted
Christoph Hellwig <hch@lst.de>
dma-direct: don't call dma_set_decrypted for remapped allocations
Christoph Hellwig <hch@lst.de>
dma-direct: factor out dma_set_{de,en}crypted helpers
liuyacan <liuyacan@corp.netease.com>
net/smc: postpone sk_refcnt increment in connect()
Randy Dunlap <rdunlap@infradead.org>
net: dsa: restrict SMSC_LAN9303_I2C kconfig
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
hinic: Avoid some over memory allocation
Gustavo A. R. Silva <gustavoars@kernel.org>
net: huawei: hinic: Use devm_kcalloc() instead of devm_kzalloc()
David Howells <dhowells@redhat.com>
rxrpc: Fix decision on when to generate an IDLE ACK
David Howells <dhowells@redhat.com>
rxrpc: Don't let ack.previousPacket regress
David Howells <dhowells@redhat.com>
rxrpc: Fix overlapping ACK accounting
David Howells <dhowells@redhat.com>
rxrpc: Don't try to resend the request if we're receiving the reply
David Howells <dhowells@redhat.com>
rxrpc: Fix listen() setting the bar too high for the prealloc rings
Adam Wujek <dev_public@wujek.eu>
hwmon: (pmbus) Check PEC support before reading other registers
Yongzhi Liu <lyz_cs@pku.edu.cn>
hv_netvsc: Fix potential dereference of NULL pointer
Jakub Kicinski <kuba@kernel.org>
net: stmmac: fix out-of-bounds access in a selftest
Gustavo A. R. Silva <gustavoars@kernel.org>
net: stmmac: selftests: Use kcalloc() instead of kzalloc()
Alexey Khoroshilov <khoroshilov@ispras.ru>
ASoC: max98090: Move check for invalid values before casting in max98090_put_enab_tlv()
Duoming Zhou <duoming@zju.edu.cn>
NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx
Harini Katakam <harini.katakam@xilinx.com>
net: macb: Fix PTP one step sync support
Ulf Hansson <ulf.hansson@linaro.org>
PM: domains: Fix initialization of genpd's next_wakeup
Yang Yingliang <yangyingliang@huawei.com>
ASoC: wm2000: fix missing clk_disable_unprepare() on error in wm2000_anc_transition()
Jan Kara <jack@suse.cz>
bfq: Allow current waker to defend against a tentative one
Jan Kara <jack@suse.cz>
bfq: Relax waker detection for shared queues
Miaoqian Lin <linmq006@gmail.com>
thermal/drivers/imx_sc_thermal: Fix refcount leak in imx_sc_thermal_probe
Yang Yingliang <yangyingliang@huawei.com>
thermal/core: Fix memory leak in __thermal_cooling_device_register()
Zheng Yongjun <zhengyongjun3@huawei.com>
thermal/drivers/broadcom: Fix potential NULL dereference in sr_thermal_probe
Stefan Wahren <stefan.wahren@i2se.com>
thermal/drivers/bcm2711: Don't clamp temperature at zero
Nathan Chancellor <nathan@kernel.org>
drm/i915: Fix CFI violation with show_dynamic_id()
Abhinav Kumar <quic_abhinavk@quicinc.com>
drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path
Hangbin Liu <liuhangbin@gmail.com>
selftests/bpf: Add missed ima_setup.sh in Makefile
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm: don't free the IRQ if it was not requested
Lai Jiangshan <jiangshan.ljs@antgroup.com>
x86/sev: Annotate stack change in the #VC handler
Hangyu Hua <hbh25y@gmail.com>
drm: msm: fix possible memory leak in mdp5_crtc_cursor_set()
Miaoqian Lin <linmq006@gmail.com>
drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init
Eric Biggers <ebiggers@google.com>
ext4: reject the 'commit' option on ext2 filesystems
Miaoqian Lin <linmq006@gmail.com>
regulator: scmi: Fix refcount leak in scmi_regulator_probe
Jonas Karlman <jonas@kwiboo.se>
media: rkvdec: h264: Fix bit depth wrap in pps packet
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: rkvdec: h264: Fix dpb_valid implementation
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: rkvdec: Stop overclocking the decoder
Cai Huoqing <caihuoqing@baidu.com>
media: staging: media: rkvdec: Make use of the helper function devm_platform_ioremap_resource()
Yang Yingliang <yangyingliang@huawei.com>
media: i2c: ov5648: fix wrong pointer passed to IS_ERR() and PTR_ERR()
Dongliang Mu <mudongliangabcd@gmail.com>
media: ov7670: remove ov7670_power_off from ov7670_remove
Andre Przywara <andre.przywara@arm.com>
kselftest/arm64: bti: force static linking
Miaoqian Lin <linmq006@gmail.com>
ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_*
Zheng Bin <zhengbin13@huawei.com>
net: hinic: add missing destroy_workqueue in hinic_pf_to_mgmt_init
Eric Dumazet <edumazet@google.com>
sctp: read sk->sk_bound_dev_if once in sctp_rcv()
Geert Uytterhoeven <geert@linux-m68k.org>
m68k: math-emu: Fix dependencies of math emulation support
Keith Busch <kbusch@kernel.org>
nvme: set dma alignment to dword
Niels Dossche <dossche.niels@gmail.com>
Bluetooth: use hdev lock for accept_list and reject_list in conn req
Niels Dossche <dossche.niels@gmail.com>
Bluetooth: use hdev lock in activate_scan for hci_is_adv_monitoring
Ying Hsu <yinghsu@chromium.org>
Bluetooth: fix dangling sco_conn and use-after-free in sco_sock_timeout
Benjamin Gaignard <benjamin.gaignard@collabora.com>
media: hantro: HEVC: Fix tile info buffer value computation
Eugen Hristev <eugen.hristev@microchip.com>
media: atmel: atmel-sama5d2-isc: fix wrong mask in YUYV format check
Michael Rodin <mrodin@de.adit-jv.com>
media: vsp1: Fix offset calculation for plane cropping
Pavel Skripkin <paskripkin@gmail.com>
media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init
Miaoqian Lin <linmq006@gmail.com>
media: exynos4-is: Change clk_disable to clk_disable_unprepare
Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
media: i2c: rdacm2x: properly set subdev entity function
Miaoqian Lin <linmq006@gmail.com>
media: atmel: atmel-isc: Fix PM disable depth imbalance in atmel_isc_probe
Miaoqian Lin <linmq006@gmail.com>
media: st-delta: Fix PM disable depth imbalance in delta_probe
Felix Fietkau <nbd@nbd.name>
mt76: do not attempt to reorder received 802.3 packets without agg session
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
mt76: mt7921: Fix the error handling path of mt7921_pci_probe()
Miaoqian Lin <linmq006@gmail.com>
media: exynos4-is: Fix PM disable depth imbalance in fimc_is_probe
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
media: aspeed: Fix an error handling path in aspeed_video_probe()
Josh Poimboeuf <jpoimboe@kernel.org>
scripts/faddr2line: Fix overlapping text section failures
Phil Auld <pauld@redhat.com>
kselftest/cgroup: fix test_stress.sh to use OUTPUT dir
Bart Van Assche <bvanassche@acm.org>
block: Fix the bio.bi_opf comment
Miaoqian Lin <linmq006@gmail.com>
ASoC: samsung: Fix refcount leak in aries_audio_probe
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
ASoC: samsung: Use dev_err_probe() helper
Christoph Hellwig <hch@lst.de>
dma-direct: don't fail on highmem CMA pages in dma_direct_alloc_pages
Christoph Hellwig <hch@lst.de>
dma-direct: factor out a helper for DMA_ATTR_NO_KERNEL_MAPPING allocations
Miaoqian Lin <linmq006@gmail.com>
regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt
Miaoqian Lin <linmq006@gmail.com>
ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: imx-hdmi: Fix refcount leak in imx_hdmi_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
ASoC: fsl: Use dev_err_probe() helper
Basavaraj Natikar <Basavaraj.Natikar@amd.com>
HID: amd_sfh: Modify the hid name
Basavaraj Natikar <Basavaraj.Natikar@amd.com>
HID: amd_sfh: Modify the bus name
Ajay Singh <ajay.kathat@microchip.com>
wilc1000: fix crash observed in AP mode with cfg80211_register_netdevice()
Baochen Qiang <quic_bqiang@quicinc.com>
ath11k: Don't check arvif->is_started before sending management frames
Ravi Bangoria <ravi.bangoria@amd.com>
perf/amd/ibs: Use interrupt regs ip for stack unwinding
Jerome Marchand <jmarchan@redhat.com>
samples: bpf: Don't fail for a missing VMLINUX_BTF when VMLINUX_H is provided
Konrad Dybcio <konrad.dybcio@somainline.org>
regulator: qcom_smd: Fix up PM8950 regulator configuration
Viresh Kumar <viresh.kumar@linaro.org>
Revert "cpufreq: Fix possible race in cpufreq online error path"
Yang Yingliang <yangyingliang@huawei.com>
spi: spi-fsl-qspi: check return value after calling platform_get_resource_byname()
Andreas Gruenbacher <agruenba@redhat.com>
iomap: iomap_write_failed fix
Mark Rutland <mark.rutland@arm.com>
arm64: stackleak: fix current_top_of_stack()
Xiaomeng Tong <xiam0nd.tong@gmail.com>
media: uvcvideo: Fix missing check to determine if element is found in list
Dan Carpenter <dan.carpenter@oracle.com>
drm/msm: return an error pointer in msm_gem_prime_get_sg_table()
Jessica Zhang <quic_jesszhan@quicinc.com>
drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is detected
Jessica Zhang <quic_jesszhan@quicinc.com>
drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is detected
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: fix event thread stuck in wait_event after kthread_stop()
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/dsi: fix address for second DSI PHY on SDM660
Zev Weiss <zev@bewilderbeest.net>
regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET
Tong Tiangen <tongtiangen@huawei.com>
arm64: fix types in copy_highpage()
Randy Dunlap <rdunlap@infradead.org>
x86/mm: Cleanup the control_va_addr_alignment() __setup handler
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value
Daniel Thompson <daniel.thompson@linaro.org>
irqchip/exiu: Fix acknowledgment of edge triggered interrupts
Randy Dunlap <rdunlap@infradead.org>
x86: Fix return value of __setup handlers
Johannes Berg <johannes.berg@intel.com>
nl80211: don't hold RTNL in color change request
Christoph Hellwig <hch@lst.de>
virtio_blk: fix the discard_granularity and discard_alignment queue limits
James Clark <james.clark@arm.com>
perf tools: Use Python devtools for version autodetection rather than runtime
Ian Abbott <abbotti@mev.co.uk>
spi: cadence-quadspi: fix Direct Access Mode disable for SoCFPGA
Yang Yingliang <yangyingliang@huawei.com>
drm/rockchip: vop: fix possible null-ptr-deref in vop_bind()
Daniel Latypov <dlatypov@google.com>
kunit: fix debugfs code to use enum kunit_status, not bool
Jagan Teki <jagan@amarulasolutions.com>
drm/panel: panel-simple: Fix proper bpc for AM-1280800N3TZQW-T00H
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm: add missing include to msm_drv.c
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/hdmi: fix error check return value of irq_of_parse_and_map()
Yang Yingliang <yangyingliang@huawei.com>
drm/msm/hdmi: check return value after calling platform_get_resource_byname()
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/dsi: fix error checks and return values for DSI xmit functions
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: do not stop transmitting phy test pattern during DP phy compliance test
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: reset DP controller before transmit phy test pattern
Lv Ruyi <lv.ruyi@zte.com.cn>
drm/msm/dp: fix error check return value of irq_of_parse_and_map()
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dp: stop event kernel thread when DP unbind
Vinod Polimera <quic_vpolimer@quicinc.com>
drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after memory free during pm runtime resume
Yang Jihong <yangjihong1@huawei.com>
perf tools: Add missing headers needed by util/data.h
Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
ASoC: rk3328: fix disabling mclk on pclk probe failure
Josh Poimboeuf <jpoimboe@redhat.com>
x86/speculation: Add missing prototype for unpriv_ebpf_notify()
Yang Yingliang <yangyingliang@huawei.com>
mtd: rawnand: intel: fix possible null-ptr-deref in ebu_nand_probe()
Yang Yingliang <yangyingliang@huawei.com>
mtd: rawnand: cadence: fix possible null-ptr-deref in cadence_nand_dt_probe()
Matthieu Baerts <matthieu.baerts@tessares.net>
x86/pm: Fix false positive kmemleak report in msr_build_context()
Chen-Tsung Hsieh <chentsung@chromium.org>
mtd: spi-nor: core: Check written SR value in spi_nor_write_16bit_sr_and_check()
Andrii Nakryiko <andrii@kernel.org>
libbpf: Fix logic for finding matching program for CO-RE relocation
Colin Ian King <colin.i.king@gmail.com>
selftests/resctrl: Fix null pointer dereference on open failed
Colin Ian King <colin.i.king@gmail.com>
drm/v3d: Fix null pointer dereference of pointer perfmon
Kiwoong Kim <kwmad.kim@samsung.com>
scsi: ufs: core: Exclude UECxx from SFR dump list
Bart Van Assche <bvanassche@acm.org>
scsi: ufs: qcom: Fix ufs_qcom_resume()
Dan Carpenter <dan.carpenter@oracle.com>
scsi: iscsi: Fix harmless double shift bug
Kuogee Hsieh <quic_khsieh@quicinc.com>
drm/msm/dpu: adjust display_v_end for eDP and DP
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/hdmi: switch to drm_bridge_connector
Bjorn Andersson <bjorn.andersson@linaro.org>
drm/msm/dp: Modify prototype of encoder based API
Yuanchu Xie <yuanchu@google.com>
selftests/damon: add damon to selftests root Makefile
Nuno Sá <nuno.sa@analog.com>
of: overlay: do not break notify on NOTIFY_{OK|STOP}
Luca Ceresoli <luca.ceresoli@bootlin.com>
spi: rockchip: fix missing error on unsupported SPI_CS_HIGH
Jon Lin <jon.lin@rock-chips.com>
spi: rockchip: Preset cs-high and clk polarity in setup progress
Jon Lin <jon.lin@rock-chips.com>
spi: rockchip: Stop spi slave dma receiver when cs inactive
Amir Goldstein <amir73il@gmail.com>
fsnotify: fix wrong lockdep annotations
Amir Goldstein <amir73il@gmail.com>
inotify: show inotify mask flags in proc fdinfo
Bjørn Mork <bjorn@mork.no>
mtdblock: warn if opened on NAND
Colin Ian King <colin.i.king@gmail.com>
ALSA: pcm: Check for null pointer of pointer substream before dereferencing it
Marek Vasut <marex@denx.de>
drm/panel: simple: Add missing bus flags for Innolux G070Y2-L01
Chen-Yu Tsai <wenst@chromium.org>
media: hantro: Empty encoder capture buffers by default
Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
media: i2c: max9286: fix kernel oops when removing module
Jacopo Mondi <jacopo+renesas@jmondi.org>
media: i2c: max9286: Use "maxim,gpio-poc" property
Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
media: i2c: max9286: Use dev_err_probe() helper
Dan Carpenter <dan.carpenter@oracle.com>
ath9k_htc: fix potential out of bounds access with invalid rxstatus->rs_keyix
John Ogness <john.ogness@linutronix.de>
printk: wake waiters for safe and NMI contexts
John Ogness <john.ogness@linutronix.de>
printk: add missing memory barrier to wake_up_klogd()
John Ogness <john.ogness@linutronix.de>
printk: use atomic updates for klogd work
Schspa Shi <schspa@gmail.com>
cpufreq: Fix possible race in cpufreq online error path
Zheng Yongjun <zhengyongjun3@huawei.com>
spi: img-spfi: Fix pm_runtime_get_sync() error checking
Chengming Zhou <zhouchengming@bytedance.com>
sched/psi: report zeroes for CPU full at the system level
Chengming Zhou <zhouchengming@bytedance.com>
sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
Marco Elver <elver@google.com>
signal: Deliver SIGTRAP on perf event asynchronously if blocked
Nícolas F. R. A. Prado <nfraprado@collabora.com>
drm/mediatek: dpi: Use mt8183 output formats for mt8192
Wei Yongjun <weiyongjun1@huawei.com>
regulator: da9121: Fix uninit-value in da9121_assign_chip_model()
Miaoqian Lin <linmq006@gmail.com>
drm/bridge: Fix error handling in analogix_dp_probe
Miaoqian Lin <linmq006@gmail.com>
HID: elan: Fix potential double free in elan_input_configured
Jonathan Teh <jonathan.teh@outlook.com>
HID: hid-led: fix maximum brightness for Dream Cheeky
Zheyu Ma <zheyuma97@gmail.com>
mtd: rawnand: denali: Use managed device resources
Tyler Hicks <tyhicks@linux.microsoft.com>
EDAC/dmc520: Don't print an error for each unconfigured interrupt line
Arnd Bergmann <arnd@arndb.de>
drbd: fix duplicate array initializer
Christoph Hellwig <hch@lst.de>
target: remove an incorrect unmap zeroes data deduction
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
device property: Allow error pointer to be passed to fwnode APIs
Daniel Scally <djrscally@gmail.com>
device property: Check fwnode->secondary when finding properties
Jan Kiszka <jan.kiszka@siemens.com>
efi: Add missing prototype for efi_capsule_setup_info
Lin Ma <linma@zju.edu.cn>
NFC: NULL out the dev->rfkill to prevent UAF
Lv Ruyi <lv.ruyi@zte.com.cn>
ixp4xx_eth: fix error check return value of platform_get_irq()
Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
net: dsa: mt7530: 1G can also support 1000BASE-X link mode
Paul E. McKenney <paulmck@kernel.org>
scftorture: Fix distribution of short handler delays
Miaoqian Lin <linmq006@gmail.com>
spi: spi-ti-qspi: Fix return value handling of wait_for_completion_timeout
Jiasheng Jiang <jiasheng@iscas.ac.cn>
drm: mali-dp: potential dereference of null pointer
Zhou Qingyang <zhou1615@umn.edu>
drm/komeda: Fix an undefined behavior bug in komeda_plane_add()
Johannes Berg <johannes.berg@intel.com>
nl80211: show SSID for P2P_GO interfaces
Paolo Abeni <pabeni@redhat.com>
mptcp: reset the packet scheduler on PRIO change
Maciej W. Rozycki <macro@orcam.me.uk>
x86/PCI: Fix ALi M1487 (IBC) PIRQ router link value interpretation
Andrii Nakryiko <andrii@kernel.org>
libbpf: Don't error out on CO-RE relos for overriden weak subprogs
Maxime Ripard <maxime@cerno.tech>
drm/vc4: txp: Force alpha to be 0xff if it's disabled
Maxime Ripard <maxime@cerno.tech>
drm/vc4: txp: Don't set TXP_VSTART_AT_EOF
Maxime Ripard <maxime@cerno.tech>
drm/vc4: hvs: Reset muxes at probe time
Miles Chen <miles.chen@mediatek.com>
drm/mediatek: Fix mtk_cec_mask()
Maxime Ripard <maxime@cerno.tech>
drm/vc4: hvs: Fix frame count register readout
Ammar Faizi <ammarfaizi2@gnuweeb.org>
x86/delay: Fix the wrong asm constraint in delay_loop()
Miaoqian Lin <linmq006@gmail.com>
ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe
Miaoqian Lin <linmq006@gmail.com>
ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe
Kuldeep Singh <singh.kuldeep87k@gmail.com>
spi: qcom-qspi: Add minItems to interconnect-names
Chuanhong Guo <gch981213@gmail.com>
mtd: spinand: gigadevice: fix Quad IO for GD5F1GQ5UExxG
Marek Vasut <marex@denx.de>
drm: bridge: icn6211: Fix HFP_HSW_HBP_HI and HFP_MIN handling
Marek Vasut <marex@denx.de>
drm: bridge: icn6211: Fix register layout
Lucas Stach <l.stach@pengutronix.de>
drm/bridge: adv7511: clean up CEC adapter when probe fails
Jani Nikula <jani.nikula@intel.com>
drm/edid: fix invalid EDID extension block filtering
Wenli Looi <wlooi@ucalgary.ca>
ath9k: fix ar9003_get_eepmisc
Nicolas Belin <nbelin@baylibre.com>
drm: bridge: it66121: Fix the register page length
Niels Dossche <dossche.niels@gmail.com>
ath11k: acquire ab->base_lock in unassign when finding the peer by addr
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: Fix an invalid read
Noralf Trønnes <noralf@tronnes.org>
dt-bindings: display: sitronix, st7735r: Fix backlight in example
Nikita Yushchenko <nikita.yoush@cogentembedded.com>
drm/bridge_connector: enable HPD by default if supported
Linus Torvalds <torvalds@linux-foundation.org>
drm: fix EDID struct for old ARM OABI format
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Input: gpio-keys - cancel delayed work only in case of GPIO
Douglas Miller <doug.miller@cornelisnetworks.com>
RDMA/hfi1: Prevent panic when SDMA is disabled
Steve French <stfrench@microsoft.com>
smb3: check for null tcon
Peng Wu <wupeng58@huawei.com>
powerpc/iommu: Add missing of_node_put in iommu_init_early_dart
Finn Thain <fthain@linux-m68k.org>
macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled
Lv Ruyi <lv.ruyi@zte.com.cn>
powerpc/powernv: fix missing of_node_put in uv_init()
Lv Ruyi <lv.ruyi@zte.com.cn>
powerpc/xics: fix refcount leak in icp_opal_init()
Haren Myneni <haren@linux.ibm.com>
powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr
Vasily Averin <vvs@openvz.org>
tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate
Matthew Wilcox (Oracle) <willy@infradead.org>
alpha: fix alloc_zeroed_user_highpage_movable()
Nicholas Piggin <npiggin@gmail.com>
KVM: PPC: Book3S HV Nested: L2 LPCR should inherit L1 LPES setting
Yicong Yang <yangyicong@hisilicon.com>
PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store()
Laurent Dufour <ldufour@linux.ibm.com>
powerpc/rtas: Keep MSR[RI] set when calling RTAS
Viresh Kumar <viresh.kumar@linaro.org>
cpufreq: Avoid unnecessary frequency updates due to mismatch
Peng Wu <wupeng58@huawei.com>
ARM: hisi: Add missing of_node_put after of_find_compatible_node
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM
Peng Wu <wupeng58@huawei.com>
ARM: versatile: Add missing of_node_put in dcscb_init
Yang Yingliang <yangyingliang@huawei.com>
pinctrl: renesas: rzn1: Fix possible null-ptr-deref in sh_pfc_map_resources()
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
fat: add ratelimit to fat*_ent_bread()
Hari Bathini <hbathini@linux.ibm.com>
powerpc/fadump: Fix fadump to work with a different endian capture kernel
Janusz Krzysztofik <jmkrzyszt@gmail.com>
ARM: OMAP1: clock: Fix UART rate reporting algorithm
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Move generic implicit fb quirk entries into quirks.c
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Add quirk bits for enabling/disabling generic implicit fb
Joel Selvaraj <jo@jsfamily.in>
arm64: dts: qcom: sdm845-xiaomi-beryllium: fix typo in panel's vddio-supply property
Zixuan Fu <r33s3n6@gmail.com>
fs: jfs: fix possible NULL pointer dereference in dbFree()
QintaoShen <unSimple1993@163.com>
soc: ti: ti_sci_pm_domains: Check for null return of devm_kcalloc
Gilad Ben-Yossef <gilad@benyossef.com>
crypto: ccree - use fine grained DMA mapping dir
Brian Norris <briannorris@chromium.org>
PM / devfreq: rk3399_dmc: Disable edev on remove()
Konrad Dybcio <konrad.dybcio@somainline.org>
arm64: dts: qcom: msm8994: Fix BLSP[12]_DMA channels count
Konrad Dybcio <konrad.dybcio@somainline.org>
arm64: dts: qcom: msm8994: Fix the cont_splash_mem address
Krzysztof Kozlowski <krzk@kernel.org>
ARM: dts: s5pv210: align DMA channels with dtschema
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: socfpga: align interrupt controller node name with dtschema
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: ox820: align interrupt controller node name with dtschema
Niels Dossche <dossche.niels@gmail.com>
IB/rdmavt: add missing locks in rvt_ruc_loopback
Bodo Stroesser <bostroesser@gmail.com>
scsi: target: tcmu: Avoid holding XArray lock when calling lock_page
Bob Peterson <rpeterso@redhat.com>
gfs2: use i_lock spin_lock for inode qadata
Yonghong Song <yhs@fb.com>
selftests/bpf: fix btf_dump/btf_dump due to recent clang change
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
char: tpm: cr50_i2c: Suppress duplicated error message in .remove()
Jakub Kicinski <kuba@kernel.org>
eth: tg3: silence the GCC 12 array-bounds warning
David Howells <dhowells@redhat.com>
afs: Adjust ACK interpretation to try and cope with NAT
David Howells <dhowells@redhat.com>
rxrpc, afs: Fix selection of abort codes
David Howells <dhowells@redhat.com>
rxrpc: Return an error to sendmsg if call failed
Geert Uytterhoeven <geert@linux-m68k.org>
m68k: atari: Make Atari ROM port I/O write macros return void
Alex Elder <elder@linaro.org>
net: ipa: ignore endianness if there is no header
Borislav Petkov <bp@suse.de>
x86/microcode: Add explicit CPU vendor dependency
Vincent Mailhol <mailhol.vincent@wanadoo.fr>
can: mcp251xfd: silence clang's -Wunaligned-access warning
Chaitanya Kulkarni <kch@nvidia.com>
nvme: set non-mdts limits in nvme_scan_work
Pierre Gondois <Pierre.Gondois@arm.com>
ACPI: CPPC: Assume no transition latency if no PCCT
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC: rt1015p: remove dependency on GPIOLIB
Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
ASoC: max98357a: remove dependency on GPIOLIB
Nicolas Dufresne <nicolas.dufresne@collabora.com>
media: hantro: Stop using H.264 parameter pic_num
Kwanghoon Son <k.son@samsung.com>
media: exynos4-is: Fix compile warning
Fabio Estevam <festevam@denx.de>
net: phy: micrel: Allow probing without .driver_data
Sathishkumar S <sathishkumar.sundararaju@amd.com>
drm/amd/pm: update smartshift powerboost calc for smu13
Sathishkumar S <sathishkumar.sundararaju@amd.com>
drm/amd/pm: update smartshift powerboost calc for smu12
Xie Yongji <xieyongji@bytedance.com>
nbd: Fix hung on disconnect request if socket is closed before
Lin Ma <linma@zju.edu.cn>
ASoC: rt5645: Fix errorenous cleanup order
Smith, Kyle Miller (Nimble Kernel) <kyles@hpe.com>
nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags
Jason A. Donenfeld <Jason@zx2c4.com>
openrisc: start CPU timer early in boot
Lukas Wunner <lukas@wunner.de>
usbnet: Run unregister_netdev() before unbind() again
Hans Verkuil <hverkuil-cisco@xs4all.nl>
media: cec-adap.c: fix is_configuring state
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
media: imon: reorganize serialization
Hans Verkuil <hverkuil-cisco@xs4all.nl>
media: ccs-core.c: fix failure to call clk_disable_unprepare
Benjamin Gaignard <benjamin.gaignard@collabora.com>
media: hantro: HEVC: unconditionnaly set pps_{cb/cr}_qp_offset values
Philipp Zabel <p.zabel@pengutronix.de>
media: coda: limit frame interval enumeration to supported encoder frame sizes
Hangyu Hua <hbh25y@gmail.com>
media: rga: fix possible memory leak in rga_probe
Felix Fietkau <nbd@nbd.name>
mt76: fix encap offload ethernet type check
Felix Fietkau <nbd@nbd.name>
mt76: mt7921: accept rx frames with non-standard VHT MCS10-11
Dongliang Mu <mudongliangabcd@gmail.com>
rtlwifi: Use pr_warn instead of WARN_ONCE
Corey Minyard <cminyard@mvista.com>
ipmi: Fix pr_fmt to avoid compilation issues
Corey Minyard <cminyard@mvista.com>
ipmi:ssif: Check for NULL msg when handling events and messages
Mario Limonciello <mario.limonciello@amd.com>
ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default
Mikulas Patocka <mpatocka@redhat.com>
dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
Patrice Chotard <patrice.chotard@foss.st.com>
spi: stm32-qspi: Fix wait_cmd timeout in APM mode
Hao Jia <jiahao.os@bytedance.com>
sched/core: Avoid obvious double update_rq_clock warning
Ravi Bangoria <ravi.bangoria@amd.com>
perf/amd/ibs: Cascade pmu init functions' return value
Heiko Carstens <hca@linux.ibm.com>
s390/preempt: disable __preempt_count_add() optimization for PROFILE_ALL_BRANCHES
Eric Dumazet <edumazet@google.com>
net: remove two BUG() from skb_checksum_help()
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Alter FPIN stat accounting logic
Charles Keepax <ckeepax@opensource.cirrus.com>
ASoC: tscs454: Add endianness flag in snd_soc_component_driver
Zhen Lei <thunder.leizhen@huawei.com>
of: Support more than one crash kernel regions for kexec -s
Dongliang Mu <mudongliangabcd@gmail.com>
HID: bigben: fix slab-out-of-bounds Write in bigben_probe
Nícolas F. R. A. Prado <nfraprado@collabora.com>
regulator: mt6315: Enforce regulator-compatible, not name
Alice Wong <shiwei.wong@amd.com>
drm/amdgpu/ucode: Remove firmware load type check in amdgpu_ucode_free_bo
Alex Deucher <alexander.deucher@amd.com>
drm/amdgpu/psp: move PSP memory alloc from hw_init to sw_init
Petr Machata <petrm@nvidia.com>
mlxsw: Treat LLDP packets as control
Petr Machata <petrm@nvidia.com>
mlxsw: spectrum_dcb: Do not warn about priority changes
Mark Brown <broonie@kernel.org>
ASoC: dapm: Don't fold register value changes into notifications
Mark Bloch <mbloch@nvidia.com>
net/mlx5: fs, delete the FTE when there are no rules attached to it
jianghaoran <jianghaoran@kylinos.cn>
ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL
Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
scsi: target: tcmu: Fix possible data corruption
Lv Ruyi <lv.ruyi@zte.com.cn>
drm: msm: fix error check return value of irq_of_parse_and_map()
Alexandru Elisei <alexandru.elisei@arm.com>
arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall
Abhishek Kumar <kuabhs@chromium.org>
ath10k: skip ath10k_halt during suspend for driver state RESTARTING
Evan Quan <evan.quan@amd.com>
drm/amd/pm: fix the compile warning
Steven Price <steven.price@arm.com>
drm/plane: Move range check for format_count earlier
Hans de Goede <hdegoede@redhat.com>
ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408
Hari Chandrakanthan <quic_haric@quicinc.com>
ath11k: disable spectral scan during spectral deinit
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp()
Minghao Chi <chi.minghao@zte.com.cn>
scsi: ufs: Use pm_runtime_resume_and_get() instead of pm_runtime_get_sync()
Haohui Mai <ricetons@gmail.com>
drm/amdgpu/sdma: Fix incorrect calculations of the wptr of the doorbells
Lv Ruyi <lv.ruyi@zte.com.cn>
scsi: megaraid: Fix error check return value of register_chrdev()
Vignesh Raghavendra <vigneshr@ti.com>
drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit
Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
mmc: jz4740: Apply DMA engine limits to maximum segment size
Heming Zhao <heming.zhao@suse.com>
md/bitmap: don't set sb values if can't pass sanity check
Zheyu Ma <zheyuma97@gmail.com>
media: cx25821: Fix the warning when removing the module
Zheyu Ma <zheyuma97@gmail.com>
media: pci: cx23885: Fix the error handling in cx23885_initdev()
Luca Weiss <luca.weiss@fairphone.com>
media: venus: hfi: avoid null dereference in deinit
Thibaut VARÈNE <hacks+kernel@slashdirt.org>
ath9k: fix QCA9561 PA bias level
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
ASoC: rsnd: care return value from rsnd_node_fixed_index()
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
ASoC: rsnd: care default case on rsnd_ssiu_busif_err_status_clear()
Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
drm/amd/pm: fix double free in si_parse_power_table()
Ulf Hansson <ulf.hansson@linaro.org>
cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix call trace observed during I/O with CMF enabled
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Fix SCSI I/O completion and abort handler deadlock
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Move cfg_log_verbose check before calling lpfc_dmp_dbg()
Len Brown <len.brown@intel.com>
tools/power turbostat: fix ICX DRAM power numbers
Biju Das <biju.das.jz@bp.renesas.com>
spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA direction
Po-Hao Huang <phhuang@realtek.com>
rtw88: 8821c: fix debugfs rssi value
Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
ALSA: jack: Access input_dev under mutex
Haowen Bai <baihaowen@meizu.com>
sfc: ef10: Fix assigning negative value to unsigned variable
Paul E. McKenney <paulmck@kernel.org>
rcu: Make TASKS_RUDE_RCU select IRQ_WORK
Padmanabha Srinivasaiah <treasure4paddy@gmail.com>
rcu-tasks: Fix race in schedule and flush work
Saaem Rizvi <syerizvi@amd.com>
drm/amd/display: Disabling Z10 on DCN31
Liviu Dudau <liviu.dudau@arm.com>
drm/komeda: return early if drm_universal_plane_init() fails.
Peter Seiderer <ps.report@gmx.net>
mac80211: minstrel_ht: fix where rate stats are stored (fixes debugfs output)
Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
ACPICA: Avoid cache flush inside virtual machines
Mike Travis <mike.travis@hpe.com>
x86/platform/uv: Update TSC sync state for UV5
Daniel Vetter <daniel.vetter@ffwll.ch>
fbcon: Consistently protect deferred_takeover with console_lock()
Niels Dossche <dossche.niels@gmail.com>
ipv6: fix locking issues with loops over idev->addr_list
Haowen Bai <baihaowen@meizu.com>
ipw2x00: Fix potential NULL dereference in libipw_xmit()
Haowen Bai <baihaowen@meizu.com>
b43: Fix assigning negative value to unsigned variable
Haowen Bai <baihaowen@meizu.com>
b43legacy: Fix assigning negative value to unsigned variable
Niels Dossche <dossche.niels@gmail.com>
mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue
Quentin Monnet <quentin@isovalent.com>
selftests/bpf: Fix parsing of prog types in UAPI hdr for bpftool sync
Nikolay Borisov <nborisov@suse.com>
selftests/bpf: Fix vfs_link kprobe definition
Liu Zixian <liuzixian4@huawei.com>
drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes
Zack Rusin <zackr@vmware.com>
drm/vmwgfx: validate the screen formats
Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>
iommu/vt-d: Add RPLS to quirk list to skip TE disabling
Qu Wenruo <wqu@suse.com>
btrfs: fix the error handling for submit_extent_page() for btrfs_do_readpage()
Qu Wenruo <wqu@suse.com>
btrfs: repair super block num_devices automatically
Qu Wenruo <wqu@suse.com>
btrfs: return correct error number for __extent_writepage_io()
Qu Wenruo <wqu@suse.com>
btrfs: add "0x" prefix for unsupported optional features
Eric W. Biederman <ebiederm@xmission.com>
ptrace: Reimplement PTRACE_KILL by always sending SIGKILL
Eric W. Biederman <ebiederm@xmission.com>
ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP
Eric W. Biederman <ebiederm@xmission.com>
ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP
Kristen Carlson Accardi <kristen@linux.intel.com>
x86/sgx: Set active memcg prior to shmem allocation
Baoquan He <bhe@redhat.com>
x86/kexec: fix memory leak of elf header buffer
Kan Liang <kan.liang@linux.intel.com>
perf/x86/intel: Fix event constraints for ICL
Ammar Faizi <ammarfaizi2@gnuweeb.org>
x86/MCE/AMD: Fix memory leak when threshold_create_bank() fails
Michael Niewöhner <linux@mniewoehner.de>
platform/x86: intel-hid: fix _DSM function index handling
Mathias Nyman <mathias.nyman@linux.intel.com>
xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: when extending a file with falloc we should make files not-sparse
Ronnie Sahlberg <lsahlber@redhat.com>
cifs: fix potential double free during failed mount
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Restore ntfs_xattr_get_acl and ntfs_xattr_set_acl functions
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Update i_ctime when xattr is added
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
fs/ntfs3: Fix some memory leaks in an error handling path of 'log_replay()'
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: In function ntfs_set_acl_ex do not change inode->i_mode if called from function ntfs_init_acl
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Check new size for limits
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Keep preallocated only if option prealloc enabled
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Fix fiemap + fix shrink file size (to remove preallocated space)
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3: Update valid size if -EIOCBQUEUED
Kishon Vijay Abraham I <kishon@ti.com>
usb: core: hcd: Add support for deferring roothub registration
Albert Wang <albertccwang@google.com>
usb: dwc3: gadget: Move null pinter check to proper place
Linus Walleij <linus.walleij@linaro.org>
usb: isp1760: Fix out-of-bounds array access
Monish Kumar R <monish.kumar.r@intel.com>
USB: new quirk for Dell Gen 2 devices
Carl Yin(殷张成) <carl.yin@quectel.com>
USB: serial: option: add Quectel BG95 modem
Johan Hovold <johan@kernel.org>
USB: serial: pl2303: fix type detection for odd device
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Cancel pending work at closing a MIDI substream
Marios Levogiannis <marios.levogiannis@gmail.com>
ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS
Rik van der Kemp <rik@upto11.nl>
ALSA: hda/realtek: Enable 4-speaker output for Dell XPS 15 9520 laptop
Kailang Yang <kailang@realtek.com>
ALSA: hda/realtek - Add new type for ALC245
Nathan Chancellor <nathan@kernel.org>
riscv: Move alternative length validation into subsection
Tobias Klauser <tklauser@distanz.ch>
riscv: Wire up memfd_secret in UAPI header
Samuel Holland <samuel@sholland.org>
riscv: Fix irq_work when SMP is disabled
Alexandre Ghiti <alexandre.ghiti@canonical.com>
riscv: Initialize thread pointer before calling C functions
Xianting Tian <xianting.tian@linux.alibaba.com>
RISC-V: Mark IORESOURCE_EXCLUSIVE for reserved mem instead of IORESOURCE_BUSY
Helge Deller <deller@gmx.de>
parisc/stifb: Keep track of hardware path of graphics card
Helge Deller <deller@gmx.de>
parisc/stifb: Implement fb_is_primary_device()
Niklas Cassel <niklas.cassel@wdc.com>
binfmt_flat: do not stop relocating GOT entries prematurely on riscv
Stephen Boyd <swboyd@chromium.org>
arm64: Initialize jump labels before setup_machine_fdt()
-------------
Diffstat:
Documentation/accounting/psi.rst | 9 +-
Documentation/conf.py | 2 +-
.../bindings/display/sitronix,st7735r.yaml | 1 +
.../devicetree/bindings/gpio/gpio-altera.txt | 5 +-
.../bindings/regulator/mt6315-regulator.yaml | 2 +-
.../bindings/spi/qcom,spi-qcom-qspi.yaml | 1 +
Documentation/filesystems/f2fs.rst | 1 +
Documentation/sound/alsa-configuration.rst | 4 +-
Documentation/userspace-api/landlock.rst | 4 +-
Makefile | 4 +-
arch/alpha/include/asm/page.h | 2 +-
arch/arm/boot/dts/bcm2835-rpi-b.dts | 13 +-
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 22 +-
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 2 +-
arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts | 4 +-
arch/arm/boot/dts/bcm5301x.dtsi | 15 +-
arch/arm/boot/dts/exynos5250-smdk5250.dts | 4 +-
arch/arm/boot/dts/imx6dl-eckelmann-ci4x10.dts | 6 +-
arch/arm/boot/dts/imx6qdl-colibri.dtsi | 6 +-
arch/arm/boot/dts/ox820.dtsi | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 3 +-
arch/arm/boot/dts/s5pv210.dtsi | 12 +-
arch/arm/boot/dts/sama7g5.dtsi | 1 -
arch/arm/boot/dts/socfpga.dtsi | 2 +-
arch/arm/boot/dts/socfpga_arria10.dtsi | 2 +-
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 1 +
arch/arm/boot/dts/suniv-f1c100s.dtsi | 4 +-
arch/arm/kernel/signal.c | 1 +
arch/arm/mach-hisi/platsmp.c | 4 +
arch/arm/mach-mediatek/Kconfig | 1 +
arch/arm/mach-omap1/clock.c | 2 +-
arch/arm/mach-pxa/cm-x300.c | 8 +-
arch/arm/mach-pxa/magician.c | 2 +-
arch/arm/mach-pxa/tosa.c | 4 +-
arch/arm/mach-vexpress/dcscb.c | 1 +
arch/arm64/Kconfig.platforms | 1 +
.../dts/marvell/armada-3720-espressobin-ultra.dts | 5 -
arch/arm64/boot/dts/mediatek/mt8192.dtsi | 2 +-
arch/arm64/boot/dts/nvidia/tegra210.dtsi | 5 +-
arch/arm64/boot/dts/qcom/ipq8074.dtsi | 2 +-
arch/arm64/boot/dts/qcom/msm8994.dtsi | 8 +-
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 2 +-
.../boot/dts/qcom/sdm845-xiaomi-beryllium.dts | 2 +-
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
arch/arm64/boot/dts/ti/k3-am64-mcu.dtsi | 2 -
arch/arm64/include/asm/processor.h | 10 +-
arch/arm64/kernel/setup.c | 7 +-
arch/arm64/kernel/signal.c | 1 +
arch/arm64/kernel/signal32.c | 1 +
arch/arm64/kernel/sys_compat.c | 2 +-
arch/arm64/mm/copypage.c | 4 +-
arch/csky/kernel/probes/kprobes.c | 2 +-
arch/m68k/Kconfig.cpu | 2 +-
arch/m68k/include/asm/raw_io.h | 6 +-
arch/m68k/kernel/signal.c | 1 +
.../include/asm/mach-ip27/cpu-feature-overrides.h | 1 -
.../include/asm/mach-ip30/cpu-feature-overrides.h | 1 -
arch/openrisc/include/asm/timex.h | 1 +
arch/openrisc/kernel/head.S | 9 +
arch/parisc/include/asm/fb.h | 4 +
arch/powerpc/include/asm/page.h | 7 +-
arch/powerpc/include/asm/vas.h | 2 +-
arch/powerpc/kernel/entry_64.S | 24 +-
arch/powerpc/kernel/fadump.c | 8 +-
arch/powerpc/kernel/idle.c | 2 +-
arch/powerpc/kernel/rtas.c | 9 +
arch/powerpc/kvm/book3s_hv.c | 4 +
arch/powerpc/kvm/book3s_hv_nested.c | 3 +-
arch/powerpc/perf/isa207-common.c | 12 +-
arch/powerpc/platforms/4xx/cpm.c | 2 +-
arch/powerpc/platforms/8xx/cpm1.c | 1 +
arch/powerpc/platforms/powernv/opal-fadump.c | 94 +--
arch/powerpc/platforms/powernv/opal-fadump.h | 10 +-
arch/powerpc/platforms/powernv/ultravisor.c | 1 +
arch/powerpc/platforms/powernv/vas-fault.c | 2 +-
arch/powerpc/platforms/powernv/vas-window.c | 4 +-
arch/powerpc/platforms/powernv/vas.h | 2 +-
arch/powerpc/sysdev/dart_iommu.c | 6 +-
arch/powerpc/sysdev/fsl_rio.c | 2 +
arch/powerpc/sysdev/xics/icp-opal.c | 1 +
arch/powerpc/sysdev/xive/spapr.c | 43 +-
arch/riscv/include/asm/alternative-macros.h | 4 +-
arch/riscv/include/asm/irq_work.h | 2 +-
arch/riscv/include/asm/unistd.h | 1 -
arch/riscv/include/uapi/asm/unistd.h | 1 +
arch/riscv/kernel/head.S | 1 +
arch/riscv/kernel/setup.c | 4 +-
arch/s390/include/asm/cio.h | 2 +-
arch/s390/include/asm/kexec.h | 10 +
arch/s390/include/asm/preempt.h | 15 +-
arch/s390/kernel/perf_event.c | 2 +-
arch/s390/kernel/time.c | 8 +-
arch/sparc/kernel/signal32.c | 1 +
arch/sparc/kernel/signal_64.c | 1 +
arch/um/drivers/chan_user.c | 9 +-
arch/um/include/asm/Kbuild | 1 +
arch/um/include/asm/thread_info.h | 2 +
arch/um/kernel/exec.c | 2 +-
arch/um/kernel/process.c | 2 +-
arch/um/kernel/ptrace.c | 8 +-
arch/um/kernel/signal.c | 4 +-
arch/x86/Kconfig | 4 +-
arch/x86/entry/entry_64.S | 1 +
arch/x86/entry/vdso/vma.c | 2 +-
arch/x86/events/amd/ibs.c | 55 +-
arch/x86/events/intel/core.c | 2 +-
arch/x86/include/asm/acenv.h | 14 +-
arch/x86/include/asm/kexec.h | 8 +
arch/x86/include/asm/suspend_32.h | 2 +-
arch/x86/include/asm/suspend_64.h | 12 +-
arch/x86/kernel/apic/apic.c | 2 +-
arch/x86/kernel/apic/x2apic_uv_x.c | 8 +-
arch/x86/kernel/cpu/intel.c | 2 +-
arch/x86/kernel/cpu/mce/amd.c | 32 +-
arch/x86/kernel/cpu/sgx/encl.c | 105 ++-
arch/x86/kernel/cpu/sgx/encl.h | 7 +-
arch/x86/kernel/cpu/sgx/main.c | 9 +-
arch/x86/kernel/machine_kexec_64.c | 12 +-
arch/x86/kernel/signal_compat.c | 2 +
arch/x86/kernel/step.c | 3 +-
arch/x86/kernel/sys_x86_64.c | 7 +-
arch/x86/kvm/lapic.c | 1 +
arch/x86/kvm/vmx/nested.c | 45 +-
arch/x86/kvm/vmx/vmcs.h | 5 +
arch/x86/lib/delay.c | 4 +-
arch/x86/mm/pat/memtype.c | 2 +-
arch/x86/pci/irq.c | 19 +-
arch/x86/um/ldt.c | 6 +-
arch/xtensa/kernel/ptrace.c | 4 +-
arch/xtensa/kernel/signal.c | 4 +-
arch/xtensa/platforms/iss/simdisk.c | 18 +-
block/bfq-cgroup.c | 111 +--
block/bfq-iosched.c | 64 +-
block/bfq-iosched.h | 7 +-
block/blk-iolatency.c | 122 ++--
crypto/cryptd.c | 23 +-
drivers/acpi/cppc_acpi.c | 17 +-
drivers/acpi/property.c | 18 +-
drivers/acpi/sleep.c | 12 +
drivers/base/memory.c | 5 +-
drivers/base/node.c | 1 +
drivers/base/power/domain.c | 1 +
drivers/base/property.c | 90 ++-
drivers/block/drbd/drbd_main.c | 11 +-
drivers/block/nbd.c | 13 +-
drivers/block/virtio_blk.c | 7 +-
drivers/char/hw_random/omap3-rom-rng.c | 2 +-
drivers/char/ipmi/ipmi_msghandler.c | 4 +-
drivers/char/ipmi/ipmi_ssif.c | 23 +
drivers/char/random.c | 12 +-
drivers/char/tpm/tpm_tis_i2c_cr50.c | 4 +-
drivers/clk/tegra/clk-dfll.c | 12 +
drivers/cpufreq/cpufreq.c | 11 +
drivers/cpufreq/mediatek-cpufreq.c | 18 +-
drivers/cpuidle/cpuidle-psci.c | 46 ++
.../crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 115 ++--
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 30 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 10 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h | 14 +-
drivers/crypto/ccree/cc_buffer_mgr.c | 27 +-
drivers/crypto/marvell/cesa/cipher.c | 1 -
drivers/crypto/nx/nx-common-powernv.c | 2 +-
drivers/crypto/qat/qat_common/adf_gen2_hw_data.c | 18 +-
drivers/crypto/qat/qat_common/adf_gen2_hw_data.h | 1 +
.../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 15 +-
drivers/devfreq/rk3399_dmc.c | 2 +
drivers/dma/idxd/cdev.c | 8 +-
drivers/dma/stm32-mdma.c | 23 +-
drivers/edac/dmc520_edac.c | 2 +-
drivers/firmware/arm_ffa/driver.c | 4 +-
drivers/firmware/arm_scmi/base.c | 2 +-
drivers/gpio/gpio-rockchip.c | 24 +-
drivers/gpio/gpiolib-of.c | 5 +
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 +
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 95 ++-
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 3 +-
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 4 +-
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 8 +-
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 8 +-
.../gpu/drm/amd/display/dc/dcn31/dcn31_resource.c | 1 +
drivers/gpu/drm/amd/pm/powerplay/kv_dpm.c | 14 +-
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c | 8 +-
drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c | 60 +-
.../gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c | 62 +-
drivers/gpu/drm/arm/display/komeda/komeda_plane.c | 10 +-
drivers/gpu/drm/arm/malidp_crtc.c | 5 +-
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 +
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 31 +-
drivers/gpu/drm/bridge/chipone-icn6211.c | 155 ++++-
drivers/gpu/drm/bridge/ite-it66121.c | 2 +-
drivers/gpu/drm/drm_bridge_connector.c | 4 +-
drivers/gpu/drm/drm_edid.c | 6 +-
drivers/gpu/drm/drm_plane.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 6 +
drivers/gpu/drm/gma500/psb_intel_display.c | 7 +-
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 33 +-
drivers/gpu/drm/i915/i915_perf.c | 4 +-
drivers/gpu/drm/i915/i915_perf_types.h | 2 +-
drivers/gpu/drm/mediatek/mtk_cec.c | 2 +-
drivers/gpu/drm/mediatek/mtk_dpi.c | 4 +-
drivers/gpu/drm/msm/Makefile | 2 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 23 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 10 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 14 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 6 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.h | 4 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.h | 2 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 20 +-
drivers/gpu/drm/msm/dp/dp_ctrl.c | 16 +-
drivers/gpu/drm/msm/dp/dp_display.c | 55 +-
drivers/gpu/drm/msm/dsi/dsi_host.c | 21 +-
drivers/gpu/drm/msm/dsi/phy/dsi_phy_14nm.c | 2 +-
drivers/gpu/drm/msm/hdmi/hdmi.c | 22 +-
drivers/gpu/drm/msm/hdmi/hdmi.h | 19 +-
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 81 ++-
.../drm/msm/hdmi/{hdmi_connector.c => hdmi_hpd.c} | 154 +----
drivers/gpu/drm/msm/msm_drv.c | 8 +-
drivers/gpu/drm/msm/msm_gem_prime.c | 2 +-
drivers/gpu/drm/msm/msm_kms.h | 1 +
drivers/gpu/drm/nouveau/dispnv50/atom.h | 6 +-
drivers/gpu/drm/nouveau/dispnv50/crc.c | 27 +-
drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h | 2 +
drivers/gpu/drm/nouveau/nvkm/subdev/bus/gf100.c | 14 +-
drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv31.c | 6 +-
drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv50.c | 6 +-
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c | 6 +-
drivers/gpu/drm/panel/panel-simple.c | 3 +-
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
drivers/gpu/drm/stm/ltdc.c | 16 +-
drivers/gpu/drm/tilcdc/tilcdc_external.c | 8 +-
drivers/gpu/drm/v3d/v3d_perfmon.c | 3 +-
drivers/gpu/drm/vc4/vc4_crtc.c | 2 +-
drivers/gpu/drm/vc4/vc4_drv.h | 1 +
drivers/gpu/drm/vc4/vc4_hvs.c | 49 +-
drivers/gpu/drm/vc4/vc4_regs.h | 12 +-
drivers/gpu/drm/vc4/vc4_txp.c | 8 +-
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 30 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 1 -
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 14 +-
drivers/hid/amd-sfh-hid/amd_sfh_hid.c | 4 +-
drivers/hid/amd-sfh-hid/amd_sfh_hid.h | 2 +-
drivers/hid/hid-bigbenff.c | 6 +
drivers/hid/hid-elan.c | 2 -
drivers/hid/hid-led.c | 2 +-
drivers/hv/channel.c | 6 +-
drivers/hwmon/pmbus/pmbus_core.c | 28 +-
drivers/hwtracing/coresight/coresight-core.c | 33 +-
drivers/i2c/busses/i2c-at91-master.c | 11 +
drivers/i2c/busses/i2c-npcm7xx.c | 103 ++-
drivers/i2c/busses/i2c-rcar.c | 15 +-
drivers/infiniband/hw/hfi1/file_ops.c | 2 +
drivers/infiniband/hw/hfi1/init.c | 2 +-
drivers/infiniband/hw/hfi1/sdma.c | 12 +-
drivers/infiniband/hw/hns/hns_roce_device.h | 7 +-
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 24 +-
drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 2 +-
drivers/infiniband/hw/hns/hns_roce_main.c | 2 +-
drivers/infiniband/sw/rdmavt/qp.c | 6 +-
drivers/infiniband/sw/rxe/rxe_req.c | 2 +-
drivers/input/keyboard/gpio_keys.c | 2 +-
drivers/input/misc/sparcspkr.c | 1 +
drivers/input/touchscreen/stmfts.c | 16 +-
drivers/interconnect/qcom/icc-rpmh.c | 10 +-
drivers/interconnect/qcom/sc7180.c | 21 -
drivers/interconnect/qcom/sm8150.c | 1 -
drivers/interconnect/qcom/sm8250.c | 1 -
drivers/interconnect/qcom/sm8350.c | 1 -
drivers/iommu/amd/init.c | 2 +-
drivers/iommu/amd/iommu.c | 7 -
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 13 +-
drivers/iommu/dma-iommu.c | 7 +-
drivers/iommu/intel/iommu.c | 2 +-
drivers/iommu/msm_iommu.c | 11 +-
drivers/iommu/mtk_iommu.c | 30 +-
drivers/iommu/mtk_iommu.h | 2 +
drivers/iommu/mtk_iommu_v1.c | 7 +
drivers/irqchip/irq-armada-370-xp.c | 11 +-
drivers/irqchip/irq-aspeed-i2c-ic.c | 4 +-
drivers/irqchip/irq-aspeed-scu-ic.c | 4 +-
drivers/irqchip/irq-sni-exiu.c | 25 +-
drivers/irqchip/irq-xtensa-mx.c | 18 +-
drivers/macintosh/Kconfig | 6 +
drivers/macintosh/Makefile | 3 +-
drivers/macintosh/via-pmu.c | 2 +-
drivers/mailbox/mailbox.c | 19 +-
drivers/md/bcache/btree.c | 58 +-
drivers/md/bcache/btree.h | 2 +-
drivers/md/bcache/journal.c | 31 +-
drivers/md/bcache/journal.h | 2 +
drivers/md/bcache/request.c | 6 +
drivers/md/bcache/super.c | 1 +
drivers/md/bcache/writeback.c | 101 +--
drivers/md/bcache/writeback.h | 2 +-
drivers/md/md-bitmap.c | 44 +-
drivers/md/md.c | 22 +-
drivers/md/raid0.c | 1 -
drivers/media/cec/core/cec-adap.c | 6 +-
drivers/media/i2c/ccs/ccs-core.c | 7 +-
drivers/media/i2c/max9286.c | 139 ++--
drivers/media/i2c/ov5648.c | 4 +-
drivers/media/i2c/ov7670.c | 1 -
drivers/media/i2c/rdacm20.c | 2 +-
drivers/media/i2c/rdacm21.c | 2 +-
drivers/media/pci/cx23885/cx23885-core.c | 6 +-
drivers/media/pci/cx25821/cx25821-core.c | 2 +-
drivers/media/platform/aspeed-video.c | 4 +-
drivers/media/platform/atmel/atmel-sama5d2-isc.c | 7 +-
drivers/media/platform/coda/coda-common.c | 35 +-
drivers/media/platform/exynos4-is/fimc-is.c | 6 +-
drivers/media/platform/exynos4-is/fimc-isp-video.h | 2 +-
drivers/media/platform/qcom/venus/hfi.c | 3 +
drivers/media/platform/rockchip/rga/rga.c | 6 +-
drivers/media/platform/sti/delta/delta-v4l2.c | 6 +-
drivers/media/platform/vsp1/vsp1_rpf.c | 6 +-
drivers/media/rc/imon.c | 99 ++-
drivers/media/usb/pvrusb2/pvrusb2-hdw.c | 7 +-
drivers/media/usb/uvc/uvc_v4l2.c | 20 +-
drivers/memory/samsung/exynos5422-dmc.c | 5 +-
drivers/mfd/davinci_voicecodec.c | 6 +-
drivers/mfd/ipaq-micro.c | 2 +-
drivers/misc/ocxl/file.c | 2 +
drivers/mmc/core/block.c | 8 +-
drivers/mmc/host/jz4740_mmc.c | 20 +
drivers/mmc/host/sdhci_am654.c | 23 +-
drivers/mtd/chips/cfi_cmdset_0002.c | 103 ++-
drivers/mtd/mtdblock.c | 8 +-
drivers/mtd/nand/raw/cadence-nand-controller.c | 5 +-
drivers/mtd/nand/raw/denali_pci.c | 15 +-
drivers/mtd/nand/raw/intel-nand-controller.c | 2 +-
drivers/mtd/nand/spi/gigadevice.c | 10 +-
drivers/mtd/spi-nor/core.c | 9 +
drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 2 +-
drivers/net/can/xilinx_can.c | 4 +-
drivers/net/dsa/Kconfig | 3 +-
drivers/net/dsa/mt7530.c | 14 +-
drivers/net/ethernet/broadcom/Makefile | 5 +
drivers/net/ethernet/cadence/macb_main.c | 40 +-
drivers/net/ethernet/cadence/macb_ptp.c | 4 +-
.../net/ethernet/huawei/hinic/hinic_hw_api_cmd.c | 5 +-
drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c | 10 +-
drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c | 5 +-
drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c | 9 +-
drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c | 2 +
drivers/net/ethernet/huawei/hinic/hinic_hw_wq.c | 23 +-
drivers/net/ethernet/huawei/hinic/hinic_main.c | 10 +-
drivers/net/ethernet/huawei/hinic/hinic_tx.c | 9 +-
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 10 +-
drivers/net/ethernet/mellanox/mlxsw/spectrum_dcb.c | 13 -
.../net/ethernet/mellanox/mlxsw/spectrum_trap.c | 2 +-
drivers/net/ethernet/sfc/ef10.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 15 +-
drivers/net/ethernet/xscale/ptp_ixp46x.c | 2 +-
drivers/net/hyperv/netvsc_drv.c | 5 +-
drivers/net/ipa/ipa_endpoint.c | 36 +-
drivers/net/phy/micrel.c | 11 +-
drivers/net/usb/asix_devices.c | 6 +-
drivers/net/usb/smsc95xx.c | 3 +-
drivers/net/usb/usbnet.c | 6 +-
drivers/net/wireless/ath/ath10k/mac.c | 20 +-
drivers/net/wireless/ath/ath11k/mac.c | 16 +-
drivers/net/wireless/ath/ath11k/spectral.c | 17 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 +-
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 8 +
drivers/net/wireless/ath/carl9170/tx.c | 3 +
drivers/net/wireless/broadcom/b43/phy_n.c | 2 +-
drivers/net/wireless/broadcom/b43legacy/phy.c | 2 +-
drivers/net/wireless/intel/ipw2x00/libipw_tx.c | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/power.c | 3 +
drivers/net/wireless/marvell/mwifiex/11h.c | 2 +
drivers/net/wireless/mediatek/mt76/agg-rx.c | 5 +-
drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 4 +-
drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 6 +-
drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 8 +-
drivers/net/wireless/microchip/wilc1000/mon.c | 4 +-
drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c | 8 +-
drivers/net/wireless/realtek/rtlwifi/usb.c | 2 +-
drivers/net/wireless/realtek/rtw88/rtw8821c.c | 4 +
drivers/nfc/st21nfca/se.c | 17 +-
drivers/nfc/st21nfca/st21nfca.h | 1 +
drivers/nvdimm/core.c | 9 -
drivers/nvdimm/security.c | 5 -
drivers/nvme/host/core.c | 21 +-
drivers/nvme/host/pci.c | 1 +
drivers/of/kexec.c | 9 +
drivers/of/overlay.c | 4 +-
drivers/opp/of.c | 2 +-
drivers/pci/controller/cadence/pcie-cadence-ep.c | 3 +-
drivers/pci/controller/dwc/pci-imx6.c | 23 +-
drivers/pci/controller/dwc/pcie-designware-host.c | 3 +-
drivers/pci/controller/dwc/pcie-qcom.c | 9 +-
drivers/pci/controller/pcie-mediatek.c | 1 +
drivers/pci/controller/pcie-microchip-host.c | 6 +-
drivers/pci/controller/pcie-rockchip-ep.c | 3 +-
drivers/pci/pci-acpi.c | 41 +-
drivers/pci/pci.c | 12 +-
drivers/pci/pcie/aer.c | 7 +-
drivers/phy/qualcomm/phy-qcom-qmp.c | 11 +-
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 18 +
drivers/pinctrl/mediatek/Kconfig | 1 +
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 2 +-
drivers/pinctrl/pinctrl-rockchip.c | 54 +-
drivers/pinctrl/pinctrl-rockchip.h | 7 +-
drivers/pinctrl/renesas/core.c | 7 +-
drivers/pinctrl/renesas/pfc-r8a779a0.c | 29 +
drivers/pinctrl/renesas/pinctrl-rzn1.c | 10 +-
drivers/platform/chrome/cros_ec.c | 16 +-
drivers/platform/chrome/cros_ec_chardev.c | 2 +-
drivers/platform/chrome/cros_ec_proto.c | 50 +-
drivers/platform/mips/cpu_hwmon.c | 127 ++--
drivers/platform/x86/intel/hid.c | 2 +-
drivers/regulator/core.c | 7 +-
drivers/regulator/da9121-regulator.c | 2 +
drivers/regulator/pfuze100-regulator.c | 2 +
drivers/regulator/qcom_smd-regulator.c | 35 +-
drivers/regulator/scmi-regulator.c | 2 +-
drivers/s390/cio/chsc.c | 4 +-
drivers/scsi/dc395x.c | 15 +-
drivers/scsi/fcoe/fcoe_ctlr.c | 2 +-
drivers/scsi/lpfc/lpfc_els.c | 49 +-
drivers/scsi/lpfc/lpfc_init.c | 51 +-
drivers/scsi/lpfc/lpfc_logmsg.h | 6 +-
drivers/scsi/lpfc/lpfc_scsi.c | 37 +-
drivers/scsi/lpfc/lpfc_sli.c | 6 +-
drivers/scsi/megaraid.c | 2 +-
drivers/scsi/ufs/ti-j721e-ufs.c | 6 +-
drivers/scsi/ufs/ufs-qcom.c | 14 +-
drivers/scsi/ufs/ufshcd.c | 7 +-
drivers/soc/bcm/bcm63xx/bcm-pmb.c | 3 +
drivers/soc/qcom/llcc-qcom.c | 1 +
drivers/soc/qcom/smp2p.c | 1 +
drivers/soc/qcom/smsm.c | 1 +
drivers/soc/ti/ti_sci_pm_domains.c | 2 +
drivers/spi/spi-cadence-quadspi.c | 2 +-
drivers/spi/spi-fsl-qspi.c | 4 +
drivers/spi/spi-img-spfi.c | 2 +-
drivers/spi/spi-rockchip.c | 113 +++-
drivers/spi/spi-rspi.c | 15 +-
drivers/spi/spi-stm32-qspi.c | 3 +-
drivers/spi/spi-ti-qspi.c | 5 +-
drivers/staging/media/hantro/hantro_g2_hevc_dec.c | 11 +-
drivers/staging/media/hantro/hantro_h264.c | 2 -
drivers/staging/media/hantro/hantro_v4l2.c | 8 +-
drivers/staging/media/rkvdec/rkvdec-h264.c | 37 +-
drivers/staging/media/rkvdec/rkvdec.c | 10 +-
drivers/staging/r8188eu/os_dep/ioctl_linux.c | 103 +--
drivers/target/target_core_device.c | 1 -
drivers/target/target_core_user.c | 50 +-
drivers/thermal/broadcom/bcm2711_thermal.c | 5 +-
drivers/thermal/broadcom/sr-thermal.c | 3 +
drivers/thermal/devfreq_cooling.c | 25 +-
drivers/thermal/imx_sc_thermal.c | 6 +-
drivers/thermal/thermal_core.c | 1 +
drivers/tty/goldfish.c | 20 +-
drivers/tty/serial/pch_uart.c | 27 +-
drivers/tty/tty_buffer.c | 3 +-
drivers/usb/core/hcd.c | 29 +-
drivers/usb/core/quirks.c | 3 +
drivers/usb/dwc3/gadget.c | 6 +-
drivers/usb/host/xhci-pci.c | 2 +
drivers/usb/isp1760/isp1760-core.c | 8 +
drivers/usb/serial/option.c | 2 +
drivers/usb/serial/pl2303.c | 3 +
drivers/vdpa/vdpa_sim/vdpa_sim.c | 5 +-
drivers/video/console/sticon.c | 5 +-
drivers/video/console/sticore.c | 32 +-
drivers/video/fbdev/amba-clcd.c | 5 +-
drivers/video/fbdev/core/fbcon.c | 5 +-
drivers/video/fbdev/sticore.h | 3 +
drivers/video/fbdev/stifb.c | 4 +-
drivers/video/fbdev/vesafb.c | 5 +-
fs/afs/misc.c | 5 +-
fs/afs/rotate.c | 4 +
fs/afs/rxrpc.c | 8 +-
fs/afs/write.c | 1 +
fs/binfmt_flat.c | 27 +-
fs/btrfs/disk-io.c | 4 +-
fs/btrfs/extent_io.c | 21 +-
fs/btrfs/volumes.c | 8 +-
fs/cifs/cifsfs.c | 10 +-
fs/cifs/smb2inode.c | 2 -
fs/cifs/smb2ops.c | 9 +-
fs/dax.c | 3 +-
fs/dlm/lock.c | 11 +-
fs/dlm/lowcomms.c | 2 +-
fs/dlm/plock.c | 12 +-
fs/exportfs/expfs.c | 5 +-
fs/ext4/ext4.h | 6 -
fs/ext4/extents.c | 20 +-
fs/ext4/inline.c | 12 +
fs/ext4/inode.c | 13 +-
fs/ext4/mballoc.c | 18 +-
fs/ext4/namei.c | 84 ++-
fs/ext4/super.c | 24 +-
fs/f2fs/checkpoint.c | 2 +-
fs/f2fs/dir.c | 3 +-
fs/f2fs/f2fs.h | 31 +-
fs/f2fs/file.c | 26 +-
fs/f2fs/hash.c | 11 +-
fs/f2fs/inline.c | 31 +-
fs/f2fs/inode.c | 21 +-
fs/f2fs/namei.c | 37 +-
fs/f2fs/recovery.c | 6 +-
fs/f2fs/segment.c | 42 +-
fs/f2fs/segment.h | 33 +-
fs/f2fs/super.c | 22 +-
fs/f2fs/verity.c | 2 +-
fs/f2fs/xattr.c | 2 +-
fs/fat/fatent.c | 7 +-
fs/fs-writeback.c | 13 +-
fs/gfs2/quota.c | 32 +-
fs/hugetlbfs/inode.c | 4 +-
fs/iomap/buffered-io.c | 3 +-
fs/jfs/jfs_dmap.c | 3 +-
fs/ksmbd/connection.c | 2 +-
fs/ksmbd/smb2misc.c | 2 +-
fs/ksmbd/smb_common.c | 4 +-
fs/namei.c | 70 +-
fs/nfs/file.c | 50 +-
fs/nfs/getroot.c | 17 +-
fs/nfs/inode.c | 25 +-
fs/nfs/internal.h | 9 -
fs/nfs/nfs4proc.c | 41 +-
fs/nfs/nfs4state.c | 2 +-
fs/nfs/pagelist.c | 3 +
fs/nfs/pnfs.c | 6 +-
fs/nfs/unlink.c | 8 +
fs/nfs/write.c | 54 +-
fs/nfsd/nfscache.c | 2 +-
fs/notify/fdinfo.c | 11 +-
fs/notify/inotify/inotify.h | 12 +
fs/notify/inotify/inotify_user.c | 2 +-
fs/notify/mark.c | 6 +-
fs/ntfs3/file.c | 12 +-
fs/ntfs3/frecord.c | 10 +-
fs/ntfs3/fslog.c | 12 +-
fs/ntfs3/inode.c | 8 +-
fs/ntfs3/xattr.c | 112 ++-
fs/ocfs2/dlmfs/userdlm.c | 16 +-
fs/proc/generic.c | 3 +
fs/proc/proc_net.c | 3 +
include/drm/drm_edid.h | 6 +-
include/linux/blk_types.h | 5 +-
include/linux/bpf.h | 2 +
include/linux/compat.h | 1 +
include/linux/efi.h | 2 +
include/linux/fwnode.h | 10 +-
include/linux/goldfish.h | 15 +-
include/linux/gpio/driver.h | 12 +
include/linux/kexec.h | 46 +-
include/linux/list.h | 40 +-
include/linux/mailbox_controller.h | 1 +
include/linux/mtd/cfi.h | 1 +
include/linux/namei.h | 6 +
include/linux/nfs_fs.h | 13 +
include/linux/nfs_fs_sb.h | 1 +
include/linux/nodemask.h | 13 +-
include/linux/platform_data/cros_ec_proto.h | 3 +
include/linux/ptp_classify.h | 3 +
include/linux/ptrace.h | 7 -
include/linux/sched/signal.h | 2 +-
include/linux/usb/hcd.h | 2 +
include/net/if_inet6.h | 8 +
include/scsi/libfcoe.h | 3 +-
include/scsi/libiscsi.h | 6 +-
include/sound/jack.h | 1 +
include/trace/events/rxrpc.h | 2 +-
include/trace/events/vmscan.h | 4 +-
include/uapi/asm-generic/siginfo.h | 7 +
include/uapi/linux/landlock.h | 9 +-
init/Kconfig | 5 +
ipc/mqueue.c | 14 +
kernel/dma/debug.c | 2 +-
kernel/dma/direct.c | 125 ++--
kernel/events/core.c | 4 +-
kernel/kexec_file.c | 34 -
kernel/printk/printk.c | 63 +-
kernel/ptrace.c | 5 +-
kernel/rcu/Kconfig | 1 +
kernel/rcu/tasks.h | 3 +
kernel/scftorture.c | 5 +-
kernel/sched/core.c | 6 +-
kernel/sched/deadline.c | 5 +-
kernel/sched/fair.c | 8 +-
kernel/sched/pelt.h | 4 +-
kernel/sched/psi.c | 15 +-
kernel/sched/rt.c | 5 +-
kernel/sched/sched.h | 32 +-
kernel/signal.c | 18 +-
kernel/trace/ftrace.c | 5 +-
kernel/trace/trace_boot.c | 2 +-
kernel/trace/trace_events_hist.c | 3 +
lib/kunit/debugfs.c | 2 +-
lib/list-test.c | 19 +
mm/cma.c | 4 +-
mm/compaction.c | 2 +
mm/hugetlb.c | 9 +-
mm/memremap.c | 2 +-
mm/page_alloc.c | 4 +-
net/bluetooth/hci_event.c | 15 +-
net/bluetooth/hci_request.c | 2 +
net/bluetooth/sco.c | 21 +-
net/core/dev.c | 8 +-
net/ipv6/addrconf.c | 33 +-
net/mac80211/chan.c | 7 +-
net/mac80211/ieee80211_i.h | 5 +
net/mac80211/rc80211_minstrel_ht.c | 3 +
net/mac80211/scan.c | 20 +
net/mptcp/pm_netlink.c | 2 +
net/nfc/core.c | 1 +
net/rxrpc/ar-internal.h | 13 +-
net/rxrpc/call_event.c | 7 +-
net/rxrpc/conn_object.c | 2 +-
net/rxrpc/input.c | 58 +-
net/rxrpc/output.c | 20 +-
net/rxrpc/recvmsg.c | 8 +-
net/rxrpc/sendmsg.c | 6 +
net/rxrpc/sysctl.c | 4 +-
net/sctp/input.c | 4 +-
net/smc/af_smc.c | 2 +-
net/wireless/nl80211.c | 4 +-
net/wireless/reg.c | 4 +
samples/bpf/Makefile | 9 +-
samples/landlock/sandboxer.c | 104 +--
scripts/faddr2line | 150 ++--
security/integrity/ima/Kconfig | 14 +-
.../integrity/platform_certs/keyring_handler.h | 8 +
security/integrity/platform_certs/load_uefi.c | 33 +
security/landlock/cred.c | 4 +-
security/landlock/cred.h | 8 +-
security/landlock/fs.c | 191 ++++--
security/landlock/fs.h | 11 +-
security/landlock/limits.h | 8 +-
security/landlock/object.c | 6 +-
security/landlock/object.h | 6 +-
security/landlock/ptrace.c | 10 +-
security/landlock/ruleset.c | 84 +--
security/landlock/ruleset.h | 35 +-
security/landlock/syscalls.c | 95 +--
sound/core/jack.c | 34 +-
sound/core/pcm_memory.c | 3 +-
sound/pci/hda/patch_realtek.c | 21 +-
sound/soc/atmel/atmel-classd.c | 1 -
sound/soc/atmel/atmel-pdmic.c | 1 -
sound/soc/codecs/Kconfig | 2 -
sound/soc/codecs/max98090.c | 6 +-
sound/soc/codecs/rk3328_codec.c | 2 +-
sound/soc/codecs/rt5514.c | 2 +-
sound/soc/codecs/rt5645.c | 7 +-
sound/soc/codecs/tscs454.c | 12 +-
sound/soc/codecs/wm2000.c | 6 +-
sound/soc/fsl/fsl-asoc-card.c | 3 +-
sound/soc/fsl/imx-card.c | 17 +-
sound/soc/fsl/imx-hdmi.c | 1 +
sound/soc/fsl/imx-sgtl5000.c | 18 +-
sound/soc/fsl/imx-spdif.c | 4 +-
sound/soc/intel/boards/bytcr_rt5640.c | 12 +
sound/soc/mediatek/mt2701/mt2701-wm8960.c | 9 +-
sound/soc/mediatek/mt8173/mt8173-max98090.c | 5 +-
sound/soc/mxs/mxs-saif.c | 1 +
sound/soc/samsung/aries_wm8994.c | 17 +-
sound/soc/samsung/arndale.c | 5 +-
sound/soc/samsung/littlemill.c | 5 +-
sound/soc/samsung/lowland.c | 5 +-
sound/soc/samsung/odroid.c | 4 +-
sound/soc/samsung/smdk_wm8994.c | 4 +-
sound/soc/samsung/smdk_wm8994pcm.c | 4 +-
sound/soc/samsung/snow.c | 9 +-
sound/soc/samsung/speyside.c | 5 +-
sound/soc/samsung/tm2_wm5110.c | 3 +-
sound/soc/samsung/tobermory.c | 5 +-
sound/soc/sh/rcar/core.c | 15 +-
sound/soc/sh/rcar/dma.c | 9 +-
sound/soc/sh/rcar/rsnd.h | 2 +-
sound/soc/sh/rcar/src.c | 7 +-
sound/soc/sh/rcar/ssi.c | 14 +-
sound/soc/sh/rcar/ssiu.c | 11 +-
sound/soc/sh/rz-ssi.c | 29 +-
sound/soc/soc-dapm.c | 2 -
sound/soc/ti/j721e-evm.c | 44 +-
sound/usb/implicit.c | 10 +-
sound/usb/midi.c | 3 +
sound/usb/quirks.c | 6 +
sound/usb/usbaudio.h | 6 +
.../test-libbpf-btf__load_from_kernel_by_id.c | 5 +-
tools/lib/bpf/libbpf.c | 20 +-
tools/objtool/check.c | 9 +-
tools/objtool/elf.c | 198 ++++--
tools/objtool/include/objtool/elf.h | 4 +-
tools/perf/Makefile.config | 39 +-
tools/perf/builtin-c2c.c | 6 +-
tools/perf/pmu-events/jevents.c | 2 +-
tools/perf/util/data.h | 1 +
tools/power/x86/turbostat/turbostat.c | 1 +
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/arm64/bti/Makefile | 4 +-
tools/testing/selftests/bpf/Makefile | 2 +-
.../bpf/progs/btf_dump_test_case_syntax.c | 2 +-
tools/testing/selftests/bpf/progs/profiler.inc.h | 5 +-
.../selftests/bpf/test_bpftool_synctypes.py | 2 +-
tools/testing/selftests/cgroup/test_stress.sh | 2 +-
tools/testing/selftests/landlock/base_test.c | 177 +++--
tools/testing/selftests/landlock/common.h | 66 +-
tools/testing/selftests/landlock/fs_test.c | 753 ++++++++++++++-------
tools/testing/selftests/landlock/ptrace_test.c | 40 +-
tools/testing/selftests/resctrl/fill_buf.c | 4 +-
712 files changed, 6875 insertions(+), 3892 deletions(-)
^ permalink raw reply [relevance 1%]
* [GIT pull] timers/core for v5.19-rc1
@ 2022-06-05 9:30 5% ` Thomas Gleixner
0 siblings, 0 replies; 200+ results
From: Thomas Gleixner @ 2022-06-05 9:30 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-kernel, x86
Linus,
please pull the latest timers/core branch from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers-core-2022-06-05
up to: 57963a92a70b: Merge tag 'timers-v5.19-rc1' of https://git.linaro.org/people/daniel.lezcano/linux into timers/core
Clockevent/clocksource updates:
- Device tree bindings for MT8186
- Tell the kernel that the RISC-V SBI timer stops in deeper power states
- Make device tree parsing in sp804 more robust
- Dead code removal and tiny fixes here and there
- Add the missing SPDX identifiers
Thanks,
tglx
------------------>
Allen-KH Cheng (1):
dt-bindings: timer: Add compatible for Mediatek MT8186
Andre Przywara (1):
clocksource/drivers/sp804: Avoid error on multiple instances
Dan Carpenter (1):
clocksource/drivers/timer-ti-dm: Remove unnecessary NULL check
Krzysztof Kozlowski (1):
clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value
Linus Walleij (1):
clocksource/drivers/ixp4xx: Drop boardfile probe path
Samuel Holland (1):
clocksource/drivers/riscv: Events are stopped during CPU suspend
Thomas Gleixner (10):
clocksource/drivers/bcm_kona: Convert to SPDX identifier
clocksource/drivers/jcore: Convert to SPDX identifier
clocksource/drivers/mips-gic-timer: Convert to SPDX identifier
clocksource/drivers/armada-370-xp: Convert to SPDX identifier
clocksource/drivers/digicolor: Convert to SPDX identifier
clocksource/drivers/lpc32xx: Convert to SPDX identifier
clocksource/drivers/orion: Convert to SPDX identifier
clocksource/drivers/pistachio: Convert to SPDX identifier
clocksource/drivers/timer-sun4i: Convert to SPDX identifier
clocksource/drivers/timer-sun5i: Convert to SPDX identifier
.../bindings/timer/mediatek,mtk-timer.txt | 1 +
drivers/clocksource/Kconfig | 2 +-
drivers/clocksource/bcm_kona_timer.c | 14 ++----------
drivers/clocksource/jcore-pit.c | 5 +----
drivers/clocksource/mips-gic-timer.c | 9 ++------
drivers/clocksource/timer-armada-370-xp.c | 5 +----
drivers/clocksource/timer-digicolor.c | 5 +----
drivers/clocksource/timer-ixp4xx.c | 25 ----------------------
drivers/clocksource/timer-lpc32xx.c | 6 +-----
drivers/clocksource/timer-orion.c | 5 +----
drivers/clocksource/timer-oxnas-rps.c | 2 +-
drivers/clocksource/timer-pistachio.c | 5 +----
drivers/clocksource/timer-riscv.c | 2 +-
drivers/clocksource/timer-sp804.c | 10 ++++-----
drivers/clocksource/timer-sun4i.c | 5 +----
drivers/clocksource/timer-sun5i.c | 5 +----
drivers/clocksource/timer-ti-dm.c | 3 +--
include/linux/platform_data/timer-ixp4xx.h | 11 ----------
18 files changed, 22 insertions(+), 98 deletions(-)
delete mode 100644 include/linux/platform_data/timer-ixp4xx.h
diff --git a/Documentation/devicetree/bindings/timer/mediatek,mtk-timer.txt b/Documentation/devicetree/bindings/timer/mediatek,mtk-timer.txt
index fbd76a8e023b..6f1f9dba6e88 100644
--- a/Documentation/devicetree/bindings/timer/mediatek,mtk-timer.txt
+++ b/Documentation/devicetree/bindings/timer/mediatek,mtk-timer.txt
@@ -23,6 +23,7 @@ Required properties:
For those SoCs that use SYST
* "mediatek,mt8183-timer" for MT8183 compatible timers (SYST)
+ * "mediatek,mt8186-timer" for MT8186 compatible timers (SYST)
* "mediatek,mt8192-timer" for MT8192 compatible timers (SYST)
* "mediatek,mt8195-timer" for MT8195 compatible timers (SYST)
* "mediatek,mt7629-timer" for MT7629 compatible timers (SYST)
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index 1589ae7d5abb..8182ff2d12fe 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -80,7 +80,7 @@ config IXP4XX_TIMER
bool "Intel XScale IXP4xx timer driver" if COMPILE_TEST
depends on HAS_IOMEM
select CLKSRC_MMIO
- select TIMER_OF if OF
+ select TIMER_OF
help
Enables support for the Intel XScale IXP4xx SoC timer.
diff --git a/drivers/clocksource/bcm_kona_timer.c b/drivers/clocksource/bcm_kona_timer.c
index a50ab5c2154f..39f172d7e29e 100644
--- a/drivers/clocksource/bcm_kona_timer.c
+++ b/drivers/clocksource/bcm_kona_timer.c
@@ -1,15 +1,5 @@
-/*
- * Copyright (C) 2012 Broadcom Corporation
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation version 2.
- *
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
- * kind, whether express or implied; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) 2012 Broadcom Corporation
#include <linux/init.h>
#include <linux/irq.h>
diff --git a/drivers/clocksource/jcore-pit.c b/drivers/clocksource/jcore-pit.c
index 5d3d88e0fc8c..a4a991101fa3 100644
--- a/drivers/clocksource/jcore-pit.c
+++ b/drivers/clocksource/jcore-pit.c
@@ -1,11 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* J-Core SoC PIT/clocksource driver
*
* Copyright (C) 2015-2016 Smart Energy Instruments, Inc.
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
*/
#include <linux/kernel.h>
diff --git a/drivers/clocksource/mips-gic-timer.c b/drivers/clocksource/mips-gic-timer.c
index be4175f415ba..b3ae38f36720 100644
--- a/drivers/clocksource/mips-gic-timer.c
+++ b/drivers/clocksource/mips-gic-timer.c
@@ -1,10 +1,5 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved.
- */
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved.
#define pr_fmt(fmt) "mips-gic-timer: " fmt
diff --git a/drivers/clocksource/timer-armada-370-xp.c b/drivers/clocksource/timer-armada-370-xp.c
index e3acc3c631b7..6ec565d6939a 100644
--- a/drivers/clocksource/timer-armada-370-xp.c
+++ b/drivers/clocksource/timer-armada-370-xp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Marvell Armada 370/XP SoC timer handling.
*
@@ -7,10 +8,6 @@
* Gregory CLEMENT <gregory.clement@free-electrons.com>
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- *
* Timer 0 is used as free-running clocksource, while timer 1 is
* used as clock_event_device.
*
diff --git a/drivers/clocksource/timer-digicolor.c b/drivers/clocksource/timer-digicolor.c
index 1e984a4d8ad0..559aa96089c3 100644
--- a/drivers/clocksource/timer-digicolor.c
+++ b/drivers/clocksource/timer-digicolor.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Conexant Digicolor timer driver
*
@@ -11,10 +12,6 @@
* Copyright (C) 2013 Maxime Ripard
*
* Maxime Ripard <maxime.ripard@free-electrons.com>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
*/
/*
diff --git a/drivers/clocksource/timer-ixp4xx.c b/drivers/clocksource/timer-ixp4xx.c
index cbb184953510..720ed70a2964 100644
--- a/drivers/clocksource/timer-ixp4xx.c
+++ b/drivers/clocksource/timer-ixp4xx.c
@@ -19,8 +19,6 @@
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
-/* Goes away with OF conversion */
-#include <linux/platform_data/timer-ixp4xx.h>
/*
* Constants to make it easy to access Timer Control/Status registers
@@ -263,28 +261,6 @@ static struct platform_driver ixp4xx_timer_driver = {
};
builtin_platform_driver(ixp4xx_timer_driver);
-/**
- * ixp4xx_timer_setup() - Timer setup function to be called from boardfiles
- * @timerbase: physical base of timer block
- * @timer_irq: Linux IRQ number for the timer
- * @timer_freq: Fixed frequency of the timer
- */
-void __init ixp4xx_timer_setup(resource_size_t timerbase,
- int timer_irq,
- unsigned int timer_freq)
-{
- void __iomem *base;
-
- base = ioremap(timerbase, 0x100);
- if (!base) {
- pr_crit("IXP4xx: can't remap timer\n");
- return;
- }
- ixp4xx_timer_register(base, timer_irq, timer_freq);
-}
-EXPORT_SYMBOL_GPL(ixp4xx_timer_setup);
-
-#ifdef CONFIG_OF
static __init int ixp4xx_of_timer_init(struct device_node *np)
{
void __iomem *base;
@@ -315,4 +291,3 @@ static __init int ixp4xx_of_timer_init(struct device_node *np)
return ret;
}
TIMER_OF_DECLARE(ixp4xx, "intel,ixp4xx-timer", ixp4xx_of_timer_init);
-#endif
diff --git a/drivers/clocksource/timer-lpc32xx.c b/drivers/clocksource/timer-lpc32xx.c
index d51a62a79ef7..68eae6378bf3 100644
--- a/drivers/clocksource/timer-lpc32xx.c
+++ b/drivers/clocksource/timer-lpc32xx.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Clocksource driver for NXP LPC32xx/18xx/43xx timer
*
@@ -6,11 +7,6 @@
* Based on:
* time-efm32 Copyright (C) 2013 Pengutronix
* mach-lpc32xx/timer.c Copyright (C) 2009 - 2010 NXP Semiconductors
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- *
*/
#define pr_fmt(fmt) "%s: " fmt, __func__
diff --git a/drivers/clocksource/timer-orion.c b/drivers/clocksource/timer-orion.c
index 5101e834d78f..49e86cb70a7a 100644
--- a/drivers/clocksource/timer-orion.c
+++ b/drivers/clocksource/timer-orion.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Marvell Orion SoC timer handling.
*
* Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
*
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- *
* Timer 0 is used as free-running clocksource, while timer 1 is
* used as clock_event_device.
*/
diff --git a/drivers/clocksource/timer-oxnas-rps.c b/drivers/clocksource/timer-oxnas-rps.c
index 56c0cc32d0ac..d514b44e67dd 100644
--- a/drivers/clocksource/timer-oxnas-rps.c
+++ b/drivers/clocksource/timer-oxnas-rps.c
@@ -236,7 +236,7 @@ static int __init oxnas_rps_timer_init(struct device_node *np)
}
rps->irq = irq_of_parse_and_map(np, 0);
- if (rps->irq < 0) {
+ if (!rps->irq) {
ret = -EINVAL;
goto err_iomap;
}
diff --git a/drivers/clocksource/timer-pistachio.c b/drivers/clocksource/timer-pistachio.c
index 69c069e6f0a2..57b2197a0b67 100644
--- a/drivers/clocksource/timer-pistachio.c
+++ b/drivers/clocksource/timer-pistachio.c
@@ -1,11 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Pistachio clocksource based on general-purpose timers
*
* Copyright (C) 2015 Imagination Technologies
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
*/
#define pr_fmt(fmt) "%s: " fmt, __func__
diff --git a/drivers/clocksource/timer-riscv.c b/drivers/clocksource/timer-riscv.c
index 1767f8bf2013..593d5a957b69 100644
--- a/drivers/clocksource/timer-riscv.c
+++ b/drivers/clocksource/timer-riscv.c
@@ -34,7 +34,7 @@ static int riscv_clock_next_event(unsigned long delta,
static unsigned int riscv_clock_event_irq;
static DEFINE_PER_CPU(struct clock_event_device, riscv_clock_event) = {
.name = "riscv_timer_clockevent",
- .features = CLOCK_EVT_FEAT_ONESHOT,
+ .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_C3STOP,
.rating = 100,
.set_next_event = riscv_clock_next_event,
};
diff --git a/drivers/clocksource/timer-sp804.c b/drivers/clocksource/timer-sp804.c
index 401d592e85f5..e6a87f4af2b5 100644
--- a/drivers/clocksource/timer-sp804.c
+++ b/drivers/clocksource/timer-sp804.c
@@ -259,6 +259,11 @@ static int __init sp804_of_init(struct device_node *np, struct sp804_timer *time
struct clk *clk1, *clk2;
const char *name = of_get_property(np, "compatible", NULL);
+ if (initialized) {
+ pr_debug("%pOF: skipping further SP804 timer device\n", np);
+ return 0;
+ }
+
base = of_iomap(np, 0);
if (!base)
return -ENXIO;
@@ -270,11 +275,6 @@ static int __init sp804_of_init(struct device_node *np, struct sp804_timer *time
writel(0, timer1_base + timer->ctrl);
writel(0, timer2_base + timer->ctrl);
- if (initialized || !of_device_is_available(np)) {
- ret = -EINVAL;
- goto err;
- }
-
clk1 = of_clk_get(np, 0);
if (IS_ERR(clk1))
clk1 = NULL;
diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
index 0ba8155b8287..bb6ea6c19829 100644
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Allwinner A1X SoCs timer handling.
*
@@ -8,10 +9,6 @@
* Based on code from
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
* Benn Huang <benn@allwinnertech.com>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
*/
#include <linux/clk.h>
diff --git a/drivers/clocksource/timer-sun5i.c b/drivers/clocksource/timer-sun5i.c
index 552c5254390c..85900f7fc69f 100644
--- a/drivers/clocksource/timer-sun5i.c
+++ b/drivers/clocksource/timer-sun5i.c
@@ -1,13 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Allwinner SoCs hstimer driver.
*
* Copyright (C) 2013 Maxime Ripard
*
* Maxime Ripard <maxime.ripard@free-electrons.com>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
*/
#include <linux/clk.h>
diff --git a/drivers/clocksource/timer-ti-dm.c b/drivers/clocksource/timer-ti-dm.c
index 3e52c5226c4d..33609be0b304 100644
--- a/drivers/clocksource/timer-ti-dm.c
+++ b/drivers/clocksource/timer-ti-dm.c
@@ -828,8 +828,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
cpu_pm_register_notifier(&timer->nb);
}
- if (pdata)
- timer->errata = pdata->timer_errata;
+ timer->errata = pdata->timer_errata;
timer->pdev = pdev;
diff --git a/include/linux/platform_data/timer-ixp4xx.h b/include/linux/platform_data/timer-ixp4xx.h
deleted file mode 100644
index ee92ae7edaed..000000000000
--- a/include/linux/platform_data/timer-ixp4xx.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __TIMER_IXP4XX_H
-#define __TIMER_IXP4XX_H
-
-#include <linux/ioport.h>
-
-void __init ixp4xx_timer_setup(resource_size_t timerbase,
- int timer_irq,
- unsigned int timer_freq);
-
-#endif
^ permalink raw reply related [relevance 5%]
* Re: [PATCH] usb: f_fs: Fix crash during gadget function switching
2022-06-02 10:36 20% ` Michael Wu
@ 2022-06-02 13:05 0% ` John Keeping
0 siblings, 0 replies; 200+ results
From: John Keeping @ 2022-06-02 13:05 UTC (permalink / raw)
To: Michael Wu
Cc: quic_linyyuan, balbi, gregkh, axboe, quic_pkondeti, wcheng,
quic_ugoswami, andrew_gabbasov, plr.vincent, gustavoars,
linux-usb, linux-kernel, allwinner-opensource-support
On Thu, Jun 02, 2022 at 06:36:47PM +0800, Michael Wu wrote:
> On 5/31/2022 2:14 AM, John Keeping wrote:
> > On Tue, May 10, 2022 at 04:01:05PM +0800, Michael Wu wrote:
> > > On arm64 android12 and possibly other platforms, during the usb gadget
> > > function switching procedure (e.g. from mtp to midi), a synchronization
> > > issue could occur, which causes an use-after-free panic as shown below:
> >
> > I assume this is the path through ffs_epfile_io() with !io_data->aio.
> > It looks like there is no check there for epfile->ep == ep which the
> > other paths do check.
> >
> > Does the patch below fix the problem without needing to add a new
> > completion?
> >
>
> Hi John,
> Thanks for your suggestion. I've tested your patch and it did work -- When
> my issue occurs, (epfile->ep != ep) is satisfied, and the error is handled.
>
> > -- >8 --
> > --- a/drivers/usb/gadget/function/f_fs.c
> > +++ b/drivers/usb/gadget/function/f_fs.c
> > @@ -1084,16 +1084,22 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
> > */
> > usb_ep_dequeue(ep->ep, req);
> > wait_for_completion(&done);
> > - interrupted = ep->status < 0;
> > + interrupted = true;
> > }
> > - if (interrupted)
> > + spin_lock_irq(&epfile->ffs->eps_lock);
> > + if (epfile->ep != ep)
> > + ret = -ESHUTDOWN;
> > + else if (interrupted && ep->status < 0)
> > ret = -EINTR;
> > - else if (io_data->read && ep->status > 0)
> > - ret = __ffs_epfile_read_data(epfile, data, ep->status,
> > - &io_data->data);
> > else
> > ret = ep->status;
> > + spin_unlock_irq(&epfile->ffs->eps_lock);
> > +
> > + if (io_data->read && ret > 0)
> > + ret = __ffs_epfile_read_data(epfile, data, ret,
> > + &io_data->data);
> > +
> > goto error_mutex;
> > } else if (!(req = usb_ep_alloc_request(ep->ep, GFP_ATOMIC))) {
> > ret = -ENOMEM;
> Tested-by: Michael Wu <michael@allwinnertech.com>
>
>
> I also tested Linyu's patch [1][2]. It also works.
> Is there a preference on these solutions?
Linyu's patch is more complete and covers some cases that I missed with
this attempt, so let's drop this thread and focus on that series.
^ permalink raw reply [relevance 0%]
* Re: [PATCH] usb: f_fs: Fix crash during gadget function switching
@ 2022-06-02 10:36 20% ` Michael Wu
2022-06-02 13:05 0% ` John Keeping
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-06-02 10:36 UTC (permalink / raw)
To: John Keeping
Cc: quic_linyyuan, balbi, gregkh, axboe, quic_pkondeti, wcheng,
quic_ugoswami, andrew_gabbasov, plr.vincent, gustavoars,
linux-usb, linux-kernel, allwinner-opensource-support
On 5/31/2022 2:14 AM, John Keeping wrote:
> On Tue, May 10, 2022 at 04:01:05PM +0800, Michael Wu wrote:
>> On arm64 android12 and possibly other platforms, during the usb gadget
>> function switching procedure (e.g. from mtp to midi), a synchronization
>> issue could occur, which causes an use-after-free panic as shown below:
>
> I assume this is the path through ffs_epfile_io() with !io_data->aio.
> It looks like there is no check there for epfile->ep == ep which the
> other paths do check.
>
> Does the patch below fix the problem without needing to add a new
> completion?
>
Hi John,
Thanks for your suggestion. I've tested your patch and it did work --
When my issue occurs, (epfile->ep != ep) is satisfied, and the error is
handled.
> -- >8 --
> --- a/drivers/usb/gadget/function/f_fs.c
> +++ b/drivers/usb/gadget/function/f_fs.c
> @@ -1084,16 +1084,22 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
> */
> usb_ep_dequeue(ep->ep, req);
> wait_for_completion(&done);
> - interrupted = ep->status < 0;
> + interrupted = true;
> }
>
> - if (interrupted)
> + spin_lock_irq(&epfile->ffs->eps_lock);
> + if (epfile->ep != ep)
> + ret = -ESHUTDOWN;
> + else if (interrupted && ep->status < 0)
> ret = -EINTR;
> - else if (io_data->read && ep->status > 0)
> - ret = __ffs_epfile_read_data(epfile, data, ep->status,
> - &io_data->data);
> else
> ret = ep->status;
> + spin_unlock_irq(&epfile->ffs->eps_lock);
> +
> + if (io_data->read && ret > 0)
> + ret = __ffs_epfile_read_data(epfile, data, ret,
> + &io_data->data);
> +
> goto error_mutex;
> } else if (!(req = usb_ep_alloc_request(ep->ep, GFP_ATOMIC))) {
> ret = -ENOMEM;
Tested-by: Michael Wu <michael@allwinnertech.com>
I also tested Linyu's patch [1][2]. It also works.
Is there a preference on these solutions?
[1]
https://lore.kernel.org/linux-usb/1654056916-2062-2-git-send-email-quic_linyyuan@quicinc.com/
[2]
https://lore.kernel.org/linux-usb/1654056916-2062-3-git-send-email-quic_linyyuan@quicinc.com/
--
Regards,
Michael Wu
^ permalink raw reply [relevance 20%]
* [tip: timers/core] clocksource/drivers/timer-sun4i: Convert to SPDX identifier
2022-05-10 17:24 9% ` [patch 09/10] clocksource/drivers/timer-sun4i: Convert to SPDX identifier Thomas Gleixner
2022-05-22 7:36 0% ` Jernej Škrabec
@ 2022-05-27 8:35 9% ` tip-bot2 for Thomas Gleixner
1 sibling, 0 replies; 200+ results
From: tip-bot2 for Thomas Gleixner @ 2022-05-27 8:35 UTC (permalink / raw)
To: linux-tip-commits
Cc: Thomas Gleixner, Daniel Lezcano, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, linux-sunxi, x86, linux-kernel
The following commit has been merged into the timers/core branch of tip:
Commit-ID: 60bff9f8ef4bdd1eb24769deb66084dcfd3888d2
Gitweb: https://git.kernel.org/tip/60bff9f8ef4bdd1eb24769deb66084dcfd3888d2
Author: Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Tue, 10 May 2022 19:24:49 +02:00
Committer: Daniel Lezcano <daniel.lezcano@linaro.org>
CommitterDate: Wed, 18 May 2022 11:08:59 +02:00
clocksource/drivers/timer-sun4i: Convert to SPDX identifier
The license information clearly states GPL version 2 only. The extra text
which excludes warranties is an excerpt of the corresponding GPLv2 clause
11.
So the SPDX identifier covers it completely.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Samuel Holland <samuel@sholland.org>
Cc: linux-sunxi@lists.linux.dev
Link: https://lore.kernel.org/r/20220510171254.908144392@linutronix.de
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
drivers/clocksource/timer-sun4i.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/clocksource/timer-sun4i.c b/drivers/clocksource/timer-sun4i.c
index 0ba8155..bb6ea6c 100644
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Allwinner A1X SoCs timer handling.
*
@@ -8,10 +9,6 @@
* Based on code from
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
* Benn Huang <benn@allwinnertech.com>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
*/
#include <linux/clk.h>
^ permalink raw reply related [relevance 9%]
* Re: [patch 09/10] clocksource/drivers/timer-sun4i: Convert to SPDX identifier
2022-05-10 17:24 9% ` [patch 09/10] clocksource/drivers/timer-sun4i: Convert to SPDX identifier Thomas Gleixner
@ 2022-05-22 7:36 0% ` Jernej Škrabec
2022-05-27 8:35 9% ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
1 sibling, 0 replies; 200+ results
From: Jernej Škrabec @ 2022-05-22 7:36 UTC (permalink / raw)
To: LKML, Thomas Gleixner
Cc: linux-spdx, Daniel Lezcano, Chen-Yu Tsai, Samuel Holland, linux-sunxi
Dne torek, 10. maj 2022 ob 19:24:49 CEST je Thomas Gleixner napisal(a):
> The license information clearly states GPL version 2 only. The extra text
> which excludes warranties is an excerpt of the corresponding GPLv2 clause
> 11.
>
> So the SPDX identifier covers it completely.
>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> Cc: Chen-Yu Tsai <wens@csie.org>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> Cc: Samuel Holland <samuel@sholland.org>
> Cc: linux-sunxi@lists.linux.dev
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Best regards,
Jernej
> ---
> drivers/clocksource/timer-sun4i.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> --- a/drivers/clocksource/timer-sun4i.c
> +++ b/drivers/clocksource/timer-sun4i.c
> @@ -1,3 +1,4 @@
> +// SPDX-License-Identifier: GPL-2.0
> /*
> * Allwinner A1X SoCs timer handling.
> *
> @@ -8,10 +9,6 @@
> * Based on code from
> * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
> * Benn Huang <benn@allwinnertech.com>
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2. This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> */
>
> #include <linux/clk.h>
^ permalink raw reply [relevance 0%]
* [PATCH 09/12] riscv: add RISC-V Svpbmt extension support
@ 2022-05-11 19:29 4% ` Heiko Stuebner
0 siblings, 0 replies; 200+ results
From: Heiko Stuebner @ 2022-05-11 19:29 UTC (permalink / raw)
To: palmer, paul.walmsley, aou
Cc: linux-riscv, linux-kernel, wefu, liush, guoren, atishp, anup,
drew, hch, arnd, wens, maxime, gfavor, andrea.mondelli, behrensj,
xinhaoqu, mick, allen.baum, jscheid, rtrauben, samuel, cmuellner,
philipp.tomsich, Heiko Stuebner, Wei Wu, Daniel Lustig,
Bill Huffman
Svpbmt (the S should be capitalized) is the
"Supervisor-mode: page-based memory types" extension
that specifies attributes for cacheability, idempotency
and ordering.
The relevant settings are done in special bits in PTEs:
Here is the svpbmt PTE format:
| 63 | 62-61 | 60-8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
N MT RSW D A G U X W R V
^
Of the Reserved bits [63:54] in a leaf PTE, the high bit is already
allocated (as the N bit), so bits [62:61] are used as the MT (aka
MemType) field. This field specifies one of three memory types that
are close equivalents (or equivalent in effect) to the three main x86
and ARMv8 memory types - as shown in the following table.
RISC-V
Encoding &
MemType RISC-V Description
---------- ------------------------------------------------
00 - PMA Normal Cacheable, No change to implied PMA memory type
01 - NC Non-cacheable, idempotent, weakly-ordered Main Memory
10 - IO Non-cacheable, non-idempotent, strongly-ordered I/O memory
11 - Rsvd Reserved for future standard use
As the extension will not be present on all implementations,
implement a method to handle cpufeatures via alternatives
to not incur runtime penalties on cpu variants not supporting
specific extensions and patch relevant code parts at runtime.
Co-developed-by: Wei Fu <wefu@redhat.com>
Signed-off-by: Wei Fu <wefu@redhat.com>
Co-developed-by: Liu Shaohua <liush@allwinnertech.com>
Signed-off-by: Liu Shaohua <liush@allwinnertech.com>
Co-developed-by: Guo Ren <guoren@kernel.org>
Signed-off-by: Guo Ren <guoren@kernel.org>
[moved to use the alternatives mechanism]
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Drew Fustini <drew@beagleboard.org>
Cc: Wei Fu <wefu@redhat.com>
Cc: Wei Wu <lazyparser@gmail.com>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Maxime Ripard <maxime@cerno.tech>
Cc: Daniel Lustig <dlustig@nvidia.com>
Cc: Greg Favor <gfavor@ventanamicro.com>
Cc: Andrea Mondelli <andrea.mondelli@huawei.com>
Cc: Jonathan Behrens <behrensj@mit.edu>
Cc: Xinhaoqu (Freddie) <xinhaoqu@huawei.com>
Cc: Bill Huffman <huffman@cadence.com>
Cc: Nick Kossifidis <mick@ics.forth.gr>
Cc: Allen Baum <allen.baum@esperantotech.com>
Cc: Josh Scheid <jscheid@ventanamicro.com>
Cc: Richard Trauben <rtrauben@gmail.com>
---
arch/riscv/Kconfig | 13 +++++
arch/riscv/include/asm/alternative.h | 3 ++
arch/riscv/include/asm/errata_list.h | 15 ++++++
arch/riscv/include/asm/hwcap.h | 1 +
arch/riscv/include/asm/pgtable-32.h | 9 ++++
arch/riscv/include/asm/pgtable-64.h | 47 +++++++++++++++++
arch/riscv/include/asm/pgtable-bits.h | 4 --
arch/riscv/include/asm/pgtable.h | 29 +++++++++--
arch/riscv/kernel/alternative.c | 2 +
arch/riscv/kernel/cpu.c | 1 +
arch/riscv/kernel/cpufeature.c | 75 ++++++++++++++++++++++++++-
11 files changed, 189 insertions(+), 10 deletions(-)
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 1ec07aa582a3..90317a3d40a8 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -344,6 +344,19 @@ config RISCV_ISA_C
If you don't know what to do here, say Y.
+config RISCV_ISA_SVPBMT
+ bool "SVPBMT extension support"
+ depends on 64BIT && MMU
+ select RISCV_ALTERNATIVE
+ default y
+ help
+ Adds support to dynamically detect the presence of the SVPBMT extension
+ (Supervisor-mode: page-based memory types) and enable its usage.
+
+ The SVPBMT extension is only available on 64Bit cpus.
+
+ If you don't know what to do here, say Y.
+
config FPU
bool "FPU support"
default y
diff --git a/arch/riscv/include/asm/alternative.h b/arch/riscv/include/asm/alternative.h
index 0859529ff08e..64936356c37c 100644
--- a/arch/riscv/include/asm/alternative.h
+++ b/arch/riscv/include/asm/alternative.h
@@ -42,6 +42,9 @@ void sifive_errata_patch_func(struct alt_entry *begin, struct alt_entry *end,
unsigned long archid, unsigned long impid,
unsigned int stage);
+void riscv_cpufeature_patch_func(struct alt_entry *begin, struct alt_entry *end,
+ unsigned int stage);
+
#else /* CONFIG_RISCV_ALTERNATIVE */
static inline void apply_boot_alternatives(void) { }
diff --git a/arch/riscv/include/asm/errata_list.h b/arch/riscv/include/asm/errata_list.h
index 5f1046e82d9f..dbfcd9b72bd8 100644
--- a/arch/riscv/include/asm/errata_list.h
+++ b/arch/riscv/include/asm/errata_list.h
@@ -14,6 +14,9 @@
#define ERRATA_SIFIVE_NUMBER 2
#endif
+#define CPUFEATURE_SVPBMT 0
+#define CPUFEATURE_NUMBER 1
+
#ifdef __ASSEMBLY__
#define ALT_INSN_FAULT(x) \
@@ -34,6 +37,18 @@ asm(ALTERNATIVE("sfence.vma %0", "sfence.vma", SIFIVE_VENDOR_ID, \
ERRATA_SIFIVE_CIP_1200, CONFIG_ERRATA_SIFIVE_CIP_1200) \
: : "r" (addr) : "memory")
+/*
+ * _val is marked as "will be overwritten", so need to set it to 0
+ * in the default case.
+ */
+#define ALT_SVPBMT_SHIFT 61
+#define ALT_SVPBMT(_val, prot) \
+asm(ALTERNATIVE("li %0, 0\t\nnop", "li %0, %1\t\nslli %0,%0,%2", 0, \
+ CPUFEATURE_SVPBMT, CONFIG_RISCV_ISA_SVPBMT) \
+ : "=r"(_val) \
+ : "I"(prot##_SVPBMT >> ALT_SVPBMT_SHIFT), \
+ "I"(ALT_SVPBMT_SHIFT))
+
#endif /* __ASSEMBLY__ */
#endif
diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h
index 0734e42f74f2..4e2486881840 100644
--- a/arch/riscv/include/asm/hwcap.h
+++ b/arch/riscv/include/asm/hwcap.h
@@ -52,6 +52,7 @@ extern unsigned long elf_hwcap;
*/
enum riscv_isa_ext_id {
RISCV_ISA_EXT_SSCOFPMF = RISCV_ISA_EXT_BASE,
+ RISCV_ISA_EXT_SVPBMT,
RISCV_ISA_EXT_ID_MAX = RISCV_ISA_EXT_MAX,
};
diff --git a/arch/riscv/include/asm/pgtable-32.h b/arch/riscv/include/asm/pgtable-32.h
index e266a4fe7f43..59ba1fbaf784 100644
--- a/arch/riscv/include/asm/pgtable-32.h
+++ b/arch/riscv/include/asm/pgtable-32.h
@@ -24,4 +24,13 @@
*/
#define _PAGE_PFN_MASK GENMASK(31, 10)
+#define _PAGE_NOCACHE 0
+#define _PAGE_IO 0
+#define _PAGE_MTMASK 0
+
+/* Set of bits to preserve across pte_modify() */
+#define _PAGE_CHG_MASK (~(unsigned long)(_PAGE_PRESENT | _PAGE_READ | \
+ _PAGE_WRITE | _PAGE_EXEC | \
+ _PAGE_USER | _PAGE_GLOBAL))
+
#endif /* _ASM_RISCV_PGTABLE_32_H */
diff --git a/arch/riscv/include/asm/pgtable-64.h b/arch/riscv/include/asm/pgtable-64.h
index 15f3ad5aee4f..2354501f0203 100644
--- a/arch/riscv/include/asm/pgtable-64.h
+++ b/arch/riscv/include/asm/pgtable-64.h
@@ -8,6 +8,7 @@
#include <linux/bits.h>
#include <linux/const.h>
+#include <asm/errata_list.h>
extern bool pgtable_l4_enabled;
extern bool pgtable_l5_enabled;
@@ -73,6 +74,52 @@ typedef struct {
*/
#define _PAGE_PFN_MASK GENMASK(53, 10)
+/*
+ * [62:61] Svpbmt Memory Type definitions:
+ *
+ * 00 - PMA Normal Cacheable, No change to implied PMA memory type
+ * 01 - NC Non-cacheable, idempotent, weakly-ordered Main Memory
+ * 10 - IO Non-cacheable, non-idempotent, strongly-ordered I/O memory
+ * 11 - Rsvd Reserved for future standard use
+ */
+#define _PAGE_NOCACHE_SVPBMT (1UL << 61)
+#define _PAGE_IO_SVPBMT (1UL << 62)
+#define _PAGE_MTMASK_SVPBMT (_PAGE_NOCACHE_SVPBMT | _PAGE_IO_SVPBMT)
+
+static inline u64 riscv_page_mtmask(void)
+{
+ u64 val;
+
+ ALT_SVPBMT(val, _PAGE_MTMASK);
+ return val;
+}
+
+static inline u64 riscv_page_nocache(void)
+{
+ u64 val;
+
+ ALT_SVPBMT(val, _PAGE_NOCACHE);
+ return val;
+}
+
+static inline u64 riscv_page_io(void)
+{
+ u64 val;
+
+ ALT_SVPBMT(val, _PAGE_IO);
+ return val;
+}
+
+#define _PAGE_NOCACHE riscv_page_nocache()
+#define _PAGE_IO riscv_page_io()
+#define _PAGE_MTMASK riscv_page_mtmask()
+
+/* Set of bits to preserve across pte_modify() */
+#define _PAGE_CHG_MASK (~(unsigned long)(_PAGE_PRESENT | _PAGE_READ | \
+ _PAGE_WRITE | _PAGE_EXEC | \
+ _PAGE_USER | _PAGE_GLOBAL | \
+ _PAGE_MTMASK))
+
static inline int pud_present(pud_t pud)
{
return (pud_val(pud) & _PAGE_PRESENT);
diff --git a/arch/riscv/include/asm/pgtable-bits.h b/arch/riscv/include/asm/pgtable-bits.h
index e571fa954afc..b9e13a8fe2b7 100644
--- a/arch/riscv/include/asm/pgtable-bits.h
+++ b/arch/riscv/include/asm/pgtable-bits.h
@@ -29,10 +29,6 @@
#define _PAGE_PFN_SHIFT 10
-/* Set of bits to preserve across pte_modify() */
-#define _PAGE_CHG_MASK (~(unsigned long)(_PAGE_PRESENT | _PAGE_READ | \
- _PAGE_WRITE | _PAGE_EXEC | \
- _PAGE_USER | _PAGE_GLOBAL))
/*
* when all of R/W/X are zero, the PTE is a pointer to the next level
* of the page table; otherwise, it is a leaf PTE.
diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
index faba543e2b08..c55341b72de1 100644
--- a/arch/riscv/include/asm/pgtable.h
+++ b/arch/riscv/include/asm/pgtable.h
@@ -179,11 +179,8 @@ extern struct pt_alloc_ops pt_ops __initdata;
#define PAGE_TABLE __pgprot(_PAGE_TABLE)
-/*
- * The RISC-V ISA doesn't yet specify how to query or modify PMAs, so we can't
- * change the properties of memory regions.
- */
-#define _PAGE_IOREMAP _PAGE_KERNEL
+#define _PAGE_IOREMAP ((_PAGE_KERNEL & ~_PAGE_MTMASK) | _PAGE_IO)
+#define PAGE_KERNEL_IO __pgprot(_PAGE_IOREMAP)
extern pgd_t swapper_pg_dir[];
@@ -523,6 +520,28 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
return ptep_test_and_clear_young(vma, address, ptep);
}
+#define pgprot_noncached pgprot_noncached
+static inline pgprot_t pgprot_noncached(pgprot_t _prot)
+{
+ unsigned long prot = pgprot_val(_prot);
+
+ prot &= ~_PAGE_MTMASK;
+ prot |= _PAGE_IO;
+
+ return __pgprot(prot);
+}
+
+#define pgprot_writecombine pgprot_writecombine
+static inline pgprot_t pgprot_writecombine(pgprot_t _prot)
+{
+ unsigned long prot = pgprot_val(_prot);
+
+ prot &= ~_PAGE_MTMASK;
+ prot |= _PAGE_NOCACHE;
+
+ return __pgprot(prot);
+}
+
/*
* THP functions
*/
diff --git a/arch/riscv/kernel/alternative.c b/arch/riscv/kernel/alternative.c
index 223770b3945c..e6c9de9f9ba6 100644
--- a/arch/riscv/kernel/alternative.c
+++ b/arch/riscv/kernel/alternative.c
@@ -63,6 +63,8 @@ static void __init_or_module _apply_alternatives(struct alt_entry *begin,
struct alt_entry *end,
unsigned int stage)
{
+ riscv_cpufeature_patch_func(begin, end, stage);
+
if (!vendor_patch_func)
return;
diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c
index ccb617791e56..40c8776aec12 100644
--- a/arch/riscv/kernel/cpu.c
+++ b/arch/riscv/kernel/cpu.c
@@ -88,6 +88,7 @@ int riscv_of_parent_hartid(struct device_node *node)
*/
static struct riscv_isa_ext_data isa_ext_arr[] = {
__RISCV_ISA_EXT_DATA(sscofpmf, RISCV_ISA_EXT_SSCOFPMF),
+ __RISCV_ISA_EXT_DATA(svpbmt, RISCV_ISA_EXT_SVPBMT),
__RISCV_ISA_EXT_DATA("", RISCV_ISA_EXT_MAX),
};
diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c
index 1b2d42d7f589..f514b949c6a7 100644
--- a/arch/riscv/kernel/cpufeature.c
+++ b/arch/riscv/kernel/cpufeature.c
@@ -8,9 +8,15 @@
#include <linux/bitmap.h>
#include <linux/ctype.h>
+#include <linux/libfdt.h>
+#include <linux/module.h>
#include <linux/of.h>
-#include <asm/processor.h>
+#include <asm/alternative.h>
+#include <asm/errata_list.h>
#include <asm/hwcap.h>
+#include <asm/patch.h>
+#include <asm/pgtable.h>
+#include <asm/processor.h>
#include <asm/smp.h>
#include <asm/switch_to.h>
@@ -192,6 +198,7 @@ void __init riscv_fill_hwcap(void)
set_bit(*ext - 'a', this_isa);
} else {
SET_ISA_EXT_MAP("sscofpmf", RISCV_ISA_EXT_SSCOFPMF);
+ SET_ISA_EXT_MAP("svpbmt", RISCV_ISA_EXT_SVPBMT);
}
#undef SET_ISA_EXT_MAP
}
@@ -237,3 +244,69 @@ void __init riscv_fill_hwcap(void)
static_branch_enable(&cpu_hwcap_fpu);
#endif
}
+
+#ifdef CONFIG_RISCV_ALTERNATIVE
+struct cpufeature_info {
+ char name[ERRATA_STRING_LENGTH_MAX];
+ bool (*check_func)(unsigned int stage);
+};
+
+static bool __init_or_module cpufeature_svpbmt_check_func(unsigned int stage)
+{
+#ifdef CONFIG_RISCV_ISA_SVPBMT
+ return riscv_isa_extension_available(NULL, SVPBMT);
+#endif
+
+ return false;
+}
+
+static const struct cpufeature_info __initdata_or_module
+cpufeature_list[CPUFEATURE_NUMBER] = {
+ {
+ .name = "svpbmt",
+ .check_func = cpufeature_svpbmt_check_func
+ },
+};
+
+static u32 __init_or_module cpufeature_probe(unsigned int stage)
+{
+ const struct cpufeature_info *info;
+ u32 cpu_req_feature = 0;
+ int idx;
+
+ for (idx = 0; idx < CPUFEATURE_NUMBER; idx++) {
+ info = &cpufeature_list[idx];
+
+ if (info->check_func(stage))
+ cpu_req_feature |= (1U << idx);
+ }
+
+ return cpu_req_feature;
+}
+
+void __init_or_module riscv_cpufeature_patch_func(struct alt_entry *begin,
+ struct alt_entry *end,
+ unsigned int stage)
+{
+ u32 cpu_req_feature = cpufeature_probe(stage);
+ u32 cpu_apply_feature = 0;
+ struct alt_entry *alt;
+ u32 tmp;
+
+ for (alt = begin; alt < end; alt++) {
+ if (alt->vendor_id != 0)
+ continue;
+ if (alt->errata_id >= CPUFEATURE_NUMBER) {
+ WARN(1, "This feature id:%d is not in kernel cpufeature list",
+ alt->errata_id);
+ continue;
+ }
+
+ tmp = (1U << alt->errata_id);
+ if (cpu_req_feature & tmp) {
+ patch_text_nosync(alt->old_ptr, alt->alt_ptr, alt->alt_len);
+ cpu_apply_feature |= tmp;
+ }
+ }
+}
+#endif
--
2.35.1
^ permalink raw reply related [relevance 4%]
* [patch 09/10] clocksource/drivers/timer-sun4i: Convert to SPDX identifier
@ 2022-05-10 17:24 9% ` Thomas Gleixner
2022-05-22 7:36 0% ` Jernej Škrabec
2022-05-27 8:35 9% ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
0 siblings, 2 replies; 200+ results
From: Thomas Gleixner @ 2022-05-10 17:24 UTC (permalink / raw)
To: LKML
Cc: linux-spdx, Daniel Lezcano, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, linux-sunxi
The license information clearly states GPL version 2 only. The extra text
which excludes warranties is an excerpt of the corresponding GPLv2 clause
11.
So the SPDX identifier covers it completely.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Samuel Holland <samuel@sholland.org>
Cc: linux-sunxi@lists.linux.dev
---
drivers/clocksource/timer-sun4i.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
--- a/drivers/clocksource/timer-sun4i.c
+++ b/drivers/clocksource/timer-sun4i.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Allwinner A1X SoCs timer handling.
*
@@ -8,10 +9,6 @@
* Based on code from
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
* Benn Huang <benn@allwinnertech.com>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
*/
#include <linux/clk.h>
^ permalink raw reply [relevance 9%]
* [PATCH] usb: f_fs: Fix crash during gadget function switching
@ 2022-05-10 8:01 15% Michael Wu
0 siblings, 1 reply; 200+ results
From: Michael Wu @ 2022-05-10 8:01 UTC (permalink / raw)
To: balbi, gregkh, john, axboe, quic_pkondeti, wcheng, quic_ugoswami,
andrew_gabbasov, plr.vincent
Cc: gustavoars, linux-usb, linux-kernel, allwinner-opensource-support
On arm64 android12 and possibly other platforms, during the usb gadget
function switching procedure (e.g. from mtp to midi), a synchronization
issue could occur, which causes an use-after-free panic as shown below:
[ 119.787946][ T1] init: Control message: Processed ctl.start for 'adbd' from pid: 395 (system_server)
[ 119.790006][ T32] android_work: sent uevent USB_STATE=DISCONNECTED
[ 119.805457][ T2309] usercopy: Kernel memory exposure attempt detected from SLUB object 'kmalloc-512' (offset 0, size 1802201963)!
[ 119.819368][ T2309] ------------[ cut here ]------------
[ 119.825359][ T2309] kernel BUG at mm/usercopy.c:99!
[ 119.830868][ T2309] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
[ 119.837843][ T2309] Modules linked in: sunxi_usbc ohci_sunxi ehci_sunxi sunxi_hci mali_kbase(O) sunxi_rfkill
[ 119.848904][ T2309] CPU: 3 PID: 2309 Comm: MtpServer Tainted: G O 5.4.125+ #9
[ 119.858411][ T2309] Hardware name: sun50iw9 (DT)
[ 119.863615][ T2309] pstate: 60400005 (nZCv daif +PAN -UAO)
[ 119.869790][ T2309] pc : usercopy_abort+0x90/0x94
[ 119.875078][ T2309] lr : usercopy_abort+0x90/0x94
[ 119.880357][ T2309] sp : ffffffc019e13ad0
[ 119.884858][ T2309] x29: ffffffc019e13ae0 x28: 0000000000000000
[ 119.891601][ T2309] x27: ffffff8030e7c030 x26: 0000000000000000
[ 119.898347][ T2309] x25: 0000000000000001 x24: ffffff806e25bd30
[ 119.905092][ T2309] x23: 000000006b6b6b6b x22: ffffff807c804680
[ 119.911838][ T2309] x21: ffffff8041410200 x20: 0000000000000001
[ 119.918581][ T2309] x19: 000000006b6b6b6b x18: ffffffc019e05058
[ 119.925326][ T2309] x17: 0000000000000000 x16: 00000000000002e3
[ 119.932073][ T2309] x15: 0000000000000000 x14: 0000000000000010
[ 119.938820][ T2309] x13: ffffffc0103972c0 x12: 0000000000000001
[ 119.945565][ T2309] x11: 0000000000000000 x10: 0000000000000002
[ 119.952311][ T2309] x9 : 54fea1fa84857d00 x8 : 54fea1fa84857d00
[ 119.959056][ T2309] x7 : 0000000000000001 x6 : 0000000000000000
[ 119.965801][ T2309] x5 : ffffff807f3a9038 x4 : 0000000000000000
[ 119.972546][ T2309] x3 : 0000000000000000 x2 : ffffff807f3a8f40
[ 119.979293][ T2309] x1 : ffffffc0114e94de x0 : 000000000000006d
[ 119.986038][ T2309] Call trace:
[ 119.989569][ T2309] usercopy_abort+0x90/0x94
[ 119.994466][ T2309] __check_heap_object+0x16c/0x188
[ 120.000041][ T2309] __check_object_size+0x120/0x210
[ 120.005620][ T2309] ffs_epfile_io+0x574/0x6bc
[ 120.010612][ T2309] ffs_epfile_read_iter+0x10c/0x198
[ 120.016284][ T2309] __vfs_read+0x178/0x1e0
[ 120.020980][ T2309] vfs_read+0x1d0/0x284
[ 120.025481][ T2309] ksys_read+0x74/0xe0
[ 120.029884][ T2309] __arm64_sys_read+0x1c/0x28
[ 120.034977][ T2309] el0_svc_common+0xb8/0x1cc
[ 120.039967][ T2309] el0_svc_compat_handler+0x1c/0x28
[ 120.045649][ T2309] el0_svc_compat+0x8/0x24
[ 120.050453][ T2309] Code: f90003e4 aa0803e1 aa0903e4 97fa0fa9 (d4210000)
[ 120.058109][ T2309] ---[ end trace a246be823ca7d164 ]---
[ 120.064073][ T2309] Kernel panic - not syncing: Fatal exception
[ 120.070723][ T2309] SMP: stopping secondary CPUs
[ 120.076030][ T2309] Kernel Offset: disabled
[ 120.080757][ T2309] CPU features: 0x00010002,20002004
[ 120.086438][ T2309] Memory Limit: none
[ 120.090657][ T2309] ---[ end Kernel panic - not syncing: Fatal exception ]---
Two processes P1 and P2 engaged in the switching procedure:
- P1 (e.g. MtpServer) calls 'ffs_epfile_io' (alias 'C'),
- P2 (e.g. usb@1.0-service) calls 'ffs_epfile_io_complete' (alias 'A')
and the 'ffs_func_unbind' (alias 'B').
P1 P2
| |
| configfs_write_file|
| gadget_dev_desc_UDC_store|
| unregister_gadget|
| usb_gadget_unregister_driver|
| usb_gadget_remove_driver|
| |
| |________________________________________
| | |
| usb_gadget_disconnect| |
| sunxi_udc_pullup| |
| sunxi_udc_set_pullup| |
| configfs_composite_disconnect| |
| composite_disconnect| |
| reset_config| |
| ffs_func_disable| |
| ffs_func_set_alt| |
| ffs_func_eps_disable| |
| usb_ep_disable| |
| sunxi_udc_ep_disable| |
| sunxi_udc_nuke| configfs_composite_unbind|
| sunxi_udc_done| |
| | |
|ffs_epfile_read_iter | purge_configs_funcs|
| | |
| complete | |
|ffs_epfile_io [C] <------------ |ffs_epfile_io_complete [A] |
| + | |
| + |
| + |
| + [1] complete |
| +++++++++++++++++++++++++++++++++++++++++++++++> ffs_func_unbind[B]|
| |
On gadget switching, 'A' will raise a completion, which wakes up 'P1' to
resume 'C'. Then 'C' references 'ep->status' for branch jumping etc.
On the other path, 'B' keeps running and exec 'kfree(func->eps)', which
actually free 'ep->status' referenced by 'C'.
This leads to the panic: `usercopy: Kernel memory exposure attempt detected
from SLUB object 'kmalloc-512' (offset 0, size 1802201963)!`
To fix this issue, we add a completion[1] to ensure that 'C' completes
before 'B'.
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
drivers/usb/gadget/function/f_fs.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 4585ee3a444a8..c3e918cd00170 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -124,6 +124,7 @@ struct ffs_ep {
u8 num;
int status; /* P: epfile->mutex */
+ void *context;
};
struct ffs_epfile {
@@ -246,6 +247,7 @@ ffs_sb_create_file(struct super_block *sb, const char *name, void *data,
DEFINE_MUTEX(ffs_lock);
EXPORT_SYMBOL_GPL(ffs_lock);
+DECLARE_COMPLETION(io_done);
static struct ffs_dev *_ffs_find_dev(const char *name);
static struct ffs_dev *_ffs_alloc_dev(void);
@@ -711,6 +713,8 @@ static void ffs_epfile_io_complete(struct usb_ep *_ep, struct usb_request *req)
if (req->context) {
struct ffs_ep *ep = _ep->driver_data;
ep->status = req->status ? req->status : req->actual;
+ if (ep->status == -ESHUTDOWN)
+ ep->context = &io_done;
complete(req->context);
}
}
@@ -1094,6 +1098,10 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
&io_data->data);
else
ret = ep->status;
+
+ if (ep->status == -ESHUTDOWN && ep->context)
+ complete(ep->context);
+
goto error_mutex;
} else if (!(req = usb_ep_alloc_request(ep->ep, GFP_ATOMIC))) {
ret = -ENOMEM;
@@ -3607,6 +3615,12 @@ static void ffs_func_unbind(struct usb_configuration *c,
/* cleanup after autoconfig */
spin_lock_irqsave(&func->ffs->eps_lock, flags);
while (count--) {
+ if (ep->status == -ESHUTDOWN && ep->context) {
+ spin_unlock_irqrestore(&func->ffs->eps_lock, flags);
+ wait_for_completion(ep->context);
+ spin_lock_irqsave(&func->ffs->eps_lock, flags);
+ }
+
if (ep->ep && ep->req)
usb_ep_free_request(ep->ep, ep->req);
ep->req = NULL;
--
2.29.0
^ permalink raw reply related [relevance 15%]
* Re: [PATCH] thermal: devfreq_cooling: use local ops instead of global ops
2022-04-20 10:32 0% ` Lukasz Luba
@ 2022-04-23 10:49 14% ` Kant Fan
0 siblings, 0 replies; 200+ results
From: Kant Fan @ 2022-04-23 10:49 UTC (permalink / raw)
To: Lukasz Luba
Cc: amitk, linux-pm, linux-kernel, allwinner-opensource-support,
stable, orjan.eide, edubezval, javi.merino, daniel.lezcano,
rui.zhang
On 20/04/2022 18:32, Lukasz Luba wrote:
> Hi Kant,
>
> On 4/19/22 16:49, Kant Fan wrote:
>> On 29/03/2022 14:59, Lukasz Luba wrote:
>>>
>>>
>>> On 3/25/22 09:44, Kant Fan wrote:
>>>> commit 7b62935828266658714f81d4e9176edad808dc70 upstream.
>>>>
>>>> Fix access illegal address problem in following condition:
>>>> There are muti devfreq cooling devices in system, some of them register
>>>> with dfc_power but other does not, power model ops such as
>>>> state2power will
>>>> append to global devfreq_cooling_ops when the cooling device with
>>>> dfc_power register. It makes the cooling device without dfc_power
>>>> also use devfreq_cooling_ops after appending when register later by
>>>> of_devfreq_cooling_register_power() or of_devfreq_cooling_register().
>>>>
>>>> IPA governor regards the cooling devices without dfc_power as a
>>>> power actor
>>>> because they also have power model ops, and will access illegal
>>>> address at
>>>> dfc->power_ops when execute cdev->ops->get_requested_power or
>>>> cdev->ops->power2state. As the calltrace below shows:
>>>>
>>>> Unable to handle kernel NULL pointer dereference at virtual address
>>>> 00000008
>>>> ...
>>>> calltrace:
>>>> [<c06e5488>] devfreq_cooling_power2state+0x24/0x184
>>>> [<c06df420>] power_actor_set_power+0x54/0xa8
>>>> [<c06e3774>] power_allocator_throttle+0x770/0x97c
>>>> [<c06dd120>] handle_thermal_trip+0x1b4/0x26c
>>>> [<c06ddb48>] thermal_zone_device_update+0x154/0x208
>>>> [<c014159c>] process_one_work+0x1ec/0x36c
>>>> [<c0141c58>] worker_thread+0x204/0x2ec
>>>> [<c0146788>] kthread+0x140/0x154
>>>> [<c01010e8>] ret_from_fork+0x14/0x2c
>>>>
>>>> Fixes: a76caf55e5b35 ("thermal: Add devfreq cooling")
>>>> Cc: stable@vger.kernel.org # 4.4+
>>>> Signed-off-by: Kant Fan <kant@allwinnertech.com>
>>>> ---
>>>> drivers/thermal/devfreq_cooling.c | 25 ++++++++++++++++++-------
>>>> 1 file changed, 18 insertions(+), 7 deletions(-)
>>>>
>>>
>>> Looks good. So this patch should be applied for all stable
>>> kernels starting from v4.4 to v5.12 (the v5.13 and later need
>>> other patch).
>>>
>>> Next time you might use in the subject something like:
>>> [PATCH 4.4] thermal: devfreq_cooling: use local ops instead of global
>>> ops
>>> It would be better distinguished from your other patch with the
>>> same subject, which was for mainline and v5.13+
>>
>> Hi Lukasz,
>> Thank you for the guidance. I want to know if I'm understanding you in
>> a right way. Could you confirm the following information?
>>
>> 1. The stable patches
>> After the patch is merged into mainline later, I'll submit the
>> following patches individually for v4.4 ~ v5.12:
>
> Correct, after it gets mainline you can point to that commit hash and
> process with those patches. I don't now which of those older stable
> kernels are still maintained, since some of them have longer support
> and the rest had shorter and might already ended. You can check the
> end of life for those 'Longterm' here [1]. AFAICS the 4.4 is not in that
> table, so you can start from 4.9, should be OK.
> So the list of needed patches would be for those stable kernels:
> 4.9, 4.14, 4.19, 5.4, 5.10
> I can see that last release for 5.11.x was in May 2021, so it's probably
> ended, similar for 5.12.x (Jul 2021). That's why I suggested that list
> for the long support kernels.
>
Hi Lukasz,
Thanks for figuring it out. I'll check the stable versions carefully.
>>
>> [PATCH 4.4] thermal: devfreq_cooling: use local ops instead of global ops
>> [PATCH 4.5] thermal: devfreq_cooling: use local ops instead of global ops
>> ...
>> [PATCH 5.12] thermal: devfreq_cooling: use local ops instead of global
>> ops
>>
>> And also the following patches individually for v5.13+ :
>
> For this, you probably don't have to. You have added 'v5.13+' in the
> original patch v2, so it will be picked correctly. It should apply
> on those stable kernels w/o issues. If there will be, stable kernel
> engineers will ping us.
>
>> [PATCH 5.13] thermal: devfreq_cooling: use local ops instead of global
>> ops
>> [PATCH 5.14] thermal: devfreq_cooling: use local ops instead of global
>> ops
>> ...
>> [PATCH 5.17] thermal: devfreq_cooling: use local ops instead of global
>> ops
>>
>> 2. The mainline patch
>> I saw your mail with Rafael, seems there are conflicts... I wonder if
>> there's anything wrong with my patch, or anything I can help?
>>
>
> Thank you for offering help. Rafael solved that correctly, so it doesn't
> need any more work.
>
> Thank you for doing that work!
>
> Regards,
> Lukasz
>
> [1] https://www.kernel.org/category/releases.html
No problem. I'll submit the stable patches after the mainline patch is
merged.
--
Best Regards,
Kant Fan
^ permalink raw reply [relevance 14%]
* Re: [PATCH] thermal: devfreq_cooling: use local ops instead of global ops
2022-04-19 15:49 14% ` Kant Fan
@ 2022-04-20 10:32 0% ` Lukasz Luba
2022-04-23 10:49 14% ` Kant Fan
0 siblings, 1 reply; 200+ results
From: Lukasz Luba @ 2022-04-20 10:32 UTC (permalink / raw)
To: Kant Fan
Cc: amitk, linux-pm, linux-kernel, allwinner-opensource-support,
stable, orjan.eide, edubezval, javi.merino, daniel.lezcano,
rui.zhang
Hi Kant,
On 4/19/22 16:49, Kant Fan wrote:
> On 29/03/2022 14:59, Lukasz Luba wrote:
>>
>>
>> On 3/25/22 09:44, Kant Fan wrote:
>>> commit 7b62935828266658714f81d4e9176edad808dc70 upstream.
>>>
>>> Fix access illegal address problem in following condition:
>>> There are muti devfreq cooling devices in system, some of them register
>>> with dfc_power but other does not, power model ops such as
>>> state2power will
>>> append to global devfreq_cooling_ops when the cooling device with
>>> dfc_power register. It makes the cooling device without dfc_power
>>> also use devfreq_cooling_ops after appending when register later by
>>> of_devfreq_cooling_register_power() or of_devfreq_cooling_register().
>>>
>>> IPA governor regards the cooling devices without dfc_power as a power
>>> actor
>>> because they also have power model ops, and will access illegal
>>> address at
>>> dfc->power_ops when execute cdev->ops->get_requested_power or
>>> cdev->ops->power2state. As the calltrace below shows:
>>>
>>> Unable to handle kernel NULL pointer dereference at virtual address
>>> 00000008
>>> ...
>>> calltrace:
>>> [<c06e5488>] devfreq_cooling_power2state+0x24/0x184
>>> [<c06df420>] power_actor_set_power+0x54/0xa8
>>> [<c06e3774>] power_allocator_throttle+0x770/0x97c
>>> [<c06dd120>] handle_thermal_trip+0x1b4/0x26c
>>> [<c06ddb48>] thermal_zone_device_update+0x154/0x208
>>> [<c014159c>] process_one_work+0x1ec/0x36c
>>> [<c0141c58>] worker_thread+0x204/0x2ec
>>> [<c0146788>] kthread+0x140/0x154
>>> [<c01010e8>] ret_from_fork+0x14/0x2c
>>>
>>> Fixes: a76caf55e5b35 ("thermal: Add devfreq cooling")
>>> Cc: stable@vger.kernel.org # 4.4+
>>> Signed-off-by: Kant Fan <kant@allwinnertech.com>
>>> ---
>>> drivers/thermal/devfreq_cooling.c | 25 ++++++++++++++++++-------
>>> 1 file changed, 18 insertions(+), 7 deletions(-)
>>>
>>
>> Looks good. So this patch should be applied for all stable
>> kernels starting from v4.4 to v5.12 (the v5.13 and later need
>> other patch).
>>
>> Next time you might use in the subject something like:
>> [PATCH 4.4] thermal: devfreq_cooling: use local ops instead of global ops
>> It would be better distinguished from your other patch with the
>> same subject, which was for mainline and v5.13+
>
> Hi Lukasz,
> Thank you for the guidance. I want to know if I'm understanding you in a
> right way. Could you confirm the following information?
>
> 1. The stable patches
> After the patch is merged into mainline later, I'll submit the following
> patches individually for v4.4 ~ v5.12:
Correct, after it gets mainline you can point to that commit hash and
process with those patches. I don't now which of those older stable
kernels are still maintained, since some of them have longer support
and the rest had shorter and might already ended. You can check the
end of life for those 'Longterm' here [1]. AFAICS the 4.4 is not in that
table, so you can start from 4.9, should be OK.
So the list of needed patches would be for those stable kernels:
4.9, 4.14, 4.19, 5.4, 5.10
I can see that last release for 5.11.x was in May 2021, so it's probably
ended, similar for 5.12.x (Jul 2021). That's why I suggested that list
for the long support kernels.
>
> [PATCH 4.4] thermal: devfreq_cooling: use local ops instead of global ops
> [PATCH 4.5] thermal: devfreq_cooling: use local ops instead of global ops
> ...
> [PATCH 5.12] thermal: devfreq_cooling: use local ops instead of global ops
>
> And also the following patches individually for v5.13+ :
For this, you probably don't have to. You have added 'v5.13+' in the
original patch v2, so it will be picked correctly. It should apply
on those stable kernels w/o issues. If there will be, stable kernel
engineers will ping us.
> [PATCH 5.13] thermal: devfreq_cooling: use local ops instead of global ops
> [PATCH 5.14] thermal: devfreq_cooling: use local ops instead of global ops
> ...
> [PATCH 5.17] thermal: devfreq_cooling: use local ops instead of global ops
>
> 2. The mainline patch
> I saw your mail with Rafael, seems there are conflicts... I wonder if
> there's anything wrong with my patch, or anything I can help?
>
Thank you for offering help. Rafael solved that correctly, so it doesn't
need any more work.
Thank you for doing that work!
Regards,
Lukasz
[1] https://www.kernel.org/category/releases.html
^ permalink raw reply [relevance 0%]
* Re: [PATCH] thermal: devfreq_cooling: use local ops instead of global ops
@ 2022-04-19 15:49 14% ` Kant Fan
2022-04-20 10:32 0% ` Lukasz Luba
0 siblings, 1 reply; 200+ results
From: Kant Fan @ 2022-04-19 15:49 UTC (permalink / raw)
To: Lukasz Luba, rui.zhang, daniel.lezcano, javi.merino, edubezval,
orjan.eide
Cc: amitk, linux-pm, linux-kernel, allwinner-opensource-support, stable
On 29/03/2022 14:59, Lukasz Luba wrote:
>
>
> On 3/25/22 09:44, Kant Fan wrote:
>> commit 7b62935828266658714f81d4e9176edad808dc70 upstream.
>>
>> Fix access illegal address problem in following condition:
>> There are muti devfreq cooling devices in system, some of them register
>> with dfc_power but other does not, power model ops such as state2power
>> will
>> append to global devfreq_cooling_ops when the cooling device with
>> dfc_power register. It makes the cooling device without dfc_power
>> also use devfreq_cooling_ops after appending when register later by
>> of_devfreq_cooling_register_power() or of_devfreq_cooling_register().
>>
>> IPA governor regards the cooling devices without dfc_power as a power
>> actor
>> because they also have power model ops, and will access illegal
>> address at
>> dfc->power_ops when execute cdev->ops->get_requested_power or
>> cdev->ops->power2state. As the calltrace below shows:
>>
>> Unable to handle kernel NULL pointer dereference at virtual address
>> 00000008
>> ...
>> calltrace:
>> [<c06e5488>] devfreq_cooling_power2state+0x24/0x184
>> [<c06df420>] power_actor_set_power+0x54/0xa8
>> [<c06e3774>] power_allocator_throttle+0x770/0x97c
>> [<c06dd120>] handle_thermal_trip+0x1b4/0x26c
>> [<c06ddb48>] thermal_zone_device_update+0x154/0x208
>> [<c014159c>] process_one_work+0x1ec/0x36c
>> [<c0141c58>] worker_thread+0x204/0x2ec
>> [<c0146788>] kthread+0x140/0x154
>> [<c01010e8>] ret_from_fork+0x14/0x2c
>>
>> Fixes: a76caf55e5b35 ("thermal: Add devfreq cooling")
>> Cc: stable@vger.kernel.org # 4.4+
>> Signed-off-by: Kant Fan <kant@allwinnertech.com>
>> ---
>> drivers/thermal/devfreq_cooling.c | 25 ++++++++++++++++++-------
>> 1 file changed, 18 insertions(+), 7 deletions(-)
>>
>
> Looks good. So this patch should be applied for all stable
> kernels starting from v4.4 to v5.12 (the v5.13 and later need
> other patch).
>
> Next time you might use in the subject something like:
> [PATCH 4.4] thermal: devfreq_cooling: use local ops instead of global ops
> It would be better distinguished from your other patch with the
> same subject, which was for mainline and v5.13+
Hi Lukasz,
Thank you for the guidance. I want to know if I'm understanding you in a
right way. Could you confirm the following information?
1. The stable patches
After the patch is merged into mainline later, I'll submit the following
patches individually for v4.4 ~ v5.12:
[PATCH 4.4] thermal: devfreq_cooling: use local ops instead of global ops
[PATCH 4.5] thermal: devfreq_cooling: use local ops instead of global ops
...
[PATCH 5.12] thermal: devfreq_cooling: use local ops instead of global ops
And also the following patches individually for v5.13+ :
[PATCH 5.13] thermal: devfreq_cooling: use local ops instead of global ops
[PATCH 5.14] thermal: devfreq_cooling: use local ops instead of global ops
...
[PATCH 5.17] thermal: devfreq_cooling: use local ops instead of global ops
2. The mainline patch
I saw your mail with Rafael, seems there are conflicts... I wonder if
there's anything wrong with my patch, or anything I can help?
--
Best Regards,
Kant Fan
^ permalink raw reply [relevance 14%]
* Re: [PATCH v2] mmc: block: enable cache-flushing when mmc cache is on
@ 2022-04-19 14:59 14% ` Michael Wu
0 siblings, 0 replies; 200+ results
From: Michael Wu @ 2022-04-19 14:59 UTC (permalink / raw)
To: Ulf Hansson
Cc: axboe, adrian.hunter, avri.altman, kch, beanhuo, swboyd, digetx,
bigeasy, CLoehle, cjb, arnd, andreiw, tgih.jun, jh80.chung,
linus.walleij, linux-mmc, linux-kernel,
allwinner-opensource-support
On 04/04/2022 19:52, Ulf Hansson wrote:
> On Thu, 31 Mar 2022 at 09:32, Michael Wu <michael@allwinnertech.com> wrote:
>>
>> The mmc core enables cache by default. But it only enables
>> cache-flushing when host supports cmd23 and eMMC supports
>> reliable-write.
>> For hosts which do not support cmd23 or eMMCs which do not support
>> reliable-write, the cache can not be flushed by `sync` command.
>> This may leads to cache data lost.
>> This patch enables cache-flushing as long as cache is enabled,
>> no matter host supports cmd23 and/or eMMC supports reliable write
>> or not.
>> For SD cards, backwards compatibility is guaranteed. Newer components
>> like SD5.0 which have cache are also supported in advance, which means
>> this patch will also be applicable if SD5.0 cache is added to the mmc
>> core in the future.
>
> SD 5.0 cache support was added in the commit 130206a615a9 below. No
> need to resend, I will take care of updating the commit message.
> >>
>> Fixes: f4c5522b0a88 ("mmc: Reliable write support.")
>> Fixes: 881d1c25f765 ("mmc: core: Add cache control for eMMC4.5 device")
>> Fixes: 130206a615a9 ("mmc: core: Add support for cache ctrl for SD cards")
>> Fixes: d0c97cfb81eb ("mmc: core: Use CMD23 for multiblock transfers when we can.")
>> Fixes: e9d5c746246c ("mmc/block: switch to using blk_queue_write_cache()")
>
> I will have a look at the above to see what makes sense to add - and
> then I will add a stable tag too.
>
Dear Ulf,
Thank you for your effort. I saw this patch which was taken care by you
on the mainline [commit 08ebf903af57], and also the commits in
stable-queque by Greg-KH. I guess this means this patch is accepted/closed.
I'm so happy and want to say thank you for all the help. Next time I'm
sure I'll do it better :)
--
Best Regards,
Michael Wu
>>
>> Reviewed-by: Avri Altman <Avri.Altman@wdc.com>
>> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
>>
>> Signed-off-by: Michael Wu <michael@allwinnertech.com>
>
> Thanks, applied for fixes!
>
> Kind regards
> Uffe
>
>
>> ---
>> drivers/mmc/core/block.c | 12 +++++++++---
>> 1 file changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
>> index 4e67c1403cc9..ec76ed82abb9 100644
>> --- a/drivers/mmc/core/block.c
>> +++ b/drivers/mmc/core/block.c
>> @@ -2350,6 +2350,8 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
>> struct mmc_blk_data *md;
>> int devidx, ret;
>> char cap_str[10];
>> + bool cache_enabled = false;
>> + bool fua_enabled = false;
>>
>> devidx = ida_simple_get(&mmc_blk_ida, 0, max_devices, GFP_KERNEL);
>> if (devidx < 0) {
>> @@ -2429,13 +2431,17 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
>> md->flags |= MMC_BLK_CMD23;
>> }
>>
>> - if (mmc_card_mmc(card) &&
>> - md->flags & MMC_BLK_CMD23 &&
>> + if (md->flags & MMC_BLK_CMD23 &&
>> ((card->ext_csd.rel_param & EXT_CSD_WR_REL_PARAM_EN) ||
>> card->ext_csd.rel_sectors)) {
>> md->flags |= MMC_BLK_REL_WR;
>> - blk_queue_write_cache(md->queue.queue, true, true);
>> + fua_enabled = true;
>> + cache_enabled = true;
>> }
>> + if (mmc_cache_enabled(card->host))
>> + cache_enabled = true;
>> +
>> + blk_queue_write_cache(md->queue.queue, cache_enabled, fua_enabled);
>>
>> string_get_size((u64)size, 512, STRING_UNITS_2,
>> cap_str, sizeof(cap_str));
>> --
>> 2.29.0
>>
^ permalink raw reply [relevance 14%]
* Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug
@ 2022-04-18 15:08 14% ` Victor Hassan
2022-06-17 13:30 14% ` Victor Hassan
0 siblings, 1 reply; 200+ results
From: Victor Hassan @ 2022-04-18 15:08 UTC (permalink / raw)
To: Linus Walleij
Cc: linux, rmk+kernel, yanfei.xu, ardb, tglx, mirq-linux, arnd,
linux-arm-kernel, linux-kernel, allwinner-opensource-support
On 18/04/2022 07:21, Linus Walleij wrote:
> On Wed, Mar 16, 2022 at 3:33 AM Victor Hassan <victor@allwinnertech.com> wrote:
>
>> earlycon uses fixmap to create a memory map,
>> So we need to close earlycon before closing fixmap,
>> otherwise printk will access illegal addresses.
>> After creating a new memory map, we open earlycon again.
>>
>> Signed-off-by: Victor Hassan <victor@allwinnertech.com>
>
> I think noone really noticed this because everyone on Arm systems
> use CONFIG_DEBUG_LL, and that makes printascii hammer out
> stuff on the console very early, it even accounts for whether we have
> MMU on or not.
>
Hi Linus,
Thank you for the reply. I used earlycon, in early_fixmap_shutdown, the
base address of earlycon is in the critical stage of release and
reassignment, so early_fixmap_shutdown -> create_mapping should not call
earlycon in this process, and create_mapping has a lot of conditions
that trigger print, memblock=debug just makes it easier to expose problems.
> How are you using this on Arm even? What system and what serial
> driver?
I'm using serial driver 8250 on arm32, with cmdline: memblock=debug.
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8520_CONSOLE=y
>
> That said, it looks correct.
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
Thank you.
>
> Yours,
> Linus Walleij
Sincerely,
Victor Hassan
^ permalink raw reply [relevance 14%]
Results 1-200 of ~2000 next (older) | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2022-03-16 2:33 [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug Victor Hassan
2022-04-17 23:21 ` Linus Walleij
2022-04-18 15:08 14% ` Victor Hassan
2022-06-17 13:30 14% ` Victor Hassan
2022-06-28 8:34 6% ` Linus Walleij
[not found] ` <CGME20220831115257eucas1p20d37a01c51e42767860920a936255bd7@eucas1p2.samsung.com>
2022-08-31 11:52 0% ` Marek Szyprowski
2022-08-31 12:37 14% ` Victor Hassan
2022-09-01 12:53 14% ` Victor Hassan
2022-09-01 13:21 6% ` Rob Herring
2022-09-01 13:49 0% ` Rob Herring
2022-09-03 8:54 14% ` Victor Hassan
2022-08-31 13:51 0% ` Russell King (Oracle)
2022-03-25 9:44 [PATCH] thermal: devfreq_cooling: use local ops instead of global ops Kant Fan
2022-03-29 6:59 ` Lukasz Luba
2022-04-19 15:49 14% ` Kant Fan
2022-04-20 10:32 0% ` Lukasz Luba
2022-04-23 10:49 14% ` Kant Fan
2022-03-29 9:14 [RESEND] devfreq: governor: Save void *data in the governor userspace Kant Fan
2022-09-14 9:15 14% ` Kant Fan
[not found] ` <CGME20220914091525epcas1p31c8a9b11ba7a36da4678e3254b0ea962@epcms1p8>
2022-09-14 9:43 0% ` MyungJoo Ham
2022-09-15 7:41 16% ` Kant Fan
2022-09-21 13:15 14% ` Kant Fan
2022-03-31 7:32 [PATCH v2] mmc: block: enable cache-flushing when mmc cache is on Michael Wu
2022-04-04 11:52 ` Ulf Hansson
2022-04-19 14:59 14% ` Michael Wu
2022-05-10 8:01 15% [PATCH] usb: f_fs: Fix crash during gadget function switching Michael Wu
2022-05-30 18:14 ` John Keeping
2022-06-02 10:36 20% ` Michael Wu
2022-06-02 13:05 0% ` John Keeping
2022-05-10 17:24 [patch 00/10] clocksource/drivers: Convert to SPDX identifiers Thomas Gleixner
2022-05-10 17:24 9% ` [patch 09/10] clocksource/drivers/timer-sun4i: Convert to SPDX identifier Thomas Gleixner
2022-05-22 7:36 0% ` Jernej Škrabec
2022-05-27 8:35 9% ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2022-05-11 19:29 [PATCH v10 00/12] riscv: support for Svpbmt and D1 memory types Heiko Stuebner
2022-05-11 19:29 4% ` [PATCH 09/12] riscv: add RISC-V Svpbmt extension support Heiko Stuebner
2022-06-05 9:30 [GIT pull] objtool/urgent for v5.19-rc1 Thomas Gleixner
2022-06-05 9:30 5% ` [GIT pull] timers/core " Thomas Gleixner
2022-06-07 16:51 1% [PATCH 5.18 000/879] 5.18.3-rc1 review Greg Kroah-Hartman
2022-06-07 17:05 7% ` [PATCH 5.18 812/879] thermal: devfreq_cooling: use local ops instead of global ops Greg Kroah-Hartman
2022-06-07 16:53 1% [PATCH 5.17 000/772] 5.17.14-rc1 review Greg Kroah-Hartman
2022-06-07 17:05 7% ` [PATCH 5.17 710/772] thermal: devfreq_cooling: use local ops instead of global ops Greg Kroah-Hartman
2022-06-07 16:54 1% [PATCH 5.15 000/667] 5.15.46-rc1 review Greg Kroah-Hartman
2022-06-07 17:04 7% ` [PATCH 5.15 608/667] thermal: devfreq_cooling: use local ops instead of global ops Greg Kroah-Hartman
2022-06-20 12:48 [PATCH 5.18 000/141] 5.18.6-rc1 review Greg Kroah-Hartman
2022-06-20 12:50 7% ` [PATCH 5.18 113/141] usb: gadget: f_fs: change ep->status safe in ffs_epfile_io() Greg Kroah-Hartman
2022-06-20 12:50 7% ` [PATCH 5.18 114/141] usb: gadget: f_fs: change ep->ep " Greg Kroah-Hartman
2022-06-20 12:50 [PATCH 5.15 000/106] 5.15.49-rc1 review Greg Kroah-Hartman
2022-06-20 12:51 7% ` [PATCH 5.15 090/106] usb: gadget: f_fs: change ep->status safe in ffs_epfile_io() Greg Kroah-Hartman
2022-06-20 12:51 7% ` [PATCH 5.15 091/106] usb: gadget: f_fs: change ep->ep " Greg Kroah-Hartman
2022-06-26 2:11 [PATCH 0/6] pinctrl: sunxi: Allwinner D1/D1s support Samuel Holland
2022-06-26 2:11 2% ` [PATCH 6/6] pinctrl: sunxi: Add driver for Allwinner D1/D1s Samuel Holland
2022-07-02 14:47 0% ` Andre Przywara
2022-07-02 15:43 0% ` Samuel Holland
2022-07-04 9:42 0% ` Andre Przywara
2022-07-08 9:57 20% [PATCH] extcon: Add EXTCON_DISP_CVBS and EXTCON_DISP_EDP Michael Wu
2022-07-09 1:03 0% ` Chanwoo Choi
2022-07-11 14:22 14% ` Michael Wu
2022-07-11 21:04 6% ` Chanwoo Choi
2022-07-09 1:49 6% [PATCH] riscv: fix RISCV_ISA_SVPBMT kconfig dependency warning Randy Dunlap
2022-07-20 4:04 0% ` Guo Ren
2022-07-20 9:01 0% ` Heiko Stübner
2022-09-13 12:00 0% ` Heiko Stuebner
2022-09-15 18:48 0% ` Palmer Dabbelt
2022-09-15 18:48 0% ` Palmer Dabbelt
2022-07-13 2:52 [PATCH v2 0/6] pinctrl: sunxi: Allwinner D1 support Samuel Holland
2022-07-13 2:52 2% ` [PATCH v2 6/6] pinctrl: sunxi: Add driver for Allwinner D1 Samuel Holland
2022-07-13 13:11 0% ` Andre Przywara
2022-07-25 8:35 16% [PATCH 1/2] clocksource: sun4i: Fix the bug that tick_resume stucks Victor Hassan
2022-07-25 8:35 20% ` [PATCH 2/2] clocksource: sun4i: add definition of clear interrupt Victor Hassan
2022-08-02 2:10 20% [PATCH] ext4: fix error when itable blocks is greater than s_itb_per_group Michael Wu
2022-08-03 7:18 0% ` Lukas Czerner
2022-08-04 2:19 ` Theodore Ts'o
2022-08-06 4:02 14% ` Michael Wu
2022-08-04 21:46 4% [PATCH] scripts/decodecode: add the ability to find code sequence Can Sun
2022-08-17 8:34 20% [PATCH] scsi: core: Fix block I/O error of USB card reader during resume Michael Wu
2022-08-17 13:52 0% ` Bart Van Assche
2022-08-23 10:16 14% ` Michael Wu
2022-08-26 22:05 ` Bart Van Assche
2022-08-29 9:06 14% ` Michael Wu
2022-08-19 2:45 20% [PATCH] pinctrl: sunxi: Fix name for A100 R_PIO Michael Wu
2022-08-23 4:09 0% ` Samuel Holland
2022-08-26 8:37 6% ` Linus Walleij
2022-08-23 17:21 [PATCH] f2fs: increase the limit for reserve_root Jaegeuk Kim
2022-08-24 2:26 6% ` Jaegeuk Kim
2022-08-26 5:09 5% [PATCH v5 0/6] leds: Allwinner A100 LED controller support Samuel Holland
2022-08-26 5:09 7% ` [PATCH v5 3/6] arm64: dts: allwinner: a100: Add device node for DMA controller Samuel Holland
2022-08-30 2:08 [PATCH 0/3] DMA binding for Allwinner V536/newer I2C Samuel Holland
2022-08-30 2:08 7% ` [PATCH 2/3] arm64: dts: allwinner: a100: Add device node for DMA controller Samuel Holland
2022-09-06 21:09 0% ` Jernej Škrabec
2022-09-08 20:01 0% ` Jernej Škrabec
2022-09-06 5:20 20% [RESEND] clocksource: sun4i: add definition of clear interrupt Victor Hassan
2022-09-06 19:54 0% ` Jernej Škrabec
2022-09-07 8:14 0% ` Daniel Lezcano
2022-10-04 9:27 8% ` [tip: timers/core] clocksource/drivers/sun4i: Add " tip-bot2 for Victor Hassan
2022-09-08 6:55 [PATCH] iio: adc: sun4i-gpadc-iio: adaptation interrupt number Lee Jones
2022-08-25 11:47 ` fuyao
2023-12-20 7:08 6% ` [PATCH RESEND] " fuyao
2023-12-20 7:15 6% ` fuyao
2022-09-21 9:19 20% [PATCH 1/2] cfg80211: fix dead lock for nl80211_new_interface() Aran Dalton
2022-09-21 9:19 20% ` [PATCH 2/2] cfg80211: fix dead lock for nl80211_del_interface() Aran Dalton
2022-09-21 15:03 0% ` [PATCH 1/2] cfg80211: fix dead lock for nl80211_new_interface() Jeff Johnson
2022-09-21 15:45 3% [PATCH 5.19 00/38] 5.19.11-rc1 review Greg Kroah-Hartman
2022-09-21 15:45 8% ` [PATCH 5.19 05/38] pinctrl: sunxi: Fix name for A100 R_PIO Greg Kroah-Hartman
2022-09-21 15:45 3% [PATCH 5.15 00/45] 5.15.70-rc1 review Greg Kroah-Hartman
2022-09-21 15:45 8% ` [PATCH 5.15 09/45] pinctrl: sunxi: Fix name for A100 R_PIO Greg Kroah-Hartman
2022-09-21 15:46 3% [PATCH 5.10 00/39] 5.10.145-rc1 review Greg Kroah-Hartman
2022-09-21 15:46 8% ` [PATCH 5.10 13/39] pinctrl: sunxi: Fix name for A100 R_PIO Greg Kroah-Hartman
2022-09-21 16:47 3% [PATCH 5.19 00/39] 5.19.11-rc2 review Greg Kroah-Hartman
2022-09-27 13:14 [PATCH v10 00/27] Rust support Miguel Ojeda
2022-09-27 13:14 ` [PATCH v10 27/27] MAINTAINERS: Rust Miguel Ojeda
2022-09-27 14:11 ` Geert Stappers
2022-09-27 15:19 7% ` Kees Cook
2022-09-27 15:34 0% ` Greg Kroah-Hartman
2022-09-27 16:00 0% ` Wedson Almeida Filho
2022-09-28 8:48 16% [RESEND] clocksource: sun4i: Fix the bug that tick_resume stucks Victor Hassan
2022-10-09 3:25 16% Victor Hassan
2022-10-12 21:46 0% ` Jernej Škrabec
2022-10-25 6:23 14% ` Victor Hassan
2022-10-26 8:21 0% ` maxime
2022-10-10 7:22 16% [PATCH v2] devfreq: governor: Add a private governor_data for governors in devfreq Kant Fan
2022-10-12 19:00 0% ` Chanwoo Choi
2022-10-12 19:19 0% ` Chanwoo Choi
2022-10-14 9:46 20% ` Kant Fan
2022-10-14 9:43 15% [PATCH v3] PM/devfreq: governor: Add a private governor_data for governor Kant Fan
2022-10-21 23:41 0% ` Chanwoo Choi
2022-10-25 7:57 20% ` Kant Fan
2022-11-07 3:06 14% ` Kant Fan
2022-10-19 8:21 [PATCH 6.0 000/862] 6.0.3-rc1 review Greg Kroah-Hartman
2022-10-19 8:23 6% ` [PATCH 6.0 126/862] f2fs: increase the limit for reserve_root Greg Kroah-Hartman
2022-10-22 7:17 [PATCH 5.19 000/717] 5.19.17-rc1 review Greg Kroah-Hartman
2022-10-22 7:19 6% ` [PATCH 5.19 115/717] f2fs: increase the limit for reserve_root Greg Kroah-Hartman
2022-10-24 11:25 [PATCH 5.15 000/530] 5.15.75-rc1 review Greg Kroah-Hartman
2022-10-24 11:27 6% ` [PATCH 5.15 083/530] f2fs: increase the limit for reserve_root Greg Kroah-Hartman
2022-10-24 11:26 [PATCH 5.10 000/390] 5.10.150-rc1 review Greg Kroah-Hartman
2022-10-24 11:27 6% ` [PATCH 5.10 050/390] f2fs: increase the limit for reserve_root Greg Kroah-Hartman
2022-10-24 11:28 [PATCH 5.4 000/255] 5.4.220-rc1 review Greg Kroah-Hartman
2022-10-24 11:29 6% ` [PATCH 5.4 036/255] f2fs: increase the limit for reserve_root Greg Kroah-Hartman
2022-10-25 7:21 15% [PATCH v4] PM/devfreq: governor: Add a private governor_data for governor Kant Fan
2022-11-20 11:50 0% ` Chanwoo Choi
2022-11-18 5:47 17% [PATCH] mmc:mmc-hsq:use fifo to dispatch mmc_request Michael Wu
2022-11-18 11:43 6% ` Wenchao Chen
2022-11-21 6:18 13% ` Michael Wu
2022-11-24 2:56 6% ` Wenchao Chen
2022-11-28 3:55 11% ` Michael Wu
2022-11-28 5:51 6% ` Wenchao Chen
2022-11-22 8:20 20% [PATCH] ALSA: usb-audio: fix urb timeout with URB_ISO_ASAP flag Michael Wu
2022-11-22 8:46 0% ` Takashi Iwai
2022-11-22 8:54 14% ` Michael Wu
2022-11-28 9:38 17% [PATCH v2] mmc:mmc-hsq:use fifo to dispatch mmc_request Michael Wu
2022-11-29 12:54 6% ` Ulf Hansson
2022-12-02 2:38 15% [PATCH 5.4-] PM/devfreq: governor: Add a private governor_data for governor Kant Fan
2022-12-05 16:31 [PATCH modules-next v10 00/13] kallsyms: reliable symbol->address lookup with /proc/kallmodsyms Nick Alcock
2022-12-05 16:31 1% ` [PATCH v10 05/13] kbuild: remove MODULE_LICENSE/AUTHOR/DESCRIPTION in non-modules Nick Alcock
2023-01-04 16:04 1% [PATCH 6.1 000/207] 6.1.4-rc1 review Greg Kroah-Hartman
2023-01-04 16:04 1% [PATCH 6.0 000/177] 6.0.18-rc1 review Greg Kroah-Hartman
2023-01-06 14:27 0% ` Georg Müller
2023-01-10 18:01 1% [PATCH 5.15 000/290] 5.15.87-rc1 review Greg Kroah-Hartman
2023-01-12 9:42 20% [PATCH] Bluetooth: btrtl: Add support for RTL8852BS Victor Hassan
2023-01-12 13:45 1% [PATCH 5.10 000/783] 5.10.163-rc1 review Greg Kroah-Hartman
2023-01-16 15:41 1% [PATCH 5.4 000/658] 5.4.229-rc1 review Greg Kroah-Hartman
2023-01-17 12:48 1% [PATCH 5.4 000/622] 5.4.229-rc2 review Greg Kroah-Hartman
2023-01-30 6:46 13% [PATCH] mmc:mmc-cqhci:support interrupt coalescing Michael Wu
2023-01-30 8:30 0% ` Michal Simek
2023-01-31 11:01 14% ` Michael Wu
2023-01-30 15:59 0% ` Adrian Hunter
2023-01-31 13:12 13% ` Michael Wu
2023-01-31 13:32 0% ` Adrian Hunter
2023-02-04 6:05 14% ` Michael Wu
2023-01-31 3:09 6% ` Wenchao Chen
2023-01-31 13:10 14% ` Michael Wu
2023-02-03 11:35 17% [PATCH] pstore/blk: Export a method to implemente panic_write() Victor Hassan
2023-02-06 6:18 17% [PATCH v2] " Victor Hassan
2023-02-06 6:33 20% [RESEND] Bluetooth: btrtl: Add support for RTL8852BS Victor Hassan
2023-02-06 10:03 0% ` Paul Menzel
2023-02-14 6:23 14% ` Victor Hassan
2023-02-09 6:34 20% [PATCH v2] " Victor Hassan
2023-02-22 1:39 19% [PATCH] HID: usbhid: enable remote wakeup for mice Michael Wu
2023-02-22 6:04 0% ` Greg KH
2023-02-22 19:50 0% ` Limonciello, Mario
2023-02-23 11:18 14% ` Michael Wu
2023-02-23 11:23 0% ` Greg KH
2023-02-23 12:01 ` Oliver Neukum
2023-02-23 19:41 0% ` Limonciello, Mario
2023-02-28 9:03 ` Oliver Neukum
2023-02-28 18:50 0% ` Limonciello, Mario
2023-02-28 19:05 ` Greg KH
2023-02-28 19:07 0% ` Limonciello, Mario
2023-02-24 7:02 14% ` Michael Wu
2023-02-22 8:59 0% ` Sergei Shtylyov
2023-02-23 4:01 14% ` Michael Wu
2023-02-22 9:34 ` Oliver Neukum
2023-02-23 11:22 14% ` Michael Wu
2023-02-22 9:47 20% [RESEND v2] Bluetooth: btrtl: Add support for RTL8852BS Victor Hassan
2023-02-23 20:30 0% ` patchwork-bot+bluetooth
[not found] <20230224150811.80316-1-nick.alcock@oracle.com>
2023-02-24 15:07 7% ` [PATCH 07/27] iommu/sun50i: remove MODULE_LICENSE in non-modules Nick Alcock
2023-03-14 20:15 0% ` Jernej Škrabec
2023-03-01 9:51 17% [RESEND v2] pstore/blk: Export a method to implemente panic_write() Victor Hassan
2023-03-28 6:36 18% [PATCH] tick/broadcast: Do not set oneshot_mask except was_periodic was true Victor Hassan
2023-03-31 1:46 14% ` Victor Hassan
2023-04-03 10:26 0% ` Frederic Weisbecker
2023-04-04 11:37 14% ` Victor Hassan
2023-04-04 12:21 ` Frederic Weisbecker
2023-04-07 6:51 14% ` Victor Hassan
2023-04-10 7:06 14% ` Victor Hassan
2023-04-12 0:34 17% [PATCH v2] " Victor Hassan
2023-04-15 21:01 2% ` Thomas Gleixner
2023-04-19 13:36 ` Frederic Weisbecker
2023-04-21 21:32 ` Thomas Gleixner
2023-05-02 11:19 ` Frederic Weisbecker
2023-05-02 12:38 ` Thomas Gleixner
2023-05-03 22:27 ` Frederic Weisbecker
2023-05-03 22:53 ` Thomas Gleixner
2023-05-04 7:50 ` Frederic Weisbecker
2023-05-06 16:40 3% ` [PATCH v3] tick/broadcast: Make broadcast device replacement work correctly Thomas Gleixner
2023-05-08 21:27 3% ` [tip: timers/urgent] " tip-bot2 for Thomas Gleixner
2023-05-06 12:09 14% ` [PATCH v2] tick/broadcast: Do not set oneshot_mask except was_periodic was true Victor Hassan
2023-04-23 14:16 14% ` Victor Hassan
2023-04-24 18:28 ` Thomas Gleixner
2023-04-24 18:31 ` Thomas Gleixner
2023-04-26 2:50 14% ` Victor Hassan
2023-05-05 1:46 14% ` Victor Hassan
2023-07-20 21:02 2% [PATCH] mailmap: Update remaining active codeaurora.org email addresses Bjorn Andersson
2023-08-23 8:45 4% [PATCH] dt-bindings: use capital "OR" for multiple licenses in SPDX Krzysztof Kozlowski
2023-08-23 8:51 [PATCH 1/2] ARM: dts: " Krzysztof Kozlowski
2023-08-23 8:51 4% ` [PATCH 2/2] arm64: " Krzysztof Kozlowski
2023-08-29 13:58 [PATCH 0/9] Enable USB3 for IPQ5332 Praveenkumar I
2023-08-29 13:58 4% ` [PATCH 3/9] phy: qcom: uniphy: Update UNIPHY driver to be a common driver Praveenkumar I
2023-08-29 14:37 0% ` Dmitry Baryshkov
2023-08-31 12:05 0% ` Praveenkumar I
2023-09-14 0:03 19% [PATCH] mmc: core: Add new flag to force hardware reset Michael Wu
2023-09-14 8:00 6% ` Wenchao Chen
2023-09-25 13:59 0% ` Ulf Hansson
2023-11-06 12:26 14% ` Michael Wu
2023-11-06 14:19 6% ` Ulf Hansson
2024-01-11 6:05 0% ` Wenchao Chen
2023-09-14 0:31 19% [PATCH] usb:typec:tcpm:support double Rp to Vbus cable as sink Michael Wu
2023-09-18 10:31 0% ` Heikki Krogerus
2023-09-18 14:22 0% ` Guenter Roeck
2023-09-20 10:45 20% ` Michael Wu
2023-09-19 9:06 19% [PATCH v2] " Michael Wu
2023-09-19 9:25 0% ` Greg KH
2023-09-20 6:30 20% [RESEND " Michael Wu
2023-09-21 20:39 0% ` Guenter Roeck
2023-09-22 10:53 0% ` Heikki Krogerus
2024-03-12 1:13 20% [PATCH] usb: typec: tcpm: support sink port for debounce Michael Wu
2024-03-12 11:07 0% ` Heikki Krogerus
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).