diff mbox

mt7601u: Fix system freeze after resuming from hibernation

Message ID 20180301210139.GX14069@wotan.suse.de (mailing list archive)
State RFC
Delegated to: Kalle Valo
Headers show

Commit Message

Luis Chamberlain March 1, 2018, 9:01 p.m. UTC
On Thu, Mar 01, 2018 at 10:11:01PM +0200, cantabile wrote:
> On 01/03/18 19:29, Luis R. Rodriguez wrote:
> > 
> > Correct?
> > 
> 
> The above log is from "20180227-firmware-cache" kernel plus your suggested
> change that makes it always upload the firmware:
> 
> diff --git a/drivers/net/wireless/mediatek/mt7601u/mcu.c
> b/drivers/net/wireless/mediatek/mt7601u/mcu.c
> index 65a8004418ea..04cbffd225a1 100644
> --- a/drivers/net/wireless/mediatek/mt7601u/mcu.c
> +++ b/drivers/net/wireless/mediatek/mt7601u/mcu.c
> @@ -421,7 +421,7 @@ static int mt7601u_load_firmware(struct mt7601u_dev
> *dev)
>  					 MT_USB_DMA_CFG_TX_BULK_EN));
> 
>  	if (firmware_running(dev))
> -		return 0;
> +		pr_info("Firmware already loaded but going to reload...");
> 
>  	ret = request_firmware(&fw, MT7601U_FIRMWARE, dev->dev);
>  	if (ret)

Huh, if you are using 20180227-firmware-cache, then your diff should instead
be this no?



> I recompiled the kernel with CONFIG_DEBUG_INFO=y, but the messages in
> journalctl look pretty much the same as before. There are still question
> marks in the call traces, there are no line numbers, and it still says
> "verbose debug info unavailable". /proc/config.gz contains
> CONFIG_DEBUG_INFO=y. What else do I need to do?

Hrm, odd.

CONFIG_FRAME_POINTER=y

Maybe.

> > But if the patches I posted help, I guess we already have a solution, The rest of
> > these email exchanges are all just hypothetical exercises.
> > 
> 
> Your patches definitely fix the problem I reported in my initial email.

Ah OK :)

  Luis

Comments

cantabile March 2, 2018, 10:43 a.m. UTC | #1
On 01/03/18 23:01, Luis R. Rodriguez wrote:
> On Thu, Mar 01, 2018 at 10:11:01PM +0200, cantabile wrote:
>> On 01/03/18 19:29, Luis R. Rodriguez wrote:
>>>
>>> Correct?
>>>
>>
>> The above log is from "20180227-firmware-cache" kernel plus your suggested
>> change that makes it always upload the firmware:
>>
>> diff --git a/drivers/net/wireless/mediatek/mt7601u/mcu.c
>> b/drivers/net/wireless/mediatek/mt7601u/mcu.c
>> index 65a8004418ea..04cbffd225a1 100644
>> --- a/drivers/net/wireless/mediatek/mt7601u/mcu.c
>> +++ b/drivers/net/wireless/mediatek/mt7601u/mcu.c
>> @@ -421,7 +421,7 @@ static int mt7601u_load_firmware(struct mt7601u_dev
>> *dev)
>>   					 MT_USB_DMA_CFG_TX_BULK_EN));
>>
>>   	if (firmware_running(dev))
>> -		return 0;
>> +		pr_info("Firmware already loaded but going to reload...");
>>
>>   	ret = request_firmware(&fw, MT7601U_FIRMWARE, dev->dev);
>>   	if (ret)
> 
> Huh, if you are using 20180227-firmware-cache, then your diff should instead
> be this no?
> 
> diff --git a/drivers/net/wireless/mediatek/mt7601u/mcu.c b/drivers/net/wireless/mediatek/mt7601u/mcu.c
> index b90456a4b4d7..04cbffd225a1 100644
> --- a/drivers/net/wireless/mediatek/mt7601u/mcu.c
> +++ b/drivers/net/wireless/mediatek/mt7601u/mcu.c
> @@ -421,7 +421,7 @@ static int mt7601u_load_firmware(struct mt7601u_dev *dev)
>   					 MT_USB_DMA_CFG_TX_BULK_EN));
>   
>   	if (firmware_running(dev))
> -		return request_firmware_cache(dev->dev, MT7601U_FIRMWARE);
> +		pr_info("Firmware already loaded but going to reload...");
>   
>   	ret = request_firmware(&fw, MT7601U_FIRMWARE, dev->dev);
>   	if (ret)
> 
> 

Right, yes. I just copied the diff from your email instead of git diff.

>> I recompiled the kernel with CONFIG_DEBUG_INFO=y, but the messages in
>> journalctl look pretty much the same as before. There are still question
>> marks in the call traces, there are no line numbers, and it still says
>> "verbose debug info unavailable". /proc/config.gz contains
>> CONFIG_DEBUG_INFO=y. What else do I need to do?
> 
> Hrm, odd.
> 
> CONFIG_FRAME_POINTER=y
> 
> Maybe.

That doesn't exist in /proc/config.gz, not even commented out. I used 
SymSearch in 'make nconfig', and it finds "FRAME_POINTER":

Symbol: FRAME_POINTER [=n]
Type  : bool
Prompt: Compile the kernel with frame pointers
Location:
-> Kernel hacking
    -> Compile-time checks and compiler options

But when I go to that location, there is no such prompt.

I don't know what's going on here.

> 
>>> But if the patches I posted help, I guess we already have a solution, The rest of
>>> these email exchanges are all just hypothetical exercises.
>>>
>>
>> Your patches definitely fix the problem I reported in my initial email.
> 
> Ah OK :)
> 
>    Luis
>
diff mbox

Patch

diff --git a/drivers/net/wireless/mediatek/mt7601u/mcu.c b/drivers/net/wireless/mediatek/mt7601u/mcu.c
index b90456a4b4d7..04cbffd225a1 100644
--- a/drivers/net/wireless/mediatek/mt7601u/mcu.c
+++ b/drivers/net/wireless/mediatek/mt7601u/mcu.c
@@ -421,7 +421,7 @@  static int mt7601u_load_firmware(struct mt7601u_dev *dev)
 					 MT_USB_DMA_CFG_TX_BULK_EN));
 
 	if (firmware_running(dev))
-		return request_firmware_cache(dev->dev, MT7601U_FIRMWARE);
+		pr_info("Firmware already loaded but going to reload...");
 
 	ret = request_firmware(&fw, MT7601U_FIRMWARE, dev->dev);
 	if (ret)