On 07/10/2013 09:18 AM, Winkler, Tomas wrote:
>>> suspend complete.
>>>
>>> I can start bi-sect of this problem on intel-display scope if you
>>> would like me to. Please let me know if the bisect scope should be larger.
>>>
>>> -- Shuah
>>
>> I got finally an older system where this reproduces consistently, I'm trying 
>> to
>> root cause that now.
>> As soon I have something to test I will send it out.
>>
>
> I'm not sure why but I'm not able to get the interrupt from the device until 
> all the devices has resumed after that the mei reset is successful and device 
> work as expected.
> I need to fix the state machine so the reset won't go crazy on resetting  
> actually I did that and it reduces resets into two but I'm still trying to 
> figure out what's going on.
> The regression coming from the fact that I've linearize the reset flow, it 
> waits for interrupt to arrive, before that the flow gave up and  has 
> restarted directly from the interrupt thread.
>
>
> Thanks
> Tomas
>
>

Tomas,

This might be a shot in the dark. Commit  mei: me: clear interrupts on 
the resume path (42f132febff3b7b42c6c9dbfc151f29233be3132), clears 
pending interrupts in mei_me_pci_resume(). Your comment about not seeing 
interrupt until mei reset is successful got me wondering, if clearing 
pending interrupts is causing this?

I don't see mei_me_pci_suspend() calling mei_disable_interrupts() and 
pci_disable_msi(). I don't see a call to mei_enable_interrupts() from 
mei_me_pci_resume(). I don't think mei_enable_interrupts() is used 
anywhere. pci_dev_msi_enabled() enables the interrupts in
mei_me_pci_resume() looks like.

However, I did notice one thing, if pci_dev_msi_enabled() returns false, 
request_threaded_irq() is called  with IRQF_SHARED. Again might just be 
fine, it leads me to the next question.

mei_me_pci_suspend() has code that runs after disabling interrupts. Does 
this need to be split into suspend() and suspend_noirq() ops, since the 
IRQ could be shared?

It is a possibility if pci_enable_msi() takes longer in resume path and 
pci_dev_msi_enabled() returns false, then IRQF_SHARED is requested.

Don't know if this helpful, but I thought I would ask just in case, it 
helps you think of something you didn't before. Please let me know if 
you need help gathering data from my system.

-- Shuah

Shuah Khan, Linux Kernel Developer - Open Source Group Samsung Research 
America (Silicon Valley) shuah...@samsung.com | (970) 672-0658
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to