From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34199) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cjOcN-0003ak-O9 for qemu-devel@nongnu.org; Thu, 02 Mar 2017 06:09:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cjOcK-0005PD-FF for qemu-devel@nongnu.org; Thu, 02 Mar 2017 06:09:55 -0500 Received: from smtp.citrix.com ([66.165.176.89]:53406) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1cjOcK-0005Oc-7e for qemu-devel@nongnu.org; Thu, 02 Mar 2017 06:09:52 -0500 From: Paul Durrant Date: Thu, 2 Mar 2017 11:09:44 +0000 Message-ID: <1488452986-24501-4-git-send-email-paul.durrant@citrix.com> In-Reply-To: <1488452986-24501-1-git-send-email-paul.durrant@citrix.com> References: <1488452986-24501-1-git-send-email-paul.durrant@citrix.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH v2 3/5] xen: create wrappers for all other uses of xc_hvm_XXX() functions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xen-devel@lists.xenproject.org, qemu-devel@nongnu.org Cc: Paul Durrant , Stefano Stabellini , Paolo Bonzini , Richard Henderson , Eduardo Habkost , "Michael S. Tsirkin" This patch creates inline wrapper functions in xen_common.h for all open coded calls to xc_hvm_XXX() functions outside of xen_common.h so that use of xen_xc can be made implicit. This again is in preparation for the move to using libxendevicemodel. Signed-off-by: Paul Durrant Reviewed-by: Anthony Perard --- Cc: Stefano Stabellini Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Cc: "Michael S. Tsirkin" --- hw/i386/xen/xen_platform.c | 2 +- include/hw/xen/xen_common.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ xen-hvm.c | 27 +++++++++++++-------------- 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c index 6010f35..1419fc9 100644 --- a/hw/i386/xen/xen_platform.c +++ b/hw/i386/xen/xen_platform.c @@ -195,7 +195,7 @@ static void platform_fixed_ioport_writeb(void *opaque, uint32_t addr, uint32_t v case 0: /* Platform flags */ { hvmmem_type_t mem_type = (val & PFFLAG_ROM_LOCK) ? HVMMEM_ram_ro : HVMMEM_ram_rw; - if (xc_hvm_set_mem_type(xen_xc, xen_domid, mem_type, 0xc0, 0x40)) { + if (xen_set_mem_type(xen_domid, mem_type, 0xc0, 0x40)) { DPRINTF("unable to change ro/rw state of ROM memory area!\n"); } else { s->flags = val & PFFLAG_ROM_LOCK; diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h index 1e08b98..31cf25f 100644 --- a/include/hw/xen/xen_common.h +++ b/include/hw/xen/xen_common.h @@ -26,6 +26,50 @@ extern xc_interface *xen_xc; * We don't support Xen prior to 4.2.0. */ +static inline int xen_set_mem_type(domid_t domid, hvmmem_type_t type, + uint64_t first_pfn, uint32_t nr) +{ + return xc_hvm_set_mem_type(xen_xc, domid, type, first_pfn, nr); +} + +static inline int xen_set_pci_intx_level(domid_t domid, uint16_t segment, + uint8_t bus, uint8_t device, + uint8_t intx, unsigned int level) +{ + return xc_hvm_set_pci_intx_level(xen_xc, domid, segment, bus, device, + intx, level); +} + +static inline int xen_set_pci_link_route(domid_t domid, uint8_t link, + uint8_t irq) +{ + return xc_hvm_set_pci_link_route(xen_xc, domid, link, irq); +} + +static inline int xen_inject_msi(domid_t domid, uint64_t msi_addr, + uint32_t msi_data) +{ + return xc_hvm_inject_msi(xen_xc, domid, msi_addr, msi_data); +} + +static inline int xen_set_isa_irq_level(domid_t domid, uint8_t irq, + unsigned int level) +{ + return xc_hvm_set_isa_irq_level(xen_xc, domid, irq, level); +} + +static inline int xen_track_dirty_vram(domid_t domid, uint64_t first_pfn, + uint32_t nr, unsigned long *bitmap) +{ + return xc_hvm_track_dirty_vram(xen_xc, domid, first_pfn, nr, bitmap); +} + +static inline int xen_modified_memory(domid_t domid, uint64_t first_pfn, + uint32_t nr) +{ + return xc_hvm_modified_memory(xen_xc, domid, first_pfn, nr); +} + /* Xen 4.2 through 4.6 */ #if CONFIG_XEN_CTRL_INTERFACE_VERSION < 471 diff --git a/xen-hvm.c b/xen-hvm.c index edf4983..4b928cf 100644 --- a/xen-hvm.c +++ b/xen-hvm.c @@ -125,8 +125,8 @@ int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num) void xen_piix3_set_irq(void *opaque, int irq_num, int level) { - xc_hvm_set_pci_intx_level(xen_xc, xen_domid, 0, 0, irq_num >> 2, - irq_num & 3, level); + xen_set_pci_intx_level(xen_domid, 0, 0, irq_num >> 2, + irq_num & 3, level); } void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len) @@ -141,7 +141,7 @@ void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len) } v &= 0xf; if (((address + i) >= 0x60) && ((address + i) <= 0x63)) { - xc_hvm_set_pci_link_route(xen_xc, xen_domid, address + i - 0x60, v); + xen_set_pci_link_route(xen_domid, address + i - 0x60, v); } } } @@ -156,7 +156,7 @@ int xen_is_pirq_msi(uint32_t msi_data) void xen_hvm_inject_msi(uint64_t addr, uint32_t data) { - xc_hvm_inject_msi(xen_xc, xen_domid, addr, data); + xen_inject_msi(xen_domid, addr, data); } static void xen_suspend_notifier(Notifier *notifier, void *data) @@ -168,7 +168,7 @@ static void xen_suspend_notifier(Notifier *notifier, void *data) static void xen_set_irq(void *opaque, int irq, int level) { - xc_hvm_set_isa_irq_level(xen_xc, xen_domid, irq, level); + xen_set_isa_irq_level(xen_domid, irq, level); } qemu_irq *xen_interrupt_controller_init(void) @@ -481,10 +481,10 @@ static void xen_set_memory(struct MemoryListener *listener, section->mr, section->offset_within_region); } else { mem_type = HVMMEM_ram_ro; - if (xc_hvm_set_mem_type(xen_xc, xen_domid, mem_type, - start_addr >> TARGET_PAGE_BITS, - size >> TARGET_PAGE_BITS)) { - DPRINTF("xc_hvm_set_mem_type error, addr: "TARGET_FMT_plx"\n", + if (xen_set_mem_type(xen_domid, mem_type, + start_addr >> TARGET_PAGE_BITS, + size >> TARGET_PAGE_BITS)) { + DPRINTF("xen_set_mem_type error, addr: "TARGET_FMT_plx"\n", start_addr); } } @@ -586,9 +586,8 @@ static void xen_sync_dirty_bitmap(XenIOState *state, return; } - rc = xc_hvm_track_dirty_vram(xen_xc, xen_domid, - start_addr >> TARGET_PAGE_BITS, npages, - bitmap); + rc = xen_track_dirty_vram(xen_domid, start_addr >> TARGET_PAGE_BITS, + npages, bitmap); if (rc < 0) { #ifndef ENODATA #define ENODATA ENOENT @@ -634,7 +633,7 @@ static void xen_log_stop(MemoryListener *listener, MemoryRegionSection *section, if (old & ~new & (1 << DIRTY_MEMORY_VGA)) { state->log_for_dirtybit = NULL; /* Disable dirty bit tracking */ - xc_hvm_track_dirty_vram(xen_xc, xen_domid, 0, 0, NULL); + xen_track_dirty_vram(xen_domid, 0, 0, NULL); } } @@ -1403,7 +1402,7 @@ void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length) start_pfn = start >> TARGET_PAGE_BITS; nb_pages = ((start + length + TARGET_PAGE_SIZE - 1) >> TARGET_PAGE_BITS) - start_pfn; - rc = xc_hvm_modified_memory(xen_xc, xen_domid, start_pfn, nb_pages); + rc = xen_modified_memory(xen_domid, start_pfn, nb_pages); if (rc) { fprintf(stderr, "%s failed for "RAM_ADDR_FMT" ("RAM_ADDR_FMT"): %i, %s\n", -- 2.1.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v2 3/5] xen: create wrappers for all other uses of xc_hvm_XXX() functions Date: Thu, 2 Mar 2017 11:09:44 +0000 Message-ID: <1488452986-24501-4-git-send-email-paul.durrant@citrix.com> References: <1488452986-24501-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cjOcN-0000dq-6H for xen-devel@lists.xenproject.org; Thu, 02 Mar 2017 11:09:55 +0000 In-Reply-To: <1488452986-24501-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, qemu-devel@nongnu.org Cc: Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , Paul Durrant , Paolo Bonzini , Richard Henderson List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBjcmVhdGVzIGlubGluZSB3cmFwcGVyIGZ1bmN0aW9ucyBpbiB4ZW5fY29tbW9u LmggZm9yIGFsbCBvcGVuCmNvZGVkIGNhbGxzIHRvIHhjX2h2bV9YWFgoKSBmdW5jdGlvbnMgb3V0 c2lkZSBvZiB4ZW5fY29tbW9uLmggc28gdGhhdCB1c2UKb2YgeGVuX3hjIGNhbiBiZSBtYWRlIGlt cGxpY2l0LiBUaGlzIGFnYWluIGlzIGluIHByZXBhcmF0aW9uIGZvciB0aGUgbW92ZQp0byB1c2lu ZyBsaWJ4ZW5kZXZpY2Vtb2RlbC4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5k dXJyYW50QGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBBbnRob255IFBlcmFyZCA8YW50aG9ueS5w ZXJhcmRAY2l0cml4LmNvbT4KLS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5p QGtlcm5lbC5vcmc+CkNjOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgpDYzog UmljaGFyZCBIZW5kZXJzb24gPHJ0aEB0d2lkZGxlLm5ldD4KQ2M6IEVkdWFyZG8gSGFia29zdCA8 ZWhhYmtvc3RAcmVkaGF0LmNvbT4KQ2M6ICJNaWNoYWVsIFMuIFRzaXJraW4iIDxtc3RAcmVkaGF0 LmNvbT4KLS0tCiBody9pMzg2L3hlbi94ZW5fcGxhdGZvcm0uYyAgfCAgMiArLQogaW5jbHVkZS9o dy94ZW4veGVuX2NvbW1vbi5oIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHhlbi1odm0uYyAgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysr KystLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAxNSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9pMzg2L3hlbi94ZW5fcGxhdGZvcm0uYyBiL2h3 L2kzODYveGVuL3hlbl9wbGF0Zm9ybS5jCmluZGV4IDYwMTBmMzUuLjE0MTlmYzkgMTAwNjQ0Ci0t LSBhL2h3L2kzODYveGVuL3hlbl9wbGF0Zm9ybS5jCisrKyBiL2h3L2kzODYveGVuL3hlbl9wbGF0 Zm9ybS5jCkBAIC0xOTUsNyArMTk1LDcgQEAgc3RhdGljIHZvaWQgcGxhdGZvcm1fZml4ZWRfaW9w b3J0X3dyaXRlYih2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHYKICAgICBj YXNlIDA6IC8qIFBsYXRmb3JtIGZsYWdzICovIHsKICAgICAgICAgaHZtbWVtX3R5cGVfdCBtZW1f dHlwZSA9ICh2YWwgJiBQRkZMQUdfUk9NX0xPQ0spID8KICAgICAgICAgICAgIEhWTU1FTV9yYW1f cm8gOiBIVk1NRU1fcmFtX3J3OwotICAgICAgICBpZiAoeGNfaHZtX3NldF9tZW1fdHlwZSh4ZW5f eGMsIHhlbl9kb21pZCwgbWVtX3R5cGUsIDB4YzAsIDB4NDApKSB7CisgICAgICAgIGlmICh4ZW5f c2V0X21lbV90eXBlKHhlbl9kb21pZCwgbWVtX3R5cGUsIDB4YzAsIDB4NDApKSB7CiAgICAgICAg ICAgICBEUFJJTlRGKCJ1bmFibGUgdG8gY2hhbmdlIHJvL3J3IHN0YXRlIG9mIFJPTSBtZW1vcnkg YXJlYSFcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcy0+ZmxhZ3MgPSB2YWwg JiBQRkZMQUdfUk9NX0xPQ0s7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9u LmggYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKaW5kZXggMWUwOGI5OC4uMzFjZjI1ZiAx MDA2NDQKLS0tIGEvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCisrKyBiL2luY2x1ZGUvaHcv eGVuL3hlbl9jb21tb24uaApAQCAtMjYsNiArMjYsNTAgQEAgZXh0ZXJuIHhjX2ludGVyZmFjZSAq eGVuX3hjOwogICogV2UgZG9uJ3Qgc3VwcG9ydCBYZW4gcHJpb3IgdG8gNC4yLjAuCiAgKi8KIAor c3RhdGljIGlubGluZSBpbnQgeGVuX3NldF9tZW1fdHlwZShkb21pZF90IGRvbWlkLCBodm1tZW1f dHlwZV90IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 IGZpcnN0X3BmbiwgdWludDMyX3QgbnIpCit7CisgICAgcmV0dXJuIHhjX2h2bV9zZXRfbWVtX3R5 cGUoeGVuX3hjLCBkb21pZCwgdHlwZSwgZmlyc3RfcGZuLCBucik7Cit9CisKK3N0YXRpYyBpbmxp bmUgaW50IHhlbl9zZXRfcGNpX2ludHhfbGV2ZWwoZG9taWRfdCBkb21pZCwgdWludDE2X3Qgc2Vn bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBi dXMsIHVpbnQ4X3QgZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50OF90IGludHgsIHVuc2lnbmVkIGludCBsZXZlbCkKK3sKKyAgICByZXR1cm4geGNf aHZtX3NldF9wY2lfaW50eF9sZXZlbCh4ZW5feGMsIGRvbWlkLCBzZWdtZW50LCBidXMsIGRldmlj ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnR4LCBsZXZlbCk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgaW50IHhlbl9zZXRfcGNpX2xpbmtfcm91dGUoZG9taWRfdCBkb21p ZCwgdWludDhfdCBsaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50OF90IGlycSkKK3sKKyAgICByZXR1cm4geGNfaHZtX3NldF9wY2lfbGlua19yb3V0ZSh4 ZW5feGMsIGRvbWlkLCBsaW5rLCBpcnEpOworfQorCitzdGF0aWMgaW5saW5lIGludCB4ZW5faW5q ZWN0X21zaShkb21pZF90IGRvbWlkLCB1aW50NjRfdCBtc2lfYWRkciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1zaV9kYXRhKQoreworICAgIHJldHVybiB4Y19o dm1faW5qZWN0X21zaSh4ZW5feGMsIGRvbWlkLCBtc2lfYWRkciwgbXNpX2RhdGEpOworfQorCitz dGF0aWMgaW5saW5lIGludCB4ZW5fc2V0X2lzYV9pcnFfbGV2ZWwoZG9taWRfdCBkb21pZCwgdWlu dDhfdCBpcnEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGxldmVsKQoreworICAgIHJldHVybiB4Y19odm1fc2V0X2lzYV9pcnFfbGV2ZWwoeGVu X3hjLCBkb21pZCwgaXJxLCBsZXZlbCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHhlbl90cmFj a19kaXJ0eV92cmFtKGRvbWlkX3QgZG9taWQsIHVpbnQ2NF90IGZpcnN0X3BmbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5yLCB1bnNpZ25lZCBsb25n ICpiaXRtYXApCit7CisgICAgcmV0dXJuIHhjX2h2bV90cmFja19kaXJ0eV92cmFtKHhlbl94Yywg ZG9taWQsIGZpcnN0X3BmbiwgbnIsIGJpdG1hcCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHhl bl9tb2RpZmllZF9tZW1vcnkoZG9taWRfdCBkb21pZCwgdWludDY0X3QgZmlyc3RfcGZuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBucikKK3sKKyAgICBy ZXR1cm4geGNfaHZtX21vZGlmaWVkX21lbW9yeSh4ZW5feGMsIGRvbWlkLCBmaXJzdF9wZm4sIG5y KTsKK30KKwogLyogWGVuIDQuMiB0aHJvdWdoIDQuNiAqLwogI2lmIENPTkZJR19YRU5fQ1RSTF9J TlRFUkZBQ0VfVkVSU0lPTiA8IDQ3MQogCmRpZmYgLS1naXQgYS94ZW4taHZtLmMgYi94ZW4taHZt LmMKaW5kZXggZWRmNDk4My4uNGI5MjhjZiAxMDA2NDQKLS0tIGEveGVuLWh2bS5jCisrKyBiL3hl bi1odm0uYwpAQCAtMTI1LDggKzEyNSw4IEBAIGludCB4ZW5fcGNpX3Nsb3RfZ2V0X3BpcnEoUENJ RGV2aWNlICpwY2lfZGV2LCBpbnQgaXJxX251bSkKIAogdm9pZCB4ZW5fcGlpeDNfc2V0X2lycSh2 b2lkICpvcGFxdWUsIGludCBpcnFfbnVtLCBpbnQgbGV2ZWwpCiB7Ci0gICAgeGNfaHZtX3NldF9w Y2lfaW50eF9sZXZlbCh4ZW5feGMsIHhlbl9kb21pZCwgMCwgMCwgaXJxX251bSA+PiAyLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXJxX251bSAmIDMsIGxldmVsKTsKKyAgICB4ZW5f c2V0X3BjaV9pbnR4X2xldmVsKHhlbl9kb21pZCwgMCwgMCwgaXJxX251bSA+PiAyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXJxX251bSAmIDMsIGxldmVsKTsKIH0KIAogdm9pZCB4ZW5f cGlpeF9wY2lfd3JpdGVfY29uZmlnX2NsaWVudCh1aW50MzJfdCBhZGRyZXNzLCB1aW50MzJfdCB2 YWwsIGludCBsZW4pCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCB4ZW5fcGlpeF9wY2lfd3JpdGVf Y29uZmlnX2NsaWVudCh1aW50MzJfdCBhZGRyZXNzLCB1aW50MzJfdCB2YWwsIGludCBsZW4pCiAg ICAgICAgIH0KICAgICAgICAgdiAmPSAweGY7CiAgICAgICAgIGlmICgoKGFkZHJlc3MgKyBpKSA+ PSAweDYwKSAmJiAoKGFkZHJlc3MgKyBpKSA8PSAweDYzKSkgewotICAgICAgICAgICAgeGNfaHZt X3NldF9wY2lfbGlua19yb3V0ZSh4ZW5feGMsIHhlbl9kb21pZCwgYWRkcmVzcyArIGkgLSAweDYw LCB2KTsKKyAgICAgICAgICAgIHhlbl9zZXRfcGNpX2xpbmtfcm91dGUoeGVuX2RvbWlkLCBhZGRy ZXNzICsgaSAtIDB4NjAsIHYpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTU2LDcgKzE1Niw3 IEBAIGludCB4ZW5faXNfcGlycV9tc2kodWludDMyX3QgbXNpX2RhdGEpCiAKIHZvaWQgeGVuX2h2 bV9pbmplY3RfbXNpKHVpbnQ2NF90IGFkZHIsIHVpbnQzMl90IGRhdGEpCiB7Ci0gICAgeGNfaHZt X2luamVjdF9tc2koeGVuX3hjLCB4ZW5fZG9taWQsIGFkZHIsIGRhdGEpOworICAgIHhlbl9pbmpl Y3RfbXNpKHhlbl9kb21pZCwgYWRkciwgZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIHhlbl9zdXNw ZW5kX25vdGlmaWVyKE5vdGlmaWVyICpub3RpZmllciwgdm9pZCAqZGF0YSkKQEAgLTE2OCw3ICsx NjgsNyBAQCBzdGF0aWMgdm9pZCB4ZW5fc3VzcGVuZF9ub3RpZmllcihOb3RpZmllciAqbm90aWZp ZXIsIHZvaWQgKmRhdGEpCiAKIHN0YXRpYyB2b2lkIHhlbl9zZXRfaXJxKHZvaWQgKm9wYXF1ZSwg aW50IGlycSwgaW50IGxldmVsKQogewotICAgIHhjX2h2bV9zZXRfaXNhX2lycV9sZXZlbCh4ZW5f eGMsIHhlbl9kb21pZCwgaXJxLCBsZXZlbCk7CisgICAgeGVuX3NldF9pc2FfaXJxX2xldmVsKHhl bl9kb21pZCwgaXJxLCBsZXZlbCk7CiB9CiAKIHFlbXVfaXJxICp4ZW5faW50ZXJydXB0X2NvbnRy b2xsZXJfaW5pdCh2b2lkKQpAQCAtNDgxLDEwICs0ODEsMTAgQEAgc3RhdGljIHZvaWQgeGVuX3Nl dF9tZW1vcnkoc3RydWN0IE1lbW9yeUxpc3RlbmVyICpsaXN0ZW5lciwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWN0aW9uLT5tciwgc2VjdGlvbi0+b2Zmc2V0X3dpdGhpbl9yZWdp b24pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbWVtX3R5cGUgPSBIVk1NRU1fcmFt X3JvOwotICAgICAgICAgICAgaWYgKHhjX2h2bV9zZXRfbWVtX3R5cGUoeGVuX3hjLCB4ZW5fZG9t aWQsIG1lbV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRf YWRkciA+PiBUQVJHRVRfUEFHRV9CSVRTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZSA+PiBUQVJHRVRfUEFHRV9CSVRTKSkgewotICAgICAgICAgICAgICAgIERQUklO VEYoInhjX2h2bV9zZXRfbWVtX3R5cGUgZXJyb3IsIGFkZHI6ICJUQVJHRVRfRk1UX3BseCJcbiIs CisgICAgICAgICAgICBpZiAoeGVuX3NldF9tZW1fdHlwZSh4ZW5fZG9taWQsIG1lbV90eXBlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfYWRkciA+PiBUQVJHRVRfUEFH RV9CSVRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA+PiBUQVJHRVRf UEFHRV9CSVRTKSkgeworICAgICAgICAgICAgICAgIERQUklOVEYoInhlbl9zZXRfbWVtX3R5cGUg ZXJyb3IsIGFkZHI6ICJUQVJHRVRfRk1UX3BseCJcbiIsCiAgICAgICAgICAgICAgICAgICAgICAg ICBzdGFydF9hZGRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTg2LDkgKzU4Niw4 IEBAIHN0YXRpYyB2b2lkIHhlbl9zeW5jX2RpcnR5X2JpdG1hcChYZW5JT1N0YXRlICpzdGF0ZSwK ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJjID0geGNfaHZtX3RyYWNrX2RpcnR5X3Zy YW0oeGVuX3hjLCB4ZW5fZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dGFydF9hZGRyID4+IFRBUkdFVF9QQUdFX0JJVFMsIG5wYWdlcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJpdG1hcCk7CisgICAgcmMgPSB4ZW5fdHJhY2tfZGlydHlfdnJhbSh4 ZW5fZG9taWQsIHN0YXJ0X2FkZHIgPj4gVEFSR0VUX1BBR0VfQklUUywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5wYWdlcywgYml0bWFwKTsKICAgICBpZiAocmMgPCAwKSB7CiAjaWZu ZGVmIEVOT0RBVEEKICNkZWZpbmUgRU5PREFUQSAgRU5PRU5UCkBAIC02MzQsNyArNjMzLDcgQEAg c3RhdGljIHZvaWQgeGVuX2xvZ19zdG9wKE1lbW9yeUxpc3RlbmVyICpsaXN0ZW5lciwgTWVtb3J5 UmVnaW9uU2VjdGlvbiAqc2VjdGlvbiwKICAgICBpZiAob2xkICYgfm5ldyAmICgxIDw8IERJUlRZ X01FTU9SWV9WR0EpKSB7CiAgICAgICAgIHN0YXRlLT5sb2dfZm9yX2RpcnR5Yml0ID0gTlVMTDsK ICAgICAgICAgLyogRGlzYWJsZSBkaXJ0eSBiaXQgdHJhY2tpbmcgKi8KLSAgICAgICAgeGNfaHZt X3RyYWNrX2RpcnR5X3ZyYW0oeGVuX3hjLCB4ZW5fZG9taWQsIDAsIDAsIE5VTEwpOworICAgICAg ICB4ZW5fdHJhY2tfZGlydHlfdnJhbSh4ZW5fZG9taWQsIDAsIDAsIE5VTEwpOwogICAgIH0KIH0K IApAQCAtMTQwMyw3ICsxNDAyLDcgQEAgdm9pZCB4ZW5faHZtX21vZGlmaWVkX21lbW9yeShyYW1f YWRkcl90IHN0YXJ0LCByYW1fYWRkcl90IGxlbmd0aCkKICAgICAgICAgc3RhcnRfcGZuID0gc3Rh cnQgPj4gVEFSR0VUX1BBR0VfQklUUzsKICAgICAgICAgbmJfcGFnZXMgPSAoKHN0YXJ0ICsgbGVu Z3RoICsgVEFSR0VUX1BBR0VfU0laRSAtIDEpID4+IFRBUkdFVF9QQUdFX0JJVFMpCiAgICAgICAg ICAgICAtIHN0YXJ0X3BmbjsKLSAgICAgICAgcmMgPSB4Y19odm1fbW9kaWZpZWRfbWVtb3J5KHhl bl94YywgeGVuX2RvbWlkLCBzdGFydF9wZm4sIG5iX3BhZ2VzKTsKKyAgICAgICAgcmMgPSB4ZW5f bW9kaWZpZWRfbWVtb3J5KHhlbl9kb21pZCwgc3RhcnRfcGZuLCBuYl9wYWdlcyk7CiAgICAgICAg IGlmIChyYykgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAgICAg ICAgICIlcyBmYWlsZWQgZm9yICJSQU1fQUREUl9GTVQiICgiUkFNX0FERFJfRk1UIik6ICVpLCAl c1xuIiwKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==