Message ID | 4F2316C9.70807@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On Fri, Jan 27, 2012 at 21:27, Stefan Berger <stefanb@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 <blauwirbel@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 Sat, Jan 28, 2012 at 12:23, Blue Swirl <blauwirbel@gmail.com> wrote: > On Fri, Jan 27, 2012 at 21:27, Stefan Berger <stefanb@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 <blauwirbel@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.
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; }