Re: [RFC PATCH v3 0/3] acpi: Introduce prepare_remove deviceoperation

From: Toshi Kani
Date: Thu Nov 29 2012 - 16:04:32 EST


On Thu, 2012-11-29 at 13:39 -0700, Toshi Kani wrote:
> On Thu, 2012-11-29 at 21:30 +0100, Rafael J. Wysocki wrote:
> > On Thursday, November 29, 2012 10:03:12 AM Toshi Kani wrote:
> > > On Thu, 2012-11-29 at 11:15 +0100, Rafael J. Wysocki wrote:
> > > > On Wednesday, November 28, 2012 11:41:36 AM Toshi Kani wrote:
> > > > > 1. Validate phase - Verify if the request is a supported operation. All
> > > > > known restrictions are verified at this phase. For instance, if a
> > > > > hot-remove request involves kernel memory, it is failed in this phase.
> > > > > Since this phase makes no change, no rollback is necessary to fail.
> > > >
> > > > Actually, we can't do it this way, because the conditions may change between
> > > > the check and the execution. So the first phase needs to involve execution
> > > > to some extent, although only as far as it remains reversible.
> > >
> > > For memory hot-remove, we can check if the target memory ranges are
> > > within ZONE_MOVABLE. We should not allow user to change this setup
> > > during hot-remove operation. Other things may be to check if a target
> > > node contains cpu0 (until it is supported), the console UART (assuming
> > > we cannot delete it), etc. We should avoid doing rollback as much as we
> > > can.
> >
> > Yes, we can make some checks upfront as an optimization and fail early if
> > the conditions are not met, but for correctness we need to repeat those
> > checks later anyway. Once we've decided to go for the eject, the conditions
> > must hold whatever happens.
>
> Agreed.

BTW, it is not an optimization I am after for this phase. There are
many error cases during hot-plug operations. It is difficult to assure
that rollback is successful for every error condition in terms of
testing and maintaining the code. So, it is easier to fail beforehand
when possible.

Thanks,
-Toshi


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/