public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Thomas Renninger <mail@renninger.de>
To: Yasunori Goto <y-goto@jp.fujitsu.com>
Cc: Thomas Renninger <trenn@suse.de>,
	akpm@osdl.org, "Brown, Len" <len.brown@intel.com>,
	keith mannthey <kmannth@us.ibm.com>,
	ACPI-ML <linux-acpi@vger.kernel.org>,
	Linux Kernel ML <linux-kernel@vger.kernel.org>,
	Linux Hotplug Memory Support  <lhms-devel@lists.sourceforge.net>,
	naveen.b.s@intel.com
Subject: Re: [PATCH](memory hotplug) Repost remove useless message at boot time from 2.6.18-rc4.
Date: Mon, 28 Aug 2006 23:16:58 +0200	[thread overview]
Message-ID: <1156799818.12158.9.camel@linux-1vxn.site> (raw)
In-Reply-To: <20060828223538.F622.Y-GOTO@jp.fujitsu.com>

On Mon, 2006-08-28 at 23:12 +0900, Yasunori Goto wrote: 
> Hmm.
> Ok. Followings are current my understanding of sequence
> with your patch.
> 
> At boot time, acpi_memory_device_init() is called.
> 
> acpi_memory_device_init()
>    |
>    +---> acpi_bus_register_driver()
>            |
>            +---> acpi_driver_attach()
>                    |
>                    +---> acpi_bus_driver_init()
>                            |
>                            +---> acpi_memory_device_add()
>                                     |
>                                     +---> acpi_install_notify_handler().
> 
> 
> The problem is in acpi_driver_attach(). This function is using
> "acpi_device_list" to call acpi_bus_driver_init().
> 
> This list is registered by acpi_device_register() which is called by
> acpi_add_single_object().
> However, acpi_add_single_object() skips calling it if _STA is not on.
> 
> 1015         switch (type) {
> 1016         case ACPI_BUS_TYPE_PROCESSOR:
> 1017         case ACPI_BUS_TYPE_DEVICE:
> 1018                 result = acpi_bus_get_status(device);
> 1019                 if (ACPI_FAILURE(result) || !device->status.present) {
> 1020                         result = -ENOENT;
> 1021                         goto end;
> 1022                 }
> 1023                 break;
> 
> So, notify handler is registered just for memory device which is enable
> at boot time.
> If notify event occurs for new memory device, there is no notify handler
> for it....
> 
Ah, good point. That should also be the reason why a battery inserted
after module loading won't get noticed (I didn't try right now, but I
remember complains about that).
I wonder whether the "!device->status.present" condition can just be
deleted here or checking for device HIDs that potentially can be
ejected/inserted, not sure. Hopefully someone else could comment on that
one.

> Old code registers handler for all of memory devices even if it is not
> enabled.
Yeah, therefore the mem_device cannot be passed as callback data as it
might get generated in the notify handler func and all the additional
stuff is needed..., ouch.
> 
> If my understanding is wrong, please let me know. ;-)
It's me who is wrong, thanks a lot for checking!

> Memory device might not have _EJ0/_EJD, but parent device 
> (like one NUMA node) might be able to be ejectable.
> In this case, only the parent device has _EJ0/_EJD.
> So, one more check is necessary.

I feared something like that (should have add a comment...), as the EJ0
and _STA functions are only used on the device itself I thought checking
for them makes sense, but for a missing EJ0 func powering down the
device just fails and it should not be harmful.
So the only useful thing from my patch (as long as .add is only invoked
if device is present) is using the general acpi_bus_get_status() func. 
Hmm, it must be used if the _STA function on the memory device is also
missing and the parent _STA must be used then? Could make sense on a
machine where a whole node must be inserted/ejected? The
acpi_bus_get_status() function already contains the checking for the
parent's _STA function and uses this one if the device itself has none.

  Thomas


  reply	other threads:[~2006-08-28 21:17 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-04 12:37 [PATCH](memory hotplug) remove useless message at boot time from 2.6.18-rc3 Yasunori Goto
2006-08-10  5:32 ` [PATCH](memory hotplug) Repost remove useless message at boot time from 2.6.18-rc4 Yasunori Goto
2006-08-10 20:26   ` Prarit Bhargava
2006-08-10 20:54     ` Len Brown
2006-08-10 20:55       ` Prarit Bhargava
2006-08-15 12:03   ` Thomas Renninger
2006-08-15 21:36     ` Yasunori Goto
2006-08-25 11:59     ` Yasunori Goto
2006-08-27 12:50       ` Thomas Renninger
2006-08-28 14:12         ` Yasunori Goto
2006-08-28 21:16           ` Thomas Renninger [this message]
2006-08-29  1:57             ` Yasunori Goto
2006-08-31 22:22           ` Bjorn Helgaas
2006-08-27 15:19       ` [PATCH 2/2] ACPI memory_hotplug cleanups Thomas Renninger
2006-08-27 17:19       ` [PATCH 1/2] acpi hotplug cleanups, move install notifier to add function Thomas Renninger
2006-08-30 21:48         ` keith mannthey
2006-08-27 17:58       ` [PATCH 2/2] " Thomas Renninger
2006-08-28  8:08         ` Yasunori Goto

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=1156799818.12158.9.camel@linux-1vxn.site \
    --to=mail@renninger.de \
    --cc=akpm@osdl.org \
    --cc=kmannth@us.ibm.com \
    --cc=len.brown@intel.com \
    --cc=lhms-devel@lists.sourceforge.net \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=naveen.b.s@intel.com \
    --cc=trenn@suse.de \
    --cc=y-goto@jp.fujitsu.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox