Message ID | 20200323101121.243906-2-vkoul@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | usb: xhci: Add support for Renesas USB controllers | expand |
Hi Vinod, I love your patch! Yet something to improve: [auto build test ERROR on v5.6-rc7] [also build test ERROR on next-20200323] [cannot apply to usb/usb-testing] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447 base: 16fbf79b0f83bc752cee8589279f1ebfe57b3b6e config: x86_64-defconfig (attached as .config) compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 006244152d6c7dd6a390ff89b236cc7801834b46) reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from drivers/usb/host/uhci-hcd.c:847: >> drivers/usb/host/uhci-pci.c:297:36: error: passing 'const struct hc_driver *' to parameter of type 'struct hc_driver *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers] return usb_hcd_pci_probe(dev, id, &uhci_driver); ^~~~~~~~~~~~ include/linux/usb/hcd.h:483:27: note: passing argument to parameter 'driver' here struct hc_driver *driver); ^ 1 error generated. vim +297 drivers/usb/host/uhci-pci.c 294 295 static int uhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) 296 { > 297 return usb_hcd_pci_probe(dev, id, &uhci_driver); 298 } 299 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On Mon, 23 Mar 2020, Vinod Koul wrote: > usb_hcd_pci_probe expects users to call this with driver_data set as > hc_driver, that limits the possibility of using the driver_data for > driver data. > > Add hc_driver as argument to usb_hcd_pci_probe and modify the callers > ehci/ohci/xhci/uhci to pass hc_driver as argument and freeup the > driver_data used > > Tested xhci driver on Dragon-board RB3, compile tested ehci and ohci. > Couldn't compile uhci > > Suggested-by: Mathias Nyman <mathias.nyman@linux.intel.com> > Signed-off-by: Vinod Koul <vkoul@kernel.org> > --- > drivers/usb/core/hcd-pci.c | 7 ++++--- > drivers/usb/host/ehci-pci.c | 6 ++---- > drivers/usb/host/ohci-pci.c | 9 ++++++--- > drivers/usb/host/uhci-pci.c | 8 ++++++-- > drivers/usb/host/xhci-pci.c | 14 +++++--------- > include/linux/usb/hcd.h | 3 ++- > 6 files changed, 25 insertions(+), 22 deletions(-) For all but the xHCI parts: Acked-by: Alan Stern <stern@rowland.harvard.edu>
On 23-03-20, 22:49, kbuild test robot wrote: > Hi Vinod, > > I love your patch! Yet something to improve: Thanks for the report. > [auto build test ERROR on v5.6-rc7] > [also build test ERROR on next-20200323] > [cannot apply to usb/usb-testing] > [if your patch is applied to the wrong git tree, please drop us a note to help > improve the system. BTW, we also suggest to use '--base' option to specify the > base tree in git format-patch, please see https://stackoverflow.com/a/37406982] > > url: https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447 > base: 16fbf79b0f83bc752cee8589279f1ebfe57b3b6e > config: x86_64-defconfig (attached as .config) > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 006244152d6c7dd6a390ff89b236cc7801834b46) > reproduce: > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > COMPILER=clang make.cross ARCH=x86_64 > > If you fix the issue, kindly add following tag > Reported-by: kbuild test robot <lkp@intel.com> > > All errors (new ones prefixed by >>): > > In file included from drivers/usb/host/uhci-hcd.c:847: > >> drivers/usb/host/uhci-pci.c:297:36: error: passing 'const struct hc_driver *' to parameter of type 'struct hc_driver *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers] > return usb_hcd_pci_probe(dev, id, &uhci_driver); > ^~~~~~~~~~~~ > include/linux/usb/hcd.h:483:27: note: passing argument to parameter 'driver' here > struct hc_driver *driver); I need to drop the const qualifiers for uhci_driver, I have checked that and will send v8 with this fix
On 23-03-20, 11:25, Alan Stern wrote: > On Mon, 23 Mar 2020, Vinod Koul wrote: > > > usb_hcd_pci_probe expects users to call this with driver_data set as > > hc_driver, that limits the possibility of using the driver_data for > > driver data. > > > > Add hc_driver as argument to usb_hcd_pci_probe and modify the callers > > ehci/ohci/xhci/uhci to pass hc_driver as argument and freeup the > > driver_data used > > > > Tested xhci driver on Dragon-board RB3, compile tested ehci and ohci. > > Couldn't compile uhci > > > > Suggested-by: Mathias Nyman <mathias.nyman@linux.intel.com> > > Signed-off-by: Vinod Koul <vkoul@kernel.org> > > --- > > drivers/usb/core/hcd-pci.c | 7 ++++--- > > drivers/usb/host/ehci-pci.c | 6 ++---- > > drivers/usb/host/ohci-pci.c | 9 ++++++--- > > drivers/usb/host/uhci-pci.c | 8 ++++++-- > > drivers/usb/host/xhci-pci.c | 14 +++++--------- > > include/linux/usb/hcd.h | 3 ++- > > 6 files changed, 25 insertions(+), 22 deletions(-) > > For all but the xHCI parts: > > Acked-by: Alan Stern <stern@rowland.harvard.edu> Alan, Thanks for the quick ack. I will send v8 with your ack on first patch (that touches *hci ) Thanks
On Mon, 23 Mar 2020, Vinod Koul wrote: > On 23-03-20, 22:49, kbuild test robot wrote: > > Hi Vinod, > > > > I love your patch! Yet something to improve: > > Thanks for the report. > > > [auto build test ERROR on v5.6-rc7] > > [also build test ERROR on next-20200323] > > [cannot apply to usb/usb-testing] > > [if your patch is applied to the wrong git tree, please drop us a note to help > > improve the system. BTW, we also suggest to use '--base' option to specify the > > base tree in git format-patch, please see https://stackoverflow.com/a/37406982] > > > > url: https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447 > > base: 16fbf79b0f83bc752cee8589279f1ebfe57b3b6e > > config: x86_64-defconfig (attached as .config) > > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 006244152d6c7dd6a390ff89b236cc7801834b46) > > reproduce: > > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > > chmod +x ~/bin/make.cross > > # save the attached .config to linux build tree > > COMPILER=clang make.cross ARCH=x86_64 > > > > If you fix the issue, kindly add following tag > > Reported-by: kbuild test robot <lkp@intel.com> > > > > All errors (new ones prefixed by >>): > > > > In file included from drivers/usb/host/uhci-hcd.c:847: > > >> drivers/usb/host/uhci-pci.c:297:36: error: passing 'const struct hc_driver *' to parameter of type 'struct hc_driver *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers] > > return usb_hcd_pci_probe(dev, id, &uhci_driver); > > ^~~~~~~~~~~~ > > include/linux/usb/hcd.h:483:27: note: passing argument to parameter 'driver' here > > struct hc_driver *driver); > > I need to drop the const qualifiers for uhci_driver, I have checked that > and will send v8 with this fix No, don't remove the qualifier for uhci_driver. Instead, change usb_hcd_pci_probe(): make driver a pointer to const. Alan Stern
On 23-03-20, 11:48, Alan Stern wrote: > On Mon, 23 Mar 2020, Vinod Koul wrote: > > > On 23-03-20, 22:49, kbuild test robot wrote: > > > Hi Vinod, > > > > > > I love your patch! Yet something to improve: > > > > Thanks for the report. > > > > > [auto build test ERROR on v5.6-rc7] > > > [also build test ERROR on next-20200323] > > > [cannot apply to usb/usb-testing] > > > [if your patch is applied to the wrong git tree, please drop us a note to help > > > improve the system. BTW, we also suggest to use '--base' option to specify the > > > base tree in git format-patch, please see https://stackoverflow.com/a/37406982] > > > > > > url: https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447 > > > base: 16fbf79b0f83bc752cee8589279f1ebfe57b3b6e > > > config: x86_64-defconfig (attached as .config) > > > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 006244152d6c7dd6a390ff89b236cc7801834b46) > > > reproduce: > > > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > > > chmod +x ~/bin/make.cross > > > # save the attached .config to linux build tree > > > COMPILER=clang make.cross ARCH=x86_64 > > > > > > If you fix the issue, kindly add following tag > > > Reported-by: kbuild test robot <lkp@intel.com> > > > > > > All errors (new ones prefixed by >>): > > > > > > In file included from drivers/usb/host/uhci-hcd.c:847: > > > >> drivers/usb/host/uhci-pci.c:297:36: error: passing 'const struct hc_driver *' to parameter of type 'struct hc_driver *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers] > > > return usb_hcd_pci_probe(dev, id, &uhci_driver); > > > ^~~~~~~~~~~~ > > > include/linux/usb/hcd.h:483:27: note: passing argument to parameter 'driver' here > > > struct hc_driver *driver); > > > > I need to drop the const qualifiers for uhci_driver, I have checked that > > and will send v8 with this fix > > No, don't remove the qualifier for uhci_driver. Instead, change > usb_hcd_pci_probe(): make driver a pointer to const. Thanks that is indeed a better idea. Will send v8 shortly
Hi Vinod, I love your patch! Perhaps something to improve: [auto build test WARNING on v5.6-rc7] [also build test WARNING on next-20200323] [cannot apply to usb/usb-testing] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447 base: 16fbf79b0f83bc752cee8589279f1ebfe57b3b6e config: i386-allyesconfig (attached as .config) compiler: gcc-7 (Debian 7.5.0-5) 7.5.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All warnings (new ones prefixed by >>): In file included from drivers/usb/host/uhci-hcd.c:847:0: drivers/usb/host/uhci-pci.c: In function 'uhci_pci_probe': >> drivers/usb/host/uhci-pci.c:297:36: warning: passing argument 3 of 'usb_hcd_pci_probe' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] return usb_hcd_pci_probe(dev, id, &uhci_driver); ^ In file included from drivers/usb/host/uhci-hcd.c:42:0: include/linux/usb/hcd.h:481:12: note: expected 'struct hc_driver *' but argument is of type 'const struct hc_driver *' extern int usb_hcd_pci_probe(struct pci_dev *dev, ^~~~~~~~~~~~~~~~~ vim +297 drivers/usb/host/uhci-pci.c 294 295 static int uhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) 296 { > 297 return usb_hcd_pci_probe(dev, id, &uhci_driver); 298 } 299 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c index f0a259937da8..b0a3400f836f 100644 --- a/drivers/usb/core/hcd-pci.c +++ b/drivers/usb/core/hcd-pci.c @@ -159,6 +159,7 @@ static void ehci_wait_for_companions(struct pci_dev *pdev, struct usb_hcd *hcd, * usb_hcd_pci_probe - initialize PCI-based HCDs * @dev: USB Host Controller being probed * @id: pci hotplug id connecting controller to HCD framework + * @driver: USB HC driver handle * Context: !in_interrupt() * * Allocates basic PCI resources for this USB host controller, and @@ -169,9 +170,9 @@ static void ehci_wait_for_companions(struct pci_dev *pdev, struct usb_hcd *hcd, * * Return: 0 if successful. */ -int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) +int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id, + struct hc_driver *driver) { - struct hc_driver *driver; struct usb_hcd *hcd; int retval; int hcd_irq = 0; @@ -181,7 +182,7 @@ int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) if (!id) return -EINVAL; - driver = (struct hc_driver *)id->driver_data; + if (!driver) return -EINVAL; diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c index b0882c13a1d1..daaddfbbf797 100644 --- a/drivers/usb/host/ehci-pci.c +++ b/drivers/usb/host/ehci-pci.c @@ -360,23 +360,21 @@ static int ehci_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { if (is_bypassed_id(pdev)) return -ENODEV; - return usb_hcd_pci_probe(pdev, id); + return usb_hcd_pci_probe(pdev, id, &ehci_pci_hc_driver); } static void ehci_pci_remove(struct pci_dev *pdev) { pci_clear_mwi(pdev); - usb_hcd_pci_remove(pdev); + usb_hcd_pci_remove(pdev); } /* PCI driver selection metadata; PCI hotplugging uses this */ static const struct pci_device_id pci_ids [] = { { /* handle any USB 2.0 EHCI controller */ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_EHCI, ~0), - .driver_data = (unsigned long) &ehci_pci_hc_driver, }, { PCI_VDEVICE(STMICRO, PCI_DEVICE_ID_STMICRO_USB_HOST), - .driver_data = (unsigned long) &ehci_pci_hc_driver, }, { /* end: all zeroes */ } }; diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c index f4e13a3fddee..78b0d84c7675 100644 --- a/drivers/usb/host/ohci-pci.c +++ b/drivers/usb/host/ohci-pci.c @@ -277,21 +277,24 @@ static const struct ohci_driver_overrides pci_overrides __initconst = { static const struct pci_device_id pci_ids[] = { { /* handle any USB OHCI controller */ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_OHCI, ~0), - .driver_data = (unsigned long) &ohci_pci_hc_driver, }, { /* The device in the ConneXT I/O hub has no class reg */ PCI_VDEVICE(STMICRO, PCI_DEVICE_ID_STMICRO_USB_OHCI), - .driver_data = (unsigned long) &ohci_pci_hc_driver, }, { /* end: all zeroes */ } }; MODULE_DEVICE_TABLE (pci, pci_ids); +static int ohci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) +{ + return usb_hcd_pci_probe(dev, id, &ohci_pci_hc_driver); +} + /* pci driver glue; this is a "new style" PCI driver module */ static struct pci_driver ohci_pci_driver = { .name = (char *) hcd_name, .id_table = pci_ids, - .probe = usb_hcd_pci_probe, + .probe = ohci_pci_probe, .remove = usb_hcd_pci_remove, .shutdown = usb_hcd_pci_shutdown, diff --git a/drivers/usb/host/uhci-pci.c b/drivers/usb/host/uhci-pci.c index 0fa3d72bae26..d59b9257c52b 100644 --- a/drivers/usb/host/uhci-pci.c +++ b/drivers/usb/host/uhci-pci.c @@ -287,17 +287,21 @@ static const struct hc_driver uhci_driver = { static const struct pci_device_id uhci_pci_ids[] = { { /* handle any USB UHCI controller */ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_UHCI, ~0), - .driver_data = (unsigned long) &uhci_driver, }, { /* end: all zeroes */ } }; MODULE_DEVICE_TABLE(pci, uhci_pci_ids); +static int uhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) +{ + return usb_hcd_pci_probe(dev, id, &uhci_driver); +} + static struct pci_driver uhci_pci_driver = { .name = (char *)hcd_name, .id_table = uhci_pci_ids, - .probe = usb_hcd_pci_probe, + .probe = uhci_pci_probe, .remove = usb_hcd_pci_remove, .shutdown = uhci_shutdown, diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 4917c5b033fa..a19752178216 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -316,11 +316,8 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) { int retval; struct xhci_hcd *xhci; - struct hc_driver *driver; struct usb_hcd *hcd; - driver = (struct hc_driver *)id->driver_data; - /* Prevent runtime suspending between USB-2 and USB-3 initialization */ pm_runtime_get_noresume(&dev->dev); @@ -330,7 +327,7 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) * to say USB 2.0, but I'm not sure what the implications would be in * the other parts of the HCD code. */ - retval = usb_hcd_pci_probe(dev, id); + retval = usb_hcd_pci_probe(dev, id, &xhci_pci_hc_driver); if (retval) goto put_runtime_pm; @@ -338,8 +335,8 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) /* USB 2.0 roothub is stored in the PCI device now. */ hcd = dev_get_drvdata(&dev->dev); xhci = hcd_to_xhci(hcd); - xhci->shared_hcd = usb_create_shared_hcd(driver, &dev->dev, - pci_name(dev), hcd); + xhci->shared_hcd = usb_create_shared_hcd(&xhci_pci_hc_driver, &dev->dev, + pci_name(dev), hcd); if (!xhci->shared_hcd) { retval = -ENOMEM; goto dealloc_usb2_hcd; @@ -536,10 +533,9 @@ static void xhci_pci_shutdown(struct usb_hcd *hcd) /*-------------------------------------------------------------------------*/ /* PCI driver selection metadata; PCI hotplugging uses this */ -static const struct pci_device_id pci_ids[] = { { +static const struct pci_device_id pci_ids[] = { /* handle any USB 3.0 xHCI controller */ - PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_XHCI, ~0), - .driver_data = (unsigned long) &xhci_pci_hc_driver, + { PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_XHCI, ~0), }, { /* end: all zeroes */ } }; diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index 712b2a603645..7823a06f6692 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h @@ -479,7 +479,8 @@ extern void usb_hcd_platform_shutdown(struct platform_device *dev); struct pci_dev; struct pci_device_id; extern int usb_hcd_pci_probe(struct pci_dev *dev, - const struct pci_device_id *id); + const struct pci_device_id *id, + struct hc_driver *driver); extern void usb_hcd_pci_remove(struct pci_dev *dev); extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
usb_hcd_pci_probe expects users to call this with driver_data set as hc_driver, that limits the possibility of using the driver_data for driver data. Add hc_driver as argument to usb_hcd_pci_probe and modify the callers ehci/ohci/xhci/uhci to pass hc_driver as argument and freeup the driver_data used Tested xhci driver on Dragon-board RB3, compile tested ehci and ohci. Couldn't compile uhci Suggested-by: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by: Vinod Koul <vkoul@kernel.org> --- drivers/usb/core/hcd-pci.c | 7 ++++--- drivers/usb/host/ehci-pci.c | 6 ++---- drivers/usb/host/ohci-pci.c | 9 ++++++--- drivers/usb/host/uhci-pci.c | 8 ++++++-- drivers/usb/host/xhci-pci.c | 14 +++++--------- include/linux/usb/hcd.h | 3 ++- 6 files changed, 25 insertions(+), 22 deletions(-)