[{"id":1776244,"web_url":"http://patchwork.ozlabs.org/comment/1776244/","msgid":"<4cecfa75-c97a-586b-aadf-9b0bfd168960@caviumnetworks.com>","list_archive_url":null,"date":"2017-09-27T10:53:24","subject":"Re: [Qemu-devel] [RFC v4 10/16] virtio-iommu: Implement probe\n\trequest","submitter":{"id":72364,"url":"http://patchwork.ozlabs.org/api/people/72364/","name":"Tomasz Nowicki","email":"tnowicki@caviumnetworks.com"},"content":"Hi Eric,\n\nOn 19.09.2017 09:46, Eric Auger wrote:\n> This patch implements the PROBE request. At the moment,\n> no reserved regions are returned.\n> \n> At the moment reserved regions are stored per device.\n> \n> Signed-off-by: Eric Auger <eric.auger@redhat.com>\n> \n> ---\n> \n\n[...]\n\n> +\n> +static int virtio_iommu_fill_property(int devid, int type,\n> +                                      viommu_property_buffer *bufstate)\n> +{\n> +    int ret = -ENOSPC;\n> +\n> +    if (bufstate->filled + 4 >= VIOMMU_PROBE_SIZE) {\n> +        bufstate->error = true;\n> +        goto out;\n> +    }\n> +\n> +    switch (type) {\n> +    case VIRTIO_IOMMU_PROBE_T_NONE:\n> +        ret = virtio_iommu_fill_none_prop(bufstate);\n> +        break;\n> +    case VIRTIO_IOMMU_PROBE_T_RESV_MEM:\n> +    {\n> +        viommu_dev *dev = bufstate->dev;\n> +\n> +        g_tree_foreach(dev->reserved_regions,\n> +                       virtio_iommu_fill_resv_mem_prop,\n> +                       bufstate);\n> +        if (!bufstate->error) {\n> +            ret = 0;\n> +        }\n> +        break;\n> +    }\n> +    default:\n> +        ret = -ENOENT;\n> +        break;\n> +    }\n> +out:\n> +    if (ret) {\n> +        error_report(\"%s property of type=%d could not be filled (%d),\"\n> +                     \" remaining size = 0x%lx\",\n> +                     __func__, type, ret, bufstate->filled);\n> +    }\n> +    return ret;\n> +}\n> +\n> +static int virtio_iommu_probe(VirtIOIOMMU *s,\n> +                              struct virtio_iommu_req_probe *req,\n> +                              uint8_t *buf)\n> +{\n> +    uint32_t devid = le32_to_cpu(req->device);\n> +    int16_t prop_types = SUPPORTED_PROBE_PROPERTIES, type;\n> +    viommu_property_buffer bufstate;\n> +    viommu_dev *dev;\n> +    int ret;\n> +\n> +    dev = g_tree_lookup(s->devices, GUINT_TO_POINTER(devid));\n> +    if (!dev) {\n> +        return -EINVAL;\n> +    }\n> +\n> +    bufstate.start = buf;\n> +    bufstate.filled = 0;\n> +    bufstate.dev = dev;\n\nbufstate.error is not initialized which may cause false alarm in \nvirtio_iommu_fill_property()\n\n> +\n> +    while ((type = ctz32(prop_types)) != 32) {\n> +        ret = virtio_iommu_fill_property(devid, 1 << type, &bufstate);\n> +        if (ret) {\n> +            break;\n> +        }\n> +        prop_types &= ~(1 << type);\n> +    }\n> +    virtio_iommu_fill_property(devid, VIRTIO_IOMMU_PROBE_T_NONE, &bufstate);\n> +\n> +    return VIRTIO_IOMMU_S_OK;\n> +}\n> +\n>   #define get_payload_size(req) (\\\n>   sizeof((req)) - sizeof(struct virtio_iommu_req_tail))\n>   \n> @@ -433,6 +567,24 @@ static int virtio_iommu_handle_unmap(VirtIOIOMMU *s,\n>       return virtio_iommu_unmap(s, &req);\n>   }\n\nThanks,\nTomasz","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"F4z5jkcD\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Tomasz.Nowicki@cavium.com; "],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y2F7S1GvTz9tXT\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 27 Sep 2017 20:54:12 +1000 (AEST)","from localhost ([::1]:53974 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dx9yk-0001uq-BD\n\tfor incoming@patchwork.ozlabs.org; Wed, 27 Sep 2017 06:54:10 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:48253)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <Tomasz.Nowicki@cavium.com>) id 1dx9yM-0001tW-IW\n\tfor qemu-devel@nongnu.org; Wed, 27 Sep 2017 06:53:47 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <Tomasz.Nowicki@cavium.com>) id 1dx9yL-0008Dt-NF\n\tfor qemu-devel@nongnu.org; Wed, 27 Sep 2017 06:53:46 -0400","from mail-dm3nam03on0054.outbound.protection.outlook.com\n\t([104.47.41.54]:33056\n\thelo=NAM03-DM3-obe.outbound.protection.outlook.com)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <Tomasz.Nowicki@cavium.com>)\n\tid 1dx9yF-0008AN-Mx; Wed, 27 Sep 2017 06:53:39 -0400","from [192.168.46.112] (12.108.191.226) by\n\tDM5PR0701MB3656.namprd07.prod.outlook.com (2603:10b6:4:7e::16) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7;\n\tWed, 27 Sep 2017 10:53:30 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=hCllQF7s/V/swSbckBJk6PmSgcQ6r6B5HQCYgYLmjd0=;\n\tb=F4z5jkcDEFQM1dqSxBvQW8ym9h9nUzGXbP63vD51kX01IYSJcVplRX8CtdGe1o4q5u2Mks0zLH5pLvF3YJSBZjdqJ7SZXhL6t5CrChAAJjZDWQwsInqB8UZ5AUpAgSM5s8scEcoJps56eJA7ihSyYI0jQB4FqbFAKzPFtFVPmKg=","To":"Eric Auger <eric.auger@redhat.com>, eric.auger.pro@gmail.com,\n\tpeter.maydell@linaro.org, alex.williamson@redhat.com, mst@redhat.com, \n\tqemu-arm@nongnu.org, qemu-devel@nongnu.org, jean-philippe.brucker@arm.com","References":"<1505807208-9063-1-git-send-email-eric.auger@redhat.com>\n\t<1505807208-9063-11-git-send-email-eric.auger@redhat.com>","From":"Tomasz Nowicki <tnowicki@caviumnetworks.com>","Message-ID":"<4cecfa75-c97a-586b-aadf-9b0bfd168960@caviumnetworks.com>","Date":"Wed, 27 Sep 2017 12:53:24 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tFirefox/52.0 Thunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<1505807208-9063-11-git-send-email-eric.auger@redhat.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Language":"en-GB","Content-Transfer-Encoding":"7bit","X-Originating-IP":"[12.108.191.226]","X-ClientProxiedBy":"MWHPR2201CA0012.namprd22.prod.outlook.com\n\t(2603:10b6:301:28::25) To DM5PR0701MB3656.namprd07.prod.outlook.com\n\t(2603:10b6:4:7e::16)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"2f6ddaa9-3846-4667-eb21-08d505960004","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:DM5PR0701MB3656; ","X-Microsoft-Exchange-Diagnostics":["1; DM5PR0701MB3656;\n\t3:L96c0OlshB2RysxXy2lFlVmpqvLbIxXJf8FKhAkKiMxQsxd0yoUtPx7joccECIJqogC9ZQeyH5hkj2Bws90h/EM112mLXnXF1GKRC28AwJyfmsINFgRdjNliAyVd2aboDeuqiKYZNnUwyXHYmPABRBNDrqksigTmUQ3QC1kJ/uw5Tp0kHM06aH0YNyR1h15UQnImrAwwfVBmfii1Av9+C1fqugvh7GWIAGd+AT3kJTTXDE06OU64k7T0qZEY4bJK;\n\t25:2v52uYPnuHSOrK5BuEJft+CKkZF++N4YcgvoAqDZYDzyuD+DhvNGYUF+aTVHfdvfaLw7RP/Rx/bAwb7//C1p9R0Accu2XfS+XZupc7SW4dWGNj0rmydqOL7R75DHa1cJoB68ujPf6G2NFZ8bTfdwFhs1r+spMnEl43PtIDyUDhF5UKc14jxDQk7gDC2ZN6d3RkAWaFTNoytHDDIFa1Q4hD1vG/5Zp4j1cRBI1QMkDH0+Vh6mRgyXeG/kNM0xLRaFsaGT7x0ElY80shpIJEabNuAzY5b1b0oHtFwRukpzkNJwyDywjiA2lpG6CMgsvm1SfMAjlZpy8N9jgW4u0ASpUg==;\n\t31:SENuSl3dth+C20fFsdkzArFk6uzgrwNKIIxt/7xcRppgmlQvgvjF2Cb8xwFGlVS5N9R0RFoOKlDY2Reyo7s2z8xWX9rk3Bhb19mgABRIPzgd4eWK22F4Jtu7WeLt5yjfuhge53FvtgEPxCppQT1cBjvhIOWIpd935zuFWGKr6zdWH1kSzQ6OB4FzqkFMPNFAnESiJ70ZtgHxgGk0z5VojZ/T+35gkVLsqaoDm/uLRqU=","1; DM5PR0701MB3656;\n\t20:qM7VBa+MOK6oxI7L3XLIKhvzSJtamt/5uIWHEoZn9lneKShT/txOQmP9XRjbLyKzGR+DadayjdhIzt2Suxw8XsIneoPObNIM8ziuWlqJYKYTG+rqauV8gqP+KrSQPweorRXNkAUyAH8Fpu82hAx/4KXlYU9o9qIi0iFOPbL56REBju3NV067rkMKwmIj1WHtmGsvOfEck9QRm5ClOSka1RFdPVBhLaLbZWyKe6pPoIOhdZ65j2i9wWZgNLOIDvWBcpwieeX2RKRfbIXJH5mwHLQ8ZCndKqL0nOXR5n5r7D8sMsfD+5ISqyWUjC1uMA7u1VZpZbybTqFL6GEEOt5XlI4kLR28b72o7SKdMLTR/g6q+IR4wrdFcnvZybsY2yBcbEZHnHjSE3ETnl8GL9yES0oCew6Gbd+FMkz62S7KBmrR/hNOdL1YAe0cgfIYc7oxMsU2B5uzH1gnBl4+z6ckc9/IramZChUKhqtQEqLgmYdwB2eu+0IZGbMTI6E3/slVsJhRMyamLWvNYr1u3jURmS3X2IP5vqKJeXO+qUoKIGMxI6yBtf6YISWIN8lOABslT3MBMcvJdr1XWIUP53fQnl6rdOVL/RVBMFl/SyqCcG4=;\n\t4:REw8cT0q2tpXCA9rqPUzrvgkGYLVrbIpiCEkTjyHB0wuChSLIthvtQHrpXm7Cp1E5j45alwbFPi8qobpJjhq6O8xe35/iRKRVHd5H08Mfs2TM88xYTl3fbqUYNTz30Lq1+bJ2qhJa0pCriLxYeb5dQA2HwQPSoMdbNyZ0YPyb5j34fQUbMB1sEHNkUl01LIWBELGjzjIX5iBJPvZbinD55kV8Uk3yo90Qgfx7Oz33N5o5xgCipFExp5cuBOsNElG","=?utf-8?q?1=3BDM5PR0701MB3656=3B23=3A+8?=\n\t=?utf-8?q?YxSx/Ls0iORZXj84QQw3fNxDUf8UW1WIUNK09nMDclpXRgwDG++jtnDF?=\n\t=?utf-8?q?7iGM7tSEu/o/vON8OnhRzNsUQupPiDVEUP3vngoq1SNcu3cnpPqzMX9d?=\n\t=?utf-8?q?jwgRUw4Xtq9RyIaChNfWjRjIT5v+AbF83XaI2NkLhV+TlJS8qyticqbT?=\n\t=?utf-8?q?x1qcps8vRQy1RijbwBezNuUSRjni7C+7hNQmFPa+8iVD1kh0GnwBp1R6?=\n\t=?utf-8?q?RpEIEQaJBwKPRwN/AASkDtUe+9qw6lxuJFdE2SQnEWU8NbIW2NghGd3t?=\n\t=?utf-8?q?Q3Q4ZjQDGf3ZaJF94fVWBX+Ez6pmSYG5ljykTnO7ztBJgX5BukLheISK?=\n\t=?utf-8?q?cUhVmhCMlFhrJ+dGZ1FpIwYE+7qvlOYuuhQiBgYcaB0mdfnteCuSnLcN?=\n\t=?utf-8?q?9p1meuHt1uOeoVNXnPAeY36d1T5iLHO5z+wav4tAAKXcx52e3RUksXBc?=\n\t=?utf-8?q?z/8Z7EDEGmQj9wm7+N+Qi5qoham1DtzTJPfbe0sn7J/7/sP9WoHwqlnP?=\n\t=?utf-8?q?p5L4QlDh31rY02ikyuNeewI0+jfDHPu+YKTqcXHIIoXj4S6ls5AKC1sd?=\n\t=?utf-8?q?jxEabG/UGqlSINei0yI3CH2h8WYnlSFqjrT4f+4qS6bf3P3e7DTKNfaB?=\n\t=?utf-8?q?qDMi1WkiVDAR6sCntPT4VFnuKuGbBkvP/Xlx26trC1Xg6mOm5bz55wd2?=\n\t=?utf-8?q?C9bHiTTsPh71ychopJOyBc7NXCIiUkL/eLvZGyWd4WIiD2Vu827x3F1V?=\n\t=?utf-8?q?594Y8qlPtXZRmQpe/SVncufrfOxyaBiRkqNFcfrZnhL/M+812wzi23n2?=\n\t=?utf-8?q?CEpnOVis+rkS76wtTKDL6tYjE1qxX43sjtvJxmrzDG0Lxx3fssRXxksg?=\n\t=?utf-8?q?Gl1Q9Kxqf0VuduUuu+FmCgtFXkrQS/UarT+1rSi9fPWiyPEm1JhgIPtr?=\n\t=?utf-8?q?4g/E7NSJ9Atl4GXP1JWrBSqeouT2znTh5LtnwB4cT9KNRILfbJBRVHPr?=\n\t=?utf-8?q?2YWs01O9c29LVNnn3AvjN8yyXGaxnC3nTsP3Ma8J02/mZ9CrE6CCgXXG?=\n\t=?utf-8?q?xXJzEbXfrVSKTRRh7+rvmA1H6lfg50FVi+DibZc4cb8jnKoxW4DB3POh?=\n\t=?utf-8?q?8BlK5D9D29IkUWWoFZClb8Z0MHlTPF/SLGXDwApDA82NrPTAr0DXYWVM?=\n\t=?utf-8?q?Y+kUCTBgRW07wXgUUwii4BTiBSeeJY/zSP9ZM5MogZLlR3ebVbrgqbjH?=\n\t=?utf-8?q?0duzqRpXnOHkbEGpvb9/jk7DzFOd3mi8YHvFe5lWDOvEOtMruiefBfgv?=\n\t=?utf-8?q?0IsQGksFpzlzpLeEnfaEQ0e0l0B74u0paSNJAnMlGvPixnH8mH/xpIkt?=\n\t=?utf-8?q?QK5mO9if8NelcZIVsPZvDdXQvYMl1dIA2EVHjCbWEo/ng5RP1rYdVtz5?=\n\t=?utf-8?q?9qaT6+CZZDD+SfnJGrXg=3D=3D?=","1; DM5PR0701MB3656;\n\t6:K45zgKPvoPtrlS6KpBj8AbUo2lXfTBei+7qvdxf5WJ6sZ+n57+6s4spQOnp8deoTcbKkCbuELhcIF0BVxdUbKHr7eIq7iYisbR44umKrAc7cBkw20R0OZj8+jlu9UWtnCrV4sO+jz8SFRkPxWQHWfN0t3pNUtO2nVbCgtM5of288I7p+boxpTecISlFi5U5UASWExFq9If1qy4yfvCv4N4XIjgwE9GhtmnREJvYTSDMrc/bR1XP57UbZhdLr8w2P0V5BxLikSSiDj41Ms0OKtC2PbLy0Vds7aYf46PqW6tJgcfXXFn3g2vmWHPoDlyw+xWph6U1YQuoJqGeyW6Bp3A==;\n\t5:I7DrcwE3mdGV3gVgk013Vx6iwfU3eDmJ30Wn1z3Zm6enymv8xQe31w5EfVruV6t4TGRIE8Y0nNsGK4rLC1ClDLp+0BH0Fn76Bm1bBzlbMWjDnjw6PiMfHUJIZ3Fyh+DFkqoIjKYEeqT1ff/Fl+R3sA==;\n\t24:BHw+qfKDTY8F+mtzgaxFExNqWA1rD1+2vxtFuHq4UPY+Q+F+Oq3nT3hjHQcOOt4sIB77y6oA+dWrZCw7ZQABduwgw4g4ID4J+CzzxenIcug=;\n\t7:MBJY1TzdNrR+Huuds/VYPV0vJRCCo4mZpgUSSUdpXwnm8fvSzBcXB0FN0VLe6FB5qvQXeKYjCMCQf7vYdSjbzlE+H9bl9pt0OI+vwElpClDv3suaYvTPbNyWtnjfUa7TX8kyA/DLNr9gzZMCNPNZQ43YFySbwhCnCoPgTYDrVjHNFJm0FisK65kEG2cnjK71U6i956wBlHNl8e3+t3IXbG36aPyJUaAB5UfT7BkkQ7U="],"X-MS-TrafficTypeDiagnostic":"DM5PR0701MB3656:","X-Exchange-Antispam-Report-Test":"UriScan:;","X-Microsoft-Antispam-PRVS":"<DM5PR0701MB3656F74CA1501F7107F2F006FE780@DM5PR0701MB3656.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(100000703101)(100105400095)(3002001)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123564025)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:DM5PR0701MB3656; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:DM5PR0701MB3656; ","X-Forefront-PRVS":"04433051BF","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6049001)(6009001)(346002)(376002)(199003)(189002)(24454002)(23676002)(54356999)(230700001)(81166006)(81156014)(8676002)(50986999)(76176999)(31686004)(105586002)(36756003)(316002)(5660300001)(305945005)(106356001)(8936002)(31696002)(478600001)(83506001)(16576012)(16526017)(53546010)(2906002)(72206003)(58126008)(97736004)(4326008)(50466002)(42882006)(2950100002)(64126003)(33646002)(117156002)(53936002)(25786009)(39060400002)(7416002)(8656003)(6246003)(68736007)(101416001)(3846002)(6116002)(7736002)(47776003)(6666003)(66066001)(65956001)(229853002)(6486002)(77096006)(189998001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3656;\n\tH:[192.168.46.112]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1;\n\tLANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"27 Sep 2017 10:53:30.1035\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DM5PR0701MB3656","X-detected-operating-system":"by eggs.gnu.org: Windows 7 or 8 [fuzzy]","X-Received-From":"104.47.41.54","Subject":"Re: [Qemu-devel] [RFC v4 10/16] virtio-iommu: Implement probe\n\trequest","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"wei@redhat.com, kevin.tian@intel.com, marc.zyngier@arm.com,\n\twill.deacon@arm.com, drjones@redhat.com, peterx@redhat.com,\n\tlinuc.decode@gmail.com, bharat.bhushan@nxp.com,\n\tchristoffer.dall@linaro.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1776250,"web_url":"http://patchwork.ozlabs.org/comment/1776250/","msgid":"<AM5PR0401MB254589AAAAC0DAC45861D05C9A780@AM5PR0401MB2545.eurprd04.prod.outlook.com>","list_archive_url":null,"date":"2017-09-27T11:00:52","subject":"Re: [Qemu-devel] [RFC v4 10/16] virtio-iommu: Implement probe\n\trequest","submitter":{"id":70741,"url":"http://patchwork.ozlabs.org/api/people/70741/","name":"Bharat Bhushan","email":"bharat.bhushan@nxp.com"},"content":"> -----Original Message-----\r\n> From: Tomasz Nowicki [mailto:tnowicki@caviumnetworks.com]\r\n> Sent: Wednesday, September 27, 2017 4:23 PM\r\n> To: Eric Auger <eric.auger@redhat.com>; eric.auger.pro@gmail.com;\r\n> peter.maydell@linaro.org; alex.williamson@redhat.com; mst@redhat.com;\r\n> qemu-arm@nongnu.org; qemu-devel@nongnu.org; jean-\r\n> philippe.brucker@arm.com\r\n> Cc: will.deacon@arm.com; kevin.tian@intel.com; marc.zyngier@arm.com;\r\n> christoffer.dall@linaro.org; drjones@redhat.com; wei@redhat.com; Bharat\r\n> Bhushan <bharat.bhushan@nxp.com>; peterx@redhat.com;\r\n> linuc.decode@gmail.com\r\n> Subject: Re: [RFC v4 10/16] virtio-iommu: Implement probe request\r\n> \r\n> Hi Eric,\r\n> \r\n> On 19.09.2017 09:46, Eric Auger wrote:\r\n> > This patch implements the PROBE request. At the moment, no reserved\r\n> > regions are returned.\r\n> >\r\n> > At the moment reserved regions are stored per device.\r\n> >\r\n> > Signed-off-by: Eric Auger <eric.auger@redhat.com>\r\n> >\r\n> > ---\r\n> >\r\n> \r\n> [...]\r\n> \r\n> > +\r\n> > +static int virtio_iommu_fill_property(int devid, int type,\r\n> > +                                      viommu_property_buffer\r\n> > +*bufstate) {\r\n> > +    int ret = -ENOSPC;\r\n> > +\r\n> > +    if (bufstate->filled + 4 >= VIOMMU_PROBE_SIZE) {\r\n> > +        bufstate->error = true;\r\n> > +        goto out;\r\n> > +    }\r\n> > +\r\n> > +    switch (type) {\r\n> > +    case VIRTIO_IOMMU_PROBE_T_NONE:\r\n> > +        ret = virtio_iommu_fill_none_prop(bufstate);\r\n> > +        break;\r\n> > +    case VIRTIO_IOMMU_PROBE_T_RESV_MEM:\r\n> > +    {\r\n> > +        viommu_dev *dev = bufstate->dev;\r\n> > +\r\n> > +        g_tree_foreach(dev->reserved_regions,\r\n> > +                       virtio_iommu_fill_resv_mem_prop,\r\n> > +                       bufstate);\r\n> > +        if (!bufstate->error) {\r\n> > +            ret = 0;\r\n> > +        }\r\n> > +        break;\r\n> > +    }\r\n> > +    default:\r\n> > +        ret = -ENOENT;\r\n> > +        break;\r\n> > +    }\r\n> > +out:\r\n> > +    if (ret) {\r\n> > +        error_report(\"%s property of type=%d could not be filled (%d),\"\r\n> > +                     \" remaining size = 0x%lx\",\r\n> > +                     __func__, type, ret, bufstate->filled);\r\n> > +    }\r\n> > +    return ret;\r\n> > +}\r\n> > +\r\n> > +static int virtio_iommu_probe(VirtIOIOMMU *s,\r\n> > +                              struct virtio_iommu_req_probe *req,\r\n> > +                              uint8_t *buf) {\r\n> > +    uint32_t devid = le32_to_cpu(req->device);\r\n> > +    int16_t prop_types = SUPPORTED_PROBE_PROPERTIES, type;\r\n> > +    viommu_property_buffer bufstate;\r\n> > +    viommu_dev *dev;\r\n> > +    int ret;\r\n> > +\r\n> > +    dev = g_tree_lookup(s->devices, GUINT_TO_POINTER(devid));\r\n> > +    if (!dev) {\r\n> > +        return -EINVAL;\r\n> > +    }\r\n> > +\r\n> > +    bufstate.start = buf;\r\n> > +    bufstate.filled = 0;\r\n> > +    bufstate.dev = dev;\r\n> \r\n> bufstate.error is not initialized which may cause false alarm in\r\n> virtio_iommu_fill_property()\r\n\r\nI observed below prints \r\n\t \"qemu-system-aarch64: virtio_iommu_fill_property property of type=2 could not be filled (-28), remaining size = 0x0 \"\r\n\r\nWhen I initialized the bufstate.error = 0,it goes.\r\n\r\nThanks\r\n-Bharat\r\n\r\n> \r\n> > +\r\n> > +    while ((type = ctz32(prop_types)) != 32) {\r\n> > +        ret = virtio_iommu_fill_property(devid, 1 << type, &bufstate);\r\n> > +        if (ret) {\r\n> > +            break;\r\n> > +        }\r\n> > +        prop_types &= ~(1 << type);\r\n> > +    }\r\n> > +    virtio_iommu_fill_property(devid, VIRTIO_IOMMU_PROBE_T_NONE,\r\n> > + &bufstate);\r\n> > +\r\n> > +    return VIRTIO_IOMMU_S_OK;\r\n> > +}\r\n> > +\r\n> >   #define get_payload_size(req) (\\\r\n> >   sizeof((req)) - sizeof(struct virtio_iommu_req_tail))\r\n> >\r\n> > @@ -433,6 +567,24 @@ static int\r\n> virtio_iommu_handle_unmap(VirtIOIOMMU *s,\r\n> >       return virtio_iommu_unmap(s, &req);\r\n> >   }\r\n> \r\n> Thanks,\r\n> Tomasz","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"oIKjx+tJ\";\n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=bharat.bhushan@nxp.com; "],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y2FJ43P4Vz9s8J\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 27 Sep 2017 21:01:40 +1000 (AEST)","from localhost ([::1]:54009 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dxA5y-0004KT-Kn\n\tfor incoming@patchwork.ozlabs.org; Wed, 27 Sep 2017 07:01:38 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:49864)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <bharat.bhushan@nxp.com>) id 1dxA5c-0004KG-5t\n\tfor qemu-devel@nongnu.org; Wed, 27 Sep 2017 07:01:20 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <bharat.bhushan@nxp.com>) id 1dxA5S-0004QV-Kg\n\tfor qemu-devel@nongnu.org; Wed, 27 Sep 2017 07:01:16 -0400","from mail-ve1eur01on0046.outbound.protection.outlook.com\n\t([104.47.1.46]:37472\n\thelo=EUR01-VE1-obe.outbound.protection.outlook.com)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <bharat.bhushan@nxp.com>)\n\tid 1dxA5I-0004K5-2O; Wed, 27 Sep 2017 07:00:56 -0400","from AM5PR0401MB2545.eurprd04.prod.outlook.com (10.169.245.8) by\n\tAM5PR0401MB2547.eurprd04.prod.outlook.com (10.169.245.10) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.77.7; Wed, 27 Sep 2017 11:00:53 +0000","from AM5PR0401MB2545.eurprd04.prod.outlook.com\n\t([fe80::a470:3643:ce8f:6327]) by\n\tAM5PR0401MB2545.eurprd04.prod.outlook.com\n\t([fe80::a470:3643:ce8f:6327%18]) with mapi id 15.20.0077.016;\n\tWed, 27 Sep 2017 11:00:53 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=jC8jsn3aSnkjxMyyUFZk5GDpG0IEd1b+n5EMsN93wh0=;\n\tb=oIKjx+tJjNRMouvAypDdEOv5ApIR9d6QnfHIqsIBUCO2mld13rmIXjEE0GEyJpyiCcV0m2P7pm5ahIW6bG90l8o/uQL6yABrgH7EKU92q3aeTT0TpnonhhAu6KbKBADe3DpsBopnTAfeiDlnZP/vwjiWaMWAV8sQbJpUgoV6LUo=","From":"Bharat Bhushan <bharat.bhushan@nxp.com>","To":"Tomasz Nowicki <tnowicki@caviumnetworks.com>, Eric Auger\n\t<eric.auger@redhat.com>, \"eric.auger.pro@gmail.com\"\n\t<eric.auger.pro@gmail.com>, \"peter.maydell@linaro.org\"\n\t<peter.maydell@linaro.org>, \"alex.williamson@redhat.com\"\n\t<alex.williamson@redhat.com>, \"mst@redhat.com\" <mst@redhat.com>,\n\t\"qemu-arm@nongnu.org\" <qemu-arm@nongnu.org>, \"qemu-devel@nongnu.org\"\n\t<qemu-devel@nongnu.org>, \"jean-philippe.brucker@arm.com\"\n\t<jean-philippe.brucker@arm.com>","Thread-Topic":"[RFC v4 10/16] virtio-iommu: Implement probe request","Thread-Index":"AQHTMRvNOeroUJJiM0qIZ1hkf5XCpKLIm3YAgAABheA=","Date":"Wed, 27 Sep 2017 11:00:52 +0000","Message-ID":"<AM5PR0401MB254589AAAAC0DAC45861D05C9A780@AM5PR0401MB2545.eurprd04.prod.outlook.com>","References":"<1505807208-9063-1-git-send-email-eric.auger@redhat.com>\n\t<1505807208-9063-11-git-send-email-eric.auger@redhat.com>\n\t<4cecfa75-c97a-586b-aadf-9b0bfd168960@caviumnetworks.com>","In-Reply-To":"<4cecfa75-c97a-586b-aadf-9b0bfd168960@caviumnetworks.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"oIKjx+tJ\";\n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=bharat.bhushan@nxp.com; "],"x-originating-ip":"[192.88.169.1]","x-ms-publictraffictype":"Email","x-microsoft-exchange-diagnostics":"1; AM5PR0401MB2547;\n\t6:ZBskTmZjP9tIvKJIQaLbsQKaWOUwXGY/PiPZ5tVo3npy7U7+XYIoZe0kPLwGtQHI3Jo28OAQv3eYVzg72Hx4a3hjTWbIqMwY6arycM9yUtn0xWljHTwIhc5bla0pYzLSjObZlPHrbaFn95K1rNrZaJDhdHRrGYUD112KeDCZLaI4XuSMYSQGIEv4jRx7zdEtPyu2ZDCc570n4Za5YW9sR9wI28KIryRfbNgNe07CHaOpdkus/aiZ+7m+V6KAh1TJZF8ZhWMSS6AB/Wo+cQh0lPqN8SoU1ApbbFjO4/k2w7NPZmLmCCfIHPzp+JFwQhYLR13TVB0tMGdceYwuHZlZhg==;\n\t5:IsSJoMtAnKfNp8OmvtJwtZYH0JdhxFIL0dseaQg+oOF9VxnhpiamX9BMwTJMkmtwzL9TG46+t3jvv7WDwu3Zj/bOGVQIw1+SpvViAbraBJWPpNnMioQpCZmW+x54sUs0P6xb6wcI1etfOsw5naRM+A==;\n\t24:sI1/s7R4it8B6jZGnnTsScbz/QRp5N9bKV94ELvvrIBd0DV0PiQ0c2oPD+wCUKBidcA+FsHK0ITW1o4MwHoLhc0DoeJmafiMtbohLTp39II=;\n\t7:+MClfixmgkzooWSVP7z6L1GOtVBql1WXkEUkgcLJzdQsGhI0MTq+McazA3OxzTHha7Uv3LPepT81l690N8cujDYy4YAoH76tUGunaGf10mRroTGUYAdv8EvBE0oYQX0PB6Kr2fA05L40pKhZ5uDw//wlzbxGEFpc3Jt8Cock+JQNod6LkG42g6fHUf5S3q1ud0YxdSVP4FzB33Oj64zsWgISdUbZVQatixOIDCDvVEs=","x-ms-exchange-antispam-srfa-diagnostics":"SSOS;","x-ms-office365-filtering-correlation-id":"92f952f8-acb4-4297-9ad1-08d50597054e","x-ms-office365-filtering-ht":"Tenant","x-microsoft-antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:AM5PR0401MB2547; ","x-ms-traffictypediagnostic":"AM5PR0401MB2547:","x-exchange-antispam-report-test":"UriScan:(180628864354917)(185117386973197)(228905959029699); ","x-microsoft-antispam-prvs":"<AM5PR0401MB2547BE77812BBAD636FD46819A780@AM5PR0401MB2547.eurprd04.prod.outlook.com>","x-exchange-antispam-report-cfa-test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:AM5PR0401MB2547; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:AM5PR0401MB2547; ","x-forefront-prvs":"04433051BF","x-forefront-antispam-report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(376002)(346002)(189002)(24454002)(13464003)(199003)(377454003)(68736007)(105586002)(106356001)(2900100001)(39060400002)(97736004)(99286003)(55016002)(9686003)(6246003)(86362001)(53546010)(5250100002)(33656002)(53936002)(101416001)(14454004)(6116002)(3846002)(25786009)(2501003)(50986999)(54356999)(76176999)(102836003)(229853002)(7696004)(66066001)(5660300001)(54906003)(7736002)(2906002)(6506006)(3660700001)(6436002)(7416002)(316002)(110136005)(81166006)(81156014)(8676002)(2950100002)(305945005)(189998001)(74316002)(2201001)(8936002)(3280700002)(4326008)(478600001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0401MB2547;\n\tH:AM5PR0401MB2545.eurprd04.prod.outlook.com; FPR:; SPF:None;\n\tPTR:InfoNoRecords; MX:1; A:1; LANG:en; ","received-spf":"None (protection.outlook.com: nxp.com does not designate\n\tpermitted sender hosts)","spamdiagnosticoutput":"1:99","spamdiagnosticmetadata":"NSPM","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-originalarrivaltime":"27 Sep 2017 11:00:52.9250\n\t(UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"AM5PR0401MB2547","X-detected-operating-system":"by eggs.gnu.org: Windows 7 or 8 [fuzzy]","X-Received-From":"104.47.1.46","Subject":"Re: [Qemu-devel] [RFC v4 10/16] virtio-iommu: Implement probe\n\trequest","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"\"wei@redhat.com\" <wei@redhat.com>,\n\t\"kevin.tian@intel.com\" <kevin.tian@intel.com>,\n\t\"marc.zyngier@arm.com\" <marc.zyngier@arm.com>,\n\t\"will.deacon@arm.com\" <will.deacon@arm.com>,\n\t\"drjones@redhat.com\" <drjones@redhat.com>,\n\t\"peterx@redhat.com\" <peterx@redhat.com>,\n\t\"linuc.decode@gmail.com\" <linuc.decode@gmail.com>,\n\t\"christoffer.dall@linaro.org\" <christoffer.dall@linaro.org>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1776435,"web_url":"http://patchwork.ozlabs.org/comment/1776435/","msgid":"<3213d48c-c2ec-5728-bc39-d46c60c4e028@redhat.com>","list_archive_url":null,"date":"2017-09-27T15:40:43","subject":"Re: [Qemu-devel] [RFC v4 10/16] virtio-iommu: Implement probe\n\trequest","submitter":{"id":69187,"url":"http://patchwork.ozlabs.org/api/people/69187/","name":"Eric Auger","email":"eric.auger@redhat.com"},"content":"Hi Tomasz,\nOn 27/09/2017 12:53, Tomasz Nowicki wrote:\n> Hi Eric,\n> \n> On 19.09.2017 09:46, Eric Auger wrote:\n>> This patch implements the PROBE request. At the moment,\n>> no reserved regions are returned.\n>>\n>> At the moment reserved regions are stored per device.\n>>\n>> Signed-off-by: Eric Auger <eric.auger@redhat.com>\n>>\n>> ---\n>>\n> \n> [...]\n> \n>> +\n>> +static int virtio_iommu_fill_property(int devid, int type,\n>> +                                      viommu_property_buffer *bufstate)\n>> +{\n>> +    int ret = -ENOSPC;\n>> +\n>> +    if (bufstate->filled + 4 >= VIOMMU_PROBE_SIZE) {\n>> +        bufstate->error = true;\n>> +        goto out;\n>> +    }\n>> +\n>> +    switch (type) {\n>> +    case VIRTIO_IOMMU_PROBE_T_NONE:\n>> +        ret = virtio_iommu_fill_none_prop(bufstate);\n>> +        break;\n>> +    case VIRTIO_IOMMU_PROBE_T_RESV_MEM:\n>> +    {\n>> +        viommu_dev *dev = bufstate->dev;\n>> +\n>> +        g_tree_foreach(dev->reserved_regions,\n>> +                       virtio_iommu_fill_resv_mem_prop,\n>> +                       bufstate);\n>> +        if (!bufstate->error) {\n>> +            ret = 0;\n>> +        }\n>> +        break;\n>> +    }\n>> +    default:\n>> +        ret = -ENOENT;\n>> +        break;\n>> +    }\n>> +out:\n>> +    if (ret) {\n>> +        error_report(\"%s property of type=%d could not be filled (%d),\"\n>> +                     \" remaining size = 0x%lx\",\n>> +                     __func__, type, ret, bufstate->filled);\n>> +    }\n>> +    return ret;\n>> +}\n>> +\n>> +static int virtio_iommu_probe(VirtIOIOMMU *s,\n>> +                              struct virtio_iommu_req_probe *req,\n>> +                              uint8_t *buf)\n>> +{\n>> +    uint32_t devid = le32_to_cpu(req->device);\n>> +    int16_t prop_types = SUPPORTED_PROBE_PROPERTIES, type;\n>> +    viommu_property_buffer bufstate;\n>> +    viommu_dev *dev;\n>> +    int ret;\n>> +\n>> +    dev = g_tree_lookup(s->devices, GUINT_TO_POINTER(devid));\n>> +    if (!dev) {\n>> +        return -EINVAL;\n>> +    }\n>> +\n>> +    bufstate.start = buf;\n>> +    bufstate.filled = 0;\n>> +    bufstate.dev = dev;\n> \n> bufstate.error is not initialized which may cause false alarm in\n> virtio_iommu_fill_property()\nthanks for spotting that. I owe you several fixes in both vsmmuv3 and\nvirtio-iommu. Thank you for testing, again!\n\nBest Regards\n\nEric\n> \n>> +\n>> +    while ((type = ctz32(prop_types)) != 32) {\n>> +        ret = virtio_iommu_fill_property(devid, 1 << type, &bufstate);\n>> +        if (ret) {\n>> +            break;\n>> +        }\n>> +        prop_types &= ~(1 << type);\n>> +    }\n>> +    virtio_iommu_fill_property(devid, VIRTIO_IOMMU_PROBE_T_NONE,\n>> &bufstate);\n>> +\n>> +    return VIRTIO_IOMMU_S_OK;\n>> +}\n>> +\n>>   #define get_payload_size(req) (\\\n>>   sizeof((req)) - sizeof(struct virtio_iommu_req_tail))\n>>   @@ -433,6 +567,24 @@ static int\n>> virtio_iommu_handle_unmap(VirtIOIOMMU *s,\n>>       return virtio_iommu_unmap(s, &req);\n>>   }\n> \n> Thanks,\n> Tomasz\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx01.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx01.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=eric.auger@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y2MW51Nhgz9tXb\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 28 Sep 2017 01:41:37 +1000 (AEST)","from localhost ([::1]:55287 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dxESs-0000BB-Qd\n\tfor incoming@patchwork.ozlabs.org; Wed, 27 Sep 2017 11:41:34 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:39944)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <eric.auger@redhat.com>) id 1dxEST-00006y-0h\n\tfor qemu-devel@nongnu.org; Wed, 27 Sep 2017 11:41:14 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <eric.auger@redhat.com>) id 1dxESS-0005Bb-1y\n\tfor qemu-devel@nongnu.org; Wed, 27 Sep 2017 11:41:09 -0400","from mx1.redhat.com ([209.132.183.28]:50090)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <eric.auger@redhat.com>)\n\tid 1dxESN-000592-2C; Wed, 27 Sep 2017 11:41:03 -0400","from smtp.corp.redhat.com\n\t(int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id EBE0C6B23A;\n\tWed, 27 Sep 2017 15:41:01 +0000 (UTC)","from localhost.localdomain (ovpn-116-163.ams2.redhat.com\n\t[10.36.116.163])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 385FD5ED20;\n\tWed, 27 Sep 2017 15:40:44 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com EBE0C6B23A","To":"Tomasz Nowicki <tnowicki@caviumnetworks.com>, eric.auger.pro@gmail.com, \n\tpeter.maydell@linaro.org, alex.williamson@redhat.com, mst@redhat.com,\n\tqemu-arm@nongnu.org, qemu-devel@nongnu.org, jean-philippe.brucker@arm.com","References":"<1505807208-9063-1-git-send-email-eric.auger@redhat.com>\n\t<1505807208-9063-11-git-send-email-eric.auger@redhat.com>\n\t<4cecfa75-c97a-586b-aadf-9b0bfd168960@caviumnetworks.com>","From":"Auger Eric <eric.auger@redhat.com>","Message-ID":"<3213d48c-c2ec-5728-bc39-d46c60c4e028@redhat.com>","Date":"Wed, 27 Sep 2017 17:40:43 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tThunderbird/45.4.0","MIME-Version":"1.0","In-Reply-To":"<4cecfa75-c97a-586b-aadf-9b0bfd168960@caviumnetworks.com>","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"7bit","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.14","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.25]);\n\tWed, 27 Sep 2017 15:41:02 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [RFC v4 10/16] virtio-iommu: Implement probe\n\trequest","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"wei@redhat.com, kevin.tian@intel.com, marc.zyngier@arm.com,\n\twill.deacon@arm.com, drjones@redhat.com, peterx@redhat.com,\n\tlinuc.decode@gmail.com, bharat.bhushan@nxp.com,\n\tchristoffer.dall@linaro.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1776436,"web_url":"http://patchwork.ozlabs.org/comment/1776436/","msgid":"<b2a49727-0a49-ed75-daec-a32b79ae6b2e@redhat.com>","list_archive_url":null,"date":"2017-09-27T15:44:13","subject":"Re: [Qemu-devel] [RFC v4 10/16] virtio-iommu: Implement probe\n\trequest","submitter":{"id":69187,"url":"http://patchwork.ozlabs.org/api/people/69187/","name":"Eric Auger","email":"eric.auger@redhat.com"},"content":"Hi Bharat,\n\nOn 27/09/2017 13:00, Bharat Bhushan wrote:\n> \n> \n>> -----Original Message-----\n>> From: Tomasz Nowicki [mailto:tnowicki@caviumnetworks.com]\n>> Sent: Wednesday, September 27, 2017 4:23 PM\n>> To: Eric Auger <eric.auger@redhat.com>; eric.auger.pro@gmail.com;\n>> peter.maydell@linaro.org; alex.williamson@redhat.com; mst@redhat.com;\n>> qemu-arm@nongnu.org; qemu-devel@nongnu.org; jean-\n>> philippe.brucker@arm.com\n>> Cc: will.deacon@arm.com; kevin.tian@intel.com; marc.zyngier@arm.com;\n>> christoffer.dall@linaro.org; drjones@redhat.com; wei@redhat.com; Bharat\n>> Bhushan <bharat.bhushan@nxp.com>; peterx@redhat.com;\n>> linuc.decode@gmail.com\n>> Subject: Re: [RFC v4 10/16] virtio-iommu: Implement probe request\n>>\n>> Hi Eric,\n>>\n>> On 19.09.2017 09:46, Eric Auger wrote:\n>>> This patch implements the PROBE request. At the moment, no reserved\n>>> regions are returned.\n>>>\n>>> At the moment reserved regions are stored per device.\n>>>\n>>> Signed-off-by: Eric Auger <eric.auger@redhat.com>\n>>>\n>>> ---\n>>>\n>>\n>> [...]\n>>\n>>> +\n>>> +static int virtio_iommu_fill_property(int devid, int type,\n>>> +                                      viommu_property_buffer\n>>> +*bufstate) {\n>>> +    int ret = -ENOSPC;\n>>> +\n>>> +    if (bufstate->filled + 4 >= VIOMMU_PROBE_SIZE) {\n>>> +        bufstate->error = true;\n>>> +        goto out;\n>>> +    }\n>>> +\n>>> +    switch (type) {\n>>> +    case VIRTIO_IOMMU_PROBE_T_NONE:\n>>> +        ret = virtio_iommu_fill_none_prop(bufstate);\n>>> +        break;\n>>> +    case VIRTIO_IOMMU_PROBE_T_RESV_MEM:\n>>> +    {\n>>> +        viommu_dev *dev = bufstate->dev;\n>>> +\n>>> +        g_tree_foreach(dev->reserved_regions,\n>>> +                       virtio_iommu_fill_resv_mem_prop,\n>>> +                       bufstate);\n>>> +        if (!bufstate->error) {\n>>> +            ret = 0;\n>>> +        }\n>>> +        break;\n>>> +    }\n>>> +    default:\n>>> +        ret = -ENOENT;\n>>> +        break;\n>>> +    }\n>>> +out:\n>>> +    if (ret) {\n>>> +        error_report(\"%s property of type=%d could not be filled (%d),\"\n>>> +                     \" remaining size = 0x%lx\",\n>>> +                     __func__, type, ret, bufstate->filled);\n>>> +    }\n>>> +    return ret;\n>>> +}\n>>> +\n>>> +static int virtio_iommu_probe(VirtIOIOMMU *s,\n>>> +                              struct virtio_iommu_req_probe *req,\n>>> +                              uint8_t *buf) {\n>>> +    uint32_t devid = le32_to_cpu(req->device);\n>>> +    int16_t prop_types = SUPPORTED_PROBE_PROPERTIES, type;\n>>> +    viommu_property_buffer bufstate;\n>>> +    viommu_dev *dev;\n>>> +    int ret;\n>>> +\n>>> +    dev = g_tree_lookup(s->devices, GUINT_TO_POINTER(devid));\n>>> +    if (!dev) {\n>>> +        return -EINVAL;\n>>> +    }\n>>> +\n>>> +    bufstate.start = buf;\n>>> +    bufstate.filled = 0;\n>>> +    bufstate.dev = dev;\n>>\n>> bufstate.error is not initialized which may cause false alarm in\n>> virtio_iommu_fill_property()\n> \n> I observed below prints \n> \t \"qemu-system-aarch64: virtio_iommu_fill_property property of type=2 could not be filled (-28), remaining size = 0x0 \"\n> \n> When I initialized the bufstate.error = 0,it goes.\n\nSure, I will fix that soon.\n\nBest Regards\n\nEric\n> \n> Thanks\n> -Bharat\n> \n>>\n>>> +\n>>> +    while ((type = ctz32(prop_types)) != 32) {\n>>> +        ret = virtio_iommu_fill_property(devid, 1 << type, &bufstate);\n>>> +        if (ret) {\n>>> +            break;\n>>> +        }\n>>> +        prop_types &= ~(1 << type);\n>>> +    }\n>>> +    virtio_iommu_fill_property(devid, VIRTIO_IOMMU_PROBE_T_NONE,\n>>> + &bufstate);\n>>> +\n>>> +    return VIRTIO_IOMMU_S_OK;\n>>> +}\n>>> +\n>>>   #define get_payload_size(req) (\\\n>>>   sizeof((req)) - sizeof(struct virtio_iommu_req_tail))\n>>>\n>>> @@ -433,6 +567,24 @@ static int\n>> virtio_iommu_handle_unmap(VirtIOIOMMU *s,\n>>>       return virtio_iommu_unmap(s, &req);\n>>>   }\n>>\n>> Thanks,\n>> Tomasz","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx03.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx03.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=eric.auger@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y2Mb05Zqlz9tXw\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 28 Sep 2017 01:45:00 +1000 (AEST)","from localhost ([::1]:55298 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dxEWA-0001AX-Te\n\tfor incoming@patchwork.ozlabs.org; Wed, 27 Sep 2017 11:44:58 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:40925)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <eric.auger@redhat.com>) id 1dxEVo-00017g-68\n\tfor qemu-devel@nongnu.org; Wed, 27 Sep 2017 11:44:37 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <eric.auger@redhat.com>) id 1dxEVm-00075n-GH\n\tfor qemu-devel@nongnu.org; Wed, 27 Sep 2017 11:44:36 -0400","from mx1.redhat.com ([209.132.183.28]:40402)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <eric.auger@redhat.com>)\n\tid 1dxEVh-00072z-I2; Wed, 27 Sep 2017 11:44:29 -0400","from smtp.corp.redhat.com\n\t(int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 78A57B4C36;\n\tWed, 27 Sep 2017 15:44:28 +0000 (UTC)","from localhost.localdomain (ovpn-116-163.ams2.redhat.com\n\t[10.36.116.163])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id BBCFDE8181;\n\tWed, 27 Sep 2017 15:44:15 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 78A57B4C36","To":"Bharat Bhushan <bharat.bhushan@nxp.com>,\n\tTomasz Nowicki <tnowicki@caviumnetworks.com>,\n\t\"eric.auger.pro@gmail.com\" <eric.auger.pro@gmail.com>,\n\t\"peter.maydell@linaro.org\" <peter.maydell@linaro.org>,\n\t\"alex.williamson@redhat.com\" <alex.williamson@redhat.com>,\n\t\"mst@redhat.com\" <mst@redhat.com>, \"qemu-arm@nongnu.org\"\n\t<qemu-arm@nongnu.org>, \"qemu-devel@nongnu.org\" <qemu-devel@nongnu.org>,\n\t\"jean-philippe.brucker@arm.com\" <jean-philippe.brucker@arm.com>","References":"<1505807208-9063-1-git-send-email-eric.auger@redhat.com>\n\t<1505807208-9063-11-git-send-email-eric.auger@redhat.com>\n\t<4cecfa75-c97a-586b-aadf-9b0bfd168960@caviumnetworks.com>\n\t<AM5PR0401MB254589AAAAC0DAC45861D05C9A780@AM5PR0401MB2545.eurprd04.prod.outlook.com>","From":"Auger Eric <eric.auger@redhat.com>","Message-ID":"<b2a49727-0a49-ed75-daec-a32b79ae6b2e@redhat.com>","Date":"Wed, 27 Sep 2017 17:44:13 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tThunderbird/45.4.0","MIME-Version":"1.0","In-Reply-To":"<AM5PR0401MB254589AAAAC0DAC45861D05C9A780@AM5PR0401MB2545.eurprd04.prod.outlook.com>","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"7bit","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.13","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.27]);\n\tWed, 27 Sep 2017 15:44:28 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [RFC v4 10/16] virtio-iommu: Implement probe\n\trequest","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"\"wei@redhat.com\" <wei@redhat.com>,\n\t\"kevin.tian@intel.com\" <kevin.tian@intel.com>,\n\t\"marc.zyngier@arm.com\" <marc.zyngier@arm.com>,\n\t\"will.deacon@arm.com\" <will.deacon@arm.com>,\n\t\"drjones@redhat.com\" <drjones@redhat.com>,\n\t\"peterx@redhat.com\" <peterx@redhat.com>,\n\t\"linuc.decode@gmail.com\" <linuc.decode@gmail.com>,\n\t\"christoffer.dall@linaro.org\" <christoffer.dall@linaro.org>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]