|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: xen: linker symbol mess, and freeing errors
On 03.12.2021 14:34, Andrew Cooper wrote:
> Hello,
>
> Following the __ro_after_init work, I tried to complete a few pieces of
> cleanup that I'd accrued, and everything has unravelled.
>
> On x86, the __2M_* symbols haven't really been 2M aligned since their
> introduction, and the utter mess that was _stext starting at 1M has long
> since been cleared up. Dropping the 2M prefix reveals that we have both
> __init_{start,begin} and identifying that lead to discovering that
>
> /* Destroy Xen's mappings, and reuse the pages. */
> if ( using_2M_mapping() )
> {
> start = (unsigned long)&__2M_init_start,
> end = (unsigned long)&__2M_init_end;
> }
> else
> {
> start = (unsigned long)&__init_begin;
> end = (unsigned long)&__init_end;
> }
>
> is a tautology that nothing is capable of optimising.
Interesting. I would assume it wasn't always that way, but clearly it
is now.
> So I set about trying to simply both x86 and ARM down to a single sets
> of bounding variables, with a requirement that these would be expected
> to be common across all architectures.
>
> I'm intending to use __$FOO_{start,end} because we're semi-consistent on
> this already, and get rid of the ones such as _{s,e}$FOO because they're
> unnecessarily obscure, and complicated to read for a compound foo.
>
> At this point (as I haven't really started yet), I could be persuaded on
> a different naming scheme if anyone has any strong views.
Imo that scheme is fine. _{s,e}$FOO have always seemed risky in terms
of name clashes / confusion to me, but I've assumed we use them for
being pretty standard and hence recognized by certain tools.
> But that's only the start of the fun. The is_kernel() predicate is
> broken (or at least problematic) because it covers the init section.
I'd say problematic. We may want to have is_active_kernel()
paralleling other is_active_...(); whether a need for is_kernel()
would then remain is to be seen.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |