[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 2/2] xen: move per-cpu area management into common code
Hi Julien, On Sun, 2024-09-22 at 10:23 +0200, Julien Grall wrote: > > +} > > +#endif> + > > +#ifndef ARCH_CPU_PERCPU_CALLBACK > > +inline int arch_cpu_percpu_callback(struct notifier_block *nfb, > > + unsigned long action, void > > *hcpu) > > I am not entirely sure we should introduce arch_cpu_percpu_callback. > It > seems there are some redundant work. Looking at the x86 > implementation > the differences are: > * The additional checks > * Extra actions (e.g CPU_RESUME_FAILED/CPU_REMOVE). > > I think the extra actions also make sense for other architectures. > For > the additional checks, the parking feature is implemented in > common/*. > > So is there any way we could avoid introduce > arch_cpu_percpu_callback()? Initially, I did not want to introduce arch_cpu_percpu_callback(), and if it were only the park_offline_cpus check, it would be safe enough since other architectures would continue to function as before ( and CPU parking is a common feature so it is to be expected to work on different architectures ), with park_offline_cpus = false for them. I then decided to investigate why the check system_state != SYS_STATE_suspend is necessary, and according to the commit message: ``` xen: don't free percpu areas during suspend Instead of freeing percpu areas during suspend and allocating them again when resuming keep them. Only free an area in case a cpu didn't come up again when resuming. It should be noted that there is a potential change in behaviour as the percpu areas are no longer zeroed out during suspend/resume. While I have checked the called cpu notifier hooks to cope with that there might be some well hidden dependency on the previous behaviour. OTOH a component not registering itself for cpu down/up and expecting to see a zeroed percpu variable after suspend/resume is kind of broken already. And the opposite case, where a component is not registered to be called for cpu down/up and is not expecting a percpu variable suddenly to be zero due to suspend/resume is much more probable, especially as the suspend/resume functionality seems not to be tested that often. ``` It is mentioned that "there is a potential change in behavior as the percpu areas are no longer zeroed out during suspend/resume." I was unsure if this change might break something for Arm. I can attempt to move everything to the common percpu.c and at least verify that there are no issues in CI. If that suffices to confirm that everything is okay, I can create a new patch series version. Does this make sense? ~ Oleksii
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |