[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 1/3] xen/riscv: introduce setup_initial_pages
> > > > > > > > > > > > + > > > > > + page_addr = map_start; > > > > > + while ( page_addr < map_end ) > > > > > > > > Looking at the loop, it looks like you are assuming that the > > > > region > > > > will > > > > never cross a boundary of a page-table (either L0, L1, L2). I > > > > am > > > > not > > > > convinced you can make such assumption (see below). > > > > > > > > But if you really want to make such assumption then you should > > > > add > > > > some > > > > guard (either BUILD_BUG_ON(), ASSERT(), proper check) in your > > > > code to > > > > avoid any surprise in the future. > > > I am not sure that I fully understand what is the problem here. > > > The address is aligned on (1<<12) boundary and each itearation is > > > mapped (1<<12) page so all looks fine or I misunderstood you. > > > > Let's take an example, imagine the region you want to map is 4MB. > > AFAICT, you are only passing one L0 page-table. So your code will > > end > > up > > to overwrite the previous entries in the zeroeth page-table and > > then > > add > > another link in the L1 page-table. > Got it. Then it looks that current approach isn't correct totally... Or as an option we can add to xen.lds.S something like: ASSERT(_end - _start <= MB(L0_ENTRIES*PAGE_SIZE), "Xen too large") ~ Oleksii
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |