All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android-4.19-stable 14921/24059] drivers/usb/host/xhci-mem.c:1840:6: warning: no previous prototype for function 'xhci_handle_sec_intr_events'
@ 2021-11-07  9:57 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-11-07  9:57 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 9130 bytes --]

tree:   https://android.googlesource.com/kernel/common android-4.19-stable
head:   45c480b553c90178bf1cc30fd9054c75a31bf599
commit: 5dfdaa15caebc782d1c90ff6513d4cc9f6ac3663 [14921/24059] ANDROID: GKI: usb: xhci: Add support for secondary interrupters
config: x86_64-randconfig-c007-20210929 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project dc6e8dfdfe7efecfda318d43a06fae18b40eb498)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git remote add android-common https://android.googlesource.com/kernel/common
        git fetch --no-tags android-common android-4.19-stable
        git checkout 5dfdaa15caebc782d1c90ff6513d4cc9f6ac3663
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/usb/host/xhci-mem.c:936:6: warning: no previous prototype for function 'xhci_free_virt_devices_depth_first' [-Wmissing-prototypes]
   void xhci_free_virt_devices_depth_first(struct xhci_hcd *xhci, int slot_id)
        ^
   drivers/usb/host/xhci-mem.c:936:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void xhci_free_virt_devices_depth_first(struct xhci_hcd *xhci, int slot_id)
   ^
   static 
>> drivers/usb/host/xhci-mem.c:1840:6: warning: no previous prototype for function 'xhci_handle_sec_intr_events' [-Wmissing-prototypes]
   void xhci_handle_sec_intr_events(struct xhci_hcd *xhci, int intr_num)
        ^
   drivers/usb/host/xhci-mem.c:1840:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void xhci_handle_sec_intr_events(struct xhci_hcd *xhci, int intr_num)
   ^
   static 
>> drivers/usb/host/xhci-mem.c:1947:6: warning: no previous prototype for function 'xhci_event_ring_cleanup' [-Wmissing-prototypes]
   void xhci_event_ring_cleanup(struct xhci_hcd *xhci)
        ^
   drivers/usb/host/xhci-mem.c:1947:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void xhci_event_ring_cleanup(struct xhci_hcd *xhci)
   ^
   static 
>> drivers/usb/host/xhci-mem.c:2486:5: warning: no previous prototype for function 'xhci_event_ring_setup' [-Wmissing-prototypes]
   int xhci_event_ring_setup(struct xhci_hcd *xhci, struct xhci_ring **er,
       ^
   drivers/usb/host/xhci-mem.c:2486:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int xhci_event_ring_setup(struct xhci_hcd *xhci, struct xhci_ring **er,
   ^
   static 
>> drivers/usb/host/xhci-mem.c:2590:5: warning: no previous prototype for function 'xhci_event_ring_init' [-Wmissing-prototypes]
   int xhci_event_ring_init(struct xhci_hcd *xhci, gfp_t flags)
       ^
   drivers/usb/host/xhci-mem.c:2590:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int xhci_event_ring_init(struct xhci_hcd *xhci, gfp_t flags)
   ^
   static 
   5 warnings generated.
   drivers/usb/host/xhci-mem.c:365: warning: Function parameter or member 'xhci' not described in 'xhci_ring_alloc'
   drivers/usb/host/xhci-mem.c:365: warning: Function parameter or member 'num_segs' not described in 'xhci_ring_alloc'
   drivers/usb/host/xhci-mem.c:365: warning: Function parameter or member 'cycle_state' not described in 'xhci_ring_alloc'
   drivers/usb/host/xhci-mem.c:365: warning: Function parameter or member 'type' not described in 'xhci_ring_alloc'
   drivers/usb/host/xhci-mem.c:365: warning: Function parameter or member 'max_packet' not described in 'xhci_ring_alloc'
   drivers/usb/host/xhci-mem.c:365: warning: Function parameter or member 'flags' not described in 'xhci_ring_alloc'


vim +/xhci_handle_sec_intr_events +1840 drivers/usb/host/xhci-mem.c

  1839	
> 1840	void xhci_handle_sec_intr_events(struct xhci_hcd *xhci, int intr_num)
  1841	{
  1842		union xhci_trb *erdp_trb, *current_trb;
  1843		struct xhci_segment	*seg;
  1844		u64 erdp_reg;
  1845		u32 iman_reg;
  1846		dma_addr_t deq;
  1847		unsigned long segment_offset;
  1848	
  1849		/* disable irq, ack pending interrupt and ack all pending events */
  1850	
  1851		iman_reg =
  1852			readl_relaxed(&xhci->sec_ir_set[intr_num]->irq_pending);
  1853		iman_reg &= ~IMAN_IE;
  1854		writel_relaxed(iman_reg,
  1855				&xhci->sec_ir_set[intr_num]->irq_pending);
  1856		iman_reg =
  1857			readl_relaxed(&xhci->sec_ir_set[intr_num]->irq_pending);
  1858		if (iman_reg & IMAN_IP)
  1859			writel_relaxed(iman_reg,
  1860				&xhci->sec_ir_set[intr_num]->irq_pending);
  1861	
  1862		/* last acked event trb is in erdp reg  */
  1863		erdp_reg =
  1864			xhci_read_64(xhci, &xhci->sec_ir_set[intr_num]->erst_dequeue);
  1865		deq = (dma_addr_t)(erdp_reg & ~ERST_PTR_MASK);
  1866		if (!deq) {
  1867			pr_debug("%s: event ring handling not required\n", __func__);
  1868			return;
  1869		}
  1870	
  1871		seg = xhci->sec_event_ring[intr_num]->first_seg;
  1872		segment_offset = deq - seg->dma;
  1873	
  1874		/* find out virtual address of the last acked event trb */
  1875		erdp_trb = current_trb = &seg->trbs[0] +
  1876					(segment_offset/sizeof(*current_trb));
  1877	
  1878		/* read cycle state of the last acked trb to find out CCS */
  1879		xhci->sec_event_ring[intr_num]->cycle_state =
  1880					(current_trb->event_cmd.flags & TRB_CYCLE);
  1881	
  1882		while (1) {
  1883			/* last trb of the event ring: toggle cycle state */
  1884			if (current_trb == &seg->trbs[TRBS_PER_SEGMENT - 1]) {
  1885				xhci->sec_event_ring[intr_num]->cycle_state ^= 1;
  1886				current_trb = &seg->trbs[0];
  1887			} else {
  1888				current_trb++;
  1889			}
  1890	
  1891			/* cycle state transition */
  1892			if ((le32_to_cpu(current_trb->event_cmd.flags) & TRB_CYCLE) !=
  1893			    xhci->sec_event_ring[intr_num]->cycle_state)
  1894				break;
  1895		}
  1896	
  1897		if (erdp_trb != current_trb) {
  1898			deq =
  1899			xhci_trb_virt_to_dma(xhci->sec_event_ring[intr_num]->deq_seg,
  1900						current_trb);
  1901			if (deq == 0)
  1902				xhci_warn(xhci,
  1903					"WARN invalid SW event ring dequeue ptr.\n");
  1904			/* Update HC event ring dequeue pointer */
  1905			erdp_reg &= ERST_PTR_MASK;
  1906			erdp_reg |= ((u64) deq & (u64) ~ERST_PTR_MASK);
  1907		}
  1908	
  1909		/* Clear the event handler busy flag (RW1C); event ring is empty. */
  1910		erdp_reg |= ERST_EHB;
  1911		xhci_write_64(xhci, erdp_reg,
  1912				&xhci->sec_ir_set[intr_num]->erst_dequeue);
  1913	}
  1914	
  1915	int xhci_sec_event_ring_cleanup(struct usb_hcd *hcd, unsigned int intr_num)
  1916	{
  1917		int size;
  1918		struct xhci_hcd *xhci = hcd_to_xhci(hcd);
  1919		struct device	*dev = xhci_to_hcd(xhci)->self.sysdev;
  1920	
  1921		if (intr_num >= xhci->max_interrupters) {
  1922			xhci_err(xhci, "invalid secondary interrupter num %d\n",
  1923				intr_num);
  1924			return -EINVAL;
  1925		}
  1926	
  1927		size =
  1928		sizeof(struct xhci_erst_entry)*(xhci->sec_erst[intr_num].num_entries);
  1929		if (xhci->sec_erst[intr_num].entries) {
  1930			xhci_handle_sec_intr_events(xhci, intr_num);
  1931			dma_free_coherent(dev, size, xhci->sec_erst[intr_num].entries,
  1932					xhci->sec_erst[intr_num].erst_dma_addr);
  1933			xhci->sec_erst[intr_num].entries = NULL;
  1934		}
  1935		xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Freed SEC ERST#%d",
  1936			intr_num);
  1937		if (xhci->sec_event_ring[intr_num])
  1938			xhci_ring_free(xhci, xhci->sec_event_ring[intr_num]);
  1939	
  1940		xhci->sec_event_ring[intr_num] = NULL;
  1941		xhci_dbg_trace(xhci, trace_xhci_dbg_init,
  1942			"Freed sec event ring");
  1943	
  1944		return 0;
  1945	}
  1946	
> 1947	void xhci_event_ring_cleanup(struct xhci_hcd *xhci)
  1948	{
  1949		unsigned int i;
  1950	
  1951		/* sec event ring clean up */
  1952		for (i = 1; i < xhci->max_interrupters; i++)
  1953			xhci_sec_event_ring_cleanup(xhci_to_hcd(xhci), i);
  1954	
  1955		kfree(xhci->sec_ir_set);
  1956		xhci->sec_ir_set = NULL;
  1957		kfree(xhci->sec_erst);
  1958		xhci->sec_erst = NULL;
  1959		kfree(xhci->sec_event_ring);
  1960		xhci->sec_event_ring = NULL;
  1961	
  1962		/* primary event ring clean up */
  1963		xhci_free_erst(xhci, &xhci->erst);
  1964		xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Freed primary ERST");
  1965		if (xhci->event_ring)
  1966			xhci_ring_free(xhci, xhci->event_ring);
  1967		xhci->event_ring = NULL;
  1968		xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Freed priamry event ring");
  1969	}
  1970	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30339 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-11-07  9:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-07  9:57 [android-common:android-4.19-stable 14921/24059] drivers/usb/host/xhci-mem.c:1840:6: warning: no previous prototype for function 'xhci_handle_sec_intr_events' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.