lkml.org 
[lkml]   [2012]   [Jan]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: x86/mce: machine check warning during poweroff
    On Sat, 14 Jan 2012, Greg KH wrote:

    > On Fri, Jan 13, 2012 at 06:53:04PM -0800, Linus Torvalds wrote:
    > > On Fri, Jan 13, 2012 at 6:41 PM, Srivatsa S. Bhat
    > > <srivatsa.bhat@linux.vnet.ibm.com> wrote:
    > > >
    > > > YES!! Finally I have a fix for this whole MCE thing! :-)
    > >
    > > Goodie.
    > >
    > > > The patch below works perfectly for me - I tested multiple CPU hotplug
    > > > operations as well as multiple pm_test runs at core level. Please let me
    > > > know if this solves the suspend issue as well..
    > >
    > > Ok, I'll try, and I bet it does.
    > >
    > > HOWEVER.
    > >
    > > I'd be a whole lot happier knowing exactly which field in "struct
    > > device" that needed to be NULL before it gets registered.
    > >
    > > I don't like how
    > >
    > > device_register() + device_create_file(dev)..
    > >
    > > is not sufficiently undone by
    > >
    > > .. device_remove_file(dev) + device_unregister()
    > >
    > > so that it can't be repeated. Exactly *what* state is stale and
    > > re-used incorrectly if you do that device_register() a second time.
    > >
    > > It smells like a misfeature of the device core handling.
    >
    > It has to do with the fact that this is a "static" device that is being
    > reused. Normally it would be cleaned up properly in the release
    > function, but as there isn't one, some fields are being left in a bad
    > state.

    That's exactly right. In general, device structures should never be
    reused. Apart from the reinitialization issues, in the general case
    you have the problem that the references to the previous incarnation
    may not all have been dropped. Now, perhaps in the MCE case you _do_
    know that they're all gone (I can't tell), but relying on it is
    dangerous.

    The driver core isn't designed to handle device structures that get
    unregistered and then spring back to life; callers are supposed to
    allocate a fresh new structure instead. (We had to solve this very
    same problem in the USB subsystem a number of years ago; figuring it
    all out was tricky even back then.) And this is true regardless of
    whether the original structure was allocated dynamically or not.

    Alan Stern



    \
     
     \ /
      Last update: 2012-01-14 17:33    [W:0.040 / U:88.552 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site