mbox series

[v9,00/11] idxd 'struct device' lifetime handling fixes

Message ID 161739324574.2945060.13103097793006713734.stgit@djiang5-desk3.ch.intel.com (mailing list archive)
Headers show
Series idxd 'struct device' lifetime handling fixes | expand

Message

Dave Jiang April 2, 2021, 7:56 p.m. UTC
v9:
- Fill in details for commit messages (Jason)
- Fix wrong indentation (Jason)
- Move stray change to the right patch (Jason)
- Remove idxd_free() and refactor 'struct device' setup so we can use
  ->release() calls to clean up. (Jason)
- Change idr to ida. (Jason)
- Remove static type detection for each device type (Dan)

v8:
- Do not emit negative value for sysfs 'minor' attrib (Dan)
- Use sysfs_emit() to emit sysfs 'minor' attrib (Jason)
- Fix interation of unwind cleanup of various allocation. (DanC)

v7:
- Fix up the 'struct device' setup in char device code (Jason)
- Split out the char dev fixes (Jason)
- Split out the DMA dev fixes (Dan)
- Split out the each of the conf_dev fixes
- Split out removal of the pcim_* calls
- Split out removal of the devm_* calls
- Split out the fixes for interrupt config calls
- Reviewed by Dan.

v6:
- Fix char dev initialization issues (Jason)
- Fix other 'struct device' initialization issues.

v5:
- Rebased against 5.12-rc dmaengine/fixes
v4:
- fix up the life time of cdev creation/destruction (Jason)
- Tested with KASAN and other memory allocation leak detections. (Jason)

v3:
- Remove devm_* for irq request and cleanup related bits (Jason)
v2:
- Remove all devm_* alloc for idxd_device (Jason)
- Add kref dep for dma_dev (Jason)

Vinod,
The series fixes the various 'struct device' lifetime handling in the
idxd driver. The devm managed lifetime is incompatible with 'struct device'
objects that resides in the idxd context. Tested with
CONFIG_DEBUG_KOBJECT_RELEASE and address all issues from that.

Please consider for damengine/fixes for the 5.12-rc.

---

Dave Jiang (11):
      dmaengine: idxd: fix dma device lifetime
      dmaengine: idxd: cleanup pci interrupt vector allocation management
      dmaengine: idxd: removal of pcim managed mmio mapping
      dmaengine: idxd: use ida for device instance enumeration
      dmaengine: idxd: fix idxd conf_dev 'struct device' lifetime
      dmaengine: idxd: fix wq conf_dev 'struct device' lifetime
      dmaengine: idxd: fix engine conf_dev lifetime
      dmaengine: idxd: fix group conf_dev lifetime
      dmaengine: idxd: fix cdev setup and free device lifetime issues
      dmaengine: idxd: iax bus removal
      dmaengine: idxd: remove detection of device type


 drivers/dma/idxd/cdev.c   | 132 +++++-------
 drivers/dma/idxd/device.c |  36 ++--
 drivers/dma/idxd/idxd.h   |  83 +++++---
 drivers/dma/idxd/init.c   | 383 ++++++++++++++++++++++-------------
 drivers/dma/idxd/irq.c    |  10 +-
 drivers/dma/idxd/submit.c |   2 +-
 drivers/dma/idxd/sysfs.c  | 410 ++++++++++++++------------------------
 7 files changed, 525 insertions(+), 531 deletions(-)

--

Comments

Dave Jiang April 8, 2021, midnight UTC | #1
On 4/2/2021 12:56 PM, Dave Jiang wrote:
> v9:
> - Fill in details for commit messages (Jason)
> - Fix wrong indentation (Jason)
> - Move stray change to the right patch (Jason)
> - Remove idxd_free() and refactor 'struct device' setup so we can use
>    ->release() calls to clean up. (Jason)
> - Change idr to ida. (Jason)
> - Remove static type detection for each device type (Dan)

Hi Jason, thanks for all your reviews. Do you have any additional 
comments with this series? I'd like this series to be accepted by Vinod 
for 5.12-rc if possible. Thanks!



>
> v8:
> - Do not emit negative value for sysfs 'minor' attrib (Dan)
> - Use sysfs_emit() to emit sysfs 'minor' attrib (Jason)
> - Fix interation of unwind cleanup of various allocation. (DanC)
>
> v7:
> - Fix up the 'struct device' setup in char device code (Jason)
> - Split out the char dev fixes (Jason)
> - Split out the DMA dev fixes (Dan)
> - Split out the each of the conf_dev fixes
> - Split out removal of the pcim_* calls
> - Split out removal of the devm_* calls
> - Split out the fixes for interrupt config calls
> - Reviewed by Dan.
>
> v6:
> - Fix char dev initialization issues (Jason)
> - Fix other 'struct device' initialization issues.
>
> v5:
> - Rebased against 5.12-rc dmaengine/fixes
> v4:
> - fix up the life time of cdev creation/destruction (Jason)
> - Tested with KASAN and other memory allocation leak detections. (Jason)
>
> v3:
> - Remove devm_* for irq request and cleanup related bits (Jason)
> v2:
> - Remove all devm_* alloc for idxd_device (Jason)
> - Add kref dep for dma_dev (Jason)
>
> Vinod,
> The series fixes the various 'struct device' lifetime handling in the
> idxd driver. The devm managed lifetime is incompatible with 'struct device'
> objects that resides in the idxd context. Tested with
> CONFIG_DEBUG_KOBJECT_RELEASE and address all issues from that.
>
> Please consider for damengine/fixes for the 5.12-rc.
>
> ---
>
> Dave Jiang (11):
>        dmaengine: idxd: fix dma device lifetime
>        dmaengine: idxd: cleanup pci interrupt vector allocation management
>        dmaengine: idxd: removal of pcim managed mmio mapping
>        dmaengine: idxd: use ida for device instance enumeration
>        dmaengine: idxd: fix idxd conf_dev 'struct device' lifetime
>        dmaengine: idxd: fix wq conf_dev 'struct device' lifetime
>        dmaengine: idxd: fix engine conf_dev lifetime
>        dmaengine: idxd: fix group conf_dev lifetime
>        dmaengine: idxd: fix cdev setup and free device lifetime issues
>        dmaengine: idxd: iax bus removal
>        dmaengine: idxd: remove detection of device type
>
>
>   drivers/dma/idxd/cdev.c   | 132 +++++-------
>   drivers/dma/idxd/device.c |  36 ++--
>   drivers/dma/idxd/idxd.h   |  83 +++++---
>   drivers/dma/idxd/init.c   | 383 ++++++++++++++++++++++-------------
>   drivers/dma/idxd/irq.c    |  10 +-
>   drivers/dma/idxd/submit.c |   2 +-
>   drivers/dma/idxd/sysfs.c  | 410 ++++++++++++++------------------------
>   7 files changed, 525 insertions(+), 531 deletions(-)
>
> --
>
Jason Gunthorpe April 8, 2021, noon UTC | #2
On Wed, Apr 07, 2021 at 05:00:21PM -0700, Dave Jiang wrote:
> 
> On 4/2/2021 12:56 PM, Dave Jiang wrote:
> > v9:
> > - Fill in details for commit messages (Jason)
> > - Fix wrong indentation (Jason)
> > - Move stray change to the right patch (Jason)
> > - Remove idxd_free() and refactor 'struct device' setup so we can use
> >    ->release() calls to clean up. (Jason)
> > - Change idr to ida. (Jason)
> > - Remove static type detection for each device type (Dan)
> 
> Hi Jason, thanks for all your reviews. Do you have any additional comments
> with this series? I'd like this series to be accepted by Vinod for 5.12-rc
> if possible. Thanks!

It is probably way to big for a -rc6 kernel.

Nothing stands out as making this worse, so I have no objection to
Vinod taking it, but I didn't look to see if there are more things
that need attention.

Jason
Dave Jiang April 8, 2021, 3:03 p.m. UTC | #3
On 4/8/2021 5:00 AM, Jason Gunthorpe wrote:
> On Wed, Apr 07, 2021 at 05:00:21PM -0700, Dave Jiang wrote:
>> On 4/2/2021 12:56 PM, Dave Jiang wrote:
>>> v9:
>>> - Fill in details for commit messages (Jason)
>>> - Fix wrong indentation (Jason)
>>> - Move stray change to the right patch (Jason)
>>> - Remove idxd_free() and refactor 'struct device' setup so we can use
>>>     ->release() calls to clean up. (Jason)
>>> - Change idr to ida. (Jason)
>>> - Remove static type detection for each device type (Dan)
>> Hi Jason, thanks for all your reviews. Do you have any additional comments
>> with this series? I'd like this series to be accepted by Vinod for 5.12-rc
>> if possible. Thanks!
> It is probably way to big for a -rc6 kernel.
>
> Nothing stands out as making this worse, so I have no objection to
> Vinod taking it, but I didn't look to see if there are more things
> that need attention.

Thanks for the reviews! There is another series coming after that that 
cleans up the driver setup side of things.


Vinod, please let me know how you want this handled. Thanks!


> Jason