]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
[ARM] S3C: Avoid checking the task stackpage in pm-check
authorBen Dooks <ben-linux@fluff.org>
Fri, 12 Dec 2008 00:24:36 +0000 (00:24 +0000)
committerBen Dooks <ben-linux@fluff.org>
Sun, 8 Mar 2009 12:38:06 +0000 (12:38 +0000)
When doing the CRC check of the memory, avoid checking
the page that our stack is residing in as this changes
during the execution of the suspend and resume.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
arch/arm/plat-s3c/pm-check.c

index b221470e3bfc94fcb7eb9f031e1a2cb7a94e1319..183f1304bf58be88f4fb24b7c29e97faac09c735 100644 (file)
@@ -152,7 +152,7 @@ static inline int in_region(void *ptr, int size, void *what, size_t whatsz)
 }
 
 /**
- * s3c_pm_runcheck*() - helper to check a resource on restore.
+ * s3c_pm_runcheck() - helper to check a resource on restore.
  * @res: The resource to check
  * @vak: Pointer to list of CRC32 values to check.
  *
@@ -166,9 +166,12 @@ static u32 *s3c_pm_runcheck(struct resource *res, u32 *val)
        void *save_at = phys_to_virt(s3c_sleep_save_phys);
        unsigned long addr;
        unsigned long left;
+       void *stkpage;
        void *ptr;
        u32 calc;
 
+       stkpage = (void *)((u32)&calc & ~PAGE_MASK);
+
        for (addr = res->start; addr < res->end;
             addr += CHECK_CHUNKSIZE) {
                left = res->end - addr;
@@ -178,6 +181,11 @@ static u32 *s3c_pm_runcheck(struct resource *res, u32 *val)
 
                ptr = phys_to_virt(addr);
 
+               if (in_region(ptr, left, stkpage, 4096)) {
+                       S3C_PMDBG("skipping %08lx, has stack in\n", addr);
+                       goto skip_check;
+               }
+
                if (in_region(ptr, left, crcs, crc_size)) {
                        S3C_PMDBG("skipping %08lx, has crc block in\n", addr);
                        goto skip_check;