diff mbox series

usb: dwc3: add EXPORT_SYMBOL_GPL for role init functions

Message ID 20210126094913.180945-1-raychi@google.com (mailing list archive)
State New, archived
Headers show
Series usb: dwc3: add EXPORT_SYMBOL_GPL for role init functions | expand

Commit Message

Ray Chi Jan. 26, 2021, 9:49 a.m. UTC
Currently, role init functions are used in dwc3 driver but
can't be called from kernel modules.
  dwc3_host_init
  dwc3_host_exit
  dwc3_gadget_init
  dwc3_gadget_exit
  dwc3_event_buffers_setup
  dwc3_event_buffers_cleanup

If other kernel modules want to use these functions, it needs
EXPORT_SYMBOL_GPL() to get compile pass.

Signed-off-by: Ray Chi <raychi@google.com>
---
 drivers/usb/dwc3/core.c   | 2 ++
 drivers/usb/dwc3/gadget.c | 2 ++
 drivers/usb/dwc3/host.c   | 2 ++
 3 files changed, 6 insertions(+)

Comments

Greg Kroah-Hartman Jan. 26, 2021, 10:01 a.m. UTC | #1
On Tue, Jan 26, 2021 at 05:49:13PM +0800, Ray Chi wrote:
> Currently, role init functions are used in dwc3 driver but
> can't be called from kernel modules.
>   dwc3_host_init
>   dwc3_host_exit
>   dwc3_gadget_init
>   dwc3_gadget_exit
>   dwc3_event_buffers_setup
>   dwc3_event_buffers_cleanup
> 
> If other kernel modules want to use these functions, it needs
> EXPORT_SYMBOL_GPL() to get compile pass.
> 
> Signed-off-by: Ray Chi <raychi@google.com>

What current kernel configuration fails without this patch applied?  I
don't see any in-tree users of this as a module that would break, or am
I missing something?

thanks,

greg k-h
Ray Chi Jan. 26, 2021, 12:14 p.m. UTC | #2
On Tue, Jan 26, 2021 at 6:01 PM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Tue, Jan 26, 2021 at 05:49:13PM +0800, Ray Chi wrote:
> > Currently, role init functions are used in dwc3 driver but
> > can't be called from kernel modules.
> >   dwc3_host_init
> >   dwc3_host_exit
> >   dwc3_gadget_init
> >   dwc3_gadget_exit
> >   dwc3_event_buffers_setup
> >   dwc3_event_buffers_cleanup
> >
> > If other kernel modules want to use these functions, it needs
> > EXPORT_SYMBOL_GPL() to get compile pass.
> >
> > Signed-off-by: Ray Chi <raychi@google.com>
>
> What current kernel configuration fails without this patch applied?  I
> don't see any in-tree users of this as a module that would break, or am
> I missing something?
>
> thanks,
>
> greg k-h

There is no failure for current status. This patch is just used for
any kernel modules
which want to call these functions. I think it is an expandability of
dwc3 core driver.
Greg Kroah-Hartman Jan. 26, 2021, 12:20 p.m. UTC | #3
On Tue, Jan 26, 2021 at 08:14:02PM +0800, Ray Chi wrote:
> On Tue, Jan 26, 2021 at 6:01 PM Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > On Tue, Jan 26, 2021 at 05:49:13PM +0800, Ray Chi wrote:
> > > Currently, role init functions are used in dwc3 driver but
> > > can't be called from kernel modules.
> > >   dwc3_host_init
> > >   dwc3_host_exit
> > >   dwc3_gadget_init
> > >   dwc3_gadget_exit
> > >   dwc3_event_buffers_setup
> > >   dwc3_event_buffers_cleanup
> > >
> > > If other kernel modules want to use these functions, it needs
> > > EXPORT_SYMBOL_GPL() to get compile pass.
> > >
> > > Signed-off-by: Ray Chi <raychi@google.com>
> >
> > What current kernel configuration fails without this patch applied?  I
> > don't see any in-tree users of this as a module that would break, or am
> > I missing something?
> >
> > thanks,
> >
> > greg k-h
> 
> There is no failure for current status. This patch is just used for
> any kernel modules
> which want to call these functions. I think it is an expandability of
> dwc3 core driver.

We will gladly take exports for in-kernel users, but as you well know,
we can not export symbols that no one in the kernel tree needs, that
would be foolish of us to do so.

Please submit the code that uses these symbols and include this patch as
part of that patch series and all will be good!

thanks,

greg k-h
Christoph Hellwig Jan. 27, 2021, 6:08 p.m. UTC | #4
On Tue, Jan 26, 2021 at 05:49:13PM +0800, Ray Chi wrote:
> Currently, role init functions are used in dwc3 driver but
> can't be called from kernel modules.
>   dwc3_host_init
>   dwc3_host_exit
>   dwc3_gadget_init
>   dwc3_gadget_exit
>   dwc3_event_buffers_setup
>   dwc3_event_buffers_cleanup
> 
> If other kernel modules want to use these functions, it needs
> EXPORT_SYMBOL_GPL() to get compile pass.

What "other kernel modules" would want to use it an why?

Please specify that in your patch, and only resend it togethe with the
patches actually adding/modifying those modules.
diff mbox series

Patch

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 25c686a752b0..f34a7dd5323e 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -418,6 +418,7 @@  int dwc3_event_buffers_setup(struct dwc3 *dwc)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(dwc3_event_buffers_setup);
 
 void dwc3_event_buffers_cleanup(struct dwc3 *dwc)
 {
@@ -433,6 +434,7 @@  void dwc3_event_buffers_cleanup(struct dwc3 *dwc)
 			| DWC3_GEVNTSIZ_SIZE(0));
 	dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), 0);
 }
+EXPORT_SYMBOL_GPL(dwc3_event_buffers_cleanup);
 
 static int dwc3_alloc_scratch_buffers(struct dwc3 *dwc)
 {
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 80c3ef134e41..43110bfdc440 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -3699,6 +3699,7 @@  int dwc3_gadget_init(struct dwc3 *dwc)
 err0:
 	return ret;
 }
+EXPORT_SYMBOL_GPL(dwc3_gadget_init);
 
 /* -------------------------------------------------------------------------- */
 
@@ -3712,6 +3713,7 @@  void dwc3_gadget_exit(struct dwc3 *dwc)
 	dma_free_coherent(dwc->sysdev, sizeof(*dwc->ep0_trb) * 2,
 			  dwc->ep0_trb, dwc->ep0_trb_addr);
 }
+EXPORT_SYMBOL_GPL(dwc3_gadget_exit);
 
 int dwc3_gadget_suspend(struct dwc3 *dwc)
 {
diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
index bef1c1ac2067..30589e313a67 100644
--- a/drivers/usb/dwc3/host.c
+++ b/drivers/usb/dwc3/host.c
@@ -126,8 +126,10 @@  int dwc3_host_init(struct dwc3 *dwc)
 	platform_device_put(xhci);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(dwc3_host_init);
 
 void dwc3_host_exit(struct dwc3 *dwc)
 {
 	platform_device_unregister(dwc->xhci);
 }
+EXPORT_SYMBOL_GPL(dwc3_host_exit);