| Submitter | Alex_Rozenman@mentor.com |
|---|---|
| Date | Dec. 13, 2011, 10:52 a.m. |
| Message ID | <1323773528-30485-1-git-send-email-Alex_Rozenman@mentor.com> |
| Download | mbox | patch |
| Permalink | /patch/131050/ |
| State | New |
| Headers | show |
Comments
On 12/13/2011 04:52 AM, Alex_Rozenman@mentor.com wrote: > From: Alex Rozenman<Alex_Rozenman@mentor.com> > > This fixes a common bug with initial region_offset value. > Usually, the pages are re-assigned afterwards, so the bug > has a very small effect on regular QEMU use flows. > > Signed-off-by: Alex Rozenman<Alex_Rozenman@mentor.com> Applied. Thanks. Regards, Anthony Liguori > --- > exec.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/exec.c b/exec.c > index d8b2180..14628d9 100644 > --- a/exec.c > +++ b/exec.c > @@ -418,6 +418,7 @@ static PhysPageDesc *phys_page_find_alloc(target_phys_addr_t index, int alloc) > pd = *lp; > if (pd == NULL) { > int i; > + int first_index = index& ~(L2_SIZE - 1); > > if (!alloc) { > return NULL; > @@ -427,7 +428,7 @@ static PhysPageDesc *phys_page_find_alloc(target_phys_addr_t index, int alloc) > > for (i = 0; i< L2_SIZE; i++) { > pd[i].phys_offset = IO_MEM_UNASSIGNED; > - pd[i].region_offset = (index + i)<< TARGET_PAGE_BITS; > + pd[i].region_offset = (first_index + i)<< TARGET_PAGE_BITS; > } > } >
Patch
diff --git a/exec.c b/exec.c index d8b2180..14628d9 100644 --- a/exec.c +++ b/exec.c @@ -418,6 +418,7 @@ static PhysPageDesc *phys_page_find_alloc(target_phys_addr_t index, int alloc) pd = *lp; if (pd == NULL) { int i; + int first_index = index & ~(L2_SIZE - 1); if (!alloc) { return NULL; @@ -427,7 +428,7 @@ static PhysPageDesc *phys_page_find_alloc(target_phys_addr_t index, int alloc) for (i = 0; i < L2_SIZE; i++) { pd[i].phys_offset = IO_MEM_UNASSIGNED; - pd[i].region_offset = (index + i) << TARGET_PAGE_BITS; + pd[i].region_offset = (first_index + i) << TARGET_PAGE_BITS; } }