[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] PAE xen + linux kernel boots ...
> The hypervisor was taking a pagefault in ptwr_emulated_update() when > pl1e (a map_domain_mem() mapped page) was dereferenced to be > copied. pl1e is a 64 bit type with pae, but only the first 4 bytes > were getting mapped, and there was a case where pl1e would straddle > a page boundary, Huh? page table entries must be 8-byte aligned, so they never ever can cross a page border. Must be something else. > -void *map_domain_mem(unsigned long pa) > +void *map_domain_mem(unsigned long long pa) Hmm, I guess the most sane approach is to add a new type for physical addresses, simply using "unsigned long long" isn't a good idea ... > - idx = map_idx = (map_idx + 1) & (MAPCACHE_ENTRIES - 1); > + idx = map_idx = (map_idx + 2) & (MAPCACHE_ENTRIES - 1); > cache[idx] = l1e_create_phys(pa, __PAGE_HYPERVISOR); > + cache[idx + 1] = l1e_create_phys(pa + sizeof(u32), __PAGE_HYPERVISOR); That looks a bit fishy, like hiding a bug somewhere else. And most likely will break for non-pae ... Gerd -- #define printk(args...) fprintf(stderr, ## args) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |