[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 9/9] xen/ppc: mm-radix: Allocate all paging structures at runtime
On 12.04.2024 05:19, Shawn Anastasio wrote: > On 3/25/24 10:39 AM, Jan Beulich wrote: >> On 14.03.2024 23:15, Shawn Anastasio wrote: >>> -static __init struct lvl2_pd *lvl2_pd_pool_alloc(void) >>> -{ >>> - if ( initial_lvl2_lvl3_pd_pool_used >= INITIAL_LVL2_LVL3_PD_COUNT ) >>> - { >>> - early_printk("Ran out of space for LVL2/3 PD!\n"); >>> - die(); >>> - } >>> + min_alloc_mfn = _mfn(min(mfn_x(min_alloc_mfn), mfn_x(mfn_first))); >>> + max_alloc_mfn = _mfn(max(mfn_x(max_alloc_mfn), mfn_x(mfn_last))); >> >> Together with the comment ahead of the function - is there some kind of >> assumption here that this range won't span almost all of system memory? >> E.g. expecting allocations to be almost contiguous? If so, I wonder how >> reliable this is, and whether using a rangeset wouldn't be better here. > > You're right that this is only sane (i.e. not mapping almost all of > system memory) when the assumption that alloc_boot_pages returns > mostly-contiguous regions holds. I'm not super happy with this either, > but I struggled to come up with a better solution that doesn't involve > re-inventing a rangeset-like data structure. > > Looking into your suggestion of using xen/common's rangeset, it looks > like that won't work since it relies on xmalloc which is not yet set up. > I suspect there is a chicken-and-egg problem here that would preclude > xmalloc from sanely working this early on in the boot, but I might be > wrong about that. > > I could reinvent a basic statically-allocated rangeset data structure > for this purpose if you think that's the best path forward. Question is whether anything statically will actually be suitable. Rather than re-inventing anything, I think it might be okay to keep the logic as you have it, but with commentary added making explicit what assumptions there are (and why, and why in the common case it is acceptable to make such assumptions, and maybe even what to do when any of the assumptions turns out wrong). Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |