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-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html