On Sat, Jan 12, 2019 at 10:40:35PM -0600, Amit Kulkarni wrote:
> > You started to convert the wrong timeout_add() calls. Doing a blind
> > timeout_add() to timeout_add_msec() conversion especially on calls with 0
> > or 1 tick sleep time is the wrong approach.
> > The right approach is to identify calls that do sleep for a well defined 
> > time
> > (1sec, 50ms or whatever) and convert those. Most of the timeouts you
> > changes are not in that category. First I would look at timeouts that have
> > a multiplication with hz in them since those wait for a specific time.
> 
> Thanks for the feedback Claudio and Mark!
> 
> Here is a new diff based on your suggestions, looking for feedback, no tests 
> requested yet. I assumed in below diff that 1hz == 1sec (confirmed in 
> timeout_add_sec() in /sys/kern/kern_timeout.c), and converted some 
> multiplication and some divisions, all related to hz. Did some conversions in 
> comments also, because in future they might be used.
> -- amit
> 
> 
> diff --git sys/arch/armv7/exynos/exuart.c sys/arch/armv7/exynos/exuart.c
> index 4b0588750ea..15086bc5976 100644
> --- sys/arch/armv7/exynos/exuart.c
> +++ sys/arch/armv7/exynos/exuart.c
> @@ -283,7 +283,7 @@ exuart_intr(void *arg)
>               if (p >= sc->sc_ibufend) {
>                       sc->sc_floods++;
>                       if (sc->sc_errors++ == 0)
> -                             timeout_add(&sc->sc_diag_tmo, 60 * hz);
> +                             timeout_add_sec(&sc->sc_diag_tmo, 60);
>               } else {
>                       *p++ = c;
>                       if (p == sc->sc_ibufhigh && ISSET(tp->t_cflag, CRTSCTS))
> @@ -710,7 +710,7 @@ exuartclose(dev_t dev, int flag, int mode, struct proc *p)
>               /* tty device is waiting for carrier; drop dtr then re-raise */
>               //CLR(sc->sc_ucr3, EXUART_CR3_DSR);
>               //bus_space_write_2(iot, ioh, EXUART_UCR3, sc->sc_ucr3);
> -             timeout_add(&sc->sc_dtr_tmo, hz * 2);
> +             timeout_add_sec(&sc->sc_dtr_tmo, 2);
>       } else {
>               /* no one else waiting; turn off the uart */
>               exuart_pwroff(sc);

This one is OK.

> diff --git sys/arch/sparc64/dev/fd.c sys/arch/sparc64/dev/fd.c
> index 8d548062f83..654d8c95524 100644
> --- sys/arch/sparc64/dev/fd.c
> +++ sys/arch/sparc64/dev/fd.c
> @@ -1632,7 +1632,7 @@ loop:
>               fdc->sc_state = RECALCOMPLETE;
>               if (fdc->sc_flags & FDC_NEEDHEADSETTLE) {
>                       /* allow 1/30 second for heads to settle */
> -                     timeout_add(&fdc->fdcpseudointr_to, hz / 30);
> +                     timeout_add_msec(&fdc->fdcpseudointr_to, 33);
>                       return (1);             /* will return later */
>               }
>  

Wonder if this should be 30 or 40 since 33 is rather odd.

> diff --git sys/dev/fdt/imxuart.c sys/dev/fdt/imxuart.c
> index 84c7eb5aee6..c2fd7e4a6d3 100644
> --- sys/dev/fdt/imxuart.c
> +++ sys/dev/fdt/imxuart.c
> @@ -228,7 +228,7 @@ imxuart_intr(void *arg)
>               if (p >= sc->sc_ibufend) {
>                       sc->sc_floods++;
>                       if (sc->sc_errors++ == 0)
> -                             timeout_add(&sc->sc_diag_tmo, 60 * hz);
> +                             timeout_add_sec(&sc->sc_diag_tmo, 60);
>               } else {
>                       *p++ = c;
>                       if (p == sc->sc_ibufhigh &&
> @@ -457,7 +457,7 @@ imxuart_softint(void *arg)
>               if (ISSET(c, IMXUART_RX_OVERRUN)) {
>                       sc->sc_overflows++;
>                       if (sc->sc_errors++ == 0)
> -                             timeout_add(&sc->sc_diag_tmo, 60 * hz);
> +                             timeout_add_sec(&sc->sc_diag_tmo, 60);
>               }
>               /* This is ugly, but fast. */
>  
> @@ -629,7 +629,7 @@ imxuartclose(dev_t dev, int flag, int mode, struct proc 
> *p)
>               /* tty device is waiting for carrier; drop dtr then re-raise */
>               CLR(sc->sc_ucr3, IMXUART_CR3_DSR);
>               bus_space_write_2(iot, ioh, IMXUART_UCR3, sc->sc_ucr3);
> -             timeout_add(&sc->sc_dtr_tmo, hz * 2);
> +             timeout_add_sec(&sc->sc_dtr_tmo, 2);
>       } else {
>               /* no one else waiting; turn off the uart */
>               imxuart_pwroff(sc);

OK.

> diff --git sys/dev/ic/if_wi_hostap.c sys/dev/ic/if_wi_hostap.c
> index 64e3c10f3f5..155a391e7f9 100644
> --- sys/dev/ic/if_wi_hostap.c
> +++ sys/dev/ic/if_wi_hostap.c
> @@ -410,7 +410,7 @@ wihap_sta_timeout(void *v)
>  
>       /* Add wihap timeout if we have not already done so. */
>       if (!timeout_pending(&whi->tmo))
> -             timeout_add(&whi->tmo, hz / 10);
> +             timeout_add_msec(&whi->tmo, 100);
>  
>       splx(s);
>  }

OK.

> diff --git sys/dev/ic/pluart.c sys/dev/ic/pluart.c
> index 0f024c0ad34..19bbb76f4a6 100644
> --- sys/dev/ic/pluart.c
> +++ sys/dev/ic/pluart.c
> @@ -225,7 +225,7 @@ pluart_intr(void *arg)
>               if (p >= sc->sc_ibufend) {
>                       sc->sc_floods++;
>                       if (sc->sc_errors++ == 0)
> -                             timeout_add(&sc->sc_diag_tmo, 60 * hz);
> +                             timeout_add_sec(&sc->sc_diag_tmo, 60);
>               } else {
>                       *p++ = c;
>                       if (p == sc->sc_ibufhigh && ISSET(tp->t_cflag, 
> CRTSCTS)) {
> @@ -441,7 +441,7 @@ pluart_softint(void *arg)
>               if (ISSET(c, IMXUART_RX_OVERRUN)) {
>                       sc->sc_overflows++;
>                       if (sc->sc_errors++ == 0)
> -                             timeout_add(&sc->sc_diag_tmo, 60 * hz);
> +                             timeout_add_sec(&sc->sc_diag_tmo, 60);
>               }
>               */
>               /* This is ugly, but fast. */
> @@ -618,7 +618,7 @@ pluartclose(dev_t dev, int flag, int mode, struct proc *p)
>               /* tty device is waiting for carrier; drop dtr then re-raise */
>               //CLR(sc->sc_ucr3, IMXUART_CR3_DSR);
>               //bus_space_write_4(iot, ioh, IMXUART_UCR3, sc->sc_ucr3);
> -             timeout_add(&sc->sc_dtr_tmo, hz * 2);
> +             timeout_add_sec(&sc->sc_dtr_tmo, 2);
>       } else {
>               /* no one else waiting; turn off the uart */
>               pluart_pwroff(sc);

OK

> diff --git sys/dev/ic/w83l518d_sdmmc.c sys/dev/ic/w83l518d_sdmmc.c
> index 76c7a10c8d6..7c83510bed3 100644
> --- sys/dev/ic/w83l518d_sdmmc.c
> +++ sys/dev/ic/w83l518d_sdmmc.c
> @@ -578,7 +578,7 @@ wb_sdmmc_intr(struct wb_softc *wb)
>           "\5CRC\6FIFO\7CARD\010PENDING");
>  
>       if (val & WB_INT_CARD)
> -             timeout_add(&wb->wb_sdmmc_to, hz / 4);
> +             timeout_add_msec(&wb->wb_sdmmc_to, 250);
>  
>       return 1;
>  }

OK.

> diff --git sys/dev/pci/pccbb.c sys/dev/pci/pccbb.c
> index 642e7879b7f..b4980347f0b 100644
> --- sys/dev/pci/pccbb.c
> +++ sys/dev/pci/pccbb.c
> @@ -1234,7 +1234,7 @@ cb_pcmcia_poll(void *arg)
>       u_int32_t spsr;                /* socket present-state reg */
>  
>       timeout_set(&cb_poll_timeout, cb_pcmcia_poll, arg);
> -     timeout_add(&cb_poll_timeout, hz / 10);
> +     timeout_add_msec(&cb_poll_timeout, 100);
>       switch (poll->level) {
>       case IPL_NET:
>               s = splnet();

OK.

> diff --git sys/net/if_pppoe.c sys/net/if_pppoe.c
> index e55316351fd..9e03310714b 100644
> --- sys/net/if_pppoe.c
> +++ sys/net/if_pppoe.c
> @@ -1346,7 +1346,7 @@ pppoe_tlf(struct sppp *sp)
>        * function and defer disconnecting to the timeout handler.
>        */
>       sc->sc_state = PPPOE_STATE_CLOSING;
> -     timeout_add(&sc->sc_timeout, hz / 50);
> +     timeout_add_msec(&sc->sc_timeout, 20);
>  }
>  
>  static void

I would wait with this one, since there are many more timeout_add() in the
file that also should be converted.

Anyone else wants to comment on this or give me an OK?
-- 
:wq Claudio

Reply via email to