diff options
author | Mike Larkin <mlarkin@cvs.openbsd.org> | 2013-05-30 20:16:55 +0000 |
---|---|---|
committer | Mike Larkin <mlarkin@cvs.openbsd.org> | 2013-05-30 20:16:55 +0000 |
commit | 44440dacaf7f504a2a860b04576e7c1d91c85652 (patch) | |
tree | 889ce22c25ff041e180dafc07e0ef4d4206775a6 /sys | |
parent | 14d0fd7842c8024ed58f6e57f3343ded5d3445a8 (diff) |
Fix a bug in amd64 hibernate introduced when we moved the kernel to load at
16MB physical. Document the same in i386 (i386 was not affected, just
commented for diffability)
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/amd64/amd64/hibernate_machdep.c | 4 | ||||
-rw-r--r-- | sys/arch/i386/i386/hibernate_machdep.c | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/sys/arch/amd64/amd64/hibernate_machdep.c b/sys/arch/amd64/amd64/hibernate_machdep.c index 1c14d0de895..4e789ba7522 100644 --- a/sys/arch/amd64/amd64/hibernate_machdep.c +++ b/sys/arch/amd64/amd64/hibernate_machdep.c @@ -296,7 +296,9 @@ hibernate_populate_resume_pt(union hibernate_info *hib_info, */ kern_start_2m_va = (paddr_t)&start & ~(PAGE_MASK_2M); kern_end_2m_va = (paddr_t)&end & ~(PAGE_MASK_2M); - phys_page_number = 0; + + /* amd64 kernels load at 16MB phys (on the 8th 2mb page) */ + phys_page_number = 8; for (page = kern_start_2m_va; page <= kern_end_2m_va; page += NBPD_L2, phys_page_number++) { diff --git a/sys/arch/i386/i386/hibernate_machdep.c b/sys/arch/i386/i386/hibernate_machdep.c index 1d37f9d5206..db31e28cec0 100644 --- a/sys/arch/i386/i386/hibernate_machdep.c +++ b/sys/arch/i386/i386/hibernate_machdep.c @@ -229,6 +229,8 @@ hibernate_populate_resume_pt(union hibernate_info *hib_info, */ kern_start_4m_va = (paddr_t)&start & ~(PAGE_MASK_4M); kern_end_4m_va = (paddr_t)&end & ~(PAGE_MASK_4M); + + /* i386 kernels load at 2MB phys (on the 0th 4mb page) */ phys_page_number = 0; for (page = kern_start_4m_va; page <= kern_end_4m_va; |