[Skiboot] [PATCH 2/3] bt: Remove use of TIMER_POLL
Benjamin Herrenschmidt
benh at au1.ibm.com
Thu Sep 10 10:19:03 AEST 2015
On Thu, 2015-09-10 at 10:08 +1000, Benjamin Herrenschmidt wrote:
> Use a 2s timer instead. TIMER_POLL can fire a *lot* when there is
> console
> activity and I would like to mostly get rid of it.
>
> We should still stop using that timer completely when interrupts are
> working unless there's an active request, in which case we can arm it
> for timeouts.
Drop that one. Arguably TIMER_POLL is still a better way to handle the
case where interrupts aren't working during boot, xmon etc... we can
discuss that separately.
Pathes 1 and 3 are independent from that one and should still apply
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> ---
> hw/bt.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/hw/bt.c b/hw/bt.c
> index 41fe24e..42db3f3 100644
> --- a/hw/bt.c
> +++ b/hw/bt.c
> @@ -39,8 +39,11 @@
> #define BT_INTMASK_B2H_IRQ 0x02
> #define BT_INTMASK_BMC_HWRST 0x80
>
> -/* Default poll interval before interrupts are working */
> -#define BT_DEFAULT_POLL_MS 200
> +/* Poll interval before interrupts are working */
> +#define BT_NOIRQ_POLL_MS 200
> +
> +/* Poll interval when interrupts are working (for timeouts) */
> +#define BT_IRQ_POLL_MS 2000
>
> /*
> * Minimum size of an IPMI request/response including
> @@ -52,8 +55,6 @@
> /*
> * How long (in uS) to poll for new ipmi data.
> */
> -#define POLL_TIMEOUT 10000
> -
> /*
> * Maximum number of outstanding messages to allow in the queue.
> */
> @@ -393,7 +394,9 @@ static void bt_poll(struct timer *t __unused,
> void *data __unused,
> bt_send_and_unlock();
>
> schedule_timer(&bt.poller,
> - bt.irq_ok ? TIMER_POLL :
> msecs_to_tb(BT_DEFAULT_POLL_MS));
> + bt.irq_ok ?
> + msecs_to_tb(BT_IRQ_POLL_MS) :
> + msecs_to_tb(BT_NOIRQ_POLL_MS));
> }
>
> static void bt_add_msg(struct bt_msg *bt_msg)
> @@ -551,7 +554,7 @@ void bt_init(void)
> * least until we have at least one interrupt occurring at
> which
> * point we turn it into a background poller
> */
> - schedule_timer(&bt.poller, msecs_to_tb(BT_DEFAULT_POLL_MS));
> + schedule_timer(&bt.poller, msecs_to_tb(BT_NOIRQ_POLL_MS));
>
> irq = dt_prop_get_u32(n, "interrupts");
> bt_lpc_client.interrupts = LPC_IRQ(irq);
>
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
More information about the Skiboot
mailing list