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