Skip to contentSkip to conversation

highmem handling again

PATCH Pavel Machek 3 participants 5 messages Aug 8, 2004 – Aug 9, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi!

I agree that swsusp_free is not the right place to restore_highmem(), but I can't find "right" place to do it... Best I could come up is with is:

It did not work at the end of swsusp_resume, or at the end of swsusp_restore, IIRC.

Pavel

kernel/power/disk.c +4 -1
@@ -184,8 +187,11 @@
 			error = power_down(pm_disk_mode);
 			pr_debug("PM: Power down failed.\n");
 		}
-	} else
+	} else {
+		extern int restore_highmem(void);
+		restore_highmem();
 		pr_debug("PM: Image restored successfully.\n");
+	}
 	swsusp_free();
  Done:
 	finish();
kernel/power/swsusp.c +1 -1
@@ -523,7 +523,7 @@
 	return 0;
 }
 
-static int restore_highmem(void)
+int restore_highmem(void)
 {
 	while (highmem_copy) {
 		struct highmem_page *save = highmem_copy;
Signature · 2 lines
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
#1 lore raw

kernel/power/disk.c line 192

Quoted 5 lines · Pavel Machek
kernel/power/disk.c +3 -1
 		}
-	} else
+	} else {
+		extern int restore_highmem(void);
+		restore_highmem();

Prototype in .h files...

Sam

#2 lore raw

Hi!

Quoted 7 lines

kernel/power/disk.c line 192

Quoted 5 lines
kernel/power/disk.c +3 -1
 		}
-	} else
+	} else {
+		extern int restore_highmem(void);
+		restore_highmem();

Prototype in .h files...

I know, this is proof of concept, only. I do not want another cross-file reference.
Pavel

Signature · 2 lines
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
#3 lore raw
In reply to Pavel Machek

Hi.

Quoted 8 lines · Pavel Machek

Hi!

I agree that swsusp_free is not the right place to restore_highmem(), but I can't find "right" place to do it... Best I could come up is with is:

It did not work at the end of swsusp_resume, or at the end of swsusp_restore, IIRC.

I'm doing: copy back lowmem, restore local processor context, flush local tlb, restore highmem, allow other processors to restore their processor contexts and flush local tlbs. It works fine here.

Nigel

#4 lore raw

Hi!

Quoted 10 lines
Quoted 6 lines

I agree that swsusp_free is not the right place to restore_highmem(), but I can't find "right" place to do it... Best I could come up is with is:

It did not work at the end of swsusp_resume, or at the end of swsusp_restore, IIRC.

I'm doing: copy back lowmem, restore local processor context, flush local tlb, restore highmem, allow other processors to restore their processor contexts and flush local tlbs. It works fine here.

Yes, I'd like to do the same, I just have problems finding that place in new structure.
Pavel

Signature · 2 lines
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!