With the original owner of APPLE_MAILBOX removed, let's rename the new
APPLE_MBOX to the old name. This avoids .config churn for downstream
users, and leaves us with an identical config symbol and module name as
before.
Signed-off-by: Hector Martin <marcan@marcan.st>
---
drivers/soc/apple/Kconfig | 5 ++---
drivers/soc/apple/Makefile | 2 +-
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/soc/apple/Kconfig b/drivers/soc/apple/Kconfig
index d0e29bbd8c6f..c5203c388bf4 100644
--- a/drivers/soc/apple/Kconfig
+++ b/drivers/soc/apple/Kconfig
@@ -17,11 +17,10 @@ config APPLE_PMGR_PWRSTATE
controls for SoC devices. This driver manages them through the
generic power domain framework, and also provides reset support.
-config APPLE_MBOX
+config APPLE_MAILBOX
tristate "Apple SoC mailboxes"
depends on PM
depends on ARCH_APPLE || (64BIT && COMPILE_TEST)
- depends on !APPLE_MAILBOX
default ARCH_APPLE
help
Apple SoCs have various co-processors required for certain
@@ -33,7 +32,7 @@ config APPLE_MBOX
config APPLE_RTKIT
tristate "Apple RTKit co-processor IPC protocol"
- depends on APPLE_MBOX
+ depends on APPLE_MAILBOX
depends on ARCH_APPLE || COMPILE_TEST
default ARCH_APPLE
help
diff --git a/drivers/soc/apple/Makefile b/drivers/soc/apple/Makefile
index e52edf6a73da..20feee6f3943 100644
--- a/drivers/soc/apple/Makefile
+++ b/drivers/soc/apple/Makefile
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_APPLE_PMGR_PWRSTATE) += apple-pmgr-pwrstate.o
-obj-$(CONFIG_APPLE_MBOX) += apple-mailbox.o
+obj-$(CONFIG_APPLE_MAILBOX) += apple-mailbox.o
apple-mailbox-y = mailbox.o
obj-$(CONFIG_APPLE_RTKIT) += apple-rtkit.o
--
2.40.0
Hi Hector,
I love your patch! Yet something to improve:
[auto build test ERROR on bdfe6de2695c5bccc663a5a7d530f81925d8bc10]
url: https://github.com/intel-lab-lkp/linux/commits/Hector-Martin/soc-apple-rtkit-Get-rid-of-apple_rtkit_send_message_wait/20230328-211648
base: bdfe6de2695c5bccc663a5a7d530f81925d8bc10
patch link: https://lore.kernel.org/r/20230328-soc-mailbox-v1-5-3953814532fd%40marcan.st
patch subject: [PATCH 5/5] soc: apple: mailbox: Rename config symbol to APPLE_MAILBOX
config: ia64-allmodconfig (https://download.01.org/0day-ci/archive/20230329/202303291348.nYR9dkeW-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/d0addf95095d935cdd5940101fbf1b1594b08158
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Hector-Martin/soc-apple-rtkit-Get-rid-of-apple_rtkit_send_message_wait/20230328-211648
git checkout d0addf95095d935cdd5940101fbf1b1594b08158
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=ia64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=ia64 SHELL=/bin/bash drivers/soc/apple/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303291348.nYR9dkeW-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/soc/apple/mailbox.c: In function 'apple_mbox_send':
>> drivers/soc/apple/mailbox.c:151:24: error: implicit declaration of function 'FIELD_PREP' [-Werror=implicit-function-declaration]
151 | writeq_relaxed(FIELD_PREP(APPLE_MBOX_MSG1_MSG, msg.msg1),
| ^~~~~~~~~~
drivers/soc/apple/mailbox.c: In function 'apple_mbox_poll_locked':
>> drivers/soc/apple/mailbox.c:188:28: error: implicit declaration of function 'FIELD_GET' [-Werror=implicit-function-declaration]
188 | msg.msg1 = FIELD_GET(
| ^~~~~~~~~
cc1: some warnings being treated as errors
vim +/FIELD_PREP +151 drivers/soc/apple/mailbox.c
8b654b5034baba0 Hector Martin 2023-03-28 95
8b654b5034baba0 Hector Martin 2023-03-28 96 int apple_mbox_send(struct apple_mbox *mbox, const struct apple_mbox_msg msg,
8b654b5034baba0 Hector Martin 2023-03-28 97 bool atomic)
8b654b5034baba0 Hector Martin 2023-03-28 98 {
8b654b5034baba0 Hector Martin 2023-03-28 99 unsigned long flags;
8b654b5034baba0 Hector Martin 2023-03-28 100 int ret;
8b654b5034baba0 Hector Martin 2023-03-28 101 u32 mbox_ctrl;
8b654b5034baba0 Hector Martin 2023-03-28 102 long t;
8b654b5034baba0 Hector Martin 2023-03-28 103
8b654b5034baba0 Hector Martin 2023-03-28 104 spin_lock_irqsave(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28 105 mbox_ctrl = readl_relaxed(mbox->regs + mbox->hw->a2i_control);
8b654b5034baba0 Hector Martin 2023-03-28 106
8b654b5034baba0 Hector Martin 2023-03-28 107 while (mbox_ctrl & mbox->hw->control_full) {
8b654b5034baba0 Hector Martin 2023-03-28 108 if (atomic) {
8b654b5034baba0 Hector Martin 2023-03-28 109 ret = readl_poll_timeout_atomic(
8b654b5034baba0 Hector Martin 2023-03-28 110 mbox->regs + mbox->hw->a2i_control, mbox_ctrl,
8b654b5034baba0 Hector Martin 2023-03-28 111 !(mbox_ctrl & mbox->hw->control_full), 100,
8b654b5034baba0 Hector Martin 2023-03-28 112 APPLE_MBOX_TX_TIMEOUT * 1000);
8b654b5034baba0 Hector Martin 2023-03-28 113
8b654b5034baba0 Hector Martin 2023-03-28 114 if (ret) {
8b654b5034baba0 Hector Martin 2023-03-28 115 spin_unlock_irqrestore(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28 116 return ret;
8b654b5034baba0 Hector Martin 2023-03-28 117 }
8b654b5034baba0 Hector Martin 2023-03-28 118
8b654b5034baba0 Hector Martin 2023-03-28 119 break;
8b654b5034baba0 Hector Martin 2023-03-28 120 }
8b654b5034baba0 Hector Martin 2023-03-28 121 /*
8b654b5034baba0 Hector Martin 2023-03-28 122 * The interrupt is level triggered and will keep firing as long as the
8b654b5034baba0 Hector Martin 2023-03-28 123 * FIFO is empty. It will also keep firing if the FIFO was empty
8b654b5034baba0 Hector Martin 2023-03-28 124 * at any point in the past until it has been acknowledged at the
8b654b5034baba0 Hector Martin 2023-03-28 125 * mailbox level. By acknowledging it here we can ensure that we will
8b654b5034baba0 Hector Martin 2023-03-28 126 * only get the interrupt once the FIFO has been cleared again.
8b654b5034baba0 Hector Martin 2023-03-28 127 * If the FIFO is already empty before the ack it will fire again
8b654b5034baba0 Hector Martin 2023-03-28 128 * immediately after the ack.
8b654b5034baba0 Hector Martin 2023-03-28 129 */
8b654b5034baba0 Hector Martin 2023-03-28 130 if (mbox->hw->has_irq_controls) {
8b654b5034baba0 Hector Martin 2023-03-28 131 writel_relaxed(mbox->hw->irq_bit_send_empty,
8b654b5034baba0 Hector Martin 2023-03-28 132 mbox->regs + mbox->hw->irq_ack);
8b654b5034baba0 Hector Martin 2023-03-28 133 }
8b654b5034baba0 Hector Martin 2023-03-28 134 enable_irq(mbox->irq_send_empty);
8b654b5034baba0 Hector Martin 2023-03-28 135 reinit_completion(&mbox->tx_empty);
8b654b5034baba0 Hector Martin 2023-03-28 136 spin_unlock_irqrestore(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28 137
8b654b5034baba0 Hector Martin 2023-03-28 138 t = wait_for_completion_interruptible_timeout(
8b654b5034baba0 Hector Martin 2023-03-28 139 &mbox->tx_empty,
8b654b5034baba0 Hector Martin 2023-03-28 140 msecs_to_jiffies(APPLE_MBOX_TX_TIMEOUT));
8b654b5034baba0 Hector Martin 2023-03-28 141 if (t < 0)
8b654b5034baba0 Hector Martin 2023-03-28 142 return t;
8b654b5034baba0 Hector Martin 2023-03-28 143 else if (t == 0)
8b654b5034baba0 Hector Martin 2023-03-28 144 return -ETIMEDOUT;
8b654b5034baba0 Hector Martin 2023-03-28 145
8b654b5034baba0 Hector Martin 2023-03-28 146 spin_lock_irqsave(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28 147 mbox_ctrl = readl_relaxed(mbox->regs + mbox->hw->a2i_control);
8b654b5034baba0 Hector Martin 2023-03-28 148 }
8b654b5034baba0 Hector Martin 2023-03-28 149
8b654b5034baba0 Hector Martin 2023-03-28 150 writeq_relaxed(msg.msg0, mbox->regs + mbox->hw->a2i_send0);
8b654b5034baba0 Hector Martin 2023-03-28 @151 writeq_relaxed(FIELD_PREP(APPLE_MBOX_MSG1_MSG, msg.msg1),
8b654b5034baba0 Hector Martin 2023-03-28 152 mbox->regs + mbox->hw->a2i_send1);
8b654b5034baba0 Hector Martin 2023-03-28 153
8b654b5034baba0 Hector Martin 2023-03-28 154 spin_unlock_irqrestore(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28 155
8b654b5034baba0 Hector Martin 2023-03-28 156 return 0;
8b654b5034baba0 Hector Martin 2023-03-28 157 }
8b654b5034baba0 Hector Martin 2023-03-28 158 EXPORT_SYMBOL(apple_mbox_send);
8b654b5034baba0 Hector Martin 2023-03-28 159
8b654b5034baba0 Hector Martin 2023-03-28 160 static irqreturn_t apple_mbox_send_empty_irq(int irq, void *data)
8b654b5034baba0 Hector Martin 2023-03-28 161 {
8b654b5034baba0 Hector Martin 2023-03-28 162 struct apple_mbox *mbox = data;
8b654b5034baba0 Hector Martin 2023-03-28 163
8b654b5034baba0 Hector Martin 2023-03-28 164 /*
8b654b5034baba0 Hector Martin 2023-03-28 165 * We don't need to acknowledge the interrupt at the mailbox level
8b654b5034baba0 Hector Martin 2023-03-28 166 * here even if supported by the hardware. It will keep firing but that
8b654b5034baba0 Hector Martin 2023-03-28 167 * doesn't matter since it's disabled at the main interrupt controller.
8b654b5034baba0 Hector Martin 2023-03-28 168 * apple_mbox_send will acknowledge it before enabling
8b654b5034baba0 Hector Martin 2023-03-28 169 * it at the main controller again.
8b654b5034baba0 Hector Martin 2023-03-28 170 */
8b654b5034baba0 Hector Martin 2023-03-28 171 spin_lock(&mbox->tx_lock);
8b654b5034baba0 Hector Martin 2023-03-28 172 disable_irq_nosync(mbox->irq_send_empty);
8b654b5034baba0 Hector Martin 2023-03-28 173 complete(&mbox->tx_empty);
8b654b5034baba0 Hector Martin 2023-03-28 174 spin_unlock(&mbox->tx_lock);
8b654b5034baba0 Hector Martin 2023-03-28 175
8b654b5034baba0 Hector Martin 2023-03-28 176 return IRQ_HANDLED;
8b654b5034baba0 Hector Martin 2023-03-28 177 }
8b654b5034baba0 Hector Martin 2023-03-28 178
8b654b5034baba0 Hector Martin 2023-03-28 179 static int apple_mbox_poll_locked(struct apple_mbox *mbox)
8b654b5034baba0 Hector Martin 2023-03-28 180 {
8b654b5034baba0 Hector Martin 2023-03-28 181 struct apple_mbox_msg msg;
8b654b5034baba0 Hector Martin 2023-03-28 182 int ret = 0;
8b654b5034baba0 Hector Martin 2023-03-28 183
8b654b5034baba0 Hector Martin 2023-03-28 184 u32 mbox_ctrl = readl_relaxed(mbox->regs + mbox->hw->i2a_control);
8b654b5034baba0 Hector Martin 2023-03-28 185
8b654b5034baba0 Hector Martin 2023-03-28 186 while (!(mbox_ctrl & mbox->hw->control_empty)) {
8b654b5034baba0 Hector Martin 2023-03-28 187 msg.msg0 = readq_relaxed(mbox->regs + mbox->hw->i2a_recv0);
8b654b5034baba0 Hector Martin 2023-03-28 @188 msg.msg1 = FIELD_GET(
8b654b5034baba0 Hector Martin 2023-03-28 189 APPLE_MBOX_MSG1_MSG,
8b654b5034baba0 Hector Martin 2023-03-28 190 readq_relaxed(mbox->regs + mbox->hw->i2a_recv1));
8b654b5034baba0 Hector Martin 2023-03-28 191
8b654b5034baba0 Hector Martin 2023-03-28 192 mbox->rx(mbox, msg, mbox->cookie);
8b654b5034baba0 Hector Martin 2023-03-28 193 ret++;
8b654b5034baba0 Hector Martin 2023-03-28 194 mbox_ctrl = readl_relaxed(mbox->regs + mbox->hw->i2a_control);
8b654b5034baba0 Hector Martin 2023-03-28 195 }
8b654b5034baba0 Hector Martin 2023-03-28 196
8b654b5034baba0 Hector Martin 2023-03-28 197 /*
8b654b5034baba0 Hector Martin 2023-03-28 198 * The interrupt will keep firing even if there are no more messages
8b654b5034baba0 Hector Martin 2023-03-28 199 * unless we also acknowledge it at the mailbox level here.
8b654b5034baba0 Hector Martin 2023-03-28 200 * There's no race if a message comes in between the check in the while
8b654b5034baba0 Hector Martin 2023-03-28 201 * loop above and the ack below: If a new messages arrives inbetween
8b654b5034baba0 Hector Martin 2023-03-28 202 * those two the interrupt will just fire again immediately after the
8b654b5034baba0 Hector Martin 2023-03-28 203 * ack since it's level triggered.
8b654b5034baba0 Hector Martin 2023-03-28 204 */
8b654b5034baba0 Hector Martin 2023-03-28 205 if (mbox->hw->has_irq_controls) {
8b654b5034baba0 Hector Martin 2023-03-28 206 writel_relaxed(mbox->hw->irq_bit_recv_not_empty,
8b654b5034baba0 Hector Martin 2023-03-28 207 mbox->regs + mbox->hw->irq_ack);
8b654b5034baba0 Hector Martin 2023-03-28 208 }
8b654b5034baba0 Hector Martin 2023-03-28 209
8b654b5034baba0 Hector Martin 2023-03-28 210 return ret;
8b654b5034baba0 Hector Martin 2023-03-28 211 }
8b654b5034baba0 Hector Martin 2023-03-28 212
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
On Tue, 28 Mar 2023 at 14:21, Hector Martin <marcan@marcan.st> wrote: > > With the original owner of APPLE_MAILBOX removed, let's rename the new > APPLE_MBOX to the old name. This avoids .config churn for downstream > users, and leaves us with an identical config symbol and module name as > before. > > Signed-off-by: Hector Martin <marcan@marcan.st> Watched the stream Acked-by: Eric Curtin <ecurtin@redhat.com> Is mise le meas/Regards, Eric Curtin > --- > drivers/soc/apple/Kconfig | 5 ++--- > drivers/soc/apple/Makefile | 2 +- > 2 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/soc/apple/Kconfig b/drivers/soc/apple/Kconfig > index d0e29bbd8c6f..c5203c388bf4 100644 > --- a/drivers/soc/apple/Kconfig > +++ b/drivers/soc/apple/Kconfig > @@ -17,11 +17,10 @@ config APPLE_PMGR_PWRSTATE > controls for SoC devices. This driver manages them through the > generic power domain framework, and also provides reset support. > > -config APPLE_MBOX > +config APPLE_MAILBOX > tristate "Apple SoC mailboxes" > depends on PM > depends on ARCH_APPLE || (64BIT && COMPILE_TEST) > - depends on !APPLE_MAILBOX > default ARCH_APPLE > help > Apple SoCs have various co-processors required for certain > @@ -33,7 +32,7 @@ config APPLE_MBOX > > config APPLE_RTKIT > tristate "Apple RTKit co-processor IPC protocol" > - depends on APPLE_MBOX > + depends on APPLE_MAILBOX > depends on ARCH_APPLE || COMPILE_TEST > default ARCH_APPLE > help > diff --git a/drivers/soc/apple/Makefile b/drivers/soc/apple/Makefile > index e52edf6a73da..20feee6f3943 100644 > --- a/drivers/soc/apple/Makefile > +++ b/drivers/soc/apple/Makefile > @@ -1,7 +1,7 @@ > # SPDX-License-Identifier: GPL-2.0-only > obj-$(CONFIG_APPLE_PMGR_PWRSTATE) += apple-pmgr-pwrstate.o > > -obj-$(CONFIG_APPLE_MBOX) += apple-mailbox.o > +obj-$(CONFIG_APPLE_MAILBOX) += apple-mailbox.o > apple-mailbox-y = mailbox.o > > obj-$(CONFIG_APPLE_RTKIT) += apple-rtkit.o > > -- > 2.40.0 > >
© 2016 - 2026 Red Hat, Inc.