haifeng gu , mingsong chen , tongquan wei , li lei , and fei xie€¦ · haifeng gu1, mingsong...

22
Haifeng Gu 1 , Mingsong Chen 1 , Tongquan Wei 1 , Li Lei 2 , and Fei Xie 3 1 Shanghai Key Lab of Trustworthy Computing, East China Normal University, China 2 Intel Labs, United States 3 Deptpartment of Computer Science, Portland State University, United States 1 DAC 2018, San Francisco, United States

Upload: others

Post on 28-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3

1Shanghai Key Lab of Trustworthy Computing, East China Normal University, China2Intel Labs, United States

3Deptpartment of Computer Science, Portland State University, United States

1DAC 2018, San Francisco, United States

Page 2: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

2

Outline

Motivation

Formal Device Model Generation

Syntax Extensions for SystemRDL

Automated Generation of Formal Device Models

Specification-Driven Conformance Checking

Device Trace Collection

Conformance Checking with FDMs

Performance Evaluation Results

Conclusion

Page 3: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

3

Virtual Prototypes Are Increasingly Used

Virtualization prototyping can– Maximize device utilization, e.g., could computing

– Improve production efficiency, e.g., ESL design

Virtual PrototypeSilicon Prototype

Page 4: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

4

Challenges to be Addressed

Hardware

Hypervisor

Virtual Machine

Virtual

Prototypes

Bugs!

Silicon Devices

Operation System

Applications Not

Work!

Various causes

– Software bugs hidden on virtual prototypes, silicon hardware bugs

– Observability is limited in silicon troubleshooting

Page 5: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

5

Things Are Even Worse …

Correctness of virtual/silicon devices cannot be guaranteed– Due to lack of golden reference models!

Virtual Prototype Silicon PrototypeFormal Specification

Not

Conforming

Not

Conforming

Page 6: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

6

Specification-Driven Conformance Checking

Formal device model generation using SystemRDL– Pros: Consistent register definitions across abstraction levels

– Cons: Lack of register behavior modeling mechanisms

Virtual Prototype Silicon Prototype

Conformance

Checking

HWModel

Formal Device Model

[L. Lei, et al., DAC 2013]

L. Lei et al. Post-silicon Conformance Checking with Virtual Prototypes, DAC 2013.

HW/SW Interface

Extended SystemRDL Specification

Page 7: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

7

Syntax Extensions for SystemRDL

Define macro and function components for registers’ logics

– Macro facilitates the programming of function components

– Function supports behavior modeling of interface registers

component_def ::= new_comp_body | component_type

component_name {{[component_def;] [property;][. . . ;]} ∗ };

component_type ::= field | reg | regfile | addrmap | signal | enum | macro | function

property ::= property_name = value;

new_comp_body ::= comp_body | macro_body | function_body

macro_body ::= {macro_name = value;}∗

function_body ::= fun_type fun_name ( argument_list ) { statements }

Page 8: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

8

Our Framework

Formal Device Model Generator

Extended SystemRDL Specification

Trace Recorder

OS Kernel

Hardware Device

Device Driver

x xKernel API

Interception

Formal Device Model

Inconsistency Reports

Trace File

Conformance Checker

Page 9: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

9

static inline int fdm_choice(){

uint32_t i;

fdm_make_symbolic(&i, sizeof(i), "choice");

return i;

}

Symbolic Value Generation

Return Symbolic Value

Automated Generation of FDMs

A set of 10 rules is proposed for the transformation to FDMs

macro general_macro{

E1000_TCTL_EN=0x00000002;

… };

reg Reg_TCTL_type {

default sw=rw;

regwidth = 32;

accesswidth = 32;

field { desc = “…"; sw=rw; swwe=true; } Rsv[0:0] = 0;

function syn_tctl_func {

void write_tctl(DevState* ds, uint32_t val, uint64_t offset) {

ds->this.value = val;

... }

};

function asyn_tctl_func {

void run_tctl(DeviceState* ds) {

ds->reg_TDT_inst.value &= 0xffff;

if(!(ds->this.value & E1000_TCTL_EN)) return;

if(fdm_choice()) { … }

… }

};

};

Reg_TCTL_type inst1 @0x00400;

Extended SystemRDL Specification

int main(){

while(fdm_choice()){

switch(fdm_choice()){

case 0 : //synchronous transaction

runInterfaceFunction(devStat, devEntry, val, addr);

break;

case 1: //asynchronous transaction

runDevice(devStat);

break;

default: //Do nothing

break;

}

}

}

Harness Function

void runInterfaceFunction(devState* ds,

uint32_t devEntry, uint32_t val, uint64_t

addr){

switch(devEntry){

case WRITE:

devRegWrite(ds, val, addr); break;

case READ:

devRegRead(ds, addr); break;

}

}

runInterfaceFunctionvoid runDevice(devState* ds){

switch (fdm_choice()) {

case FDM_RUN_DEVICE:

runDeviceTransactions(ds); break;

case FDM_RUN_ENVIRONMENT:

runEnvironment(ds); break;

}

}

runDevice#define E1000_TCTL_EN 0x00000002

typedef union _Reg_TCTL_type {

uint32_t value;

struct {

uint32_t EN :1;

...

};

} Reg_TCTL_type;

Register Definitionvoid write_tctl_inst1 (DevState* ds, uint32_t val,

uint64_t offset){

ds->inst1.value = val;

}

void devRegWrite (DevState* ds, uint32_t val,

uint64_t offset) {

switch (offset) {

case 0x00400 :

write_tctl_inst1(ds, value, offset);

...

}

}

Register Behavior Modelingvoid run_tctl_inst1(DevState* ds) {

ds->reg_TDT_inst.value &= 0xffff;

if(!(ds->inst1.value & E1000_TCTL_EN))

return;

if(fdm_choice()) { … }

...

}

...

void runDeviceTransactions(DevState* ds){

...

switch (offset) {

case 0x00400 : //TCTL

run_tctl_inst1(ds); break;

...

}

}

Register Behavior Modeling

Transformation

Rules

Page 10: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

10

Our Framework

Formal Device Model Generator

Extended SystemRDL Specification

Trace Recorder

OS Kernel

Hardware Device

Device Driver

x xKernel API

Interception

Formal Device Model

Inconsistency Reports

Trace File

Conformance Checker

Page 11: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

11

FDM State & Virtual/Silicon Device State

Formal Device Model state– F = <Fi, Fn>– Fi: interface register state

– Fn: internal register state

Virtual/Silicon device state– Si: interface register state

Internal

Registers

Interface Registers

Interface Registers

Virtual/Silicon Device

Symbolic Values

Definition of Conformance– An FDM state F and a virtual/silicon device state Si conform to

each other if Si╞ F.

Formal Device Model

Page 12: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

Device Trace Collection

A device trace is a sequence of <Si, Ai> pairs– Si : current assignments to all the registers

– Ai : forthcoming driver request

W 4 xxx.734758 0 0x10 0x188 0 0x48140240 0x0 0x80080783 …

R 4 xxx.734992 0 0x8 0x0 0 0x48140240 0x0 0x80080783 …

W 4 xxx.735062 0 0x38 0x0 0 0x48140240 0x0 0x80080783 …

W 4 xxx.735142 0 0x5600 0x0 0 0x48140240 0x0 0x80080783 …

access type access width

register address

value device state

driver requests assignments to registers

an event

Page 13: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

13

Our Framework

Formal Device Model Generator

Extended SystemRDL Specification

Trace Recorder

OS Kernel

Hardware Device

Device Driver

x xKernel API

Interception

Formal Device Model

Inconsistency Reports

Trace File

Conformance Checker

Page 14: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

14

Conformance Checking Procedure

Buffer the Inconsistency

Inconsistency Reports

Check Conformance

between G & Si+1

i=i+1

Last

Event?

Y

N

Y

N

Symbolic Execution FDM with Fi , Ai

Fi Si

i=0

Fetch <Si, Ai> from Trace File

Generate a Set G of FDM States

FDM Device

Fi

G

Si

Si+1

Page 15: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

15

Outline

Motivation

Formal Device Model Generation

Syntax Extensions for SystemRDL

Automated Generation of Formal Device Models

Specification-Driven Conformance Checking

Device Trace Collection

Conformance Checking with FDMs

Performance Evaluation Results

Conclusion

Page 16: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

16

Tool Chain for Experiment

All the experiments were obtained on an Ubuntu desktop with 3.2GHz

AMD CPU and 16GB RAM

Extended SystemRDL

Specifications

Formal Device

Models

FDM Generator

(ANTLR)

Inconsistency

ReportsConformance Checker

(KLEE)

Virtual/Silicon

Device TracesTrace Recorder

(Kprobe)

Page 17: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

17

Experimental Settings

Devices Spec. (LoC) FDM (LoC) VP (LoC) Select. Captured Size (Bytes)

Intel e1000 Gigabit NIC 546 1805 2099 1224

Intel eepro100 Megabit NIC 587 903 2178 74

Table 1: Experimental Settings for Network Adapters

Silicon Devices:• Intel E1000 Gigabit NIC (e1000)

• Intel EEPro100 Megabit NIC (eepro100)

• QEMU 0.15.1

• Contains e1000 and eepro100 virtual devices

Virtual Devices:

Page 18: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

18

Experimental Results

Validated designs using 4 types of network commands– e.g., ifconfig, ping, scp, ifup, hping3, ....

Detected 12 bugs from virtual/silicon devices

Indices Bug Types Num. Bug Sources

E1 Update the bits of reserved SD register 3 SD

E2 Generate unnecessary interrupts 1 VP

E3 Fail to update register when necessary 2 VP

E4 Write incorrect values to registers 3 VP

E5 Update the bits of reserved VP register 1 VP

E6 Driver issues a write to reserved registers 2 Driver

* VP and SD stand for Virtual Prototype and Silicon Device, respectively

Table 2: Bugs Identified from Virtual and Silicon Devices

Driver issues

invalid requests!

Page 19: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

19

Experimental Results

Bug Source Bug Type FDM-VP FDM-SD VP-SD [7]

Silicon Devices E1 - 3 2

Virtual Devices

E2 1 - 1

E3 2 - 2

E4 3 - 3

E5 1 - -

Driver E6 1 1 -

[7] L. Lei et al. Post-silicon Conformance Checking with Virtual Prototypes, DAC 2013.

Table 3: Comparison of Different Methods

Better false negative ratio due to more bugs detected

– E5: Update the bits of reserved VP register

– E6: Driver issues a write to reserved registers

Page 20: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

20

Experimental Results

Fig.1 Time Usage for e1000 NIC Fig.2 Memory Usage for e1000 NIC

Better conformance checking time: Up to 67X improvement

Better resource utilization: Up to 2X less memory used

67x2x

Page 21: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

21

Conclusion

Contributions:

– SystemRDL extension for register access behavior modeling

– Transformation rules from extended SystemRDL to FDMs

– Symbolic execution-based conformance checking framework

Experimental results on industrial network adapters

– New bugs found in virtual/silicon devices

– Better performance than state-of-the-art methods

Future work

– Directed test generation for virtual/silicon prototypes

– Runtime validation

Page 22: Haifeng Gu , Mingsong Chen , Tongquan Wei , Li Lei , and Fei Xie€¦ · Haifeng Gu1, Mingsong Chen1, Tongquan Wei1, Li Lei2, and Fei Xie3 1Shanghai Key Lab of Trustworthy Computing,

Thank you !