cpu.c (1136fa0c07de570dc17858745af8be169d1440ba) cpu.c (73924ec4d560257004d5b5116b22a3647661e364)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Suspend support specific for i386/x86-64.
4 *
5 * Copyright (c) 2007 Rafael J. Wysocki <rjw@sisk.pl>
6 * Copyright (c) 2002 Pavel Machek <pavel@ucw.cz>
7 * Copyright (c) 2001 Patrick Mochel <mochel@osdl.org>
8 */

--- 26 unchanged lines hidden (view full) ---

35struct saved_context saved_context;
36
37static void msr_save_context(struct saved_context *ctxt)
38{
39 struct saved_msr *msr = ctxt->saved_msrs.array;
40 struct saved_msr *end = msr + ctxt->saved_msrs.num;
41
42 while (msr < end) {
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Suspend support specific for i386/x86-64.
4 *
5 * Copyright (c) 2007 Rafael J. Wysocki <rjw@sisk.pl>
6 * Copyright (c) 2002 Pavel Machek <pavel@ucw.cz>
7 * Copyright (c) 2001 Patrick Mochel <mochel@osdl.org>
8 */

--- 26 unchanged lines hidden (view full) ---

35struct saved_context saved_context;
36
37static void msr_save_context(struct saved_context *ctxt)
38{
39 struct saved_msr *msr = ctxt->saved_msrs.array;
40 struct saved_msr *end = msr + ctxt->saved_msrs.num;
41
42 while (msr < end) {
43 msr->valid = !rdmsrl_safe(msr->info.msr_no, &msr->info.reg.q);
43 if (msr->valid)
44 rdmsrl(msr->info.msr_no, msr->info.reg.q);
44 msr++;
45 }
46}
47
48static void msr_restore_context(struct saved_context *ctxt)
49{
50 struct saved_msr *msr = ctxt->saved_msrs.array;
51 struct saved_msr *end = msr + ctxt->saved_msrs.num;

--- 367 unchanged lines hidden (view full) ---

419 */
420 memcpy(msr_array, saved_msrs->array,
421 sizeof(struct saved_msr) * saved_msrs->num);
422
423 kfree(saved_msrs->array);
424 }
425
426 for (i = saved_msrs->num, j = 0; i < total_num; i++, j++) {
45 msr++;
46 }
47}
48
49static void msr_restore_context(struct saved_context *ctxt)
50{
51 struct saved_msr *msr = ctxt->saved_msrs.array;
52 struct saved_msr *end = msr + ctxt->saved_msrs.num;

--- 367 unchanged lines hidden (view full) ---

420 */
421 memcpy(msr_array, saved_msrs->array,
422 sizeof(struct saved_msr) * saved_msrs->num);
423
424 kfree(saved_msrs->array);
425 }
426
427 for (i = saved_msrs->num, j = 0; i < total_num; i++, j++) {
428 u64 dummy;
429
427 msr_array[i].info.msr_no = msr_id[j];
430 msr_array[i].info.msr_no = msr_id[j];
428 msr_array[i].valid = false;
431 msr_array[i].valid = !rdmsrl_safe(msr_id[j], &dummy);
429 msr_array[i].info.reg.q = 0;
430 }
431 saved_msrs->num = total_num;
432 saved_msrs->array = msr_array;
433
434 return 0;
435}
436

--- 75 unchanged lines hidden ---
432 msr_array[i].info.reg.q = 0;
433 }
434 saved_msrs->num = total_num;
435 saved_msrs->array = msr_array;
436
437 return 0;
438}
439

--- 75 unchanged lines hidden ---