On Wed, May 8, 2013 at 12:08 AM, Paolo Bonzini <pbonz...@redhat.com> wrote: > > > ----- Messaggio originale ----- >> Da: "Peter Maydell" <peter.mayd...@linaro.org> >> A: "Paolo Bonzini" <pbonz...@redhat.com> >> Cc: qemu-devel@nongnu.org, a...@ozlabs.ru, "jan kiszka" >> <jan.kis...@siemens.com>, qemul...@gmail.com, >> stefa...@redhat.com, da...@gibson.dropbear.id.au >> Inviato: Martedì, 7 maggio 2013 17:44:59 >> Oggetto: Re: [Qemu-devel] [PATCH 01/40] memory: assert that PhysPageEntry's >> ptr does not overflow >> >> On 7 May 2013 15:16, Paolo Bonzini <pbonz...@redhat.com> wrote: >> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> > --- >> > exec.c | 2 ++ >> > 1 files changed, 2 insertions(+), 0 deletions(-) >> > >> > diff --git a/exec.c b/exec.c >> > index 19725db..2e5b89a 100644 >> > --- a/exec.c >> > +++ b/exec.c >> > @@ -719,6 +719,8 @@ static void destroy_all_mappings(AddressSpaceDispatch >> > *d) >> > >> > static uint16_t phys_section_add(MemoryRegionSection *section) >> > { >> > + assert(phys_sections_nb < TARGET_PAGE_SIZE); >> > + >> > if (phys_sections_nb == phys_sections_nb_alloc) { >> > phys_sections_nb_alloc = MAX(phys_sections_nb_alloc * 2, 16); >> > phys_sections = g_renew(MemoryRegionSection, phys_sections, >> >> Why is the limit we're asserting not the same as the maximum >> size that we pass to g_renew() below? > > That's a minimum size, isn't it? > > I'm asserting that the physical section number doesn't overflow into > the page, since the TLB entries are stored as a combination of the two. > Could you explain more detail? Why < TARGET_PAGE_SIZE, not 2^15?
Thanks, Pingfan > Paolo