Messing up driver model API

From: Pavel Machek (
Date: Wed Jun 11 2003 - 15:36:52 EST


So you just had to mess it up... Having suspend(device *, state,
level) might be bad, but having suspend(device *, state, level) in one
piece of code and {suspend,save}(device *, state) is *way* worse. (And
I did not see any proposal on l-k. I hope I just missed it).

So are you going to revert it or convert whole driver model to use
{suspend,save}(device *, state)?

[driver model] Add save() and restore() methods for system device drivers.

It turns out that at least some system device drivers need to allocate
memory and/or sleep for one reason or another when either saving or
restoring state.

Instead of adding a 'level' paramter to the suspend() and resume() methods,
which I despise and think is a horrible programming interface, two new
methods have been added to struct sysdev_driver:

        int (*save)(struct sys_device *, u32 state);
        int (*restore)(struct sys_device *);

that are called explicitly before and after suspend() and resume()
respectively, with interrupts enabled. This gives the drivers the
flexibility to allocate memory and sleep, if necessary.

When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Sun Jun 15 2003 - 22:00:29 EST