On 05.03.2025 01:02, Andrew Cooper wrote:
> This can be a plain per_cpu() variable, and __read_mostly seeing as it's
> allocated once and never touched again.
cpu_smpboot_free() certainly touches (really: modifies) it again. Just that ...
> @@ -1009,7 +1009,7 @@ static void cpu_smpboot_free(unsigned int cpu, bool
> remove)
> if ( remove )
> {
> FREE_XENHEAP_PAGE(per_cpu(gdt, cpu));
> - FREE_XENHEAP_PAGE(idt_tables[cpu]);
> + FREE_XENHEAP_PAGE(per_cpu(idt, cpu));
... this function-like macro hides that the macro argument is written to. (This
is the kind of hiding that elsewhere I think you dislike, yet there macros were
an idea of yours, iirc.)
Jan