Skip to content

Commit a8ac452

Browse files
binbinwu1lijinxia
authored andcommitted
dm: cmos: move cmos storage out of vmctx
The whole vmctx will be cleared during cold reset. cmos data should not be cleared during cold reset. Move cmos data out of vmctx. Tracked-On: #1118 Signed-off-by: Binbin Wu <binbin.wu@intel.com> Acked-by: Yin Fengwei <fengwei.yin@intel.com>
1 parent fa7eb1f commit a8ac452

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

devicemodel/hw/platform/cmos_io.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@
4242
#define CMOS_VRPMB_START 0x20
4343
#define CMOS_VRPMB_END 0x9F
4444

45+
/* cmos buffer used to store write/read contents,
46+
* and it should not be cleared when reboot
47+
*/
48+
static uint8_t cmos_buffer[CMOS_BUF_SIZE];
49+
4550
/* #define CMOS_DEBUG */
4651
#ifdef CMOS_DEBUG
4752
static FILE * dbg_file;
@@ -90,14 +95,14 @@ cmos_io_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
9095
}
9196

9297
if (in) {
93-
*eax = ctx->cmos_buffer[buf_offset];
98+
*eax = cmos_buffer[buf_offset];
9499
/* read to clear for Key range */
95100
if ((buf_offset >= CMOS_VRPMB_START) &&
96101
(buf_offset <= CMOS_VRPMB_END))
97-
ctx->cmos_buffer[buf_offset] = 0;
102+
cmos_buffer[buf_offset] = 0;
98103
}
99104
else
100-
ctx->cmos_buffer[buf_offset] = (uint8_t)*eax;
105+
cmos_buffer[buf_offset] = (uint8_t)*eax;
101106

102107
next_ops = 0;
103108
}
@@ -110,7 +115,7 @@ INOUT_PORT(cmos_io, CMOS_DATA, IOPORT_F_INOUT, cmos_io_handler);
110115

111116
int init_cmos_vrpmb(struct vmctx *ctx)
112117
{
113-
uint8_t *vrpmb_buffer = &ctx->cmos_buffer[CMOS_VRPMB_START];
118+
uint8_t *vrpmb_buffer = &cmos_buffer[CMOS_VRPMB_START];
114119

115120
/* get vrpmb key, and store it to cmos buffer */
116121
if (!get_vrpmb_key(vrpmb_buffer, RPMB_KEY_LEN)) {

devicemodel/include/vmmapi.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,6 @@ struct vmctx {
6363
void *atkbdc_base;
6464
void *vrtc;
6565
void *ioc_dev;
66-
/* cmos buffer used to store write/read contents,
67-
* and it should not be cleared when reboot
68-
*/
69-
uint8_t cmos_buffer[CMOS_BUF_SIZE];
7066
};
7167

7268
/*

0 commit comments

Comments
 (0)