[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-arm-kernel
Subject: Re: Arm linux software suspend
From: Hiroki Kaminaga <kaminaga () sm ! sony ! co ! jp>
Date: 2005-08-09 12:54:17
Message-ID: 20050809.215417.41635390.kaminaga () sm ! sony ! co ! jp
[Download RAW message or body]
From: junjie cai <junjiec@gmail.com>
Subject: Re: Arm linux software suspend
Date: Tue, 9 Aug 2005 20:39:22 +0900
> hi,
> i think i forgot something in my patch
> (but i cannot show you now because i am at home now).
> according to this 2.6.11 kernel source:
> http://lxr.linux.no/source/kernel/power/swsusp.c#L867
>
> 867 asmlinkage int swsusp_restore(void)
> 868 {
> 869 BUG_ON (nr_copy_pages_check != nr_copy_pages);
> 870 BUG_ON (pagedir_order_check != pagedir_order);
> 871
> 872 /* Even mappings of "global" things (vmalloc) need to be fixed */
> 873 __flush_tlb_global();
> 874 return 0;
> 875 }
>
> before __flush_tlb_global() , there should be a flush_cache_all()
> to clean the cache, or after the pgd changed , cache incoherent
> problem could happen.
> i dont know what is your version's source looks like,
> please check it.
my version is 2.6.11, and in swsusp_restore(void), there is no
flush_cache_all(). It is exactly same as:
http://lxr.linux.no/source/kernel/power/swsusp.c#L867
> and you may want to print the pgd address in save_processor_state &
> restore_processor_state respectively, if they dont match and
> flush_cache_all() is correctly called, then i think there is a great chance
> that your flash has some problem.
I tried again with flush_cache_all() called and print pgd (Translation
Table Base, register c2 of cp15) with your patch.
The result I got was:
* for simple case,
at hibernate: save_processor_state pgd: 11f58000
restore_processor_state pgd: 11f58000
at wakeup (bootup): save_processor_state pgd: 10004000
restore_processor_state pgd: 11f58000
* for mmap case,
at hibernate: save_processor_state pgd: 11768000
restore_processor_state pgd: 11768000
at wakeup (bootup): save_processor_state pgd: 10004000
restore_processor_state pgd: 11768000
10004000 is the address of swapper_pg_dir, and is the correct value for
pgd on bootup, I guess, from the src code: arch/arm/kernel/head.S.
> FYI, my target machines is arm926 + 64M Memory + IDE ...
Is it a custom target machine?
HK.
--
-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic