From patchwork Mon Mar 3 10:51:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 869854 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0B0F21F17E5; Mon, 3 Mar 2025 10:53:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999208; cv=none; b=HUiJFEMDuPHahmqg3a8rEEIwQm78sWFHRPpOO7AaE66G1U84rWl9Zhmi5D+TlDkQa8NZoYHBV2e4J693f920ju5/YpUvROG+TIooe6lPkEbFc9FVxdj+wyGetmvvDSzz9li3epHHgdfeRR6kONyhWDzSc6VrQ+q0I47wg+ntyU8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999208; c=relaxed/simple; bh=g9voXRH9b5scUtRJQUT9IkYk1Q1woAlbAN5ZVwPOsw0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lVbb4pRTYdVQk2h0cf8LK3AyuA4Zt4UjCRrPQYjtPU2yIqyQeQRw0e5wtQIJAPqs0SaqJtftbXDOvDY3mZft0R9qwA0G2+3WT0LR1SPpifHj/s4QnYqAMKlPytpk+0p3KJRHBgWjR242tq7/P0nYTYSRt7hqmtQNE88nT+OG14Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5AE5712FC; Mon, 3 Mar 2025 02:53:40 -0800 (PST) Received: from e133711.arm.com (e133711.arm.com [10.1.196.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3EAAE3F673; Mon, 3 Mar 2025 02:53:25 -0800 (PST) From: Sudeep Holla Date: Mon, 03 Mar 2025 10:51:36 +0000 Subject: [PATCH 01/14] mailbox: pcc: Fix the possible race in updation of chan_in_use flag Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250303-pcc_fixes_updates-v1-1-3b44f3d134b1@arm.com> References: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> In-Reply-To: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> To: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Jassi Brar , Huisong Li , Adam Young X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3054; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=V6iDNkf7FB8p7g5HOzBVjRnuDYthQbqnBHp6HSZoQ4M=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnxYohU2Ovtmr4qvaGn/sgdbGVNgixC3C3wyS5+ sJABEakylCJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ8WKIQAKCRAAQbq8MX7i mCSvEAC0jkjX+3Pbc642V3BITLszz4Xj/lsxjE5pyY+biE7BNcQ+yBxWT6R+fFxQbNas1oXn5M2 m+7c5iWayb+5jX1Yg2VNccrheMh2vWg2gHZ4az1yEcBlS5jKzA+qpr/n1hkzgr9CDiTC4hj3keF swXlvbX4zpGvLllzGtaEm70e5LJbP2mcxTGAUFEl9XGNiV0dW9N56WAFx2WmF2wAcdprrPghamP UcKk6M6/OGIk7OYNC7hPQgZL8saJCbXCq+ixgt5QsfuAw8htPDPQ5J3d64Ow4j4UzikxAjoxWoe SbdNkgSzirtS+0R/xEcyb0mRfwtSIO9jyrlda1RmgeQ3MbIiL9pRVxjx/v9rzhUX/uQMeJbwONF Wj0P6IqZs4K16fARRmTOqHxiHumt+j2aMdgNWysfMHybHjUKk+4chmLFe3Hob2G44hqMt384LIl KDWdsVoDEm58GOrlQc7CkLb8uS1Xy+Q9peY8l1CIaOC3Ouc9LdtOIjs0aO4V84dUMG50VCr13zQ NWsrhz2mKgsrOEs6TrKYPcs0ahPO2yGjRvuxKgxMSxzOSV/K3S2kFZLinaexKk81jLDFEHgduyY 58+i4VRcqcm+0QOTuuKj7pj0IB7yXlYFFY0oWK5IVp+6XcSK+QSqCeSQV3tXABBtmEPDgL3o8i7 jdesBPic4vi6pbg== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 From: Huisong Li The function mbox_chan_received_data() calls the Rx callback of the mailbox client driver. The callback might set chan_in_use flag from pcc_send_data(). This flag's status determines whether the PCC channel is in use. However, there is a potential race condition where chan_in_use is updated incorrectly due to concurrency between the interrupt handler (pcc_mbox_irq()) and the command sender(pcc_send_data()). The 'chan_in_use' flag of a channel is set to true after sending a command. And the flag of the new command may be cleared erroneous by the interrupt handler afer mbox_chan_received_data() returns, As a result, the interrupt being level triggered can't be cleared in pcc_mbox_irq() and it will be disabled after the number of handled times exceeds the specified value. The error log is as follows: | kunpeng_hccs HISI04B2:00: PCC command executed timeout! | kunpeng_hccs HISI04B2:00: get port link status info failed, ret = -110 | irq 13: nobody cared (try booting with the "irqpoll" option) | Call trace: | dump_backtrace+0x0/0x210 | show_stack+0x1c/0x2c | dump_stack+0xec/0x130 | __report_bad_irq+0x50/0x190 | note_interrupt+0x1e4/0x260 | handle_irq_event+0x144/0x17c | handle_fasteoi_irq+0xd0/0x240 | __handle_domain_irq+0x80/0xf0 | gic_handle_irq+0x74/0x2d0 | el1_irq+0xbc/0x140 | mnt_clone_write+0x0/0x70 | file_update_time+0xcc/0x160 | fault_dirty_shared_page+0xe8/0x150 | do_shared_fault+0x80/0x1d0 | do_fault+0x118/0x1a4 | handle_pte_fault+0x154/0x230 | __handle_mm_fault+0x1ac/0x390 | handle_mm_fault+0xf0/0x250 | do_page_fault+0x184/0x454 | do_translation_fault+0xac/0xd4 | do_mem_abort+0x44/0xb4 | el0_da+0x40/0x74 | el0_sync_handler+0x60/0xb4 | el0_sync+0x168/0x180 | handlers: | pcc_mbox_irq | Disabling IRQ #13 To solve this issue, pcc_mbox_irq() must clear 'chan_in_use' flag before the call to mbox_chan_received_data(). Signed-off-by: Huisong Li (sudeep.holla: Minor updates to the subject and commit message) Signed-off-by: Sudeep Holla --- drivers/mailbox/pcc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c index 82102a4c5d68839170238540a6fed61afa5185a0..f2e4087281c70eeb5b9b33371596613a371dff4f 100644 --- a/drivers/mailbox/pcc.c +++ b/drivers/mailbox/pcc.c @@ -333,10 +333,15 @@ static irqreturn_t pcc_mbox_irq(int irq, void *p) if (pcc_chan_reg_read_modify_write(&pchan->plat_irq_ack)) return IRQ_NONE; + /* + * Clear this flag immediately after updating interrupt ack register + * to avoid possible race in updatation of the flag from + * pcc_send_data() that could execute from mbox_chan_received_data() + */ + pchan->chan_in_use = false; mbox_chan_received_data(chan, NULL); check_and_ack(pchan, chan); - pchan->chan_in_use = false; return IRQ_HANDLED; } From patchwork Mon Mar 3 10:51:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 869853 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AD1EE1F4171; Mon, 3 Mar 2025 10:53:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999211; cv=none; b=JtyUrvuOSn2y1jwCuZDVGLeMchvB75nCV6rmP3ko/0vlbMzYIcc3dB0Ga1ohAZo72RlYVBPTR5nN2lPGL34zar4mNj1TnNNpS+e6D3yJsfYNqN9iJwRKl6xcm6lzioGo+3Qpfrw+XZruwN/F7NFTJxuAw5x5CrvFtKNHDBlrSe0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999211; c=relaxed/simple; bh=200nn/4JF4ubELss3QLL7p1PASyuP4e2PWPIQkroDkE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Oylh+Zs1xJ6BRP5NozjqgBYjSks6IjeQ5q3BnERTy0bGbs1QutYNQPAlDoB0utAm3HdAWIbms19XMKPqIxgV2/vb3fLRjbSLBahXXjLrBU43yN8R5WgjQbBEa6/jdce6FpjDOLUB9q6Kw/Tay8NmLGgJi4tImYLr5sOQmtLSTco= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 264082008; Mon, 3 Mar 2025 02:53:43 -0800 (PST) Received: from e133711.arm.com (e133711.arm.com [10.1.196.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0A3FA3F673; Mon, 3 Mar 2025 02:53:27 -0800 (PST) From: Sudeep Holla Date: Mon, 03 Mar 2025 10:51:38 +0000 Subject: [PATCH 03/14] mailbox: pcc: Drop unnecessary endianness conversion of pcc_hdr.flags Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250303-pcc_fixes_updates-v1-3-3b44f3d134b1@arm.com> References: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> In-Reply-To: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> To: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Jassi Brar , Huisong Li , Adam Young X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1458; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=200nn/4JF4ubELss3QLL7p1PASyuP4e2PWPIQkroDkE=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnxYohZmJ3X0WGWizJXAMHN4xUhfGZueR0Z07Dj q7KIRpPjESJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ8WKIQAKCRAAQbq8MX7i mJStD/4xFv05gSx16Q02HplCWvd9xj+wDUj8h5sm5XDXHkL47PmV6wfQGqVrrPdvQUbKgPFAT3u xQUmYrtSHKyjkh+cXL2545LmxLm6HUw4qVa+wMWMaIL2YWY5qZeIq3DabKRwTQkL1f0AtHSuLH8 gD0vMKUkAAUdfyA/XtHTxkVfLJv9YIOwAFDh+yYLLPzWc2I0rdfay8w53362zAlYG3j6CYP6Bso g/L1ggHB33nm16pUpsNH/NFxZci1p6wtnhmTcPd/gimQqtTHlmcf/qmCP8p+6NC/qnkwkXLy+Vk du3mM5JUTuaD/WCxK334tmlxr8zY3Umm9jHPzgnqyRyQ1AiFA6zYQqq8gljiMrkhKcFV8EWae+u tbUv6BCvm/fMOCtZUXuG7M22/hzfjLlt7w+ge+lV9u8Awhzo4sWE90SlS1O7IitmKbns4C9fJk5 iFjNmH4WdCFsTrBXsSUcvEwBFdfV8el4kamxeE/cB1ASzqqERqYlBNDbsiuJ/6UrRuniHLR1cWg oyOQSEtxRAEUVdbkGHuf8hS09nkXl5txSgkQ8BwSRusNbOb0GizkTy87xjyxz+7Opg/PPIn2Wtm NFJxScB3+X1PLuYMiPuHNPQz3Gl/5+Agn/8D/oOnTyHZ3/3B58gj6uMCb2braCN+YqaCvHn5+g5 gueITME3C6hscpA== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 The Sparse static checker flags a type mismatch warning related to endianness conversion: | warning: incorrect type in argument 1 (different base types) | expected restricted __le32 const [usertype] *p | got unsigned int * This is because an explicit endianness conversion (le32_to_cpu()) was applied unnecessarily to a pcc_hdr.flags field that is already in little-endian format. The PCC driver is only enabled on little-endian kernels due to its dependency on ACPI and EFI, making the explicit conversion unnecessary. The redundant conversion occurs in pcc_chan_check_and_ack() for the pcc_hdr.flags field. Drop this unnecessary endianness conversion of pcc_hdr.flags. Signed-off-by: Sudeep Holla --- drivers/mailbox/pcc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c index 4c582fa2b8bf4c9a9368dba8220f567555dba963..c87a5b7fa6eaf7bcabe0d55f844961c499376938 100644 --- a/drivers/mailbox/pcc.c +++ b/drivers/mailbox/pcc.c @@ -292,7 +292,7 @@ static void check_and_ack(struct pcc_chan_info *pchan, struct mbox_chan *chan) * * The PCC master subspace channel clears chan_in_use to free channel. */ - if (le32_to_cpup(&pcc_hdr.flags) & PCC_ACK_FLAG_MASK) + if (pcc_hdr.flags & PCC_ACK_FLAG_MASK) pcc_send_data(chan, NULL); else pcc_chan_reg_read_modify_write(&pchan->cmd_update); From patchwork Mon Mar 3 10:51:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 869852 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D2A971F4635; Mon, 3 Mar 2025 10:53:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999213; cv=none; b=M0vFo8qR70DfOR3BY1DwU/z+LFQ6iztcSj7OoYL9FsEDetOXVHpCO317u1JzkqQB15nr+ywZt780Z4MD5WmseK1Fb0BYGNQLRHWt4ZPmVPnc/wxZ61K7HcLQ+WhaeCKPUWT/t6P4amqVnaWAbQoyh/mcvfl2rXCdEvOguCav2TQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999213; c=relaxed/simple; bh=UbmacZHuc0rkrUhM8NEGGe2sjhxY+p2kFyDwy7F6O9g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SilJqwpSOgytkAkuKO8hXoJmvwC0PwFHuz8S/D4JXUx2x5E9WeaZ3lfI07etQGzHDjpfTqzMOhCsgvV4/24NN9j7MEd8ggpm2MZQ7JxB6EYNpbQk82/G9mZGb2k8Mh7vGqz043GCHUz74Xbr74ExnDfKCRYgsnZ+SEh9k1sM37w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C16C31FC7; Mon, 3 Mar 2025 02:53:45 -0800 (PST) Received: from e133711.arm.com (e133711.arm.com [10.1.196.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A57CF3F673; Mon, 3 Mar 2025 02:53:30 -0800 (PST) From: Sudeep Holla Date: Mon, 03 Mar 2025 10:51:40 +0000 Subject: [PATCH 05/14] mailbox: pcc: Use acpi_os_ioremap() instead of ioremap() Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250303-pcc_fixes_updates-v1-5-3b44f3d134b1@arm.com> References: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> In-Reply-To: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> To: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Jassi Brar , Huisong Li , Adam Young X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1277; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=UbmacZHuc0rkrUhM8NEGGe2sjhxY+p2kFyDwy7F6O9g=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnxYohDnfLle7CFfvs0cbGHG+605WgQHE8GV+YO iXyfhUuk1+JAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ8WKIQAKCRAAQbq8MX7i mCJTD/9tHPMsmYiCLgOELz0+VsOIsbtVXK06UOdVm5UAe+fTPWEd0bNLOlxhr2w6NdQ+bbuM3QW UE7/33ijae/yOzWqWRFTi2MIKj0BOtOg+Msox9oGXEkPz7o6P3WVs/s+PHWiKFaJ/O85kqnKtAX puwQeVseE+8P0h0J4h/4i8QlSi+Gi+Za7z7UhMwZPsGmWqoTu6jg42wvPCVyMmU+PSOlAeA+9Uo Lad0W1JTpz33WArz/7ZtnTkr4XdgqgyMJkIB1lZHNEnMDiqWF/6o5BcFdRS2c+ysBAF/rxRYIdr E0/vAzokYXFxB6cHYhgB3bqB1R6P0E/fUuIFwqg7vOHUuVX21AyO/STjH+kJ7ilvVnL28mr4yMQ A4iNv+XhT0x68wYCZteEVJiaz/CT1AlqbguP8RuhPVFUu+v8arjs/nKf0YzTX2sWVQv9YTjGIPz oSV+YtbVoHgO5Mm34oO6Lm95SLIuEB8JcUlAyyPrB+qwqHTb5Q5WG8lfe7q5nJuGFbn91lE6M+X 1Pf3ermNqu6zTi6TKvKb+gRM22CkScIHt/5kYUo/OKeND2zdDRlzUTZFfpd9hX+y9/mJMy8gvuR bDdh8u7b8wzj9P92LEq9j4eyWgnNexvj4i89DUepJgsMM3EX/6ah71HHNaVfme2b1YSsANyx2JQ fioy0b8vkC72yaQ== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 The Platform Communication Channel (PCC) mailbox driver currently uses ioremap() to map channel shared memory regions. However it is preferred to use acpi_os_ioremap(), which is mapping function specific to EFI/ACPI defined memory regions. It ensures that the correct memory attributes are applied when mapping ACPI-provided regions. While at it, also add checks for handling any errors with the mapping. Signed-off-by: Sudeep Holla --- drivers/mailbox/pcc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c index 98c99f0e24c4a654a8f4835063f5a479a433c9a0..a0fdafc3ef71d20c73ff58ef065201e6dc911396 100644 --- a/drivers/mailbox/pcc.c +++ b/drivers/mailbox/pcc.c @@ -418,8 +418,12 @@ int pcc_mbox_ioremap(struct mbox_chan *chan) return -1; pchan_info = chan->con_priv; pcc_mbox_chan = &pchan_info->chan; - pcc_mbox_chan->shmem = ioremap(pcc_mbox_chan->shmem_base_addr, - pcc_mbox_chan->shmem_size); + + pcc_mbox_chan->shmem = acpi_os_ioremap(pcc_mbox_chan->shmem_base_addr, + pcc_mbox_chan->shmem_size); + if (!pcc_mbox_chan->shmem) + return -ENXIO; + return 0; } EXPORT_SYMBOL_GPL(pcc_mbox_ioremap); From patchwork Mon Mar 3 10:51:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 869851 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 85F9A1F5831; Mon, 3 Mar 2025 10:53:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999216; cv=none; b=Z1WYI3qIJXLz0BuD+CBvdnULX7dNM3cliSAc9HMlCx/cqWf6C6sNzM8193QdMWPn2mO2r56cNVi2UII/peLiNNRHo8uZpke2HCVdkcX3HvSnKD9K1VFdS7GliULwsu9qUJKxq3Go03gm7M4JPqGJMTt3/9qdpldwT/6XqBV96Ew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999216; c=relaxed/simple; bh=u3wVE/ZfoE0JWVqpIaNDPrdp1FRUoL1ftJi5ZNONaTk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z4Y39QhYXFQ31Q7GPbpOTDaGIoxiFakklpUC75e5zAlRsNRiO1QTeQ/x5FzIQXC5xh7DO0wXxgKEHjMYQ1eH3K3KSbTUL/ra7cZE6uGz3XCLwGQT+QWeMYAELf5WU6qK/b/5VW16n/j+CUkg4TADTDPjuO2pdfAcZmHm2urWGkw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6976E204C; Mon, 3 Mar 2025 02:53:48 -0800 (PST) Received: from e133711.arm.com (e133711.arm.com [10.1.196.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4C27D3F673; Mon, 3 Mar 2025 02:53:33 -0800 (PST) From: Sudeep Holla Date: Mon, 03 Mar 2025 10:51:42 +0000 Subject: [PATCH 07/14] mailbox: pcc: Move pcc_mbox_ioremap() before pcc_mbox_request_channel() Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250303-pcc_fixes_updates-v1-7-3b44f3d134b1@arm.com> References: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> In-Reply-To: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> To: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Jassi Brar , Huisong Li , Adam Young X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2094; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=u3wVE/ZfoE0JWVqpIaNDPrdp1FRUoL1ftJi5ZNONaTk=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnxYoh25UXY+l7xb9TXLNxAznPkKfBn4zemN8E8 acTboQdllaJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ8WKIQAKCRAAQbq8MX7i mJgnD/95AZ0+SFqGInKhDg71UUdviLxFz0go4EkfWDZ+L0XOJfU+TvLZPpWZoQ4Sz2ThyRudlSW o+3taV1QdQ9wHd+bs2ILbELpm/ybpxaPlVB5hbirgQgmx4njkhJNbhNyiec8Z+HnjXewVwmbZan KKIU/cjuEdj3sreZecwlGdW9jW5njnfSqMzWu5G2GHOlIf3jtYL+VuxPI8Sg/SjsvJNv7a/cJVN ABQAkGgbUWmB7gF7PJJrDoXGHLWAcAizzVJlWXPtXRG6Q3Gig8lgjqpbg5nRW5OVL+obP0Zlhbi uu4RsCLimRGfyCxAaohkg0h3E+Zdf2NXwIRO0BtwntdGWzgdX/Jwt651xQFhyEwaIDmC0iAPiD9 YX357Qyko3JaNk3VuvgFiHpkZQaZ88taDkBYrSzEahFKsAZos23fBsRvQ07vU+KMowIeUag/QYB pPIXt7jghmRThAp7Fadcm+xZaKyVo+gI5URS/BDYaGKE47z0Fo7Earu4rtAU9im91zXII7PAcsM 7k2SLQGhZQdxZYh0Cx8/IM+NFRoJm3eWHBStUA1r04H49kU9oUG0OpsdV2KnrOo/+dlgSgpmIAi qUTC/bk7Q1g5SCyw8ikgRJ9rCNEpWBWS9QgerEeYolAyLnLrdPwrGu45dh2y/tzZ2QRmMTTHTsA XA2tPhwdrJeFSlw== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 In order to add support of mapping the generic communication shared memory region in the PCC mailbox driver when the PCC channel is requested, we need to move pcc_mbox_ioremap() before pcc_mbox_request_channel(). No functional change. Signed-off-by: Sudeep Holla --- drivers/mailbox/pcc.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c index e693675ce1fbd8d01d0640b3053a5c1882bdbce7..f230e512c29b79fc03e429145180ff049a250d2d 100644 --- a/drivers/mailbox/pcc.c +++ b/drivers/mailbox/pcc.c @@ -357,6 +357,25 @@ static irqreturn_t pcc_mbox_irq(int irq, void *p) return IRQ_HANDLED; } +int pcc_mbox_ioremap(struct mbox_chan *chan) +{ + struct pcc_chan_info *pchan_info; + struct pcc_mbox_chan *pcc_mbox_chan; + + if (!chan || !chan->cl) + return -1; + pchan_info = chan->con_priv; + pcc_mbox_chan = &pchan_info->chan; + + pcc_mbox_chan->shmem = acpi_os_ioremap(pcc_mbox_chan->shmem_base_addr, + pcc_mbox_chan->shmem_size); + if (!pcc_mbox_chan->shmem) + return -ENXIO; + + return 0; +} +EXPORT_SYMBOL_GPL(pcc_mbox_ioremap); + /** * pcc_mbox_request_channel - PCC clients call this function to * request a pointer to their PCC subspace, from which they @@ -419,25 +438,6 @@ void pcc_mbox_free_channel(struct pcc_mbox_chan *pchan) } EXPORT_SYMBOL_GPL(pcc_mbox_free_channel); -int pcc_mbox_ioremap(struct mbox_chan *chan) -{ - struct pcc_chan_info *pchan_info; - struct pcc_mbox_chan *pcc_mbox_chan; - - if (!chan || !chan->cl) - return -1; - pchan_info = chan->con_priv; - pcc_mbox_chan = &pchan_info->chan; - - pcc_mbox_chan->shmem = acpi_os_ioremap(pcc_mbox_chan->shmem_base_addr, - pcc_mbox_chan->shmem_size); - if (!pcc_mbox_chan->shmem) - return -ENXIO; - - return 0; -} -EXPORT_SYMBOL_GPL(pcc_mbox_ioremap); - /** * pcc_send_data - Called from Mailbox Controller code. Used * here only to ring the channel doorbell. The PCC client From patchwork Mon Mar 3 10:51:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 869850 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2AC471F76A8; Mon, 3 Mar 2025 10:53:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999218; cv=none; b=vEYFZ2BEpUWq4THomZMVQmGx4bA/XWgOZPmdvJryl8co0j4CL79vSC6gNfeIZ0uDMzzBG3GqDcDG7unxGRCqbd4RU3eQNMsgKYGUz97UmgZs6TqcYuWZ6W09w/uoEb5nMLc8lGR082cSm0ARMzWw/fJS2b9bdsT3ojSiSIOyj6I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999218; c=relaxed/simple; bh=ZHQsw9JxtEtWCNtTod+FBGG8c1aDXetOsMB/Gq2BJcg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZE89FdAb8lc0lPtRgtRXlB25QRO+JzFYQVCRRttYQIsgDCL6rLWDZ+WezuAHgtyIsfoqaMXj9pdHFRbtSfc/uVwBnJo/uMgzxAuO5dXbx7m5jCwQYlkDkYEv7JjwP7tgyAtu7WfDIKFtesTlMgXO7UUVSDwoAYMH9qA3TWuXrRE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0F20012FC; Mon, 3 Mar 2025 02:53:51 -0800 (PST) Received: from e133711.arm.com (e133711.arm.com [10.1.196.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E749E3F673; Mon, 3 Mar 2025 02:53:35 -0800 (PST) From: Sudeep Holla Date: Mon, 03 Mar 2025 10:51:44 +0000 Subject: [PATCH 09/14] mailbox: pcc: Refactor and simplify check_and_ack() Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250303-pcc_fixes_updates-v1-9-3b44f3d134b1@arm.com> References: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> In-Reply-To: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> To: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Jassi Brar , Huisong Li , Adam Young X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3243; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=ZHQsw9JxtEtWCNtTod+FBGG8c1aDXetOsMB/Gq2BJcg=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnxYoiRklIW0oglv683T42D8WPodP5k/f1q9Eff bTWohLZyPSJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ8WKIgAKCRAAQbq8MX7i mLeIEADUI/vKVRKk1CquSAGR2zhz9eRH/k7AjwBgDLyr/beQc/92U8vdcykP/NlpdhC9qGerAdO iksgfayzpUE0R8K4Tk7unsvk3TvCVY8cw0BAnrA4dILaKRxqlMBTRCShB+UzdO9JyBSYMd7ctbA 93aKKmjf0310RSYH1Znf7KrPTZf+FuGZrd5THdq2pT5fYuhw4YT+/RiUvUxccuTGmyDJfYky2Hz 4yqxyL4301KTqUKh0kMn/WFwQBMvpIVFTMopuRLdoQfrW93SpPmJmZeETA+WROwaTV1iVqin1yg CJyZgYIBVfyytVz3xch0YOdYYP0yKOSoeGkYt2BvyXG+u4zspD1Gf5Z74Q6E//j7so15Bsc6flJ F0omSfAlWhDqDYUS9gjOGTLyCrM61mv2hIRNpwtYE85t/Q4vceQQoSPZdQKH5lf4UMoPXdbD1Rq QKhHXQ0iUDFYKN9/HEBTtfo51nAQgPgrvqUNuve+a2KOginyGtrAbMsM2YIFzRwPMRmqhd9T4Pg 4/YVSWjObUUy7gG/KGfiW38pz/23u4sqyQkSWY7ZYGIQMDCXrCQzL4eIo5lRP6UD5DEz3eKEEER tDh/pkj1bEj/KBFf4QWWpju2LwQr8r+v32nXJvLjydL9Z3h7rxcd/rGGEzMyllPoz2dHwogBJ+m 0uxUQ+n1q+ANsGA== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 The existing check_and_ack() function had unnecessary complexity. The logic could be streamlined to improve code readability and maintainability. The command update register needs to be updated in order to acknowledge the platform notification through type 4 channel. So it can be done unconditionally. Currently it is complicated just to make use of pcc_send_data() which also executes the same updation. In order to simplify, let us just ring the doorbell directly from check_and_ack() instead of calling into pcc_send_data(). While at it, rename it into pcc_chan_check_and_ack() to maintain consistency in the driver. Signed-off-by: Sudeep Holla --- drivers/mailbox/pcc.c | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c index 5f2e2b727d99f07c44e87e44c11ba0aefe3a2318..17500d4122af3194011eb47bc91efa4317cd8a32 100644 --- a/drivers/mailbox/pcc.c +++ b/drivers/mailbox/pcc.c @@ -117,8 +117,6 @@ struct pcc_chan_info { static struct pcc_chan_info *chan_info; static int pcc_chan_count; -static int pcc_send_data(struct mbox_chan *chan, void *data); - /* * PCC can be used with perf critical drivers such as CPPC * So it makes sense to locally cache the virtual address and @@ -288,33 +286,25 @@ static int pcc_mbox_error_check_and_clear(struct pcc_chan_info *pchan) return 0; } -static void check_and_ack(struct pcc_chan_info *pchan, struct mbox_chan *chan) +static void pcc_chan_check_and_ack(struct pcc_chan_info *pchan) { - struct acpi_pcct_ext_pcc_shared_memory pcc_hdr; + struct acpi_pcct_ext_pcc_shared_memory __iomem *pcc_hdr; if (pchan->type != ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE) return; - /* If the memory region has not been mapped, we cannot - * determine if we need to send the message, but we still - * need to set the cmd_update flag before returning. - */ - if (pchan->chan.shmem == NULL) { - pcc_chan_reg_read_modify_write(&pchan->cmd_update); - return; - } - memcpy_fromio(&pcc_hdr, pchan->chan.shmem, - sizeof(struct acpi_pcct_ext_pcc_shared_memory)); + + pcc_chan_reg_read_modify_write(&pchan->cmd_update); + + pcc_hdr = pchan->chan.shmem; + /* - * The PCC slave subspace channel needs to set the command complete bit - * after processing message. If the PCC_ACK_FLAG is set, it should also - * ring the doorbell. - * - * The PCC master subspace channel clears chan_in_use to free channel. + * The PCC slave subspace channel needs to set the command + * complete bit after processing message. If the PCC_ACK_FLAG + * is set, it should also ring the doorbell. */ - if (pcc_hdr.flags & PCC_ACK_FLAG_MASK) - pcc_send_data(chan, NULL); - else - pcc_chan_reg_read_modify_write(&pchan->cmd_update); + if (ioread32(&pcc_hdr->flags) & PCC_ACK_FLAG_MASK) + pcc_chan_reg_read_modify_write(&pchan->db); + } /** @@ -352,7 +342,7 @@ static irqreturn_t pcc_mbox_irq(int irq, void *p) pchan->chan_in_use = false; mbox_chan_received_data(chan, NULL); - check_and_ack(pchan, chan); + pcc_chan_check_and_ack(pchan); return IRQ_HANDLED; } From patchwork Mon Mar 3 10:51:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 869849 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 346E01F875B; Mon, 3 Mar 2025 10:53:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999221; cv=none; b=nJ0DldH+Er4DnwywR1QZQFQg3NeFcT2ust0M2aSiHXAGEkYPUIGZY111AuKePvW9NTEztoGYwsvRBJm/rGjT7mscDAYqo7IT9ToCtdm9lPhNxGU81VYdOlT5vr7reUJYHJ/uHDprOSPlWVBy+EkuUMvinQ9u/FND92hwvgGQVLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999221; c=relaxed/simple; bh=MfSTY+8Javma4iMKIMRIP5AOm3S32ksYO4b7JbopmcE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Nj31qmXKISMpI7migibu2U0Ct3Wf5XKbreLzDRDw0v4RI6MWCyCiexUmya0LItvac2zLovhDMMmUKL1thynFe3Ty8pXHd13jt9q9jlnDBClLDSDp4NBqr64pjvB9lRWeGHXXsGbF0bmwK/Pvf5+D/5aGY43OD10xva92htvNMGM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F20D62008; Mon, 3 Mar 2025 02:53:53 -0800 (PST) Received: from e133711.arm.com (e133711.arm.com [10.1.196.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8ECEC3F673; Mon, 3 Mar 2025 02:53:38 -0800 (PST) From: Sudeep Holla Date: Mon, 03 Mar 2025 10:51:46 +0000 Subject: [PATCH 11/14] i2c: xgene-slimpro: Simplify PCC shared memory region handling Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250303-pcc_fixes_updates-v1-11-3b44f3d134b1@arm.com> References: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> In-Reply-To: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> To: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Jassi Brar , Huisong Li , Adam Young , Andi Shyti , linux-i2c@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3735; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=MfSTY+8Javma4iMKIMRIP5AOm3S32ksYO4b7JbopmcE=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnxYoi2nHgqkxUHTt758cixVVE8QA/rlgDBWi/d T7INXNU0HuJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ8WKIgAKCRAAQbq8MX7i mB+GEAC3iW/TRhSK3y8Krc/xktnm/Hfa1Tc/bl2PMFdgfLqbDRKR6bXC0V7m3HMXalYHqOsa0qT rMvYPKrdrUxTCeJyO0WIlrpRSsGLZ/GKgNWtWni1zVNoY1jrh6LjofUFMcmDYTVOPSdIA+Ykv3j Hkb/3MFb2TM+IuKjy8bcZBqJ0ER6a7K/so90OFPwZL7ju65vVLA0uAdA/2eioym+K/jG0B3fxaJ SO+f7mFRQSI9ys7zJo66abPTWDJ+F/ZEncQBzOs00asQdJWLNSAuMPJp292BnCxF5R0uWygi7DH 2YBo+7y9tBFPr20XN0l4w9nrgS9YrekrB15Aws82VWGexu2DP5UhBItQTM16hRpDd1+v69vjgZ+ n4l19dI9fGiIvGZ2/vXvrIU1/2jvoI4JR40Pd7JhcTEjmJTCbJD5lz2eBs/UKulnpOALUk/2f+u kXRkaIm2BvKMioRRzmd+j60OEyTekpt6TsuowOGZ4bxjxvNFo/0eLkIoiHqdlbbRA+Sy6dsBUhd vsGEXBf7vFJSCOhGFFazsJQlAkiIdRMMrnlZnF6vBz4x7X2pW8Dp34kQjduCQ/Mw05T0UoQWeTJ jvpVOV87Rk9KlAMlSzQW51wTUkSeuJngr9PSyhaOzkHlGFtC3RgcpsO6Rj0eDTBAslWJlAhMeaj NWURpMEQxip2LSg== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 The PCC driver now handles mapping and unmapping of shared memory areas as part of pcc_mbox_{request,free}_channel(). Without these before, this xgene-slimpro I2C driver did handling of those mappings like several other PCC mailbox client drivers. There were redundant operations, leading to unnecessary code. Maintaining the consistency across these driver was harder due to scattered handling of shmem. Just use the mapped shmem and remove all redundant operations from this driver. Cc: Andi Shyti Cc: linux-i2c@vger.kernel.org Signed-off-by: Sudeep Holla --- drivers/i2c/busses/i2c-xgene-slimpro.c | 39 ++++------------------------------ 1 file changed, 4 insertions(+), 35 deletions(-) diff --git a/drivers/i2c/busses/i2c-xgene-slimpro.c b/drivers/i2c/busses/i2c-xgene-slimpro.c index 663fe5604dd64b80e57f906e1f7430dcf6d5e95b..a0880f4a056d2b8abbac9f58416215a7fc9b130e 100644 --- a/drivers/i2c/busses/i2c-xgene-slimpro.c +++ b/drivers/i2c/busses/i2c-xgene-slimpro.c @@ -101,8 +101,6 @@ struct slimpro_i2c_dev { struct completion rd_complete; u8 dma_buffer[I2C_SMBUS_BLOCK_MAX + 1]; /* dma_buffer[0] is used for length */ u32 *resp_msg; - phys_addr_t comm_base_addr; - void *pcc_comm_addr; }; #define to_slimpro_i2c_dev(cl) \ @@ -148,7 +146,8 @@ static void slimpro_i2c_rx_cb(struct mbox_client *cl, void *mssg) static void slimpro_i2c_pcc_rx_cb(struct mbox_client *cl, void *msg) { struct slimpro_i2c_dev *ctx = to_slimpro_i2c_dev(cl); - struct acpi_pcct_shared_memory *generic_comm_base = ctx->pcc_comm_addr; + struct acpi_pcct_shared_memory __iomem *generic_comm_base = + ctx->pcc_chan->shmem; /* Check if platform sends interrupt */ if (!xgene_word_tst_and_clr(&generic_comm_base->status, @@ -169,7 +168,8 @@ static void slimpro_i2c_pcc_rx_cb(struct mbox_client *cl, void *msg) static void slimpro_i2c_pcc_tx_prepare(struct slimpro_i2c_dev *ctx, u32 *msg) { - struct acpi_pcct_shared_memory *generic_comm_base = ctx->pcc_comm_addr; + struct acpi_pcct_shared_memory __iomem *generic_comm_base = + ctx->pcc_chan->shmem; u32 *ptr = (void *)(generic_comm_base + 1); u16 status; int i; @@ -464,15 +464,12 @@ static int xgene_slimpro_i2c_probe(struct platform_device *pdev) } else { struct pcc_mbox_chan *pcc_chan; const struct acpi_device_id *acpi_id; - int version = XGENE_SLIMPRO_I2C_V1; acpi_id = acpi_match_device(pdev->dev.driver->acpi_match_table, &pdev->dev); if (!acpi_id) return -EINVAL; - version = (int)acpi_id->driver_data; - if (device_property_read_u32(&pdev->dev, "pcc-channel", &ctx->mbox_idx)) ctx->mbox_idx = MAILBOX_I2C_INDEX; @@ -494,34 +491,6 @@ static int xgene_slimpro_i2c_probe(struct platform_device *pdev) goto mbox_err; } - /* - * This is the shared communication region - * for the OS and Platform to communicate over. - */ - ctx->comm_base_addr = pcc_chan->shmem_base_addr; - if (ctx->comm_base_addr) { - if (version == XGENE_SLIMPRO_I2C_V2) - ctx->pcc_comm_addr = memremap( - ctx->comm_base_addr, - pcc_chan->shmem_size, - MEMREMAP_WT); - else - ctx->pcc_comm_addr = memremap( - ctx->comm_base_addr, - pcc_chan->shmem_size, - MEMREMAP_WB); - } else { - dev_err(&pdev->dev, "Failed to get PCC comm region\n"); - rc = -ENOENT; - goto mbox_err; - } - - if (!ctx->pcc_comm_addr) { - dev_err(&pdev->dev, - "Failed to ioremap PCC comm region\n"); - rc = -ENOMEM; - goto mbox_err; - } } rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); if (rc) From patchwork Mon Mar 3 10:51:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 869848 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BE49A1F3D31; Mon, 3 Mar 2025 10:53:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999225; cv=none; b=mkyxuUmVCz2mRb/Q5QVLHRK0Hx3WY2RKCqXde1k0UWfpcv1xc8tAmoAR5FBgVOZkX3k1I27N+9d/j32WIhF2EnUQLml2clREuakcQppl3vmk044J0emObHtisg7yXENWdLam/YcKgqXOQ4qm9DV9A0yzNSu84KlBrjJEjc/lltU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740999225; c=relaxed/simple; bh=tFkBXBO/atiCQgL+I5PaOZGXAVe1jBN5O3xNDo6yR1U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iMd1wbZUosYdSxt1KmR35JCPICHLIBgwokxiyUzYMNox2cm1bLzBAk6rlvWzHjg3uYIesF6SJj5Cd9tsR7d1YgQm7QRZmhDpXiYTJdyqXXrm7CbaCFlg0QPby303gjKoB+H4ATz/U0jcAZAnYWIHZw06Wu4VP1etiXd7Z1LdwfA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 33A0512FC; Mon, 3 Mar 2025 02:53:57 -0800 (PST) Received: from e133711.arm.com (e133711.arm.com [10.1.196.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E84E63F673; Mon, 3 Mar 2025 02:53:41 -0800 (PST) From: Sudeep Holla Date: Mon, 03 Mar 2025 10:51:48 +0000 Subject: [PATCH 13/14] ACPI: PCC: Simplify PCC shared memory region handling Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250303-pcc_fixes_updates-v1-13-3b44f3d134b1@arm.com> References: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> In-Reply-To: <20250303-pcc_fixes_updates-v1-0-3b44f3d134b1@arm.com> To: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Sudeep Holla , Jassi Brar , Huisong Li , Adam Young , "Rafael J. Wysocki" X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2287; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=tFkBXBO/atiCQgL+I5PaOZGXAVe1jBN5O3xNDo6yR1U=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBnxYoi9kbIIwhM7SN4/rMMClfDqLF6rC6WBUHLg wObMXTYtF+JAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZ8WKIgAKCRAAQbq8MX7i mL7QEACM8MCcc67ol1zd5JF6UmlSojZjf1D0hsEF5O5ueNd7RHwsyUMli77cfb2ZmtSf6TTCUY3 rRbFCmJkN+1Ly5iIXTJgoD701eEa2b0qD97DH9rAlWmBQqTGvxq55XlKcrvAyb0J72oBafzTY7L SQ3Z0ZpixC1zZW/6aFM8QeS2Hx8BaZbiBYxCUl8yld4fg4xWf5jX2x6j2hwhENWIUi/NmOUh4iH Dq+uXh/4EGtyADRInM/R84QSqJOqd41NNdoOx4StYzwrV5xBVtdnGOl0U/TGdE/2bwRircAWphv x2s1t4cH//+KjbAD972Rzio/kVgFq6Y1Y6dVJovGcRvYkbN63BdlJ34tDDatZ3lhF0tTaqX7HRJ FA4zoJc7ZoIenI649M/41bS31adFEyl0uora+DMw+C0DGn26B6cSAX7rKQv7YPkmq8GC1sZ87NQ Z1NfMObNVVYbSjyNmda7mCiHFOl58igJ2/atrZXhZ6bpxn/0k0PR91+HmM9C2yygbmm6rwgXA0B JDeK5O7n+IwPkFh0GDDWa4fY6TXLOwU/8EoZS+kFmJ+/74ir6xTVMyYQphGF4OeHa3t9av4UwVH 9j4l4oKNC0paEJjPq1yM+x4bxahMTbJiEB2ImH16YY2jtEBK81V/dnREKM7AjOthoD44R481mct vhmWxWSTKAoGHGg== X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 The PCC driver now handles mapping and unmapping of shared memory areas as part of pcc_mbox_{request,free}_channel(). Without these before, this ACPI PCC opregion driver did handling of those mappings like several other PCC mailbox client drivers. There were redundant operations, leading to unnecessary code. Maintaining the consistency across these driver was harder due to scattered handling of shmem. Just use the mapped shmem and remove all redundant operations from this driver. Cc: "Rafael J. Wysocki" Signed-off-by: Sudeep Holla --- drivers/acpi/acpi_pcc.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/drivers/acpi/acpi_pcc.c b/drivers/acpi/acpi_pcc.c index 07a034a53acac1e8307265bcc5572054d34d971f..97064e943768ad9f1704effa13dddbc0876a9452 100644 --- a/drivers/acpi/acpi_pcc.c +++ b/drivers/acpi/acpi_pcc.c @@ -31,7 +31,6 @@ struct pcc_data { struct pcc_mbox_chan *pcc_chan; - void __iomem *pcc_comm_addr; struct completion done; struct mbox_client cl; struct acpi_pcc_info ctx; @@ -81,14 +80,6 @@ acpi_pcc_address_space_setup(acpi_handle region_handle, u32 function, ret = AE_SUPPORT; goto err_free_channel; } - data->pcc_comm_addr = acpi_os_ioremap(pcc_chan->shmem_base_addr, - pcc_chan->shmem_size); - if (!data->pcc_comm_addr) { - pr_err("Failed to ioremap PCC comm region mem for %d\n", - ctx->subspace_id); - ret = AE_NO_MEMORY; - goto err_free_channel; - } *region_context = data; return AE_OK; @@ -113,7 +104,7 @@ acpi_pcc_address_space_handler(u32 function, acpi_physical_address addr, reinit_completion(&data->done); /* Write to Shared Memory */ - memcpy_toio(data->pcc_comm_addr, (void *)value, data->ctx.length); + memcpy_toio(data->pcc_chan->shmem, (void *)value, data->ctx.length); ret = mbox_send_message(data->pcc_chan->mchan, NULL); if (ret < 0) @@ -134,7 +125,7 @@ acpi_pcc_address_space_handler(u32 function, acpi_physical_address addr, mbox_chan_txdone(data->pcc_chan->mchan, ret); - memcpy_fromio(value, data->pcc_comm_addr, data->ctx.length); + memcpy_fromio(value, data->pcc_chan->shmem, data->ctx.length); return AE_OK; }