All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: linux-pm@vger.kernel.org, loongarch@lists.linux.dev,
	linux-acpi@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-riscv@lists.infradead.org, kvmarm@lists.linux.dev,
	x86@kernel.org, acpica-devel@lists.linuxfoundation.org,
	linux-csky@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org,
	Salil Mehta <salil.mehta@huawei.com>,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	jianyong.wu@arm.com, justin.he@arm.com,
	James Morse <james.morse@arm.com>
Subject: Re: [PATCH RFC v3 17/21] ACPI: add support to register CPUs based on the _STA enabled bit
Date: Tue, 23 Jan 2024 14:59:39 +0000	[thread overview]
Message-ID: <Za/UWxAEnS5O/oY3@shell.armlinux.org.uk> (raw)
In-Reply-To: <20240123142218.00001a7b@Huawei.com>

On Tue, Jan 23, 2024 at 02:22:18PM +0000, Jonathan Cameron wrote:
> On Tue, 23 Jan 2024 13:10:44 +0000
> "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
> 
> > On Tue, Jan 23, 2024 at 10:26:03AM +0000, Jonathan Cameron wrote:
> > > On Tue, 2 Jan 2024 14:53:20 +0000
> > > Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote:
> > >   
> > > > On Mon, 18 Dec 2023 13:03:32 +0000
> > > > "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
> > > >   
> > > > > On Wed, Dec 13, 2023 at 12:50:38PM +0000, Russell King wrote:    
> > > > > > From: James Morse <james.morse@arm.com>
> > > > > > 
> > > > > > acpi_processor_get_info() registers all present CPUs. Registering a
> > > > > > CPU is what creates the sysfs entries and triggers the udev
> > > > > > notifications.
> > > > > > 
> > > > > > arm64 virtual machines that support 'virtual cpu hotplug' use the
> > > > > > enabled bit to indicate whether the CPU can be brought online, as
> > > > > > the existing ACPI tables require all hardware to be described and
> > > > > > present.
> > > > > > 
> > > > > > If firmware describes a CPU as present, but disabled, skip the
> > > > > > registration. Such CPUs are present, but can't be brought online for
> > > > > > whatever reason. (e.g. firmware/hypervisor policy).
> > > > > > 
> > > > > > Once firmware sets the enabled bit, the CPU can be registered and
> > > > > > brought online by user-space. Online CPUs, or CPUs that are missing
> > > > > > an _STA method must always be registered.      
> > > > > 
> > > > > ...
> > > > >     
> > > > > > @@ -526,6 +552,9 @@ static void acpi_processor_post_eject(struct acpi_device *device)
> > > > > >  		acpi_processor_make_not_present(device);
> > > > > >  		return;
> > > > > >  	}
> > > > > > +
> > > > > > +	if (cpu_present(pr->id) && !(sta & ACPI_STA_DEVICE_ENABLED))
> > > > > > +		arch_unregister_cpu(pr->id);      
> > > > > 
> > > > > This change isn't described in the commit log, but seems to be the cause
> > > > > of the build error identified by the kernel build bot that is fixed
> > > > > later in this series. I'm wondering whether this should be in a
> > > > > different patch, maybe "ACPI: Check _STA present bit before making CPUs
> > > > > not present" ?    
> > > > 
> > > > Would seem a bit odd to call arch_unregister_cpu() way before the code
> > > > is added to call the matching arch_registers_cpu()
> > > > 
> > > > Mind you this eject doesn't just apply to those CPUs that are registered
> > > > later I think, but instead to all.  So we run into the spec hole that
> > > > there is no way to identify initially 'enabled' CPUs that might be disabled
> > > > later.
> > > >   
> > > > > 
> > > > > Or maybe my brain isn't working properly (due to being Covid positive.)
> > > > > Any thoughts, Jonathan?    
> > > > 
> > > > I'll go with a resounding 'not sure' on where this change belongs.
> > > > I blame my non existent start of the year hangover.
> > > > Hope you have recovered!  
> > > 
> > > Looking again, I think you were right, move it to that earlier patch.  
> > 
> > I'm having second thoughts - because this patch introduces the
> > arch_register_cpu() into the acpi_processor_add() path (via
> > acpi_processor_get_info() and acpi_processor_make_enabled(), so isn't
> > it also correct to add arch_unregister_cpu() to the detach/post_eject
> > path as well? If we add one without the other, doesn't stuff become
> > a bit asymetric?
> > 
> > Looking more deeply at these changes, I'm finding it isn't easy to
> > keep track of everything that's going on here.
> 
> I can sympathize.
> 
> > 
> > We had attach()/detach() callbacks that were nice and symetrical.
> > How we have this post_eject() callback that makes things asymetrical.
> > 
> > We have the attach() method that registers the CPU, but no detach
> > method, instead having the post_eject() method. On the face of it,
> > arch_unregister_cpu() doesn't look symetric unless one goes digging
> > more in the code - by that, I mean arch_register_cpu() only gets
> > called of present=1 _and_ enabled=1. However, arch_unregister_cpu()
> > gets called buried in acpi_processor_make_not_present(), called when
> > present=0, and then we have this new one to handle the case where
> > enabled=0. It is not obvious that arch_unregister_cpu() is the reverse
> > of what happens with arch_register_cpu() here.
> 
> One option would be to pull the arch_unregister_cpu() out so it
> happens in one place in both the present = 0 and enabled = 0 cases but
> I'm not sure if it's safe to reorder the contents of 
> acpi_processor_not_present() as it's followed by a bunch of things.
> 
> Would looks something like
> 
> if (cpu_present(pr->id)) {
> 	if (!(sta & ACPI_STA_DEVICE_PRESENT)) {
> 		acpi_processor_make_not_present(device); /* Remove arch_cpu_unregister() */
> 	} else if (!(sta & ACPI_STA_DEVICE_ENABLED)) {
> 		/* Nothing to do in this case */
> 	} else {
> 		return; /* Firmware did something silly - probably racing */
> 	}
> 	arch_unregister_cpu(pr->id);
> 
> 	return;
> }
> 
> > 
> > Then we have the add() method allocating pr->throttling.shared_cpu_map,
> > and acpi_processor_make_not_present() freeing it. From what I read in
> > ACPI v6.5, enabled is not allowed to be set without present. So, if
> > _STA reports that a CPU that had present=1 enabled=1, but then is
> > later reported to be enabled=0 (which we handle by calling only
> > arch_unregister_cpu()) then what happens when _STA changes to
> > enabled=1 later? Does add() get called? 
> 
> yes it does (I poked it to see) which indeed isn't good (unless I've
> broken my setup in some obscure way).

Thanks for confirming - I haven't had a chance to do any testing (late
lunch because of spending so long looking at this...)

> Seems we need a few more things than arch_unregister_cpu() pulled out
> in the above code.

Yes, and I also wonder whether we should be doing any of that
unconditionally...

> > If it does, this would cause
> > a new acpi_processor structure to be allocated and the old one to be
> > leaked... I hope I'm wrong about add() being called - but if it isn't,
> > how does enabled going from 0->1 get handled... and if we are handling
> > its 1->0 transition separately from present, then surely we should be
> > handling that.
> > 
> > Maybe I'm just getting confused, but I've spent much of this morning
> > trying to unravel all this... and I'm of the opinion that this isn't a
> > sign of a good approach.
> 
> It's all annoyingly messy at the root of things, but indeed you've found
> some issues in current implementation.  Feels like just ripping out
> a bunch of stuff from acpi_processor_make_not_present() and calling it
> for both paths will probably work, but I've not tested that yet.

... since surely if we've already got to the point of issuing a
post_eject() callback, the device has already been ejected
and thus has gone - and if it is ever "replaced" we will get an
attach() callback.

Moreover, looking at acpi_scan_hot_remove(), if we are the device
being ejected, then after ej0 is evaluated, _STA is checked, and
acpi_bus_post_eject() called only if enabled=0. (This will also
end up calling post_eject() for any children as well which won't
have their _STA evaluated.)

So this has got me wondering whether acpi_processor_post_eject()
should be doing all the cleanup in acpi_processor_make_not_present()
except if we believe the call is in error (e.g.
!ACPI_HOTPLUG_PRESENT_CPU and present=0) - thus preparing the way
for a future attach() callback.

Hmm. I wonder if Rafael has any input on this.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: linux-pm@vger.kernel.org, loongarch@lists.linux.dev,
	linux-acpi@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-riscv@lists.infradead.org, kvmarm@lists.linux.dev,
	x86@kernel.org, acpica-devel@lists.linuxfoundation.org,
	linux-csky@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org,
	Salil Mehta <salil.mehta@huawei.com>,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	jianyong.wu@arm.com, justin.he@arm.com,
	James Morse <james.morse@arm.com>
Subject: Re: [PATCH RFC v3 17/21] ACPI: add support to register CPUs based on the _STA enabled bit
Date: Tue, 23 Jan 2024 14:59:39 +0000	[thread overview]
Message-ID: <Za/UWxAEnS5O/oY3@shell.armlinux.org.uk> (raw)
In-Reply-To: <20240123142218.00001a7b@Huawei.com>

On Tue, Jan 23, 2024 at 02:22:18PM +0000, Jonathan Cameron wrote:
> On Tue, 23 Jan 2024 13:10:44 +0000
> "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
> 
> > On Tue, Jan 23, 2024 at 10:26:03AM +0000, Jonathan Cameron wrote:
> > > On Tue, 2 Jan 2024 14:53:20 +0000
> > > Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote:
> > >   
> > > > On Mon, 18 Dec 2023 13:03:32 +0000
> > > > "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
> > > >   
> > > > > On Wed, Dec 13, 2023 at 12:50:38PM +0000, Russell King wrote:    
> > > > > > From: James Morse <james.morse@arm.com>
> > > > > > 
> > > > > > acpi_processor_get_info() registers all present CPUs. Registering a
> > > > > > CPU is what creates the sysfs entries and triggers the udev
> > > > > > notifications.
> > > > > > 
> > > > > > arm64 virtual machines that support 'virtual cpu hotplug' use the
> > > > > > enabled bit to indicate whether the CPU can be brought online, as
> > > > > > the existing ACPI tables require all hardware to be described and
> > > > > > present.
> > > > > > 
> > > > > > If firmware describes a CPU as present, but disabled, skip the
> > > > > > registration. Such CPUs are present, but can't be brought online for
> > > > > > whatever reason. (e.g. firmware/hypervisor policy).
> > > > > > 
> > > > > > Once firmware sets the enabled bit, the CPU can be registered and
> > > > > > brought online by user-space. Online CPUs, or CPUs that are missing
> > > > > > an _STA method must always be registered.      
> > > > > 
> > > > > ...
> > > > >     
> > > > > > @@ -526,6 +552,9 @@ static void acpi_processor_post_eject(struct acpi_device *device)
> > > > > >  		acpi_processor_make_not_present(device);
> > > > > >  		return;
> > > > > >  	}
> > > > > > +
> > > > > > +	if (cpu_present(pr->id) && !(sta & ACPI_STA_DEVICE_ENABLED))
> > > > > > +		arch_unregister_cpu(pr->id);      
> > > > > 
> > > > > This change isn't described in the commit log, but seems to be the cause
> > > > > of the build error identified by the kernel build bot that is fixed
> > > > > later in this series. I'm wondering whether this should be in a
> > > > > different patch, maybe "ACPI: Check _STA present bit before making CPUs
> > > > > not present" ?    
> > > > 
> > > > Would seem a bit odd to call arch_unregister_cpu() way before the code
> > > > is added to call the matching arch_registers_cpu()
> > > > 
> > > > Mind you this eject doesn't just apply to those CPUs that are registered
> > > > later I think, but instead to all.  So we run into the spec hole that
> > > > there is no way to identify initially 'enabled' CPUs that might be disabled
> > > > later.
> > > >   
> > > > > 
> > > > > Or maybe my brain isn't working properly (due to being Covid positive.)
> > > > > Any thoughts, Jonathan?    
> > > > 
> > > > I'll go with a resounding 'not sure' on where this change belongs.
> > > > I blame my non existent start of the year hangover.
> > > > Hope you have recovered!  
> > > 
> > > Looking again, I think you were right, move it to that earlier patch.  
> > 
> > I'm having second thoughts - because this patch introduces the
> > arch_register_cpu() into the acpi_processor_add() path (via
> > acpi_processor_get_info() and acpi_processor_make_enabled(), so isn't
> > it also correct to add arch_unregister_cpu() to the detach/post_eject
> > path as well? If we add one without the other, doesn't stuff become
> > a bit asymetric?
> > 
> > Looking more deeply at these changes, I'm finding it isn't easy to
> > keep track of everything that's going on here.
> 
> I can sympathize.
> 
> > 
> > We had attach()/detach() callbacks that were nice and symetrical.
> > How we have this post_eject() callback that makes things asymetrical.
> > 
> > We have the attach() method that registers the CPU, but no detach
> > method, instead having the post_eject() method. On the face of it,
> > arch_unregister_cpu() doesn't look symetric unless one goes digging
> > more in the code - by that, I mean arch_register_cpu() only gets
> > called of present=1 _and_ enabled=1. However, arch_unregister_cpu()
> > gets called buried in acpi_processor_make_not_present(), called when
> > present=0, and then we have this new one to handle the case where
> > enabled=0. It is not obvious that arch_unregister_cpu() is the reverse
> > of what happens with arch_register_cpu() here.
> 
> One option would be to pull the arch_unregister_cpu() out so it
> happens in one place in both the present = 0 and enabled = 0 cases but
> I'm not sure if it's safe to reorder the contents of 
> acpi_processor_not_present() as it's followed by a bunch of things.
> 
> Would looks something like
> 
> if (cpu_present(pr->id)) {
> 	if (!(sta & ACPI_STA_DEVICE_PRESENT)) {
> 		acpi_processor_make_not_present(device); /* Remove arch_cpu_unregister() */
> 	} else if (!(sta & ACPI_STA_DEVICE_ENABLED)) {
> 		/* Nothing to do in this case */
> 	} else {
> 		return; /* Firmware did something silly - probably racing */
> 	}
> 	arch_unregister_cpu(pr->id);
> 
> 	return;
> }
> 
> > 
> > Then we have the add() method allocating pr->throttling.shared_cpu_map,
> > and acpi_processor_make_not_present() freeing it. From what I read in
> > ACPI v6.5, enabled is not allowed to be set without present. So, if
> > _STA reports that a CPU that had present=1 enabled=1, but then is
> > later reported to be enabled=0 (which we handle by calling only
> > arch_unregister_cpu()) then what happens when _STA changes to
> > enabled=1 later? Does add() get called? 
> 
> yes it does (I poked it to see) which indeed isn't good (unless I've
> broken my setup in some obscure way).

Thanks for confirming - I haven't had a chance to do any testing (late
lunch because of spending so long looking at this...)

> Seems we need a few more things than arch_unregister_cpu() pulled out
> in the above code.

Yes, and I also wonder whether we should be doing any of that
unconditionally...

> > If it does, this would cause
> > a new acpi_processor structure to be allocated and the old one to be
> > leaked... I hope I'm wrong about add() being called - but if it isn't,
> > how does enabled going from 0->1 get handled... and if we are handling
> > its 1->0 transition separately from present, then surely we should be
> > handling that.
> > 
> > Maybe I'm just getting confused, but I've spent much of this morning
> > trying to unravel all this... and I'm of the opinion that this isn't a
> > sign of a good approach.
> 
> It's all annoyingly messy at the root of things, but indeed you've found
> some issues in current implementation.  Feels like just ripping out
> a bunch of stuff from acpi_processor_make_not_present() and calling it
> for both paths will probably work, but I've not tested that yet.

... since surely if we've already got to the point of issuing a
post_eject() callback, the device has already been ejected
and thus has gone - and if it is ever "replaced" we will get an
attach() callback.

Moreover, looking at acpi_scan_hot_remove(), if we are the device
being ejected, then after ej0 is evaluated, _STA is checked, and
acpi_bus_post_eject() called only if enabled=0. (This will also
end up calling post_eject() for any children as well which won't
have their _STA evaluated.)

So this has got me wondering whether acpi_processor_post_eject()
should be doing all the cleanup in acpi_processor_make_not_present()
except if we believe the call is in error (e.g.
!ACPI_HOTPLUG_PRESENT_CPU and present=0) - thus preparing the way
for a future attach() callback.

Hmm. I wonder if Rafael has any input on this.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: linux-pm@vger.kernel.org, loongarch@lists.linux.dev,
	linux-acpi@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-riscv@lists.infradead.org, kvmarm@lists.linux.dev,
	x86@kernel.org, acpica-devel@lists.linuxfoundation.org,
	linux-csky@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org,
	Salil Mehta <salil.mehta@huawei.com>,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	jianyong.wu@arm.com, justin.he@arm.com,
	James Morse <james.morse@arm.com>
Subject: Re: [PATCH RFC v3 17/21] ACPI: add support to register CPUs based on the _STA enabled bit
Date: Tue, 23 Jan 2024 14:59:39 +0000	[thread overview]
Message-ID: <Za/UWxAEnS5O/oY3@shell.armlinux.org.uk> (raw)
In-Reply-To: <20240123142218.00001a7b@Huawei.com>

On Tue, Jan 23, 2024 at 02:22:18PM +0000, Jonathan Cameron wrote:
> On Tue, 23 Jan 2024 13:10:44 +0000
> "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
> 
> > On Tue, Jan 23, 2024 at 10:26:03AM +0000, Jonathan Cameron wrote:
> > > On Tue, 2 Jan 2024 14:53:20 +0000
> > > Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote:
> > >   
> > > > On Mon, 18 Dec 2023 13:03:32 +0000
> > > > "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
> > > >   
> > > > > On Wed, Dec 13, 2023 at 12:50:38PM +0000, Russell King wrote:    
> > > > > > From: James Morse <james.morse@arm.com>
> > > > > > 
> > > > > > acpi_processor_get_info() registers all present CPUs. Registering a
> > > > > > CPU is what creates the sysfs entries and triggers the udev
> > > > > > notifications.
> > > > > > 
> > > > > > arm64 virtual machines that support 'virtual cpu hotplug' use the
> > > > > > enabled bit to indicate whether the CPU can be brought online, as
> > > > > > the existing ACPI tables require all hardware to be described and
> > > > > > present.
> > > > > > 
> > > > > > If firmware describes a CPU as present, but disabled, skip the
> > > > > > registration. Such CPUs are present, but can't be brought online for
> > > > > > whatever reason. (e.g. firmware/hypervisor policy).
> > > > > > 
> > > > > > Once firmware sets the enabled bit, the CPU can be registered and
> > > > > > brought online by user-space. Online CPUs, or CPUs that are missing
> > > > > > an _STA method must always be registered.      
> > > > > 
> > > > > ...
> > > > >     
> > > > > > @@ -526,6 +552,9 @@ static void acpi_processor_post_eject(struct acpi_device *device)
> > > > > >  		acpi_processor_make_not_present(device);
> > > > > >  		return;
> > > > > >  	}
> > > > > > +
> > > > > > +	if (cpu_present(pr->id) && !(sta & ACPI_STA_DEVICE_ENABLED))
> > > > > > +		arch_unregister_cpu(pr->id);      
> > > > > 
> > > > > This change isn't described in the commit log, but seems to be the cause
> > > > > of the build error identified by the kernel build bot that is fixed
> > > > > later in this series. I'm wondering whether this should be in a
> > > > > different patch, maybe "ACPI: Check _STA present bit before making CPUs
> > > > > not present" ?    
> > > > 
> > > > Would seem a bit odd to call arch_unregister_cpu() way before the code
> > > > is added to call the matching arch_registers_cpu()
> > > > 
> > > > Mind you this eject doesn't just apply to those CPUs that are registered
> > > > later I think, but instead to all.  So we run into the spec hole that
> > > > there is no way to identify initially 'enabled' CPUs that might be disabled
> > > > later.
> > > >   
> > > > > 
> > > > > Or maybe my brain isn't working properly (due to being Covid positive.)
> > > > > Any thoughts, Jonathan?    
> > > > 
> > > > I'll go with a resounding 'not sure' on where this change belongs.
> > > > I blame my non existent start of the year hangover.
> > > > Hope you have recovered!  
> > > 
> > > Looking again, I think you were right, move it to that earlier patch.  
> > 
> > I'm having second thoughts - because this patch introduces the
> > arch_register_cpu() into the acpi_processor_add() path (via
> > acpi_processor_get_info() and acpi_processor_make_enabled(), so isn't
> > it also correct to add arch_unregister_cpu() to the detach/post_eject
> > path as well? If we add one without the other, doesn't stuff become
> > a bit asymetric?
> > 
> > Looking more deeply at these changes, I'm finding it isn't easy to
> > keep track of everything that's going on here.
> 
> I can sympathize.
> 
> > 
> > We had attach()/detach() callbacks that were nice and symetrical.
> > How we have this post_eject() callback that makes things asymetrical.
> > 
> > We have the attach() method that registers the CPU, but no detach
> > method, instead having the post_eject() method. On the face of it,
> > arch_unregister_cpu() doesn't look symetric unless one goes digging
> > more in the code - by that, I mean arch_register_cpu() only gets
> > called of present=1 _and_ enabled=1. However, arch_unregister_cpu()
> > gets called buried in acpi_processor_make_not_present(), called when
> > present=0, and then we have this new one to handle the case where
> > enabled=0. It is not obvious that arch_unregister_cpu() is the reverse
> > of what happens with arch_register_cpu() here.
> 
> One option would be to pull the arch_unregister_cpu() out so it
> happens in one place in both the present = 0 and enabled = 0 cases but
> I'm not sure if it's safe to reorder the contents of 
> acpi_processor_not_present() as it's followed by a bunch of things.
> 
> Would looks something like
> 
> if (cpu_present(pr->id)) {
> 	if (!(sta & ACPI_STA_DEVICE_PRESENT)) {
> 		acpi_processor_make_not_present(device); /* Remove arch_cpu_unregister() */
> 	} else if (!(sta & ACPI_STA_DEVICE_ENABLED)) {
> 		/* Nothing to do in this case */
> 	} else {
> 		return; /* Firmware did something silly - probably racing */
> 	}
> 	arch_unregister_cpu(pr->id);
> 
> 	return;
> }
> 
> > 
> > Then we have the add() method allocating pr->throttling.shared_cpu_map,
> > and acpi_processor_make_not_present() freeing it. From what I read in
> > ACPI v6.5, enabled is not allowed to be set without present. So, if
> > _STA reports that a CPU that had present=1 enabled=1, but then is
> > later reported to be enabled=0 (which we handle by calling only
> > arch_unregister_cpu()) then what happens when _STA changes to
> > enabled=1 later? Does add() get called? 
> 
> yes it does (I poked it to see) which indeed isn't good (unless I've
> broken my setup in some obscure way).

Thanks for confirming - I haven't had a chance to do any testing (late
lunch because of spending so long looking at this...)

> Seems we need a few more things than arch_unregister_cpu() pulled out
> in the above code.

Yes, and I also wonder whether we should be doing any of that
unconditionally...

> > If it does, this would cause
> > a new acpi_processor structure to be allocated and the old one to be
> > leaked... I hope I'm wrong about add() being called - but if it isn't,
> > how does enabled going from 0->1 get handled... and if we are handling
> > its 1->0 transition separately from present, then surely we should be
> > handling that.
> > 
> > Maybe I'm just getting confused, but I've spent much of this morning
> > trying to unravel all this... and I'm of the opinion that this isn't a
> > sign of a good approach.
> 
> It's all annoyingly messy at the root of things, but indeed you've found
> some issues in current implementation.  Feels like just ripping out
> a bunch of stuff from acpi_processor_make_not_present() and calling it
> for both paths will probably work, but I've not tested that yet.

... since surely if we've already got to the point of issuing a
post_eject() callback, the device has already been ejected
and thus has gone - and if it is ever "replaced" we will get an
attach() callback.

Moreover, looking at acpi_scan_hot_remove(), if we are the device
being ejected, then after ej0 is evaluated, _STA is checked, and
acpi_bus_post_eject() called only if enabled=0. (This will also
end up calling post_eject() for any children as well which won't
have their _STA evaluated.)

So this has got me wondering whether acpi_processor_post_eject()
should be doing all the cleanup in acpi_processor_make_not_present()
except if we believe the call is in error (e.g.
!ACPI_HOTPLUG_PRESENT_CPU and present=0) - thus preparing the way
for a future attach() callback.

Hmm. I wonder if Rafael has any input on this.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2024-01-23 14:59 UTC|newest]

Thread overview: 363+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-13 12:47 [RFC PATCH v3 00/21] ACPI/arm64: add support for virtual cpu hotplug Russell King (Oracle)
2023-12-13 12:47 ` Russell King (Oracle)
2023-12-13 12:47 ` Russell King (Oracle)
2023-12-13 12:49 ` [PATCH RFC v3 01/21] ACPI: Only enumerate enabled (or functional) devices Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49   ` Russell King
2023-12-14 17:32   ` Jonathan Cameron
2023-12-14 17:32     ` Jonathan Cameron
2023-12-14 17:32     ` Jonathan Cameron
2023-12-14 17:47     ` Rafael J. Wysocki
2023-12-14 17:47       ` Rafael J. Wysocki
2023-12-14 17:47       ` Rafael J. Wysocki
2023-12-14 18:10       ` Russell King (Oracle)
2023-12-14 18:10         ` Russell King (Oracle)
2023-12-14 18:10         ` Russell King (Oracle)
2023-12-14 18:16         ` Rafael J. Wysocki
2023-12-14 18:16           ` Rafael J. Wysocki
2023-12-14 18:16           ` Rafael J. Wysocki
2023-12-14 18:37           ` Rafael J. Wysocki
2023-12-14 18:37             ` Rafael J. Wysocki
2023-12-14 18:37             ` Rafael J. Wysocki
2023-12-15 15:31             ` Russell King (Oracle)
2023-12-15 15:31               ` Russell King (Oracle)
2023-12-15 15:31               ` Russell King (Oracle)
2023-12-15 16:15               ` Jonathan Cameron
2023-12-15 16:15                 ` Jonathan Cameron
2023-12-15 16:15                 ` Jonathan Cameron
2023-12-15 19:47                 ` Rafael J. Wysocki
2023-12-15 19:47                   ` Rafael J. Wysocki
2023-12-15 19:47                   ` Rafael J. Wysocki
2024-01-02 14:39                   ` Jonathan Cameron
2024-01-02 14:39                     ` Jonathan Cameron
2024-01-02 14:39                     ` Jonathan Cameron
2024-01-11 10:19                     ` Jonathan Cameron
2024-01-11 10:19                       ` Jonathan Cameron
2024-01-11 10:19                       ` Jonathan Cameron
2024-01-11 10:26                       ` Russell King (Oracle)
2024-01-11 10:26                         ` Russell King (Oracle)
2024-01-11 10:26                         ` Russell King (Oracle)
2024-01-12 11:52                         ` Jonathan Cameron
2024-01-12 11:52                           ` Jonathan Cameron
2024-01-12 11:52                           ` Jonathan Cameron
2024-01-29 14:55                           ` Russell King (Oracle)
2024-01-29 14:55                             ` Russell King (Oracle)
2024-01-29 14:55                             ` Russell King (Oracle)
2024-01-29 15:05                             ` Rafael J. Wysocki
2024-01-29 15:05                               ` Rafael J. Wysocki
2024-01-29 15:05                               ` Rafael J. Wysocki
2024-01-29 15:16                               ` Russell King (Oracle)
2024-01-29 15:16                                 ` Russell King (Oracle)
2024-01-29 15:16                                 ` Russell King (Oracle)
2024-01-29 15:34                                 ` Rafael J. Wysocki
2024-01-29 15:34                                   ` Rafael J. Wysocki
2024-01-29 15:34                                   ` Rafael J. Wysocki
2024-01-22  7:31                         ` Gavin Shan
2024-01-22  7:31                           ` Gavin Shan
2024-01-22  7:31                           ` Gavin Shan
2023-12-14 17:55     ` Russell King (Oracle)
2023-12-14 17:55       ` Russell King (Oracle)
2023-12-14 17:55       ` Russell King (Oracle)
2023-12-13 12:49 ` [PATCH RFC v3 02/21] ACPI: processor: Add support for processors described as container packages Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49   ` Russell King
2023-12-14 17:36   ` Jonathan Cameron
2023-12-14 17:36     ` Jonathan Cameron
2023-12-14 17:36     ` Jonathan Cameron
2023-12-14 17:57     ` Russell King (Oracle)
2023-12-14 17:57       ` Russell King (Oracle)
2023-12-14 17:57       ` Russell King (Oracle)
2023-12-18 20:17   ` Rafael J. Wysocki
2023-12-18 20:17     ` Rafael J. Wysocki
2023-12-18 20:17     ` Rafael J. Wysocki
2024-01-09 15:49     ` Russell King (Oracle)
2024-01-09 15:49       ` Russell King (Oracle)
2024-01-09 15:49       ` Russell King (Oracle)
2024-01-09 16:05       ` Rafael J. Wysocki
2024-01-09 16:05         ` Rafael J. Wysocki
2024-01-09 16:05         ` Rafael J. Wysocki
2024-01-09 16:13         ` Russell King (Oracle)
2024-01-09 16:13           ` Russell King (Oracle)
2024-01-09 16:13           ` Russell King (Oracle)
2024-01-11 16:17           ` Jonathan Cameron
2024-01-11 16:17             ` Jonathan Cameron
2024-01-11 16:17             ` Jonathan Cameron
2024-01-11 17:59     ` Jonathan Cameron
2024-01-11 17:59       ` Jonathan Cameron
2024-01-11 17:59       ` Jonathan Cameron
2024-01-11 18:46       ` Russell King (Oracle)
2024-01-11 18:46         ` Russell King (Oracle)
2024-01-11 18:46         ` Russell King (Oracle)
2024-01-12  9:25         ` Jonathan Cameron
2024-01-12  9:25           ` Jonathan Cameron
2024-01-12  9:25           ` Jonathan Cameron
2024-01-12 15:01           ` Rafael J. Wysocki
2024-01-12 15:01             ` Rafael J. Wysocki
2024-01-12 15:01             ` Rafael J. Wysocki
2024-01-12 15:03             ` Jonathan Cameron
2024-01-12 15:03               ` Jonathan Cameron
2024-01-12 15:03               ` Jonathan Cameron
2024-01-15 10:47             ` Russell King (Oracle)
2024-01-15 10:47               ` Russell King (Oracle)
2024-01-15 10:47               ` Russell King (Oracle)
2023-12-13 12:49 ` [PATCH RFC v3 03/21] ACPI: processor: Register CPUs that are online, but not described in the DSDT Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49   ` Russell King
2023-12-18 20:22   ` Rafael J. Wysocki
2023-12-18 20:22     ` Rafael J. Wysocki
2023-12-18 20:22     ` Rafael J. Wysocki
2024-01-15 11:06     ` Russell King (Oracle)
2024-01-15 11:06       ` Russell King (Oracle)
2024-01-15 11:06       ` Russell King (Oracle)
2024-01-22 16:02       ` Jonathan Cameron
2024-01-22 16:02         ` Jonathan Cameron
2024-01-22 16:02         ` Jonathan Cameron
2024-01-22 16:22         ` Rafael J. Wysocki
2024-01-22 16:22           ` Rafael J. Wysocki
2024-01-22 16:22           ` Rafael J. Wysocki
2024-01-22 17:30           ` Russell King (Oracle)
2024-01-22 17:30             ` Russell King (Oracle)
2024-01-22 17:30             ` Russell King (Oracle)
2024-01-23  9:27             ` Jonathan Cameron
2024-01-23  9:27               ` Jonathan Cameron
2024-01-23  9:27               ` Jonathan Cameron
2024-01-25 13:56               ` Miguel Luis
2024-01-25 13:56                 ` Miguel Luis
2024-01-25 13:56                 ` Miguel Luis
2024-01-25 14:42                 ` Rafael J. Wysocki
2024-01-25 14:42                   ` Rafael J. Wysocki
2024-01-25 14:42                   ` Rafael J. Wysocki
2024-01-29 13:03               ` Jonathan Cameron
2024-01-29 13:03                 ` Jonathan Cameron
2024-01-29 13:03                 ` Jonathan Cameron
2024-01-29 15:32                 ` Russell King (Oracle)
2024-01-29 15:32                   ` Russell King (Oracle)
2024-01-29 15:32                   ` Russell King (Oracle)
2024-01-22 17:27         ` Russell King (Oracle)
2024-01-22 17:27           ` Russell King (Oracle)
2024-01-22 17:27           ` Russell King (Oracle)
2023-12-13 12:49 ` [PATCH RFC v3 04/21] ACPI: processor: Register all CPUs from acpi_processor_get_info() Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49   ` Russell King
2023-12-14 17:38   ` Jonathan Cameron
2023-12-14 17:38     ` Jonathan Cameron
2023-12-14 17:38     ` Jonathan Cameron
2023-12-18 20:30   ` Rafael J. Wysocki
2023-12-18 20:30     ` Rafael J. Wysocki
2023-12-18 20:30     ` Rafael J. Wysocki
2024-01-22 17:44     ` Jonathan Cameron
2024-01-22 17:44       ` Jonathan Cameron
2024-01-22 17:44       ` Jonathan Cameron
2024-01-22 18:03       ` Rafael J. Wysocki
2024-01-22 18:03         ` Rafael J. Wysocki
2024-01-22 18:03         ` Rafael J. Wysocki
2024-01-22 21:56     ` Russell King (Oracle)
2024-01-22 21:56       ` Russell King (Oracle)
2024-01-22 21:56       ` Russell King (Oracle)
2023-12-13 12:49 ` [PATCH RFC v3 05/21] ACPI: Rename ACPI_HOTPLUG_CPU to include 'present' Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49   ` Russell King
2023-12-14 17:41   ` Jonathan Cameron
2023-12-14 17:41     ` Jonathan Cameron
2023-12-14 17:41     ` Jonathan Cameron
2023-12-14 18:00     ` Russell King (Oracle)
2023-12-14 18:00       ` Russell King (Oracle)
2023-12-14 18:00       ` Russell King (Oracle)
2023-12-18 20:35   ` Rafael J. Wysocki
2023-12-18 20:35     ` Rafael J. Wysocki
2023-12-18 20:35     ` Rafael J. Wysocki
2024-01-22 18:00     ` Jonathan Cameron
2024-01-22 18:00       ` Jonathan Cameron
2024-01-22 18:00       ` Jonathan Cameron
2024-01-23 13:28       ` Russell King (Oracle)
2024-01-23 13:28         ` Russell King (Oracle)
2024-01-23 13:28         ` Russell King (Oracle)
2024-01-23 16:15         ` Rafael J. Wysocki
2024-01-23 16:15           ` Rafael J. Wysocki
2024-01-23 16:15           ` Rafael J. Wysocki
2024-01-23 16:36           ` Russell King (Oracle)
2024-01-23 16:36             ` Russell King (Oracle)
2024-01-23 16:36             ` Russell King (Oracle)
2024-01-23 17:43             ` Rafael J. Wysocki
2024-01-23 17:43               ` Rafael J. Wysocki
2024-01-23 17:43               ` Rafael J. Wysocki
2024-01-23 18:19               ` Russell King (Oracle)
2024-01-23 18:19                 ` Russell King (Oracle)
2024-01-23 18:19                 ` Russell King (Oracle)
2024-01-23 18:26                 ` Rafael J. Wysocki
2024-01-23 18:26                   ` Rafael J. Wysocki
2024-01-23 18:26                   ` Rafael J. Wysocki
2024-01-23 18:59                   ` Russell King (Oracle)
2024-01-23 18:59                     ` Russell King (Oracle)
2024-01-23 18:59                     ` Russell King (Oracle)
2024-01-23 19:27                     ` Rafael J. Wysocki
2024-01-23 19:27                       ` Rafael J. Wysocki
2024-01-23 19:27                       ` Rafael J. Wysocki
2024-01-23 20:09                       ` Russell King (Oracle)
2024-01-23 20:09                         ` Russell King (Oracle)
2024-01-23 20:09                         ` Russell King (Oracle)
2024-01-23 20:17                         ` Rafael J. Wysocki
2024-01-23 20:17                           ` Rafael J. Wysocki
2024-01-23 20:17                           ` Rafael J. Wysocki
2024-01-23 20:57                           ` Russell King (Oracle)
2024-01-23 20:57                             ` Russell King (Oracle)
2024-01-23 20:57                             ` Russell King (Oracle)
2024-01-23 21:12                             ` Russell King (Oracle)
2024-01-23 21:12                               ` Russell King (Oracle)
2024-01-23 21:12                               ` Russell King (Oracle)
2024-01-23 22:05                               ` Rafael J. Wysocki
2024-01-23 22:05                                 ` Rafael J. Wysocki
2024-01-23 22:05                                 ` Rafael J. Wysocki
2024-01-24  8:45                                 ` Russell King (Oracle)
2024-01-24  8:45                                   ` Russell King (Oracle)
2024-01-24  8:45                                   ` Russell King (Oracle)
2023-12-13 12:49 ` [PATCH RFC v3 06/21] ACPI: Move acpi_bus_trim_one() before acpi_scan_hot_remove() Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49 ` [PATCH RFC v3 07/21] ACPI: Rename acpi_processor_hotadd_init and remove pre-processor guards Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49   ` Russell King
2023-12-14 17:43   ` Jonathan Cameron
2023-12-14 17:43     ` Jonathan Cameron
2023-12-14 17:43     ` Jonathan Cameron
2023-12-14 18:03     ` Russell King (Oracle)
2023-12-14 18:03       ` Russell King (Oracle)
2023-12-14 18:03       ` Russell King (Oracle)
2023-12-13 12:49 ` [PATCH RFC v3 08/21] ACPI: Add post_eject to struct acpi_scan_handler for cpu hotplug Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49   ` Russell King
2023-12-13 12:49 ` [PATCH RFC v3 09/21] ACPI: convert acpi_processor_post_eject() to use IS_ENABLED() Russell King (Oracle)
2023-12-13 12:49   ` Russell King (Oracle)
2023-12-13 12:49   ` Russell King (Oracle)
2023-12-15 16:11   ` Jonathan Cameron
2023-12-15 16:11     ` Jonathan Cameron
2023-12-15 16:11     ` Jonathan Cameron
2023-12-13 12:50 ` [PATCH RFC v3 10/21] ACPI: Check _STA present bit before making CPUs not present Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 16:18   ` Jonathan Cameron
2023-12-15 16:18     ` Jonathan Cameron
2023-12-15 16:18     ` Jonathan Cameron
2023-12-13 12:50 ` [PATCH RFC v3 11/21] ACPI: Warn when the present bit changes but the feature is not enabled Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50 ` [PATCH RFC v3 12/21] arm64: acpi: Move get_cpu_for_acpi_id() to a header Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50 ` [PATCH RFC v3 13/21] ACPICA: Add new MADT GICC flags fields Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 16:23   ` Jonathan Cameron
2023-12-15 16:23     ` Jonathan Cameron
2023-12-15 16:23     ` Jonathan Cameron
2023-12-15 16:53     ` Russell King (Oracle)
2023-12-15 16:53       ` Russell King (Oracle)
2023-12-15 16:53       ` Russell King (Oracle)
2023-12-18  9:23       ` Lorenzo Pieralisi
2023-12-18  9:23         ` Lorenzo Pieralisi
2023-12-18  9:23         ` Lorenzo Pieralisi
2023-12-18 13:14         ` Rafael J. Wysocki
2023-12-18 13:14           ` Rafael J. Wysocki
2023-12-18 13:14           ` Rafael J. Wysocki
2023-12-18 16:28           ` Lorenzo Pieralisi
2023-12-18 16:28             ` Lorenzo Pieralisi
2023-12-18 16:28             ` Lorenzo Pieralisi
2023-12-27 11:15           ` Lorenzo Pieralisi
2023-12-27 11:15             ` Lorenzo Pieralisi
2023-12-27 11:15             ` Lorenzo Pieralisi
2023-12-13 12:50 ` [PATCH RFC v3 14/21] irqchip/gic-v3: Don't return errors from gic_acpi_match_gicc() Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 16:33   ` Jonathan Cameron
2023-12-15 16:33     ` Jonathan Cameron
2023-12-15 16:33     ` Jonathan Cameron
2024-01-09 19:27     ` Russell King (Oracle)
2024-01-09 19:27       ` Russell King (Oracle)
2024-01-09 19:27       ` Russell King (Oracle)
2024-01-23 10:08       ` Jonathan Cameron
2024-01-23 10:08         ` Jonathan Cameron
2024-01-23 10:08         ` Jonathan Cameron
2023-12-13 12:50 ` [PATCH RFC v3 15/21] irqchip/gic-v3: Add support for ACPI's disabled but 'online capable' CPUs Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 16:38   ` Jonathan Cameron
2023-12-15 16:38     ` Jonathan Cameron
2023-12-15 16:38     ` Jonathan Cameron
2023-12-13 12:50 ` [PATCH RFC v3 16/21] arm64: psci: Ignore DENIED CPUs Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 16:40   ` Jonathan Cameron
2023-12-15 16:40     ` Jonathan Cameron
2023-12-15 16:40     ` Jonathan Cameron
2023-12-13 12:50 ` [PATCH RFC v3 17/21] ACPI: add support to register CPUs based on the _STA enabled bit Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-18 13:03   ` Russell King (Oracle)
2023-12-18 13:03     ` Russell King (Oracle)
2023-12-18 13:03     ` Russell King (Oracle)
2024-01-02 14:53     ` Jonathan Cameron
2024-01-02 14:53       ` Jonathan Cameron
2024-01-02 14:53       ` Jonathan Cameron
2024-01-23 10:26       ` Jonathan Cameron
2024-01-23 10:26         ` Jonathan Cameron
2024-01-23 10:26         ` Jonathan Cameron
2024-01-23 13:10         ` Russell King (Oracle)
2024-01-23 13:10           ` Russell King (Oracle)
2024-01-23 13:10           ` Russell King (Oracle)
2024-01-23 14:22           ` Jonathan Cameron
2024-01-23 14:22             ` Jonathan Cameron
2024-01-23 14:22             ` Jonathan Cameron
2024-01-23 14:59             ` Russell King (Oracle) [this message]
2024-01-23 14:59               ` Russell King (Oracle)
2024-01-23 14:59               ` Russell King (Oracle)
2023-12-13 12:50 ` [PATCH RFC v3 18/21] ACPI: processor: Only call arch_unregister_cpu() if HOTPLUG_CPU is selected Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 16:50   ` Jonathan Cameron
2023-12-15 16:50     ` Jonathan Cameron
2023-12-15 16:50     ` Jonathan Cameron
2023-12-18 12:58     ` Russell King (Oracle)
2023-12-18 12:58       ` Russell King (Oracle)
2023-12-18 12:58       ` Russell King (Oracle)
2024-01-23 10:29       ` Jonathan Cameron
2024-01-23 10:29         ` Jonathan Cameron
2024-01-23 10:29         ` Jonathan Cameron
2023-12-13 12:50 ` [PATCH RFC v3 19/21] arm64: document virtual CPU hotplug's expectations Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 17:04   ` Jonathan Cameron
2023-12-15 17:04     ` Jonathan Cameron
2023-12-15 17:04     ` Jonathan Cameron
2023-12-13 12:50 ` [PATCH RFC v3 20/21] ACPI: Add _OSC bits to advertise OS support for toggling CPU present/enabled Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 17:12   ` Jonathan Cameron
2023-12-15 17:12     ` Jonathan Cameron
2023-12-15 17:12     ` Jonathan Cameron
2024-01-02 13:07     ` Jose Marinho
2024-01-02 13:07       ` Jose Marinho
2024-01-02 13:07       ` Jose Marinho
2024-01-02 15:16       ` Jonathan Cameron
2024-01-02 15:16         ` Jonathan Cameron
2024-01-02 15:16         ` Jonathan Cameron
2024-01-02 15:35         ` Jose Marinho
2024-01-02 15:35           ` Jose Marinho
2024-01-02 15:35           ` Jose Marinho
2024-01-23 10:51           ` Jonathan Cameron
2024-01-23 10:51             ` Jonathan Cameron
2024-01-23 10:51             ` Jonathan Cameron
2023-12-13 12:50 ` [PATCH RFC v3 21/21] cpumask: Add enabled cpumask for present CPUs that can be brought online Russell King
2023-12-13 12:50   ` Russell King
2023-12-13 12:50   ` Russell King
2023-12-15 17:18   ` Jonathan Cameron
2023-12-15 17:18     ` Jonathan Cameron
2023-12-15 17:18     ` Jonathan Cameron
2023-12-18 12:14     ` Russell King (Oracle)
2023-12-18 12:14       ` Russell King (Oracle)
2023-12-18 12:14       ` Russell King (Oracle)
2024-01-02 15:19       ` Jonathan Cameron
2024-01-02 15:19         ` Jonathan Cameron
2024-01-02 15:19         ` Jonathan Cameron
2023-12-15 19:40   ` Thomas Gleixner
2023-12-15 19:40     ` Thomas Gleixner
2023-12-15 19:40     ` Thomas Gleixner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Za/UWxAEnS5O/oY3@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=acpica-devel@lists.linuxfoundation.org \
    --cc=james.morse@arm.com \
    --cc=jean-philippe@linaro.org \
    --cc=jianyong.wu@arm.com \
    --cc=justin.he@arm.com \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-csky@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=loongarch@lists.linux.dev \
    --cc=salil.mehta@huawei.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.