mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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 --]

             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®