Trivial CIO2 patches
Subsystems (2)
Sakari Ailus
maintainercover Trivial CIO2 patches
Hi,
Here are two simple cio2 patches. Slightly safer module removal plus a cleanup.
Sakari Ailus (2):
ipu3-cio2: Unregister device nodes first, then release resources
ipu3-cio2: Use cio2_queues_exit
drivers/media/pci/intel/ipu3/ipu3-cio2.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
Signature · 1 line
2.11.0
Sakari Ailus
maintainerPATCH 1/2 ipu3-cio2: Unregister device nodes first, then release resources
While there are issues related to object lifetime management, unregister the media device first, followed immediately by other device nodes when the driver is being unbound. Only then the resources needed by the driver may be released. This is slightly safer.
--- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/media/pci/intel/ipu3/ipu3-cio2.c +2 -2
@@ -1846,12 +1846,12 @@ static void cio2_pci_remove(struct pci_dev *pci_dev)struct cio2_device *cio2 =pci_get_drvdata (pci_dev);unsigned int i; +media_device_unregister (&cio2->media_dev);cio2_notifier_exit (cio2); -cio2_fbpt_exit_dummy (cio2);for (i =0 ; i <CIO2_QUEUES ; i++)cio2_queue_exit (cio2, &cio2->queue[i]); +cio2_fbpt_exit_dummy (cio2);v4l2_device_unregister (&cio2->v4l2_dev); -media_device_unregister (&cio2->media_dev);media_device_cleanup (&cio2->media_dev);mutex_destroy (&cio2->lock); }
Signature · 1 line
2.11.0
Re: [PATCH 1/2] ipu3-cio2: Unregister device nodes first, then release resources
Quoted 29 lines · Sakari Ailus
While there are issues related to object lifetime management, unregister the media device first, followed immediately by other device nodes when the driver is being unbound. Only then the resources needed by the driver may be released. This is slightly safer.
Signed-off-by Sakari Ailus <[email protected]>--- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/media/pci/intel/ipu3/ipu3-cio2.c +2
-2@@ -1846,12 +1846,12 @@ static void cio2_pci_remove(struct pci_dev *pci_dev)struct cio2_device *cio2 =pci_get_drvdata (pci_dev);unsigned int i; +media_device_unregister (&cio2->media_dev);cio2_notifier_exit (cio2); -cio2_fbpt_exit_dummy (cio2);for (i =0 ; i <CIO2_QUEUES ; i++)cio2_queue_exit (cio2, &cio2->queue[i]); +cio2_fbpt_exit_dummy (cio2);v4l2_device_unregister (&cio2->v4l2_dev); -media_device_unregister (&cio2->media_dev);media_device_cleanup (&cio2->media_dev);mutex_destroy (&cio2->lock); }
Re: [PATCH 1/2] ipu3-cio2: Unregister device nodes first, then release resources
In reply to Sakari AilusQuoted 15 lines · Sakari Ailus
While there are issues related to object lifetime management, unregister the media device first, followed immediately by other device nodes when the driver is being unbound. Only then the resources needed by the driver may be released. This is slightly safer.
Signed-off-by Sakari Ailus <[email protected]>--- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/media/pci/intel/ipu3/ipu3-cio2.c +0
-0
drivers/media/pci/intel/ipu3/ipu3-cio2.c static void cio2_pci_remove(struct pci_dev *pci_dev) · line 1853
Quoted 9 lines
drivers/media/pci/intel/ipu3/ipu3-cio2.c +2
-1@@ -1846,12 +1846,12 @@ static void cio2_pci_remove(struct pci_dev *pci_dev)struct cio2_device *cio2 =pci_get_drvdata (pci_dev);unsigned int i; +media_device_unregister (&cio2->media_dev);cio2_notifier_exit (cio2); -cio2_fbpt_exit_dummy (cio2);for (i =0 ; i <CIO2_QUEUES ; i++)cio2_queue_exit (cio2, &cio2->queue[i]); +cio2_fbpt_exit_dummy (cio2);
Hi, Sakari,
The fbpt dummy pages cleanup does not matter much before/after queues exit, right?
Quoted 5 lines
drivers/media/pci/intel/ipu3/ipu3-cio2.c +0
-1v4l2_device_unregister (&cio2->v4l2_dev); -media_device_unregister (&cio2->media_dev);media_device_cleanup (&cio2->media_dev);mutex_destroy (&cio2->lock); }
Sakari Ailus
maintainerRe: [PATCH 1/2] ipu3-cio2: Unregister device nodes first, then release resources
Hi Bingbu,
Quoted 20 lines · Bing Bu Cao
Quoted 18 lines · Sakari Ailus
While there are issues related to object lifetime management, unregister the media device first, followed immediately by other device nodes when the driver is being unbound. Only then the resources needed by the driver may be released. This is slightly safer.
Signed-off-by Sakari Ailus <[email protected]>--- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/media/pci/intel/ipu3/ipu3-cio2.c +0
-0@@ -1846,12 +1846,12 @@ static void cio2_pci_remove(struct pci_dev *pci_dev)struct cio2_device *cio2 =pci_get_drvdata (pci_dev);unsigned int i;
Quoted 9 lines
drivers/media/pci/intel/ipu3/ipu3-cio2.c static void cio2_pci_remove(struct pci_dev *pci_dev) · line 1853
Quoted 6 lines
drivers/media/pci/intel/ipu3/ipu3-cio2.c +2
-1+media_device_unregister (&cio2->media_dev);cio2_notifier_exit (cio2); -cio2_fbpt_exit_dummy (cio2);for (i =0 ; i <CIO2_QUEUES ; i++)cio2_queue_exit (cio2, &cio2->queue[i]); +cio2_fbpt_exit_dummy (cio2);Hi, Sakari,
The fbpt dummy pages cleanup does not matter much before/after queues exit, right?
cio2_queue_exit() will unregister the video device and the video buffer queue. Up to this point it's possible to open the video device and start streaming on it. While this patch does not fully address the issue it makes it a slightly lesser issue.
Quoted 6 lines
Quoted 5 lines
drivers/media/pci/intel/ipu3/ipu3-cio2.c +0
-1v4l2_device_unregister (&cio2->v4l2_dev); -media_device_unregister (&cio2->media_dev);media_device_cleanup (&cio2->media_dev);mutex_destroy (&cio2->lock); }
Signature · 2 lines
Sakari Ailus [email protected]
Re: [PATCH 1/2] ipu3-cio2: Unregister device nodes first, then release resources
Quoted 31 lines · Sakari Ailus
Hi Bingbu,
Quoted 19 lines · Bing Bu Cao
Quoted 18 lines · Sakari Ailus
While there are issues related to object lifetime management, unregister the media device first, followed immediately by other device nodes when the driver is being unbound. Only then the resources needed by the driver may be released. This is slightly safer.
Signed-off-by Sakari Ailus <[email protected]>--- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/media/pci/intel/ipu3/ipu3-cio2.c +0
-0@@ -1846,12 +1846,12 @@ static void cio2_pci_remove(struct pci_dev *pci_dev)struct cio2_device *cio2 =pci_get_drvdata (pci_dev);unsigned int i;Quoted 9 lines
drivers/media/pci/intel/ipu3/ipu3-cio2.c static void cio2_pci_remove(struct pci_dev *pci_dev) · line 1853
Quoted 6 lines
drivers/media/pci/intel/ipu3/ipu3-cio2.c +2
-1+media_device_unregister (&cio2->media_dev);cio2_notifier_exit (cio2); -cio2_fbpt_exit_dummy (cio2);for (i =0 ; i <CIO2_QUEUES ; i++)cio2_queue_exit (cio2, &cio2->queue[i]); +cio2_fbpt_exit_dummy (cio2);Hi, Sakari,
The fbpt dummy pages cleanup does not matter much before/after queues exit, right?
Quoted 4 lines
cio2_queue_exit()will unregister the video device and the video buffer queue. Up to this point it's possible to open the video device and start streaming on it. While this patch does not fully address the issue it makes it a slightly lesser issue.
Okay, thanks for your explanation.
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
drivers/media/pci/intel/ipu3/ipu3-cio2.c +0
-1v4l2_device_unregister (&cio2->v4l2_dev); -media_device_unregister (&cio2->media_dev);media_device_cleanup (&cio2->media_dev);mutex_destroy (&cio2->lock); }
Sakari Ailus
maintainerPATCH 2/2 ipu3-cio2: Use cio2_queues_exit
In reply to Sakari AilusThe ipu3-cio2 driver has a function to tear down video devices as well as the associated video buffer queues. Use it.
--- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/media/pci/intel/ipu3/ipu3-cio2.c +1 -3
@@ -1844,12 +1844,10 @@ static int cio2_pci_probe(struct pci_dev *pci_dev,static void cio2_pci_remove (struct pci_dev *pci_dev) {struct cio2_device *cio2 =pci_get_drvdata (pci_dev); -unsigned int i;media_device_unregister (&cio2->media_dev);cio2_notifier_exit (cio2); -for (i =0 ; i <CIO2_QUEUES ; i++) -cio2_queue_exit (cio2, &cio2->queue[i]); +cio2_queues_exit (cio2);cio2_fbpt_exit_dummy (cio2);v4l2_device_unregister (&cio2->v4l2_dev);media_device_cleanup (&cio2->media_dev);
Signature · 1 line
2.11.0
Re: [PATCH 2/2] ipu3-cio2: Use cio2_queues_exit
Quoted 26 lines · Sakari Ailus
The ipu3-cio2 driver has a function to tear down video devices as well as the associated video buffer queues. Use it.
Signed-off-by Sakari Ailus <[email protected]>--- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)drivers/media/pci/intel/ipu3/ipu3-cio2.c +1
-3@@ -1844,12 +1844,10 @@ static int cio2_pci_probe(struct pci_dev *pci_dev,static void cio2_pci_remove (struct pci_dev *pci_dev) {struct cio2_device *cio2 =pci_get_drvdata (pci_dev); -unsigned int i;media_device_unregister (&cio2->media_dev);cio2_notifier_exit (cio2); -for (i =0 ; i <CIO2_QUEUES ; i++) -cio2_queue_exit (cio2, &cio2->queue[i]); +cio2_queues_exit (cio2);cio2_fbpt_exit_dummy (cio2);v4l2_device_unregister (&cio2->v4l2_dev);media_device_cleanup (&cio2->media_dev);
Sakari Ailus
maintainerRe: [PATCH 2/2] ipu3-cio2: Use cio2_queues_exit
Quoted 2 lines · Bing Bu Cao
Tested-by Bingbu Cao <[email protected]>Reviewed-by Bingbu Cao <[email protected]>
Thanks!!
Signature · 2 lines
Sakari Ailus [email protected]