From: Greg KH <gregkh@linuxfoundation.org>
To: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: arnd@arndb.de, linux-kernel@vger.kernel.org,
kernel-janitors@vger.kernel.org
Subject: Re: [PATCH 1/2] misc: hpilo: switch from 'pci_' to 'dma_' API
Date: Thu, 23 Jul 2020 10:56:02 +0000 [thread overview]
Message-ID: <20200723105602.GD1949236@kroah.com> (raw)
In-Reply-To: <15e5f2e4-a623-3fc2-36b6-4132ee316220@wanadoo.fr>
On Thu, Jul 23, 2020 at 10:59:49AM +0200, Christophe JAILLET wrote:
> Le 23/07/2020 à 09:34, Greg KH a écrit :
> > On Sat, Jul 18, 2020 at 09:02:24AM +0200, Christophe JAILLET wrote:
> > > The wrappers in include/linux/pci-dma-compat.h should go away.
> > >
> > > The patch has been generated with the coccinelle script below and has been
> > > hand modified to replace GFP_ with a correct flag.
> > > It has been compile tested.
> > >
> > > When memory is allocated in 'ilo_ccb_setup()' GFP_ATOMIC must be used
> > > because a spin_lock is hold in 'ilo_open()' before calling
> > > 'ilo_ccb_setup()'
>
> ^
> |
{sigh} see how well I read changelog text...
>
> > > [...]
> > >
> > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > > ---
> > > If needed, see post from Christoph Hellwig on the kernel-janitors ML:
> > > https://marc.info/?l=kernel-janitors&m\x158745678307186&w=4
> > > ---
> > > drivers/misc/hpilo.c | 7 ++++---
> > > 1 file changed, 4 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/misc/hpilo.c b/drivers/misc/hpilo.c
> > > index 10c975662f8b..c9539c89a925 100644
> > > --- a/drivers/misc/hpilo.c
> > > +++ b/drivers/misc/hpilo.c
> > > @@ -256,7 +256,8 @@ static void ilo_ccb_close(struct pci_dev *pdev, struct ccb_data *data)
> > > memset_io(device_ccb, 0, sizeof(struct ccb));
> > > /* free resources used to back send/recv queues */
> > > - pci_free_consistent(pdev, data->dma_size, data->dma_va, data->dma_pa);
> > > + dma_free_coherent(&pdev->dev, data->dma_size, data->dma_va,
> > > + data->dma_pa);
> > > }
> > > static int ilo_ccb_setup(struct ilo_hwinfo *hw, struct ccb_data *data, int slot)
> > > @@ -272,8 +273,8 @@ static int ilo_ccb_setup(struct ilo_hwinfo *hw, struct ccb_data *data, int slot)
> > > 2 * desc_mem_sz(NR_QENTRY) +
> > > ILO_START_ALIGN + ILO_CACHE_SZ;
> > > - data->dma_va = pci_alloc_consistent(hw->ilo_dev, data->dma_size,
> > > - &data->dma_pa);
> > > + data->dma_va = dma_alloc_coherent(&hw->ilo_dev->dev, data->dma_size,
> > > + &data->dma_pa, GFP_ATOMIC);
> >
> > This is being called from open() so it can be GFP_KERNEL. Can you fix
> > that up and resend a new version?
> >
> > thanks,
> >
> > greg k-h
> >
>
> The call chain is:
> .open (file_operations)
> --> ilo_open
> spin_lock(&hw->open_lock); (around line 782)
> --> ilo_ccb_setup (hw->open_lock is still hold)
>
> So I think that GFP_ATOMIC is needed here, or the code should be reworked to
> avoid holding the spin_lock when ilo_ccb_setup is called.
Ok, fair enough, this patch is ok as-is, I'll go queue it up. Further
fixes for this to move the spinlock out from this is probably a good
idea, if anyone cares about this driver anymore.
thanks,
greg k-h
WARNING: multiple messages have this Message-ID (diff)
From: Greg KH <gregkh@linuxfoundation.org>
To: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: arnd@arndb.de, linux-kernel@vger.kernel.org,
kernel-janitors@vger.kernel.org
Subject: Re: [PATCH 1/2] misc: hpilo: switch from 'pci_' to 'dma_' API
Date: Thu, 23 Jul 2020 12:56:02 +0200 [thread overview]
Message-ID: <20200723105602.GD1949236@kroah.com> (raw)
In-Reply-To: <15e5f2e4-a623-3fc2-36b6-4132ee316220@wanadoo.fr>
On Thu, Jul 23, 2020 at 10:59:49AM +0200, Christophe JAILLET wrote:
> Le 23/07/2020 à 09:34, Greg KH a écrit :
> > On Sat, Jul 18, 2020 at 09:02:24AM +0200, Christophe JAILLET wrote:
> > > The wrappers in include/linux/pci-dma-compat.h should go away.
> > >
> > > The patch has been generated with the coccinelle script below and has been
> > > hand modified to replace GFP_ with a correct flag.
> > > It has been compile tested.
> > >
> > > When memory is allocated in 'ilo_ccb_setup()' GFP_ATOMIC must be used
> > > because a spin_lock is hold in 'ilo_open()' before calling
> > > 'ilo_ccb_setup()'
>
> ^
> |
{sigh} see how well I read changelog text...
>
> > > [...]
> > >
> > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > > ---
> > > If needed, see post from Christoph Hellwig on the kernel-janitors ML:
> > > https://marc.info/?l=kernel-janitors&m=158745678307186&w=4
> > > ---
> > > drivers/misc/hpilo.c | 7 ++++---
> > > 1 file changed, 4 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/misc/hpilo.c b/drivers/misc/hpilo.c
> > > index 10c975662f8b..c9539c89a925 100644
> > > --- a/drivers/misc/hpilo.c
> > > +++ b/drivers/misc/hpilo.c
> > > @@ -256,7 +256,8 @@ static void ilo_ccb_close(struct pci_dev *pdev, struct ccb_data *data)
> > > memset_io(device_ccb, 0, sizeof(struct ccb));
> > > /* free resources used to back send/recv queues */
> > > - pci_free_consistent(pdev, data->dma_size, data->dma_va, data->dma_pa);
> > > + dma_free_coherent(&pdev->dev, data->dma_size, data->dma_va,
> > > + data->dma_pa);
> > > }
> > > static int ilo_ccb_setup(struct ilo_hwinfo *hw, struct ccb_data *data, int slot)
> > > @@ -272,8 +273,8 @@ static int ilo_ccb_setup(struct ilo_hwinfo *hw, struct ccb_data *data, int slot)
> > > 2 * desc_mem_sz(NR_QENTRY) +
> > > ILO_START_ALIGN + ILO_CACHE_SZ;
> > > - data->dma_va = pci_alloc_consistent(hw->ilo_dev, data->dma_size,
> > > - &data->dma_pa);
> > > + data->dma_va = dma_alloc_coherent(&hw->ilo_dev->dev, data->dma_size,
> > > + &data->dma_pa, GFP_ATOMIC);
> >
> > This is being called from open() so it can be GFP_KERNEL. Can you fix
> > that up and resend a new version?
> >
> > thanks,
> >
> > greg k-h
> >
>
> The call chain is:
> .open (file_operations)
> --> ilo_open
> spin_lock(&hw->open_lock); (around line 782)
> --> ilo_ccb_setup (hw->open_lock is still hold)
>
> So I think that GFP_ATOMIC is needed here, or the code should be reworked to
> avoid holding the spin_lock when ilo_ccb_setup is called.
Ok, fair enough, this patch is ok as-is, I'll go queue it up. Further
fixes for this to move the spinlock out from this is probably a good
idea, if anyone cares about this driver anymore.
thanks,
greg k-h
next prev parent reply other threads:[~2020-07-23 10:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-18 7:02 [PATCH 1/2] misc: hpilo: switch from 'pci_' to 'dma_' API Christophe JAILLET
2020-07-18 7:02 ` Christophe JAILLET
2020-07-23 7:34 ` Greg KH
2020-07-23 7:34 ` Greg KH
2020-07-23 8:59 ` Christophe JAILLET
2020-07-23 8:59 ` Christophe JAILLET
2020-07-23 10:56 ` Greg KH [this message]
2020-07-23 10:56 ` Greg KH
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=20200723105602.GD1949236@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=arnd@arndb.de \
--cc=christophe.jaillet@wanadoo.fr \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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.