Thanks Pavel ! Hi, Ingo, do you have a bandwidth to help look at this version, since this bug has been on bugzilla for a while. Thanks a lot.
Best Regards, Yu > -----Original Message----- > From: Pavel Machek [mailto:[email protected]] > Sent: Thursday, September 17, 2015 1:30 PM > To: Chen, Yu C > Cc: [email protected]; [email protected]; [email protected]; > [email protected]; [email protected]; Zhang, Rui; [email protected]; > [email protected]; [email protected] > Subject: Re: [PATCH] [v4] x86, suspend: Save/restore extra MSR registers for > suspend > > On Thu 2015-08-27 11:18:27, Chen Yu wrote: > > A bug is reported(https://bugzilla.redhat.com/show_bug.cgi?id=1227208) > > that, after resumed from S3, CPU is running at a low speed. > > After investigation, it is found that, BIOS has modified the value of > > THERM_CONTROL register during S3, and changes it from 0 to 0x10, since > > value of 0x10 means CPU can only get 25% of the Duty Cycle, this > > triggers the problem. > > > > Here is a simple scenario to reproduce the issue: > > 1.Boot up the system > > 2.Get MSR with address 0x19a, it should be 0 3.Put the system into > > sleep, then wake it up 4.Get MSR with address 0x19a, it should be > > 0(actually it shows 0x10) > > > > Although this is a BIOS issue, it would be more robust for linux to > > deal with this situation. This patch fixes this issue by introducing a > > framework to save/restore specified MSR registers(THERM_CONTROL in > > this case) for suspend/resume. > > > > When user encounters a problematic platform and needs to protect the > > MSRs during suspending, he can simply add a quirk entry in > > msr_save_dmi_table, and customizes MSR registers inside the quirk > > callback, for example: > > > > u32 msr_id_need_to_save[] = {MSR_ID0, MSR_ID1, MSR_ID2...}; > > > > and the quirk mechanism ensures that, once resumed from suspended, > the > > MSRs indicated by these IDs will be restored to their original values > > before suspended. > > > > Since both 64/32-bit kernels are affected, this patch covers 64/32-bit > > common code path. And because the MSRs specified by the user might not > > be available or readable in any situation, we use rdmsrl_safe to > > safely save these MSRs. > > > > Tested-by: Marcin Kaszewski <[email protected]> > > Signed-off-by: Chen Yu <[email protected]> > > Acked-by: Pavel Machek <[email protected]> > > -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

