Pull installed the latest 2.6 tree, played it for a day, proposed several patches, and wanted to go to bed at night. panic was found when it was shut down ..
I was excited and decided to fix the bug.
Modify, compile, and restart.
Repeated many times.
Locate drivers/base/syscore. c:
Void syscore_shutdown (void)
After reading the log, we found that this is a newly added feature of the 39 kernel and registered
Static LIST_HEAD (syscore_ops_list );
Use void register_syscore_ops (struct syscore_ops * ops) to register your syscore_ops in the driver.
I thought that the newly added syscore_shutdown may be faulty, and the prefetch was located, which is something in list_for_each_entry_reverse. I thought this was wrong and I changed it. The result is still unavailable, finally, at 4 o'clock in the evening, I had not solved the problem. So I sent the figure to lkml. I got up this morning and several people replied, this is because unregister_syscore_ops is not found in arch/x86/kernel/microcode_core.c. It turns out that the linus tree already has this patch, so pull is the latest, the bug was not found after installation, and it was caused by this failure to register. I didn't think of it at the time.
I still don't understand prefetch. Take a closer look.