smmu_v3.cc (14132:d6093eeca3af) smmu_v3.cc (14221:2954f631ee64)
1/*
2 * Copyright (c) 2013, 2018-2019 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

487 addr, cmd.dw0.vmid);
488 for (auto slave_interface : slaveInterfaces) {
489 slave_interface->microTLB->invalidateVAA(
490 addr, cmd.dw0.vmid);
491 slave_interface->mainTLB->invalidateVAA(
492 addr, cmd.dw0.vmid);
493 }
494 tlb.invalidateVAA(addr, cmd.dw0.vmid);
1/*
2 * Copyright (c) 2013, 2018-2019 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

487 addr, cmd.dw0.vmid);
488 for (auto slave_interface : slaveInterfaces) {
489 slave_interface->microTLB->invalidateVAA(
490 addr, cmd.dw0.vmid);
491 slave_interface->mainTLB->invalidateVAA(
492 addr, cmd.dw0.vmid);
493 }
494 tlb.invalidateVAA(addr, cmd.dw0.vmid);
495
496 if (!cmd.dw1.leaf)
497 walkCache.invalidateVAA(addr, cmd.dw0.vmid);
495 const bool leaf_only = cmd.dw1.leaf ? true : false;
496 walkCache.invalidateVAA(addr, cmd.dw0.vmid, leaf_only);
498 break;
499 }
500
501 case CMD_TLBI_NH_VA: {
502 const Addr addr = cmd.addr();
503 DPRINTF(SMMUv3, "CMD_TLBI_NH_VA va=%#08x asid=%#x vmid=%#x\n",
504 addr, cmd.dw0.asid, cmd.dw0.vmid);
505 for (auto slave_interface : slaveInterfaces) {
506 slave_interface->microTLB->invalidateVA(
507 addr, cmd.dw0.asid, cmd.dw0.vmid);
508 slave_interface->mainTLB->invalidateVA(
509 addr, cmd.dw0.asid, cmd.dw0.vmid);
510 }
511 tlb.invalidateVA(addr, cmd.dw0.asid, cmd.dw0.vmid);
497 break;
498 }
499
500 case CMD_TLBI_NH_VA: {
501 const Addr addr = cmd.addr();
502 DPRINTF(SMMUv3, "CMD_TLBI_NH_VA va=%#08x asid=%#x vmid=%#x\n",
503 addr, cmd.dw0.asid, cmd.dw0.vmid);
504 for (auto slave_interface : slaveInterfaces) {
505 slave_interface->microTLB->invalidateVA(
506 addr, cmd.dw0.asid, cmd.dw0.vmid);
507 slave_interface->mainTLB->invalidateVA(
508 addr, cmd.dw0.asid, cmd.dw0.vmid);
509 }
510 tlb.invalidateVA(addr, cmd.dw0.asid, cmd.dw0.vmid);
512
513 if (!cmd.dw1.leaf)
514 walkCache.invalidateVA(addr, cmd.dw0.asid, cmd.dw0.vmid);
511 const bool leaf_only = cmd.dw1.leaf ? true : false;
512 walkCache.invalidateVA(addr, cmd.dw0.asid, cmd.dw0.vmid,
513 leaf_only);
515 break;
516 }
517
518 case CMD_TLBI_S2_IPA: {
519 const Addr addr = cmd.addr();
520 DPRINTF(SMMUv3, "CMD_TLBI_S2_IPA ipa=%#08x vmid=%#x\n",
521 addr, cmd.dw0.vmid);
522 // This does not invalidate TLBs containing

--- 314 unchanged lines hidden ---
514 break;
515 }
516
517 case CMD_TLBI_S2_IPA: {
518 const Addr addr = cmd.addr();
519 DPRINTF(SMMUv3, "CMD_TLBI_S2_IPA ipa=%#08x vmid=%#x\n",
520 addr, cmd.dw0.vmid);
521 // This does not invalidate TLBs containing

--- 314 unchanged lines hidden ---