From: Arnd Bergmann <arnd@arndb.de>
To: Oren Weil <oren.jer.weil@intel.com>
Cc: gregkh@suse.de, linux-kernel@vger.kernel.org,
alan@linux.intel.com, david@woodhou.se
Subject: Re: [PATCH 1/7] char/mei: PCI device and char driver support.
Date: Tue, 22 Mar 2011 18:22:43 +0100 [thread overview]
Message-ID: <201103221822.43780.arnd@arndb.de> (raw)
In-Reply-To: <1300791092-14319-2-git-send-email-oren.jer.weil@intel.com>
On Tuesday 22 March 2011, Oren Weil wrote:
> +static ssize_t mei_read(struct file *file, char __user *ubuf,
> + size_t length, loff_t *offset)
> +{
> + int i;
> + int rets;
> + int err;
> + int if_num = iminor(file->f_dentry->d_inode);
> + struct mei_file_private *file_ext = file->private_data;
> + struct mei_cb_private *priv_cb_pos = NULL;
> + struct mei_cb_private *priv_cb = NULL;
> + struct mei_device *dev;
> +
> + if (!mei_device)
> + return -ENODEV;
> +
> + dev = pci_get_drvdata(mei_device);
> + if (if_num != MEI_MINOR_NUMBER || !dev || !file_ext)
> + return -ENODEV;
> +
I'm very confused by this code and how you support multiple
instances of PCI devices, cb_list entries and concurrent connections:
* You look up a global pointer to mei_device, when there could
be multiple PCI devices.
* You use the minor number of the chardev as an index throughout
the code, but bail out if it does not match a constant.
* You walk a list of mei_cb_private entries when you should have
just a single one for this file. In other places, you walk a list
of mei_file_private entries.
I think you should try to document your data structures and how
they relate to each other, and remove all that turn out not to
be needed in the process.
>From the brief look I had at this rather complex code, I would
assume that it could look something like this:
* In the PCI probe function, create a misc character device for
every instance you find behind each device. Remove the global
variables and constants.
* Unify mei_file_private and mei_cb_private, allocate at open
time but fill when the ioctl gets called.
Would that work, or am I missing something major?
Arnd
next prev parent reply other threads:[~2011-03-22 17:22 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-22 10:51 [PATCH 0/7] char/mei: Intel MEI Driver Oren Weil
2011-03-22 10:51 ` [PATCH 1/7] char/mei: PCI device and char driver support Oren Weil
2011-03-22 17:22 ` Arnd Bergmann [this message]
2011-03-22 21:57 ` Alan Cox
2011-03-22 22:22 ` Greg KH
2011-03-22 23:04 ` Alan Cox
2011-03-23 7:59 ` Arnd Bergmann
2011-03-22 10:51 ` [PATCH 2/7] char/mei: Interrupt handling Oren Weil
2011-03-22 10:51 ` [PATCH 3/7] char/mei: MEI "Link" layer code - MEI Hardware communications Oren Weil
2011-03-22 10:51 ` [PATCH 4/7] char/mei: MEI driver init flow Oren Weil
2011-03-22 10:51 ` [PATCH 5/7] char/mei: Hardware and MEI driver internal struct definition Oren Weil
2011-03-22 10:51 ` [PATCH 6/7] char/mei: Header file contain the Userland API, (IOCTL and its struct) Oren Weil
2011-03-22 16:26 ` Greg KH
2011-03-22 16:41 ` Arnd Bergmann
2011-03-22 10:51 ` [PATCH 7/7] char/mei: Updates to char/Kconfig ane char/Makefile Oren Weil
2011-03-23 21:43 ` Valdis.Kletnieks
2011-03-22 16:23 ` [PATCH 0/7] char/mei: Intel MEI Driver Greg KH
2011-03-23 12:25 ` Weil, Oren jer
2011-03-23 13:50 ` Greg KH
2011-03-22 16:50 ` Arnd Bergmann
2011-03-23 7:20 ` Weil, Oren jer
2011-03-23 13:51 ` Greg KH
2011-03-23 15:55 ` Weil, Oren jer
2011-03-23 16:06 ` Greg KH
2011-03-23 16:20 ` Arnd Bergmann
2011-03-24 12:54 ` Weil, Oren jer
2011-03-24 13:10 ` Arnd Bergmann
2011-04-04 15:54 ` Pavel Machek
2011-04-05 6:01 ` Weil, Oren jer
2011-04-18 13:53 ` Pavel Machek
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=201103221822.43780.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=alan@linux.intel.com \
--cc=david@woodhou.se \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=oren.jer.weil@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.