From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============0174917845249190635==" MIME-Version: 1.0 From: kbuild test robot To: kbuild-all@lists.01.org Subject: [android-common:android-4.19 4/5] drivers/usb/host/xhci-mem.c:1880:56: sparse: sparse: restricted __le32 degrades to integer Date: Tue, 07 Apr 2020 14:12:57 +0800 Message-ID: <202004071420.XowZB6am%lkp@intel.com> List-Id: --===============0174917845249190635== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable tree: https://android.googlesource.com/kernel/common android-4.19 head: 7e9cfddda463ca301b5546efeebc3127d98c6ee0 commit: 5dfdaa15caebc782d1c90ff6513d4cc9f6ac3663 [4/5] ANDROID: GKI: usb: x= hci: Add support for secondary interrupters reproduce: # apt-get install sparse # sparse version: v0.6.1-188-g79f7ac98-dirty git checkout 5dfdaa15caebc782d1c90ff6513d4cc9f6ac3663 make ARCH=3Dx86_64 allmodconfig make C=3D1 CF=3D'-fdiagnostic-prefix -D__CHECK_ENDIAN__' If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot sparse warnings: (new ones prefixed by >>) drivers/usb/host/xhci-mem.c:936:6: sparse: sparse: symbol 'xhci_free_vir= t_devices_depth_first' was not declared. Should it be static? >> drivers/usb/host/xhci-mem.c:1880:56: sparse: sparse: restricted __le32 d= egrades to integer >> drivers/usb/host/xhci-mem.c:1840:6: sparse: sparse: symbol 'xhci_handle_= sec_intr_events' was not declared. Should it be static? >> drivers/usb/host/xhci-mem.c:1947:6: sparse: sparse: symbol 'xhci_event_r= ing_cleanup' was not declared. Should it be static? >> drivers/usb/host/xhci-mem.c:2486:5: sparse: sparse: symbol 'xhci_event_r= ing_setup' was not declared. Should it be static? >> drivers/usb/host/xhci-mem.c:2590:5: sparse: sparse: symbol 'xhci_event_r= ing_init' was not declared. Should it be static? Please review and possibly fold the followup patch. vim +1880 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 =3D 1852 readl_relaxed(&xhci->sec_ir_set[intr_num]->irq_pending); 1853 iman_reg &=3D ~IMAN_IE; 1854 writel_relaxed(iman_reg, 1855 &xhci->sec_ir_set[intr_num]->irq_pending); 1856 iman_reg =3D 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 =3D 1864 xhci_read_64(xhci, &xhci->sec_ir_set[intr_num]->erst_dequeue); 1865 deq =3D (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 =3D xhci->sec_event_ring[intr_num]->first_seg; 1872 segment_offset =3D deq - seg->dma; 1873 = 1874 /* find out virtual address of the last acked event trb */ 1875 erdp_trb =3D current_trb =3D &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 =3D > 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 =3D=3D &seg->trbs[TRBS_PER_SEGMENT - 1]) { 1885 xhci->sec_event_ring[intr_num]->cycle_state ^=3D 1; 1886 current_trb =3D &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) !=3D 1893 xhci->sec_event_ring[intr_num]->cycle_state) 1894 break; 1895 } 1896 = 1897 if (erdp_trb !=3D current_trb) { 1898 deq =3D 1899 xhci_trb_virt_to_dma(xhci->sec_event_ring[intr_num]->deq_seg, 1900 current_trb); 1901 if (deq =3D=3D 0) 1902 xhci_warn(xhci, 1903 "WARN invalid SW event ring dequeue ptr.\n"); 1904 /* Update HC event ring dequeue pointer */ 1905 erdp_reg &=3D ERST_PTR_MASK; 1906 erdp_reg |=3D ((u64) deq & (u64) ~ERST_PTR_MASK); 1907 } 1908 = 1909 /* Clear the event handler busy flag (RW1C); event ring is empty. */ 1910 erdp_reg |=3D 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 in= tr_num) 1916 { 1917 int size; 1918 struct xhci_hcd *xhci =3D hcd_to_xhci(hcd); 1919 struct device *dev =3D xhci_to_hcd(xhci)->self.sysdev; 1920 = 1921 if (intr_num >=3D xhci->max_interrupters) { 1922 xhci_err(xhci, "invalid secondary interrupter num %d\n", 1923 intr_num); 1924 return -EINVAL; 1925 } 1926 = 1927 size =3D 1928 sizeof(struct xhci_erst_entry)*(xhci->sec_erst[intr_num].num_entrie= s); 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 =3D 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] =3D 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 =3D 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 =3D NULL; 1957 kfree(xhci->sec_erst); 1958 xhci->sec_erst =3D NULL; 1959 kfree(xhci->sec_event_ring); 1960 xhci->sec_event_ring =3D 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 =3D 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 --===============0174917845249190635==--