MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / reset

Method reset

devices/src/tpm.rs:270–347  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

268 }
269
270 fn reset(&mut self) -> Result<()> {
271 let cur_buff_size = self.emulator.get_buffer_size();
272 self.regs = [0; TPM_CRB_R_MAX];
273 set_reg_field(
274 &mut self.regs,
275 CrbRegister::LocState(LocStateFields::TpmRegValidSts),
276 1,
277 );
278 set_reg_field(
279 &mut self.regs,
280 CrbRegister::CtrlSts(CtrlStsFields::TpmIdle),
281 1,
282 );
283 set_reg_field(
284 &mut self.regs,
285 CrbRegister::IntfId(IntfIdFields::InterfaceType),
286 CRB_INTF_TYPE_CRB_ACTIVE,
287 );
288 set_reg_field(
289 &mut self.regs,
290 CrbRegister::IntfId(IntfIdFields::InterfaceVersion),
291 CRB_INTF_VERSION_CRB,
292 );
293 set_reg_field(
294 &mut self.regs,
295 CrbRegister::IntfId(IntfIdFields::CapLocality),
296 CRB_INTF_CAP_LOCALITY_0_ONLY,
297 );
298 set_reg_field(
299 &mut self.regs,
300 CrbRegister::IntfId(IntfIdFields::CapCRBIdleBypass),
301 CRB_INTF_CAP_IDLE_FAST,
302 );
303 set_reg_field(
304 &mut self.regs,
305 CrbRegister::IntfId(IntfIdFields::CapDataXferSizeSupport),
306 CRB_INTF_CAP_XFER_SIZE_64,
307 );
308 set_reg_field(
309 &mut self.regs,
310 CrbRegister::IntfId(IntfIdFields::CapFIFO),
311 CRB_INTF_CAP_FIFO_NOT_SUPPORTED,
312 );
313 set_reg_field(
314 &mut self.regs,
315 CrbRegister::IntfId(IntfIdFields::CapCRB),
316 CRB_INTF_CAP_CRB_SUPPORTED,
317 );
318 set_reg_field(
319 &mut self.regs,
320 CrbRegister::IntfId(IntfIdFields::InterfaceSelector),
321 CRB_INTF_IF_SELECTOR_CRB,
322 );
323 set_reg_field(
324 &mut self.regs,
325 CrbRegister::IntfId(IntfIdFields::Rid),
326 0b0000,
327 );

Callers 1

newMethod · 0.45

Calls 3

set_reg_fieldFunction · 0.85
get_buffer_sizeMethod · 0.80
startup_tpmMethod · 0.80

Tested by

no test coverage detected