Messages in this thread |  | | | Date | Fri, 20 Feb 2004 01:37:39 +0800 | | Subject | Re: Reserved page flaging of 2.4 kernel memory changed recently? | | From | "Michael Frank" <> |
On Thu, 19 Feb 2004 17:14:55 +0100, Pavel Machek <pavel@suse.cz> wrote:
> Hi! > >> >>I actually would like to rename the bit PG_nosave to PG_donttouch ;) >> >> to make a point with regard to: >> >> no transfer of page contents during suspend/resume >> no netdump >> no debugger access without override >> >> ... but the name does not matter and we do not have to change it. >> >> >Its used for swsusp internal data, too... >> >> Yes of course - how else would swsusp run, but these data are also not >> "touched" >> during suspend and resume wrt transfer of page content. > > Yes. But I still want to be able to access swsusp internal data > through debugger, and I want them in the netdump. > > That means that PG_nosave | PG_reserved indeed is "PG_donttouch", but > PG_nosave has slightly different meaning.
Makes sense, but PG_reserved is used to keep VM out of these pages.
Can we have a seperate bit PG_donttouch which is set with PG_nosave | PG_reserved in reserved/video/BIOS/Broken CPU areas?
This way
- debugger and netdump use PG_donttouch to prevent accesses which might result in MCE's and CPU crashes.
- Swsusp uses PG_nosave.
- VM continues to use PG_reserved.
This is also a safe provision for hardware/driver changes.
As an example of using PG_nosave and PG_reserved Here are the actual pageflags of a running 2.4.24 kernel using PG_nosave for video/BIOS shown using crash utility:
Flags 4000 is PG_reserved Flags 20000 is PG_nosave By my proposal we would set PG_dontouch as well where PG_reserved && PG_nosave are set right now.
crash> kmem -p
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
Interrupt vectors
c100001c 0 0 0 0 4000 c1000048 1000 0 0 0 4000 c1000074 2000 0 0 0 4000 c10000a0 3000 0 0 0 4000 Main memory
c10000cc 4000 deb641c4 3862 2 c8 c10000f8 5000 deb641c4 3861 2 c8 c1000124 6000 deb641c4 3860 2 c8 c1000150 7000 deb641c4 3859 2 c8 c100017c 8000 0 1 2 4c [] c1000ca8 49000 0 4 2 4c c1000cd4 4a000 0 15 2 4c c1000d00 4b000 0 0 2 4c c1000d2c 4c000 0 4 2 4c c1000d58 4d000 0 3 2 4c c1000d84 4e000 0 7 2 4c c1000db0 4f000 0 6 2 4c c1000ddc 50000 cb35b6a4 669 2 4c c1000e08 51000 cb35b6a4 668 2 4c c1000e34 52000 cb35b6a4 667 2 4c c1000e60 53000 cb35b6a4 666 2 4c c1000e8c 54000 dee6e564 7085941 2 c0 c1000eb8 55000 cb35b6a4 604 2 4c c1000ee4 56000 0 25308 1 108 c1000f10 57000 cb35b6a4 605 2 4c c1000f3c 58000 cb35b6a4 606 2 4c c1000f68 59000 0 0 2 4c c1000f94 5a000 cb35b6a4 615 2 4c [] c1001a94 9a000 deb641c4 3818 2 c8 c1001ac0 9b000 deb641c4 3817 2 c8 c1001aec 9c000 deb641c4 3826 2 c8 c1001b18 9d000 deb641c4 3825 2 c8 c1001b44 9e000 cb35b8a4 1 2 4c Donttouch reserved/video/BIOS area
c1001b70 9f000 0 0 0 24000 c1001b9c a0000 0 0 0 24000 c1001bc8 a1000 0 0 0 24000 c1001bf4 a2000 0 0 0 24000 c1001c20 a3000 0 0 0 24000 c1001c4c a4000 0 0 0 24000 c1001c78 a5000 0 0 0 24000 c1001ca4 a6000 0 0 0 24000 c1001cd0 a7000 0 0 0 24000 c1001cfc a8000 0 0 0 24000 c1001d28 a9000 0 0 0 24000 [] c1002b14 fa000 0 0 0 24000 c1002b40 fb000 0 0 0 24000 c1002b6c fc000 0 0 0 24000 c1002b98 fd000 0 0 0 24000 c1002bc4 fe000 0 0 0 24000 c1002bf0 ff000 0 0 0 24000 Kernel
c1002c1c 100000 0 0 0 4000 c1002c48 101000 0 0 0 4000 c1002c74 102000 0 0 0 4000 c1002ca0 103000 0 0 0 4000 c1002ccc 104000 0 0 11875 4000 [] c100b360 413000 0 0 0 4000 c100b38c 414000 0 0 0 4000 c100b3b8 415000 0 0 0 4000 Here is 120K ex init memory
c100b3e4 416000 deb641c4 3820 2 c8 c100b410 417000 deb641c4 3819 2 c8 c100b43c 418000 deb641c4 3866 2 c8 c100b468 419000 deb641c4 3865 2 c8 c100b494 41a000 deb641c4 3864 2 c8 c100b4c0 41b000 deb641c4 3863 2 c8 c100b4ec 41c000 deb641c4 3828 2 c8 c100b518 41d000 deb641c4 3827 2 c8 c100b544 41e000 0 0 1 100 c100b570 41f000 deb641c4 3807 2 c8 c100b59c 420000 cb35b6a4 3652 2 c8 c100b5c8 421000 cb35b6a4 3651 2 c8 c100b5f4 422000 cb35b6a4 3650 2 c8 c100b620 423000 cb35b6a4 3649 2 c8 c100b64c 424000 cb35b6a4 113 2 cc c100b678 425000 0 0 1 100 c100b6a4 426000 0 0 1 5c c100b6d0 427000 0 1 1 5c c100b6fc 428000 0 25405 1 108 c100b728 429000 cb35b6a4 498 2 cc c100b754 42a000 cb35b6a4 543 2 cc c100b780 42b000 cb35b6a4 542 2 cc c100b7ac 42c000 cb35b6a4 365 2 cc c100b7d8 42d000 cb35b6a4 364 2 cc c100b804 42e000 cb35b6a4 484 2 cc c100b830 42f000 dee6e564 7077953 2 c0 c100b85c 430000 dee6e564 7078648 2 c0 c100b888 431000 cb35b6a4 508 2 cc c100b8b4 432000 cb35b6a4 561 2 4c c100b8e0 433000 cb35b6a4 560 2 4c swsusp nosave area - 1 page
c100b90c 434000 0 0 0 24000
some more kernel data
c100b938 435000 0 0 0 4000 c100b964 436000 0 0 0 4000 c100b990 437000 0 0 0 4000 c100b9bc 438000 0 0 0 4000 c100b9e8 439000 0 0 0 4000 [] c100c800 48b000 0 0 0 4000 c100c82c 48c000 0 0 0 4000
End of kernel data / main memory
c100c858 48d000 cb35b6a4 116 2 cc c100c884 48e000 deb641c4 3822 2 c8 c100c8b0 48f000 deb641c4 3821 2 c8 c100c8dc 490000 cb35b6a4 117 2 cc ... Regards Michael - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |