On Sat, Jan 28, 2012 at 12:23, Blue Swirl <blauwir...@gmail.com> wrote: > On Fri, Jan 27, 2012 at 21:27, Stefan Berger <stef...@linux.vnet.ibm.com> > wrote: >> On 01/27/2012 04:10 PM, Stefan Berger wrote: >>> >>> After bisecting the following commit seems to be the culprit for the >>> suspend/resume problems that I am seeing with the current tip >>> (73093354418602a2ff5e43cb91a21b17fbf047d8). >>> >>> commit 59abb06198ee9471e29c970f294eae80c0b39be1 >>> Author: Blue Swirl <blauwir...@gmail.com> >>> Date: Sun Jan 22 11:00:44 2012 +0000 >>> >>> Once I revert this patch on the tip everything works fine again... >>> >>> Stefan >>> >>> >> And this patch here gets it to work: >> >> diff --git a/exec-obsolete.h b/exec-obsolete.h >> index 03cf35e..a673386 100644 >> --- a/exec-obsolete.h >> +++ b/exec-obsolete.h >> @@ -101,7 +101,7 @@ static inline void >> cpu_physical_memory_mask_dirty_range(ram_ >> end = start + length; >> mask = ~dirty_flags; >> p = ram_list.phys_dirty + (start >> TARGET_PAGE_BITS); >> - for (addr = start; addr <= end; addr += TARGET_PAGE_SIZE) { >> + for (addr = start; addr < end; addr += TARGET_PAGE_SIZE) { >> *p++ &= mask; >> } >> } > > Nice. Please add a description (something like "Fix suspend/resume > broken by off-by-one error in 7309...") and Signed-off-by: line.
On second thought, the code is also broken for case start = (ram_addr_t)-TARGET_PAGE_SIZE, length = TARGET_PAGE_SIZE. I'll make another patch.