From: Michael Welling <mwelling@ieee.org>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: Linus Walleij <linus.walleij@linaro.org>,
Roland Dreier <rolandd@cisco.com>,
kernel test robot <ying.huang@linux.intel.com>,
lkp@01.org, LKML <linux-kernel@vger.kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Markus Pargmann <mpa@pengutronix.de>,
Johan Hovold <johan@kernel.org>
Subject: Re: [lkp] [gpio] 3c702e9987: kmsg.user_verbs:couldn't_register_device_number
Date: Sun, 14 Feb 2016 13:51:20 -0600 [thread overview]
Message-ID: <20160214195120.GA7608@deathstar> (raw)
In-Reply-To: <20160214190515.GA23912@kroah.com>
On Sun, Feb 14, 2016 at 11:05:15AM -0800, Greg KH wrote:
> On Sun, Feb 14, 2016 at 06:56:20PM +0100, Linus Walleij wrote:
> > On Sun, Feb 14, 2016 at 6:49 PM, Greg KH <gregkh@linuxfoundation.org> wrote:
> > > On Sun, Feb 14, 2016 at 06:42:11PM +0100, Linus Walleij wrote:
> > >> Greg, heads-up on this... you'd know if this happened
> > >> before.
> > >>
> > >> On Sun, Feb 14, 2016 at 9:06 AM, Michael Welling <mwelling@ieee.org> wrote:
> > >> > On Sun, Feb 14, 2016 at 02:59:06PM +0800, kernel test robot wrote:
> > >> >> FYI, we noticed the below changes on
> > >> >>
> > >> >> https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git chardev
> > >> >> commit 3c702e9987e261042a07e43460a8148be254412e ("gpio: add a userspace chardev ABI for GPIOs")
> > >> >>
> > >> >>
> > >> >> [ 1.951191] user_verbs: couldn't register device number
> > >> >
> > >> > Looks like user_verbs is using a static device node setup.
> > >> >
> > >> > enum {
> > >> > IB_UVERBS_MAJOR = 231,
> > >> > IB_UVERBS_BASE_MINOR = 192,
> > >> > IB_UVERBS_MAX_DEVICES = 32
> > >> > };
> > >> >
> > >> > #define IB_UVERBS_BASE_DEV MKDEV(IB_UVERBS_MAJOR, IB_UVERBS_BASE_MINOR)
> > >>
> > >> That's annoying...
> > >> I notice that infiniband is using register_chrdev_region() at
> > >> module_init() time, counting on device major 231 to be free.
> > >
> > > That device major is assigned to Infiniband, why shouldn't it be doing
> > > this?
> >
> > I mean it's annoying that they collide. (Because of the details I
> > write below, it's fine it's using the assigned number.
> >
> > > Why not just ask for a new reserved one? We could give you 261 and
> > > everything should be fine, right?
> >
> > Sure I can post a patch for that, but it just mitigates the problem.
> >
> > The report point to the serious problem that on this system
> > some dynamic allocations have already stolen major device
> > numbers 232 thru 255, and 232 and 233 are also assigned.
> >
> > What do you think about a patch that makes fs/char_dev.c
> > emit a warning when it starts assigning dynamic numbers
> > 233 and below?
>
> That's fine with me. I also think maybe we should look into just
> switching all char major/minor allocation to be dynamic, starting at the
> bottom and moving up. I think the only tools that might have an issue
> with that is the raw device controller, but maybe that has been fixed up
> in userspace, I haven't looked at that in many years.
>
Is there any reason for the CHRDEV_MAJOR_HASH_SIZE being 255?
If we increase the size to say 511 will it break userspace?
In the future I see a robot building a kernel with more that 255 devices and
having to deal with this kind of collision again.
The handling of large major assignment baffles me.
The major numbers outside of the size of the table are just wrapping around to
the beginning again. This is inherently going to cause collisions.
static inline int major_to_index(unsigned major)
{
return major % CHRDEV_MAJOR_HASH_SIZE;
}
> I thought I had an old patch around somewhere that did that, will go
> look for it this week and see what breaks with it enabled...
>
> thanks,
>
> greg k-h
next prev parent reply other threads:[~2016-02-14 19:51 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-14 6:59 [lkp] [gpio] 3c702e9987: kmsg.user_verbs:couldn't_register_device_number kernel test robot
2016-02-14 8:06 ` Michael Welling
2016-02-14 17:42 ` Linus Walleij
2016-02-14 17:49 ` Greg KH
2016-02-14 17:56 ` Linus Walleij
2016-02-14 19:05 ` Greg KH
2016-02-14 19:51 ` Michael Welling [this message]
2016-02-14 23:49 ` Greg KH
2016-02-15 4:21 ` Michael Welling
2016-02-14 17:48 ` Linus Walleij
2016-02-15 2:39 ` [LKP] " Huang, Ying
2016-02-15 9:36 ` Linus Walleij
2016-02-23 6:35 ` Huang, Ying
2016-02-23 21:50 ` Michael Welling
2016-02-24 16:01 ` Linus Walleij
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=20160214195120.GA7608@deathstar \
--to=mwelling@ieee.org \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=johan@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@01.org \
--cc=mpa@pengutronix.de \
--cc=rolandd@cisco.com \
--cc=ying.huang@linux.intel.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