From: willy@linux.intel.com (Matthew Wilcox)
Subject: [PATCH] NVMe: Add a character device for each nvme device
Date: Fri, 27 Jul 2012 15:08:21 -0400 [thread overview]
Message-ID: <20120727190821.GO22985@linux.intel.com> (raw)
In-Reply-To: <20120727182546.GA23874@kroah.com>
On Fri, Jul 27, 2012@11:25:46AM -0700, Greg KH wrote:
> On Fri, Jul 27, 2012@02:12:12PM -0400, Matthew Wilcox wrote:
> > I don't see a problem here, but I'm no expert at sysfs / character devices.
> > Alan, Greg, anyone else see any problems with how this character device is
> > created / destroyed?
>
> Yes, see below:
Thanks!
> > > + device_create(nvme_char_cl, NULL, MKDEV(nvme_char_major, dev->instance),
> > > + NULL, "nvme%d", dev->instance);
>
> You just created a device at the "root" of sysfs, which is wrong,
> especially when you do have a parent device here. Please use it.
OK, that makes sense; this device should be the child of the pci_dev that
it belongs to.
> Also, why are you creating your own class? Can't this just be a misc
> device? And if you want to create your own class, please don't, use a
> bus, as that is what is really happening here, right? We are trying to
> move away from using 'struct class' wherever possible (one of these days
> we'll just remove it...)
What we're trying to achieve here is to create one character device
per NVMe controller that gets plugged in. Each NVMe controller is-a
PCI function. The reason we're trying to do this is so that we can send
commands to the NVMe controller, even when there is no storage present
(eg a drive is shipped from the factory with no configured storage).
So we have no particular desire to create a new struct class, or struct
bus. If we can create a misc device per PCIe function that's bound to our
driver, that's great! Can you recommend a driver that does this already?
WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox <willy@linux.intel.com>
To: Greg KH <greg@kroah.com>
Cc: Keith Busch <keith.busch@intel.com>,
linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: [PATCH] NVMe: Add a character device for each nvme device
Date: Fri, 27 Jul 2012 15:08:21 -0400 [thread overview]
Message-ID: <20120727190821.GO22985@linux.intel.com> (raw)
In-Reply-To: <20120727182546.GA23874@kroah.com>
On Fri, Jul 27, 2012 at 11:25:46AM -0700, Greg KH wrote:
> On Fri, Jul 27, 2012 at 02:12:12PM -0400, Matthew Wilcox wrote:
> > I don't see a problem here, but I'm no expert at sysfs / character devices.
> > Alan, Greg, anyone else see any problems with how this character device is
> > created / destroyed?
>
> Yes, see below:
Thanks!
> > > + device_create(nvme_char_cl, NULL, MKDEV(nvme_char_major, dev->instance),
> > > + NULL, "nvme%d", dev->instance);
>
> You just created a device at the "root" of sysfs, which is wrong,
> especially when you do have a parent device here. Please use it.
OK, that makes sense; this device should be the child of the pci_dev that
it belongs to.
> Also, why are you creating your own class? Can't this just be a misc
> device? And if you want to create your own class, please don't, use a
> bus, as that is what is really happening here, right? We are trying to
> move away from using 'struct class' wherever possible (one of these days
> we'll just remove it...)
What we're trying to achieve here is to create one character device
per NVMe controller that gets plugged in. Each NVMe controller is-a
PCI function. The reason we're trying to do this is so that we can send
commands to the NVMe controller, even when there is no storage present
(eg a drive is shipped from the factory with no configured storage).
So we have no particular desire to create a new struct class, or struct
bus. If we can create a misc device per PCIe function that's bound to our
driver, that's great! Can you recommend a driver that does this already?
next prev parent reply other threads:[~2012-07-27 19:08 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-27 16:44 [PATCH] NVMe: Add a character device for each nvme device Keith Busch
2012-07-27 18:12 ` Matthew Wilcox
2012-07-27 18:12 ` Matthew Wilcox
2012-07-27 18:25 ` Greg KH
2012-07-27 18:25 ` Greg KH
2012-07-27 19:08 ` Matthew Wilcox [this message]
2012-07-27 19:08 ` Matthew Wilcox
2012-07-27 19:21 ` Greg KH
2012-07-27 19:21 ` Greg KH
2012-07-27 20:30 ` Matthew Wilcox
2012-07-27 20:30 ` Matthew Wilcox
2012-07-27 19:28 ` Jeff Garzik
2012-07-27 19:28 ` Jeff Garzik
2012-07-27 20:26 ` Matthew Wilcox
2012-07-27 20:26 ` Matthew Wilcox
2012-07-27 20:42 ` Jeff Garzik
2012-07-27 20:42 ` Jeff Garzik
2012-07-27 20:44 ` Matthew Wilcox
-- strict thread matches above, loose matches on Subject: below --
2012-08-02 19:10 Keith Busch
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=20120727190821.GO22985@linux.intel.com \
--to=willy@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.