From: Wei Yang <weiyang@linux.vnet.ibm.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: Wei Yang <weiyang@linux.vnet.ibm.com>,
netdev <netdev@vger.kernel.org>,
yevgenyp@mellanox.com, Or Gerlitz <ogerlitz@mellanox.com>,
Amir Vadai <amirv@mellanox.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
David Miller <davem@davemloft.net>
Subject: Re: [PATCH] net/mlx4_core: match pci_device_id including dynids
Date: Fri, 4 Apr 2014 22:20:17 +0800 [thread overview]
Message-ID: <20140404142017.GB5969@richard> (raw)
In-Reply-To: <20140403211254.GA21931@google.com>
On Thu, Apr 03, 2014 at 03:12:54PM -0600, Bjorn Helgaas wrote:
>On Thu, Apr 03, 2014 at 02:54:32PM +0800, Wei Yang wrote:
>> Here is another one based on your comment, which split mlx4_remove_one into
>> two and named a helper __mlx4_remove_one(). mlx4_pci_err_detected() will just
>> call __mlx4_remove_one(), which will not release drvdata.
>>
>> BTW, this is not tested, just want to make sure my understanding is correct.
>
>A couple minor comments below, but in general, yes, this is what I was
>thinking.
>
>> From 84a5a9df0604cbea9b70c74b0709258841637946 Mon Sep 17 00:00:00 2001
>> From: Wei Yang <weiyang@linux.vnet.ibm.com>
>> Date: Mon, 31 Mar 2014 11:34:57 +0800
>> Subject: [PATCH] net/mlx4_core: match pci_device_id including dynids
>>
>> Fix issue introduced by commit: 97a5221 "net/mlx4_core: pass
>> pci_device_id.driver_data to __mlx4_init_one during reset".
>>
>> pci_match_id() just match the static pci_device_id, which may return NULL if
>> someone binds the driver to a device manually using
>> /sys/bus/pci/drivers/.../new_id.
>>
>> This patch wrap up a helper function __mlx4_remove_one() which does the tear
>> down function but preserve the drv_data. Functions like
>> mlx4_pci_err_detected() and mlx4_restart_one() will call this one with out
>> releasing drvdata.
>>
>> CC: Bjorn Helgaas <bhelgaas@google.com>
>> CC: Amir Vadai <amirv@mellanox.com>
>> Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
>> Acked-by: Amir Vadai <amirv@mellanox.com>
>> ---
>> drivers/net/ethernet/mellanox/mlx4/main.c | 149 ++++++++++++++++-------------
>> 1 file changed, 80 insertions(+), 69 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
>> index aa54ef7..fd1f288 100644
>> --- a/drivers/net/ethernet/mellanox/mlx4/main.c
>> +++ b/drivers/net/ethernet/mellanox/mlx4/main.c
>> @@ -2268,7 +2268,12 @@ static int __mlx4_init_one(struct pci_dev *pdev, int pci_dev_data)
>> /* Allow large DMA segments, up to the firmware limit of 1 GB */
>> dma_set_max_seg_size(&pdev->dev, 1024 * 1024 * 1024);
>>
>> - priv = kzalloc(sizeof(*priv), GFP_KERNEL);
>> + dev = pci_get_drvdata(pdev);
>> + if (!dev)
>> + priv = kzalloc(sizeof(*priv), GFP_KERNEL);
>> + else
>> + priv = mlx4_priv(dev);
>
>Why don't you move the priv kzalloc into mlx4_init_one()? Then it would be
>symmetric -- you alloc and call pci_set_drvdata() in mlx4_init_one(), and
>you call pci_set_drvdata(NULL) and free it in mlx4_remove_one(). And you
>wouldn't need the test here.
>
Agree, this looks more consistent.
Will write a formal version and send to mail list after verification.
--
Richard Yang
Help you, Help me
prev parent reply other threads:[~2014-04-04 14:20 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-01 4:36 [PATCH] net/mlx4_core: match pci_device_id including dynids Wei Yang
2014-04-02 2:29 ` David Miller
2014-04-02 18:28 ` Bjorn Helgaas
2014-04-03 1:51 ` Wei Yang
2014-04-03 3:11 ` Bjorn Helgaas
2014-04-03 6:54 ` Wei Yang
2014-04-03 21:12 ` Bjorn Helgaas
2014-04-04 14:20 ` Wei Yang [this message]
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=20140404142017.GB5969@richard \
--to=weiyang@linux.vnet.ibm.com \
--cc=amirv@mellanox.com \
--cc=bhelgaas@google.com \
--cc=davem@davemloft.net \
--cc=linux-pci@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=ogerlitz@mellanox.com \
--cc=yevgenyp@mellanox.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.