From: Mark Brown <broonie@kernel.org>
To: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: Andi Shyti <andi.shyti@kernel.org>,
Johan Hovold <johan@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux Next Mailing List <linux-next@vger.kernel.org>,
Wolfram Sang <wsa+renesas@sang-engineering.com>
Subject: linux-next: manual merge of the kthread tree with the i2c-host-fixes tree
Date: Tue, 9 Jun 2026 16:24:35 +0100 [thread overview]
Message-ID: <aigwM8t2LnDJvgdy@sirena.co.uk> (raw)
[-- Attachment #1: Type: text/plain, Size: 5442 bytes --]
Hi all,
Today's linux-next merge of the kthread tree got a conflict in:
drivers/i2c/i2c-core-base.c
between commit:
84762906e2666d ("i2c: core: fix adapter debugfs creation")
from the i2c-host-fixes tree and commits:
07d5fb537928aa ("i2c: core: fix adapter debugfs creation")
a378a2bc73e3b7 ("i2c: core: clean up bus id allocation")
from the kthread tree.
I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging. You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.
diff --combined drivers/i2c/i2c-core-base.c
index 764e293236b572,31e956bb3b7222..00000000000000
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@@ -1516,23 -1516,48 +1516,48 @@@ int i2c_handle_smbus_host_notify(struc
}
EXPORT_SYMBOL_GPL(i2c_handle_smbus_host_notify);
+ static int i2c_allocate_adapter_id(struct i2c_adapter *adap)
+ {
+ int id, start, end;
+
+ if (adap->nr == -1) {
+ start = __i2c_first_dynamic_bus_num;
+ end = 0;
+ } else {
+ start = adap->nr;
+ end = adap->nr + 1;
+ }
+
+ mutex_lock(&core_lock);
+ id = idr_alloc(&i2c_adapter_idr, NULL, start, end, GFP_KERNEL);
+ mutex_unlock(&core_lock);
+ if (id < 0) {
+ if (adap->nr != -1 && id == -ENOSPC)
+ id = -EBUSY;
+ pr_err("adapter '%s': failed to allocate id: %d\n", adap->name, id);
+ return id;
+ }
+
+ adap->nr = id;
+
+ return 0;
+ }
+
static int i2c_register_adapter(struct i2c_adapter *adap)
{
- int res = -EINVAL;
+ int res;
/* Can't register until after driver model init */
- if (WARN_ON(!is_registered)) {
- res = -EAGAIN;
- goto out_list;
- }
+ if (WARN_ON(!is_registered))
+ return -EAGAIN;
/* Sanity checks */
if (WARN(!adap->name[0], "i2c adapter has no name"))
- goto out_list;
+ return -EINVAL;
if (!adap->algo) {
pr_err("adapter '%s': no algo supplied!\n", adap->name);
- goto out_list;
+ return -EINVAL;
}
if (!adap->lock_ops)
@@@ -1553,12 -1578,16 +1578,16 @@@
if (res) {
pr_err("adapter '%s': can't create Host Notify IRQs (%d)\n",
adap->name, res);
- goto out_list;
+ return res;
}
+ res = i2c_allocate_adapter_id(adap);
+ if (res)
+ goto err_remove_irq_domain;
+
res = dev_set_name(&adap->dev, "i2c-%d", adap->nr);
if (res)
- goto err_remove_irq_domain;
+ goto err_free_id;
adap->dev.bus = &i2c_bus_type;
adap->dev.type = &i2c_adapter_type;
@@@ -1591,7 -1620,7 +1620,11 @@@
res = i2c_setup_smbus_alert(adap);
if (res)
++<<<<<<< HEAD
+ goto out_reg;
++=======
+ goto err_deregister_clients;
++>>>>>>> i2c/i2c/for-next
dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
@@@ -1610,7 -1639,7 +1643,11 @@@
return 0;
++<<<<<<< HEAD
+out_reg:
++=======
+ err_deregister_clients:
++>>>>>>> i2c/i2c/for-next
i2c_deregister_clients(adap);
device_del(&adap->dev);
err_replace_id:
@@@ -1623,36 -1652,17 +1660,46 @@@ err_put_adap
init_completion(&adap->dev_released);
put_device(&adap->dev);
wait_for_completion(&adap->dev_released);
++<<<<<<< HEAD
+err_remove_irq_domain:
+ i2c_host_notify_irq_teardown(adap);
+out_list:
++=======
+ err_free_id:
++>>>>>>> i2c/i2c/for-next
mutex_lock(&core_lock);
idr_remove(&i2c_adapter_idr, adap->nr);
mutex_unlock(&core_lock);
+ err_remove_irq_domain:
+ i2c_host_notify_irq_teardown(adap);
+
return res;
}
/**
++<<<<<<< HEAD
+ * __i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
+ * @adap: the adapter to register (with adap->nr initialized)
+ * Context: can sleep
+ *
+ * See i2c_add_numbered_adapter() for details.
+ */
+static int __i2c_add_numbered_adapter(struct i2c_adapter *adap)
+{
+ int id;
+
+ mutex_lock(&core_lock);
+ id = idr_alloc(&i2c_adapter_idr, NULL, adap->nr, adap->nr + 1, GFP_KERNEL);
+ mutex_unlock(&core_lock);
+ if (WARN(id < 0, "couldn't get idr"))
+ return id == -ENOSPC ? -EBUSY : id;
+
+ return i2c_register_adapter(adap);
+}
+
+/**
++=======
++>>>>>>> i2c/i2c/for-next
* i2c_add_adapter - declare i2c adapter, use dynamic bus number
* @adapter: the adapter to add
* Context: can sleep
@@@ -1672,17 -1682,8 +1719,22 @@@ int i2c_add_adapter(struct i2c_adapter
int id;
id = of_alias_get_id(dev->of_node, "i2c");
++<<<<<<< HEAD
+ if (id >= 0) {
+ adapter->nr = id;
+ return __i2c_add_numbered_adapter(adapter);
+ }
+
+ mutex_lock(&core_lock);
+ id = idr_alloc(&i2c_adapter_idr, NULL,
+ __i2c_first_dynamic_bus_num, 0, GFP_KERNEL);
+ mutex_unlock(&core_lock);
+ if (WARN(id < 0, "couldn't get idr"))
+ return id;
++=======
+ if (id < 0)
+ id = -1;
++>>>>>>> i2c/i2c/for-next
adapter->nr = id;
@@@ -1718,7 -1719,7 +1770,7 @@@ int i2c_add_numbered_adapter(struct i2c
if (adap->nr == -1) /* -1 means dynamically assign bus id */
return i2c_add_adapter(adap);
- return __i2c_add_numbered_adapter(adap);
+ return i2c_register_adapter(adap);
}
EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next reply other threads:[~2026-06-09 15:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-09 15:24 Mark Brown [this message]
2026-06-09 15:35 ` Wolfram Sang
2026-06-09 15:36 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aigwM8t2LnDJvgdy@sirena.co.uk \
--to=broonie@kernel.org \
--cc=andi.shyti@kernel.org \
--cc=johan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=wsa+renesas@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®