static void vtd_iotlb_page_invalidate_notify(IntelIOMMUState *s,

                                           uint16_t domain_id, hwaddr addr,

                                           uint8_t am)

{

    IntelIOMMUNotifierNode *node;

    VTDContextEntry ce;

    int ret;



    QLIST_FOREACH(node, &(s->notifiers_list), next) {

        VTDAddressSpace *vtd_as = node->vtd_as;

        ret = vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus),

                                       vtd_as->devfn, &ce);

        if (!ret && domain_id == VTD_CONTEXT_ENTRY_DID(ce.hi)) {

            vtd_page_walk(&ce, addr, addr + (1 << am) * VTD_PAGE_SIZE,

                          vtd_page_invalidate_notify_hook,

                          (void *)&vtd_as->iommu, true);

        }

    }

}

static void vtd_iotlb_page_invalidate_notify(IntelIOMMUState *s,

                                           uint16_t domain_id, hwaddr addr,

                                           uint8_t am)

{

    IntelIOMMUNotifierNode *node;

    VTDContextEntry ce;

    int ret;



    QLIST_FOREACH(node, &(s->notifiers_list), next) {

        VTDAddressSpace *vtd_as = node->vtd_as;

        ret = vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus),

                                       vtd_as->devfn, &ce);

        if (!ret && domain_id == VTD_CONTEXT_ENTRY_DID(ce.hi)) {

            vtd_page_walk(&ce, addr, addr + (1 << am) * VTD_PAGE_SIZE,

                          vtd_page_invalidate_notify_hook,

                          (void *)&vtd_as->iommu, true);

        }

    }

}

static void FUNC_0(IntelIOMMUState *VAR_0,

                                           uint16_t VAR_1, hwaddr VAR_2,

                                           uint8_t VAR_3)

{

    IntelIOMMUNotifierNode *node;

    VTDContextEntry ce;

    int VAR_4;



    QLIST_FOREACH(node, &(VAR_0->notifiers_list), next) {

        VTDAddressSpace *vtd_as = node->vtd_as;

        VAR_4 = vtd_dev_to_context_entry(VAR_0, pci_bus_num(vtd_as->bus),

                                       vtd_as->devfn, &ce);

        if (!VAR_4 && VAR_1 == VTD_CONTEXT_ENTRY_DID(ce.hi)) {

            vtd_page_walk(&ce, VAR_2, VAR_2 + (1 << VAR_3) * VTD_PAGE_SIZE,

                          vtd_page_invalidate_notify_hook,

                          (void *)&vtd_as->iommu, true);

        }

    }

}

static void FUNC_0(IntelIOMMUState *VAR_0,
uint16_t VAR_1, hwaddr VAR_2,
uint8_t VAR_3)
{ IntelIOMMUNotifierNode *node; VTDContextEntry ce; int VAR_4; QLIST_FOREACH(node, &(VAR_0->notifiers_list), next) { VTDAddressSpace *vtd_as = node->vtd_as; VAR_4 = vtd_dev_to_context_entry(VAR_0, pci_bus_num(vtd_as->bus),
vtd_as->devfn, &ce); if (!VAR_4 && VAR_1 == VTD_CONTEXT_ENTRY_DID(ce.hi)) { vtd_page_walk(&ce, VAR_2, VAR_2 + (1 << VAR_3) * VTD_PAGE_SIZE,
vtd_page_invalidate_notify_hook,
(void *)&vtd_as->iommu, true); } } }