Messages in this thread | | | Subject | Re: [BUGFIX -v2] x86, mce, inject: Make injected mce valid only during faked handler call | From | Huang Ying <> | Date | Mon, 28 Sep 2009 17:15:16 +0800 |
| |
On Mon, 2009-09-28 at 16:59 +0800, Hidetoshi Seto wrote: [snip] > >>>> I believe what you want to do here is "make mce_rdmsrl()/mce_wrmsrl() > >>>> to refer faked data only during faked handler call." > >>>> Then what we have to do is making a flag to indicate that "now > >>>> in faked handler call," for an example: > >>>> > >>>> 309 if (__get_cpu_var(mce_fake_in_progress)) { > >>>> > >>>> and: > >>>> local_irq_save(flags); > >>>> __get_cpu_var(mce_fake_in_progress) = 1; > >>>> machine_check_poll(0, &b); > >>>> __get_cpu_var(mce_fake_in_progress) = 0; > >>>> local_irq_restore(flags); > >>> I don't think this method is better than the original one. They are just > >>> equivalent. > >> No, you changed usage of .finished, and transfer the functionality of the > >> flag to newly introduced MCJ_LOADED. > >> We can keep .finished as is, and introduce one new flag for this. > > > > You just use .finished as MCJ_LOADED and mce_fake_in_progress > > as .finished. > > I just recommends you to keep .finished as a flag indicates "loading finished."
.finished can be "injecting finished, ready to be consumed". So I don't think there is much difference.
> > Use a per-CPU variable mce_fake_in_progress make it hard to add support > > to inject multiple MCEs in one CPU. > > Why? I think it can with such per-cpu flag.
Oh. It works too.
Best Regards, Huang Ying
| |