linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: linux-acpi@vger.kernel.org
Cc: Toshi Kani <toshi.kani@hp.com>,
	Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>,
	isimatu.yasuaki@jp.fujitsu.com, wency@cn.fujitsu.com,
	lenb@kernel.org, gregkh@linuxfoundation.org,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [RFC PATCH v3 1/3] acpi: Introduce prepare_remove operation in acpi_device_ops
Date: Wed, 28 Nov 2012 00:18:09 +0100	[thread overview]
Message-ID: <2024212.WCrra54xSP@vostro.rjw.lan> (raw)
In-Reply-To: <1353975021.26955.178.camel@misato.fc.hp.com>

On Monday, November 26, 2012 05:10:21 PM Toshi Kani wrote:
> On Fri, 2012-11-23 at 18:50 +0100, Vasilis Liaskovitis wrote:
> > This function should be registered for devices that need to execute some
> > non-acpi related action in order to be safely removed. If this function
> > returns zero, the acpi core can continue with removing the device.
> > 
> > Make acpi_bus_remove call the device-specific prepare_remove callback before
> > removing the device. If prepare_remove fails, the removal is aborted.
> > 
> > Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>
> > ---
> >  drivers/acpi/scan.c     |    9 ++++++++-
> >  include/acpi/acpi_bus.h |    2 ++
> >  2 files changed, 10 insertions(+), 1 deletions(-)
> > 
> > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> > index 8c4ac6d..e1c1d5d 100644
> > --- a/drivers/acpi/scan.c
> > +++ b/drivers/acpi/scan.c
> > @@ -1380,10 +1380,16 @@ static int acpi_device_set_context(struct acpi_device *device)
> >  
> >  static int acpi_bus_remove(struct acpi_device *dev, int rmdevice)
> >  {
> > +	int ret = 0;
> >  	if (!dev)
> >  		return -EINVAL;
> >  
> >  	dev->removal_type = ACPI_BUS_REMOVAL_EJECT;
> > +
> > +	if (dev->driver && dev->driver->ops.prepare_remove)
> > +		ret = dev->driver->ops.prepare_remove(dev);
> > +	if (ret)
> > +		return ret;
> 
> Hi Vasilis,
> 
> The above code should be like below. Then you do not need to initialize
> ret, either.  Please also add some comments explaining about
> prepare_remove can fail, but remove cannot.
> 
> 	if (dev->driver && dev->driver->ops.prepare_remove) {
> 		ret = dev->driver->ops.prepare_remove(dev);
> 		if (ret)
> 			return ret;
> 	}
> 
> >  	device_release_driver(&dev->dev);
> >  
> >  	if (!rmdevice)
> > @@ -1702,7 +1708,8 @@ int acpi_bus_trim(struct acpi_device *start, int rmdevice)
> >  				err = acpi_bus_remove(child, rmdevice);
> >  			else
> >  				err = acpi_bus_remove(child, 1);
> > -
> > +			if (err)
> > +				return err;
> >  			continue;
> >  		}
> >  
> > diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> > index 7ced5dc..9d94a55 100644
> > --- a/include/acpi/acpi_bus.h
> > +++ b/include/acpi/acpi_bus.h
> > @@ -94,6 +94,7 @@ typedef int (*acpi_op_start) (struct acpi_device * device);
> >  typedef int (*acpi_op_bind) (struct acpi_device * device);
> >  typedef int (*acpi_op_unbind) (struct acpi_device * device);
> >  typedef void (*acpi_op_notify) (struct acpi_device * device, u32 event);
> > +typedef int (*acpi_op_prepare_remove) (struct acpi_device *device);
> >  
> >  struct acpi_bus_ops {
> >  	u32 acpi_op_add:1;
> > @@ -107,6 +108,7 @@ struct acpi_device_ops {
> >  	acpi_op_bind bind;
> >  	acpi_op_unbind unbind;
> >  	acpi_op_notify notify;
> > +	acpi_op_prepare_remove prepare_remove;
> 
> I'd prefer pre_remove, which indicates this interface is called before
> remove.  prepare_remove sounds as if it only performs preparation, which
> may be misleading.
> 
> BTW, Rafael mentioned we should avoid extending ACPI driver's
> interface...  But I do not have other idea, either.

It's fine in this particular case, since it looks like it would be difficult
to do that differently with what we have at the moment.

Thanks,
Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2012-11-27 23:13 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-23 17:50 [RFC PATCH v3 0/3] acpi: Introduce prepare_remove device operation Vasilis Liaskovitis
2012-11-23 17:50 ` [RFC PATCH v3 1/3] acpi: Introduce prepare_remove operation in acpi_device_ops Vasilis Liaskovitis
2012-11-27  0:10   ` Toshi Kani
2012-11-27 18:36     ` Vasilis Liaskovitis
2012-11-27 23:18     ` Rafael J. Wysocki [this message]
2012-11-23 17:50 ` [RFC PATCH v3 2/3] acpi_memhotplug: Add prepare_remove operation Vasilis Liaskovitis
2012-11-24 16:23   ` Wen Congyang
2012-11-23 17:50 ` [RFC PATCH v3 3/3] acpi_memhotplug: Allow eject to proceed on rebind scenario Vasilis Liaskovitis
2012-11-24 16:20   ` Wen Congyang
2012-11-26  8:36     ` Vasilis Liaskovitis
2012-11-26  9:11       ` Wen Congyang
2012-11-27  0:19         ` Toshi Kani
2012-11-27 18:32           ` Vasilis Liaskovitis
2012-11-27 22:03             ` Toshi Kani
2012-11-27 23:41               ` Rafael J. Wysocki
2012-11-28 16:01                 ` Toshi Kani
2012-11-28 18:40                   ` Rafael J. Wysocki
2012-11-28 21:02                     ` Toshi Kani
2012-11-28 21:40                       ` Rafael J. Wysocki
2012-11-28 21:40                         ` Toshi Kani
2012-11-28 22:01                           ` Rafael J. Wysocki
2012-11-28 22:04                             ` Toshi Kani
2012-11-28 22:21                               ` Rafael J. Wysocki
2012-11-28 22:16                                 ` Toshi Kani
2012-11-28 22:39                                   ` Rafael J. Wysocki
2012-11-28 22:46                                     ` Greg KH
2012-11-28 23:05                                       ` Rafael J. Wysocki
2012-11-28 23:10                                         ` Greg KH
2012-11-28 23:31                                           ` Rafael J. Wysocki
2012-11-28 23:49                       ` Rafael J. Wysocki
2012-11-29  1:02                         ` Toshi Kani
2012-11-29  1:15                           ` Toshi Kani
2012-11-29 10:03                             ` Rafael J. Wysocki
2012-11-29 11:30                               ` Vasilis Liaskovitis
2012-11-29 16:57                                 ` Rafael J. Wysocki
2012-11-29 17:56                                 ` Toshi Kani
2012-11-29 20:25                                   ` Rafael J. Wysocki
2012-11-29 20:38                                     ` Toshi Kani
2012-11-29 21:23                                       ` Rafael J. Wysocki
2012-11-29 21:46                                         ` Toshi Kani
2012-11-29 22:11                                           ` Rafael J. Wysocki
2012-11-29 23:17                                             ` Toshi Kani
2012-11-30  0:13                                               ` Rafael J. Wysocki
2012-11-30  1:09                                                 ` Toshi Kani
2012-11-29 16:43                               ` Toshi Kani
2012-11-29 11:04                             ` Vasilis Liaskovitis
2012-11-29 17:44                               ` Toshi Kani
2012-12-06  9:30                                 ` Vasilis Liaskovitis
2012-12-06 12:50                                   ` Rafael J. Wysocki
2012-12-06 15:41                                     ` Toshi Kani
2012-12-06 20:32                                       ` Rafael J. Wysocki
2012-11-28 11:05 ` [RFC PATCH v3 0/3] acpi: Introduce prepare_remove device operation Hanjun Guo
2012-11-28 18:41   ` Toshi Kani
2012-11-29  4:48     ` Hanjun Guo
2012-11-29 22:27       ` Toshi Kani
2012-12-03  4:25         ` Hanjun Guo
2012-12-04  0:10           ` Toshi Kani
2012-12-04  9:16             ` Hanjun Guo
2012-12-04 23:23               ` Toshi Kani
2012-12-05 12:10                 ` Hanjun Guo
2012-12-05 22:31                   ` Toshi Kani
2012-12-06 16:47                 ` Jiang Liu
2012-12-07  2:25                   ` Toshi Kani
2012-12-06 16:40             ` Jiang Liu
2012-12-06 20:30               ` Rafael J. Wysocki
2012-12-07  2:57               ` Toshi Kani
2012-12-07  5:57                 ` Jiang Liu
2012-12-08  1:08                   ` Toshi Kani
2012-12-11 14:34                     ` Jiang Liu
2012-12-13 14:42                       ` Toshi Kani
2012-12-13 15:15                         ` Jiang Liu
2012-12-15  1:19                           ` Toshi Kani
2012-11-29 10:15     ` Rafael J. Wysocki
2012-11-29 11:36       ` Vasilis Liaskovitis
2012-12-06 16:59         ` Jiang Liu
2012-11-29 17:03       ` Toshi Kani
2012-11-29 20:30         ` Rafael J. Wysocki
2012-11-29 20:39           ` Toshi Kani
2012-11-29 20:56             ` Toshi Kani
2012-11-29 21:25               ` Rafael J. Wysocki
2012-12-06 17:10                 ` Jiang Liu
2012-12-06 17:07           ` Jiang Liu
2012-12-06 17:01         ` Jiang Liu
2012-12-06 16:56       ` Jiang Liu
2012-12-06 16:00     ` Jiang Liu
2012-12-06 16:03       ` Toshi Kani
2012-12-06 16:25         ` Jiang Liu
2012-12-06 16:31           ` Toshi Kani
2012-12-06 16:52             ` Jiang Liu
2012-12-06 17:09               ` Toshi Kani
2012-12-06 17:30                 ` Jiang Liu
2012-12-06 17:28                   ` Toshi Kani

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=2024212.WCrra54xSP@vostro.rjw.lan \
    --to=rjw@sisk.pl \
    --cc=gregkh@linuxfoundation.org \
    --cc=isimatu.yasuaki@jp.fujitsu.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=toshi.kani@hp.com \
    --cc=vasilis.liaskovitis@profitbricks.com \
    --cc=wency@cn.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