This patch set is based on v4.16. (I should have realized these issues in v4.16-rc cycle though...)
Yoshihiro Shimoda (4): usb: gadget: udc: renesas_usb3: fix double phy_put() usb: gadget: udc: renesas_usb3: should remove debugfs usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add udc usb: gadget: udc: renesas_usb3: should call devm_phy_get() before add udc
drivers/usb/gadget/udc/renesas_usb3.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)
This patch fixes an issue that this driver cause double phy_put() calling. This driver must not call phy_put() in the remove because the driver calls devm_phy_get() in the probe.
Fixes: 279d4bc64060 ("usb: gadget: udc: renesas_usb3: add support for generic phy") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com --- drivers/usb/gadget/udc/renesas_usb3.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 409cde4..78a12a5 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2408,8 +2408,6 @@ static int renesas_usb3_remove(struct platform_device *pdev) renesas_usb3_dma_free_prd(usb3, &pdev->dev);
__renesas_usb3_ep_free_request(usb3->ep0_req); - if (usb3->phy) - phy_put(usb3->phy); pm_runtime_disable(&pdev->dev);
return 0;
Hi Yoshihiro Shimoda.
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag. fixing commit: 279d4bc64060 usb: gadget: udc: renesas_usb3: add support for generic phy.
The bot has also determined it's probably a bug fixing patch. (score: 96.8529)
The bot has tested the following trees: v4.15.15,
v4.15.15: Build OK!
-- Thanks. Sasha
On Mon, Apr 02, 2018 at 09:21:31PM +0900, Yoshihiro Shimoda wrote:
This patch fixes an issue that this driver cause double phy_put() calling. This driver must not call phy_put() in the remove because the driver calls devm_phy_get() in the probe.
Fixes: 279d4bc64060 ("usb: gadget: udc: renesas_usb3: add support for generic phy") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com
Reviewed-by: Simon Horman horms+renesas@verge.net.au
This patch fixes an issue that this driver doesn't remove its debugfs.
Fixes: 43ba968b00ea ("usb: gadget: udc: renesas_usb3: add debugfs to set the b-device mode") Cc: stable@vger.kernel.org # v4.14+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com --- drivers/usb/gadget/udc/renesas_usb3.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 78a12a5..1c54a77 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -333,6 +333,7 @@ struct renesas_usb3 { struct extcon_dev *extcon; struct work_struct extcon_work; struct phy *phy; + struct dentry *dentry;
struct renesas_usb3_ep *usb3_ep; int num_usb3_eps; @@ -2393,8 +2394,12 @@ static void renesas_usb3_debugfs_init(struct renesas_usb3 *usb3,
file = debugfs_create_file("b_device", 0644, root, usb3, &renesas_usb3_b_device_fops); - if (!file) + if (!file) { dev_info(dev, "%s: Can't create debugfs mode\n", __func__); + debugfs_remove_recursive(root); + } else { + usb3->dentry = root; + } }
/*------- platform_driver ------------------------------------------------*/ @@ -2402,6 +2407,7 @@ static int renesas_usb3_remove(struct platform_device *pdev) { struct renesas_usb3 *usb3 = platform_get_drvdata(pdev);
+ debugfs_remove_recursive(usb3->dentry); device_remove_file(&pdev->dev, &dev_attr_role);
usb_del_gadget_udc(&usb3->gadget);
Hi Yoshihiro Shimoda.
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag. fixing commit: 43ba968b00ea usb: gadget: udc: renesas_usb3: add debugfs to set the b-device mode.
The bot has also determined it's probably a bug fixing patch. (score: 94.9837)
The bot has tested the following trees: v4.15.15, v4.14.32,
v4.15.15: Build OK! v4.14.32: Failed to apply! Possible dependencies: 279d4bc64060: ("usb: gadget: udc: renesas_usb3: add support for generic phy") cf06df3fae28: ("usb: gadget: udc: renesas_usb3: move pm_runtime_{en,dis}able()") 90d588642a7f: ("usb: gadget: udc: renesas_usb3: Add suspend/resume functions")
-- Thanks. Sasha
On Mon, Apr 02, 2018 at 09:21:32PM +0900, Yoshihiro Shimoda wrote:
This patch fixes an issue that this driver doesn't remove its debugfs.
Fixes: 43ba968b00ea ("usb: gadget: udc: renesas_usb3: add debugfs to set the b-device mode") Cc: stable@vger.kernel.org # v4.14+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com
Reviewed-by: Simon Horman horms+renesas@verge.net.au
This patch fixes an issue that this driver causes panic if a gadget driver is already loaded because usb_add_gadget_udc() might call renesas_usb3_start() via .udc_start, and then pm_runtime_get_sync() in renesas_usb3_start() doesn't work correctly. Note that the usb3_to_dev() macro should not be called at this timing because the macro uses the gadget structure.
Fixes: cf06df3fae28 ("usb: gadget: udc: renesas_usb3: move pm_runtime_{en,dis}able()") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com --- drivers/usb/gadget/udc/renesas_usb3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 1c54a77..738b734 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2632,6 +2632,7 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_alloc_prd;
+ pm_runtime_enable(&pdev->dev); ret = usb_add_gadget_udc(&pdev->dev, &usb3->gadget); if (ret < 0) goto err_add_udc; @@ -2653,7 +2654,6 @@ static int renesas_usb3_probe(struct platform_device *pdev) renesas_usb3_debugfs_init(usb3, &pdev->dev);
dev_info(&pdev->dev, "probed%s\n", usb3->phy ? " with phy" : ""); - pm_runtime_enable(usb3_to_dev(usb3));
return 0;
Hi Yoshihiro Shimoda.
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag. fixing commit: cf06df3fae28 usb: gadget: udc: renesas_usb3: move pm_runtime_{en,dis}able().
The bot has also determined it's probably a bug fixing patch. (score: 98.8092)
The bot has tested the following trees: v4.15.15,
v4.15.15: Build OK!
-- Thanks. Sasha
On Mon, Apr 02, 2018 at 09:21:33PM +0900, Yoshihiro Shimoda wrote:
This patch fixes an issue that this driver causes panic if a gadget driver is already loaded because usb_add_gadget_udc() might call renesas_usb3_start() via .udc_start, and then pm_runtime_get_sync() in renesas_usb3_start() doesn't work correctly. Note that the usb3_to_dev() macro should not be called at this timing because the macro uses the gadget structure.
Fixes: cf06df3fae28 ("usb: gadget: udc: renesas_usb3: move pm_runtime_{en,dis}able()") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com
Reviewed-by: Simon Horman horms+renesas@verge.net.au
This patch fixes an issue that this driver cannot call phy_init() if a gadget driver is alreadly loaded because usb_add_gadget_udc() might call renesas_usb3_start() via .udc_start.
Fixes: 279d4bc64060 ("usb: gadget: udc: renesas_usb3: add support for generic phy") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com --- drivers/usb/gadget/udc/renesas_usb3.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 738b734..671bac3 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2632,6 +2632,14 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_alloc_prd;
+ /* + * This is an optional. So, if this driver cannot get a phy, + * this driver will not handle a phy anymore. + */ + usb3->phy = devm_phy_get(&pdev->dev, "usb"); + if (IS_ERR(usb3->phy)) + usb3->phy = NULL; + pm_runtime_enable(&pdev->dev); ret = usb_add_gadget_udc(&pdev->dev, &usb3->gadget); if (ret < 0) @@ -2641,14 +2649,6 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_dev_create;
- /* - * This is an optional. So, if this driver cannot get a phy, - * this driver will not handle a phy anymore. - */ - usb3->phy = devm_phy_get(&pdev->dev, "usb"); - if (IS_ERR(usb3->phy)) - usb3->phy = NULL; - usb3->workaround_for_vbus = priv->workaround_for_vbus;
renesas_usb3_debugfs_init(usb3, &pdev->dev);
Hi Yoshihiro Shimoda.
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag. fixing commit: 279d4bc64060 usb: gadget: udc: renesas_usb3: add support for generic phy.
The bot has also determined it's probably a bug fixing patch. (score: 99.1076)
The bot has tested the following trees: v4.15.15,
v4.15.15: Failed to apply! Possible dependencies: 938408cce8cd: ("usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add udc")
-- Thanks. Sasha
On Mon, Apr 02, 2018 at 09:21:34PM +0900, Yoshihiro Shimoda wrote:
This patch fixes an issue that this driver cannot call phy_init() if a gadget driver is alreadly loaded because usb_add_gadget_udc() might call renesas_usb3_start() via .udc_start.
Fixes: 279d4bc64060 ("usb: gadget: udc: renesas_usb3: add support for generic phy") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com
drivers/usb/gadget/udc/renesas_usb3.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Reviewed-by: Simon Horman horms+renesas@verge.net.au
Please see some suggestions for follow-up lower-priority patches below.
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 738b734..671bac3 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2632,6 +2632,14 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_alloc_prd;
- /*
* This is an optional. So, if this driver cannot get a phy,
* this driver will not handle a phy anymore.
*/
nit: s/an optional/optional/
- usb3->phy = devm_phy_get(&pdev->dev, "usb");
- if (IS_ERR(usb3->phy))
usb3->phy = NULL;
I think this will unintentionally ignore errors other than the non-existence of the device, f.e. a memory allocation failure in devm_phy_get().
So perhaps something like this, as per phy_optional_get(), would be better?
usb3->phy = devm_phy_get(&pdev->dev, "usb"); if (IS_ERR(usb3->phy) && (PTR_ERR(usb3->phy) == -ENODEV)) usb3->phy = NULL;
- pm_runtime_enable(&pdev->dev); ret = usb_add_gadget_udc(&pdev->dev, &usb3->gadget); if (ret < 0)
@@ -2641,14 +2649,6 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_dev_create;
- /*
* This is an optional. So, if this driver cannot get a phy,
* this driver will not handle a phy anymore.
*/
- usb3->phy = devm_phy_get(&pdev->dev, "usb");
- if (IS_ERR(usb3->phy))
usb3->phy = NULL;
- usb3->workaround_for_vbus = priv->workaround_for_vbus;
renesas_usb3_debugfs_init(usb3, &pdev->dev); -- 1.9.1
Hi Simon-san,
From: Simon Horman, Sent: Monday, April 9, 2018 8:58 PM
On Mon, Apr 02, 2018 at 09:21:34PM +0900, Yoshihiro Shimoda wrote:
This patch fixes an issue that this driver cannot call phy_init() if a gadget driver is alreadly loaded because usb_add_gadget_udc() might call renesas_usb3_start() via .udc_start.
Fixes: 279d4bc64060 ("usb: gadget: udc: renesas_usb3: add support for generic phy") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com
drivers/usb/gadget/udc/renesas_usb3.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Reviewed-by: Simon Horman horms+renesas@verge.net.au
Please see some suggestions for follow-up lower-priority patches below.
Thank you for the review and suggestions!
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 738b734..671bac3 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2632,6 +2632,14 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_alloc_prd;
- /*
* This is an optional. So, if this driver cannot get a phy,
* this driver will not handle a phy anymore.
*/
nit: s/an optional/optional/
Oops. I will fix and submit v2 patches.
- usb3->phy = devm_phy_get(&pdev->dev, "usb");
- if (IS_ERR(usb3->phy))
usb3->phy = NULL;
I think this will unintentionally ignore errors other than the non-existence of the device, f.e. a memory allocation failure in devm_phy_get().
So perhaps something like this, as per phy_optional_get(), would be better?
usb3->phy = devm_phy_get(&pdev->dev, "usb"); if (IS_ERR(usb3->phy) && (PTR_ERR(usb3->phy) == -ENODEV)) usb3->phy = NULL;
Thank you for the suggestion. I agree with you. I think I should use devm_phy_optional_get() instead of dev_phy_get(), as you mentioned :) So, I will fix the code by using devm_phy_optional_get() first, and then fix this.
Best regards, Yoshihiro Shimoda
- pm_runtime_enable(&pdev->dev); ret = usb_add_gadget_udc(&pdev->dev, &usb3->gadget); if (ret < 0)
@@ -2641,14 +2649,6 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_dev_create;
/*
* This is an optional. So, if this driver cannot get a phy,
* this driver will not handle a phy anymore.
*/
usb3->phy = devm_phy_get(&pdev->dev, "usb");
if (IS_ERR(usb3->phy))
usb3->phy = NULL;
usb3->workaround_for_vbus = priv->workaround_for_vbus;
renesas_usb3_debugfs_init(usb3, &pdev->dev);
-- 1.9.1
On Tue, Apr 10, 2018 at 01:28:33AM +0000, Yoshihiro Shimoda wrote:
Hi Simon-san,
From: Simon Horman, Sent: Monday, April 9, 2018 8:58 PM
On Mon, Apr 02, 2018 at 09:21:34PM +0900, Yoshihiro Shimoda wrote:
This patch fixes an issue that this driver cannot call phy_init() if a gadget driver is alreadly loaded because usb_add_gadget_udc() might call renesas_usb3_start() via .udc_start.
Fixes: 279d4bc64060 ("usb: gadget: udc: renesas_usb3: add support for generic phy") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com
drivers/usb/gadget/udc/renesas_usb3.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Reviewed-by: Simon Horman horms+renesas@verge.net.au
Please see some suggestions for follow-up lower-priority patches below.
Thank you for the review and suggestions!
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 738b734..671bac3 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2632,6 +2632,14 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_alloc_prd;
- /*
* This is an optional. So, if this driver cannot get a phy,
* this driver will not handle a phy anymore.
*/
nit: s/an optional/optional/
Oops. I will fix and submit v2 patches.
- usb3->phy = devm_phy_get(&pdev->dev, "usb");
- if (IS_ERR(usb3->phy))
usb3->phy = NULL;
I think this will unintentionally ignore errors other than the non-existence of the device, f.e. a memory allocation failure in devm_phy_get().
So perhaps something like this, as per phy_optional_get(), would be better?
usb3->phy = devm_phy_get(&pdev->dev, "usb"); if (IS_ERR(usb3->phy) && (PTR_ERR(usb3->phy) == -ENODEV)) usb3->phy = NULL;
Thank you for the suggestion. I agree with you. I think I should use devm_phy_optional_get() instead of dev_phy_get(), as you mentioned :) So, I will fix the code by using devm_phy_optional_get() first, and then fix this.
Thanks, I agree that would be a good fix.
But perhaps it is better as a follow-up?
Hi Simon-san,
From: Simon Horman, Sent: Tuesday, April 10, 2018 6:34 PM
On Tue, Apr 10, 2018 at 01:28:33AM +0000, Yoshihiro Shimoda wrote:
Hi Simon-san,
From: Simon Horman, Sent: Monday, April 9, 2018 8:58 PM
On Mon, Apr 02, 2018 at 09:21:34PM +0900, Yoshihiro Shimoda wrote:
This patch fixes an issue that this driver cannot call phy_init() if a gadget driver is alreadly loaded because usb_add_gadget_udc() might call renesas_usb3_start() via .udc_start.
Fixes: 279d4bc64060 ("usb: gadget: udc: renesas_usb3: add support for generic phy") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com
drivers/usb/gadget/udc/renesas_usb3.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Reviewed-by: Simon Horman horms+renesas@verge.net.au
Please see some suggestions for follow-up lower-priority patches below.
Thank you for the review and suggestions!
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 738b734..671bac3 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2632,6 +2632,14 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_alloc_prd;
- /*
* This is an optional. So, if this driver cannot get a phy,
* this driver will not handle a phy anymore.
*/
nit: s/an optional/optional/
Oops. I will fix and submit v2 patches.
- usb3->phy = devm_phy_get(&pdev->dev, "usb");
- if (IS_ERR(usb3->phy))
usb3->phy = NULL;
I think this will unintentionally ignore errors other than the non-existence of the device, f.e. a memory allocation failure in devm_phy_get().
So perhaps something like this, as per phy_optional_get(), would be better?
usb3->phy = devm_phy_get(&pdev->dev, "usb"); if (IS_ERR(usb3->phy) && (PTR_ERR(usb3->phy) == -ENODEV)) usb3->phy = NULL;
Thank you for the suggestion. I agree with you. I think I should use devm_phy_optional_get() instead of dev_phy_get(), as you mentioned :) So, I will fix the code by using devm_phy_optional_get() first, and then fix this.
Thanks, I agree that would be a good fix.
But perhaps it is better as a follow-up?
Oops. Yes, I changed my mind after prepared the patch v2 and submitted v2. I should have sent an email about this to you... Anyway, thank you very much for reviewing the v2 patches!
Best regards, Yoshihiro Shimoda
On Tue, Apr 10, 2018 at 09:44:31AM +0000, Yoshihiro Shimoda wrote:
Hi Simon-san,
From: Simon Horman, Sent: Tuesday, April 10, 2018 6:34 PM
On Tue, Apr 10, 2018 at 01:28:33AM +0000, Yoshihiro Shimoda wrote:
Hi Simon-san,
From: Simon Horman, Sent: Monday, April 9, 2018 8:58 PM
On Mon, Apr 02, 2018 at 09:21:34PM +0900, Yoshihiro Shimoda wrote:
This patch fixes an issue that this driver cannot call phy_init() if a gadget driver is alreadly loaded because usb_add_gadget_udc() might call renesas_usb3_start() via .udc_start.
Fixes: 279d4bc64060 ("usb: gadget: udc: renesas_usb3: add support for generic phy") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com
drivers/usb/gadget/udc/renesas_usb3.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Reviewed-by: Simon Horman horms+renesas@verge.net.au
Please see some suggestions for follow-up lower-priority patches below.
Thank you for the review and suggestions!
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 738b734..671bac3 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2632,6 +2632,14 @@ static int renesas_usb3_probe(struct platform_device *pdev) if (ret < 0) goto err_alloc_prd;
- /*
* This is an optional. So, if this driver cannot get a phy,
* this driver will not handle a phy anymore.
*/
nit: s/an optional/optional/
Oops. I will fix and submit v2 patches.
- usb3->phy = devm_phy_get(&pdev->dev, "usb");
- if (IS_ERR(usb3->phy))
usb3->phy = NULL;
I think this will unintentionally ignore errors other than the non-existence of the device, f.e. a memory allocation failure in devm_phy_get().
So perhaps something like this, as per phy_optional_get(), would be better?
usb3->phy = devm_phy_get(&pdev->dev, "usb"); if (IS_ERR(usb3->phy) && (PTR_ERR(usb3->phy) == -ENODEV)) usb3->phy = NULL;
Thank you for the suggestion. I agree with you. I think I should use devm_phy_optional_get() instead of dev_phy_get(), as you mentioned :) So, I will fix the code by using devm_phy_optional_get() first, and then fix this.
Thanks, I agree that would be a good fix.
But perhaps it is better as a follow-up?
Oops. Yes, I changed my mind after prepared the patch v2 and submitted v2. I should have sent an email about this to you... Anyway, thank you very much for reviewing the v2 patches!
v2 looks good to me :)
linux-stable-mirror@lists.linaro.org