summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2008-12-12 01:24:36 +0100
committerBen Dooks <ben-linux@fluff.org>2009-03-08 13:38:06 +0100
commit663a83048c602d5176c23489b4e29598d753e42b (patch)
treee4c169121989ac343dfca035a467483a99565d3c /arch/arm
parent[ARM] S3C24XX: Add S3C_GPIO_END definition (diff)
downloadlinux-663a83048c602d5176c23489b4e29598d753e42b.tar.xz
linux-663a83048c602d5176c23489b4e29598d753e42b.zip
[ARM] S3C: Avoid checking the task stackpage in pm-check
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>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/plat-s3c/pm-check.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/arm/plat-s3c/pm-check.c b/arch/arm/plat-s3c/pm-check.c
index b221470e3bfc..183f1304bf58 100644
--- a/arch/arm/plat-s3c/pm-check.c
+++ b/arch/arm/plat-s3c/pm-check.c
@@ -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;