hello,

Attached patches should fix the build with USB_DEBUG on earmv6hf.

if_gscan.c:
- On 32-bit arch compiler complains about cast from 32-bit pointer to
  uintmax_t conversion.
- %s cannot be used in KERNHIST_LOG format string.
  KERNHIST_LOG copies address of string but not string itself.
  It may not work when driver is detached.

others:
- KERNHIST_LOG may print %d as a corrupted value on 32-bit arch.

By default USB_DEBUG is not enabled on GENERIC/earmv6hf,
that's why they are not reported in daily build.



--- src/sys/dev/usb/if_gscan.c.orig     2025-04-06 22:15:50.660578108 +0000
+++ src/sys/dev/usb/if_gscan.c  2025-04-25 20:23:54.458424079 +0000
@@ -202,7 +202,7 @@ gscan_rx(struct usbd_xfer *xfer, void *p
                return;
        }
        if (status != USBD_NORMAL_COMPLETION) {
-               DPRINTF("rx error: %s\n", usbd_errstr(status), 0, 0, 0);
+               DPRINTF("rx error: %jd", status, 0, 0, 0);
                if (status == USBD_STALLED)
                        usbd_clear_endpoint_stall_async(sc->sc_rx_pipe);
                if (++sc->sc_rx_nerr > 100) {
@@ -301,7 +301,7 @@ gscan_tx(struct usbd_xfer *xfer, void *p
                        mutex_exit(&sc->sc_txlock);
                        return;
                }
-               DPRINTF("rx error: %s\n", usbd_errstr(status), 0, 0, 0);
+               DPRINTF("rx error: %jd", status, 0, 0, 0);
                if (status == USBD_STALLED)
                        usbd_clear_endpoint_stall_async(sc->sc_rx_pipe);
        }
@@ -345,7 +345,7 @@ gscan_ifstart(struct ifnet *ifp)
            sizeof(struct gscan_frame), 0, 10000, gscan_tx);
         err = usbd_transfer(sc->sc_tx_xfer);
        if (err != USBD_IN_PROGRESS) {
-               DPRINTF("start tx error: %s\n", usbd_errstr(err), 0, 0, 0);
+               DPRINTF("start tx error: %jd", err, 0, 0, 0);
                if_statadd(ifp, if_oerrors, 1);
        } else {
                sc->sc_m_transmit = m;
--- src/sys/dev/usb/ehci.c.orig 2025-02-16 21:52:46.057983996 +0000
+++ src/sys/dev/usb/ehci.c      2025-04-24 04:08:20.608110349 +0000
@@ -1912,7 +1912,7 @@ ehci_dump_sitd(struct ehci_soft_itd *itd
 {
        EHCIHIST_FUNC(); EHCIHIST_CALLED();
 
-       DPRINTF("SITD %#jx next = %p prev = %#jx",
+       DPRINTF("SITD %#jx next = %jp prev = %#jx",
            (uintptr_t)itd, (uintptr_t)itd->frame_list.next,
            (uintptr_t)itd->frame_list.prev, 0);
        DPRINTF("        xfernext=%#jx physaddr=%jX slot=%jd",
--- src/sys/dev/usb/uhci.c.orig 2024-10-07 20:16:53.074909669 +0000
+++ src/sys/dev/usb/uhci.c      2025-04-24 04:03:38.809020117 +0000
@@ -829,7 +829,7 @@ uhci_dump_td(uhci_soft_td_t *p)
            !!(le32toh(p->td.td_status) & UHCI_TD_IOS),
            !!(le32toh(p->td.td_status) & UHCI_TD_LS),
            !!(le32toh(p->td.td_status) & UHCI_TD_SPD), 0);
-       DPRINTF("errcnt  =%d actlen  =%d pid=%02x",
+       DPRINTF("errcnt  =%jd actlen  =%jd pid=%02jx",
            UHCI_TD_GET_ERRCNT(le32toh(p->td.td_status)),
            UHCI_TD_GET_ACTLEN(le32toh(p->td.td_status)),
            UHCI_TD_GET_PID(le32toh(p->td.td_token)), 0);
--- src/sys/dev/usb/ugen.c.orig 2024-03-29 20:48:58.140005185 +0000
+++ src/sys/dev/usb/ugen.c      2025-04-25 20:14:59.689635966 +0000
@@ -504,7 +504,7 @@ ugen_set_config(struct ugen_softc *sc, i
                for (endptno = 1; endptno < USB_MAX_ENDPOINTS; endptno++)
                        if (sc->sc_is_open[endptno]) {
                                DPRINTFN(1,
-                                    "ugen%jd - endpoint %d is open",
+                                    "ugen%jd - endpoint %jd is open",
                                      device_unit(sc->sc_dev), endptno, 0, 0);
                                return USBD_IN_USE;
                        }
@@ -643,7 +643,7 @@ ugenopen(dev_t dev, int flag, int mode, 
                                goto out;
                        }
                        sce->ibuf = kmem_alloc(isize, KM_SLEEP);
-                       DPRINTFN(5, "intr endpt=%d, isize=%d",
+                       DPRINTFN(5, "intr endpt=%jd, isize=%jd",
                                     endpt, isize, 0, 0);
                        if (clalloc(&sce->q, UGEN_IBSIZE, 0) == -1) {
                                kmem_free(sce->ibuf, isize);
@@ -693,7 +693,7 @@ ugenopen(dev_t dev, int flag, int mode, 
                                KM_SLEEP);
                        sce->cur = sce->fill = sce->ibuf;
                        sce->limit = sce->ibuf + isize * UGEN_NISOFRAMES;
-                       DPRINTFN(5, "isoc endpt=%d, isize=%d",
+                       DPRINTFN(5, "isoc endpt=%jd, isize=%jd",
                                     endpt, isize, 0, 0);
                        err = usbd_open_pipe(sce->iface,
                                  edesc->bEndpointAddress, 0, &sce->pipeh);
@@ -903,7 +903,7 @@ ugen_do_read(struct ugen_softc *sc, int 
                break;
        case UE_BULK:
                if (sce->state & UGEN_BULK_RA) {
-                       DPRINTFN(5, "BULK_RA req: %zd used: %d",
+                       DPRINTFN(5, "BULK_RA req: %jd used: %jd",
                                     uio->uio_resid, sce->ra_wb_used, 0, 0);
                        xfer = sce->ra_wb_xfer;
 
@@ -1097,7 +1097,7 @@ ugen_do_write(struct ugen_softc *sc, int
                                        /* "ugenwb" */
                                        error = cv_timedwait_sig(&sce->cv,
                                            &sc->sc_lock, mstohz(sce->timeout));
-                                       DPRINTFN(5, "woke, error=%d",
+                                       DPRINTFN(5, "woke, error=%jd",
                                                    error, 0, 0, 0);
                                        if (sc->sc_dying)
                                                error = EIO;
@@ -1356,9 +1356,9 @@ ugenintr(struct usbd_xfer *xfer, void *a
        usbd_get_xfer_status(xfer, NULL, NULL, &count, NULL);
        ibuf = sce->ibuf;
 
-       DPRINTFN(5, "xfer=%#jx status=%d count=%d",
+       DPRINTFN(5, "xfer=%#jx status=%jd count=%jd",
                     (uintptr_t)xfer, status, count, 0);
-       DPRINTFN(5, "          data = %02x %02x %02x",
+       DPRINTFN(5, "          data = %02jx %02jx %02jx",
                     ibuf[0], ibuf[1], ibuf[2], 0);
 
        mutex_enter(&sc->sc_lock);
@@ -1386,8 +1386,8 @@ ugen_isoc_rintr(struct usbd_xfer *xfer, 
                return;
 
        usbd_get_xfer_status(xfer, NULL, NULL, &count, NULL);
-       DPRINTFN(5, "xfer %ld, count=%d",
-           (long)(req - sce->isoreqs), count, 0, 0);
+       DPRINTFN(5, "xfer %jd, count=%jd",
+           (intmax_t)(req - sce->isoreqs), count, 0, 0);
 
        mutex_enter(&sc->sc_lock);

Reply via email to