| 402 | } |
| 403 | |
| 404 | static void |
| 405 | vtd_enable(void) |
| 406 | { |
| 407 | int i; |
| 408 | struct vtdmap *vtdmap; |
| 409 | |
| 410 | for (i = 0; i < drhd_num; i++) { |
| 411 | vtdmap = vtdmaps[i]; |
| 412 | vtd_wbflush(vtdmap); |
| 413 | |
| 414 | /* Update the root table address */ |
| 415 | vtdmap->rta = vtophys(root_table); |
| 416 | vtdmap->gcr = VTD_GCR_SRTP; |
| 417 | while ((vtdmap->gsr & VTD_GSR_RTPS) == 0) |
| 418 | ; |
| 419 | |
| 420 | vtd_ctx_global_invalidate(vtdmap); |
| 421 | vtd_iotlb_global_invalidate(vtdmap); |
| 422 | |
| 423 | vtd_translation_enable(vtdmap); |
| 424 | } |
| 425 | } |
| 426 | |
| 427 | static void |
| 428 | vtd_disable(void) |
nothing calls this directly
no test coverage detected