Re: [PATCH 1/2] mmc: agressive clocking framework v8

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 10, 2010 at 6:25 PM, Linus Walleij
<linus.walleij@xxxxxxxxxxxxxx> wrote:
> Not that one, because the only place where ungate is called
> is immediately before the request or set_ios(). So the request
> or set_ios() will complete

How can you assume that ? Nothing prevents a context switch after
ungate, and before the actual request.

Here is what I had in mind:

Thread 1
=======

calling mmc_host_clk_gate_delayed()
...
spin_unlock_irqrestore(&host->clk_lock, flags);

About to execute mmc_gate_clock(host)

context switch to Thread 2
=====================

calling mmc_start_request()
...
executes mmc_host_clk_ungate();

back to Thread 1
=============

executes mmc_gate_clock(host);


back to Thread 2
==============

/* clock is gated now */
host->ops->request(host, mrq);


>, and immediately after that
> this gating will be triggered.
>
> So the real bug is that if we get this race we don't get
> the 8 MCI cycles of delay that we want.
>
> But I guess I can replace all spinlocks with a mutex instead
> and still hold it across the gate operation, since all
> gate/ungate calls should be coming from process context?
>
> That simplifies things.
>
> I'll see if this works...
>
>>> +               spin_lock_irqsave(&host->clk_lock, flags);
>>> +               pr_debug("%s: gated MCI clock\n",
>>> +                        mmc_hostname(host));
>>> +       }
>>> +       host->clk_pending_gate = false;
>>
>> What is clk_pending_gate used for (I can only see it being assigned values) ?
>
> Hm, a development artifact from patchset v4 2009-06-18...
> It's replaced with host->clk_gated instead.
>
> I'll remove it.
>
>> (PS sorry for the belated posting of these questions)
>
> No problem, I'll fix.
>
> Chris, do you want an incremental patch or shall I spin an all-new
> v10 patch?
>
> Yours,
> Linus Walleij
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux