From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4FACC07E95 for ; Wed, 7 Jul 2021 09:32:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8AE6461C6D for ; Wed, 7 Jul 2021 09:32:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231225AbhGGJf2 (ORCPT ); Wed, 7 Jul 2021 05:35:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:35253 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230429AbhGGJf0 (ORCPT ); Wed, 7 Jul 2021 05:35:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1625650366; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6o/7kaTqPTYt2A7Z0zjqMN0nvm6hpJh6BNtPQwdwRLU=; b=eDKqwYSv5XLoCZ3Jc4IVpTeElT2YSRmraFa//83/s2yWBvBqxqKd0iT4UH8gP5c8u4C3bv UVOR+Rls3e6hK1eTjfq/C0qHX2Sj1lCRm53WUubLGaVh6fxKBrWAJ3M0QBmYqhwgSQkPSh FmKG2Ol6mBesZZ5T/sjM1ols3lRSpsI= Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-407-OHPFkpJwNdOcePrOXjVucw-1; Wed, 07 Jul 2021 05:32:45 -0400 X-MC-Unique: OHPFkpJwNdOcePrOXjVucw-1 Received: by mail-pg1-f200.google.com with SMTP id m13-20020a633f0d0000b0290222ece48979so1316356pga.1 for ; Wed, 07 Jul 2021 02:32:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=6o/7kaTqPTYt2A7Z0zjqMN0nvm6hpJh6BNtPQwdwRLU=; b=AeEzDuFO8LI2wvohn+ArUBqKKtLEVjsl/QhegLy0JG48LOk1EZiShkt4l3ZLrfhyCq 2AT4WooJSk++u4JujJRG2kL9CmAq/haELIxgjZ2A/QDDWf5knOuj8JUGMI5SN6Vanh27 hykfyju8F8kDfQeJqnR9Jt9pFk0X1ZsiSssH5lz1mQoJbqcOBYuZ7MJP13hn7wD69fIv AmcAq9YihqOvU4HkoIZ7VB5Dx0llrbeLaXIN1vr7Qcq8OrulbiukUGPG6Ab42WG8n12p V8VjAFfQTFZDdwbm6k/lVZWVSzohCocqlaxaHm0gAHdHBTSRrNLmQyX1hMsNSPO0KURV t34A== X-Gm-Message-State: AOAM533Ews7QQY4J7cpHT8dq1SFudoT+ngkkeFqjaZNxwnsE9YDSGDoe ZiNYBGm48DWFjK8QNt2a9H0aJ5ZUReehiBmZ2uEf5D+evxJPuAEW5aUOeMv+bqaD6x9QCByP5lC g9UYomwBTdFZc9XlbChANI6SdmmMMes+W4CMB3qb8CWumIppCEspUvubQWRLL0eZe6X46zygufJ ng X-Received: by 2002:a63:d908:: with SMTP id r8mr25178244pgg.414.1625649863953; Wed, 07 Jul 2021 02:24:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzhom9V3zcwokImKdubLhhEYAw1OEUfXMki4J5NNqR0Ed07VLuH+WgHu4YOpQSJUGm/lh1JIQ== X-Received: by 2002:a63:d908:: with SMTP id r8mr25178193pgg.414.1625649863513; Wed, 07 Jul 2021 02:24:23 -0700 (PDT) Received: from wangxiaodeMacBook-Air.local ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id md15sm5946056pjb.30.2021.07.07.02.24.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 07 Jul 2021 02:24:23 -0700 (PDT) Subject: Re: [PATCH v8 10/10] Documentation: Add documentation for VDUSE To: Stefan Hajnoczi References: <8320d26d-6637-85c6-8773-49553dfa502d@redhat.com> <5b5107fa-3b32-8a3b-720d-eee6b2a84ace@redhat.com> <100e6788-7fdf-1505-d69c-bc28a8bc7a78@redhat.com> Cc: Xie Yongji , "Michael S. Tsirkin" , Stefano Garzarella , Parav Pandit , Christoph Hellwig , Christian Brauner , Randy Dunlap , Matthew Wilcox , Al Viro , Jens Axboe , "bcrl@kvack.org" , Jonathan Corbet , =?UTF-8?Q?Mika_Penttil=c3=a4?= , Dan Carpenter , joro@8bytes.org, gregkh@linuxfoundation.org, "songmuchun@bytedance.com" , virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, kvm@vger.kernel.org, linux-fsdevel@vger.kernel.org, "iommu@lists.linux-foundation.org" , linux-kernel From: Jason Wang Message-ID: Date: Wed, 7 Jul 2021 17:24:08 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 在 2021/7/7 下午4:55, Stefan Hajnoczi 写道: > On Wed, Jul 07, 2021 at 11:43:28AM +0800, Jason Wang wrote: >> 在 2021/7/7 上午1:11, Stefan Hajnoczi 写道: >>> On Tue, Jul 06, 2021 at 09:08:26PM +0800, Jason Wang wrote: >>>> On Tue, Jul 6, 2021 at 6:15 PM Stefan Hajnoczi wrote: >>>>> On Tue, Jul 06, 2021 at 10:34:33AM +0800, Jason Wang wrote: >>>>>> 在 2021/7/5 下午8:49, Stefan Hajnoczi 写道: >>>>>>> On Mon, Jul 05, 2021 at 11:36:15AM +0800, Jason Wang wrote: >>>>>>>> 在 2021/7/4 下午5:49, Yongji Xie 写道: >>>>>>>>>>> OK, I get you now. Since the VIRTIO specification says "Device >>>>>>>>>>> configuration space is generally used for rarely-changing or >>>>>>>>>>> initialization-time parameters". I assume the VDUSE_DEV_SET_CONFIG >>>>>>>>>>> ioctl should not be called frequently. >>>>>>>>>> The spec uses MUST and other terms to define the precise requirements. >>>>>>>>>> Here the language (especially the word "generally") is weaker and means >>>>>>>>>> there may be exceptions. >>>>>>>>>> >>>>>>>>>> Another type of access that doesn't work with the VDUSE_DEV_SET_CONFIG >>>>>>>>>> approach is reads that have side-effects. For example, imagine a field >>>>>>>>>> containing an error code if the device encounters a problem unrelated to >>>>>>>>>> a specific virtqueue request. Reading from this field resets the error >>>>>>>>>> code to 0, saving the driver an extra configuration space write access >>>>>>>>>> and possibly race conditions. It isn't possible to implement those >>>>>>>>>> semantics suing VDUSE_DEV_SET_CONFIG. It's another corner case, but it >>>>>>>>>> makes me think that the interface does not allow full VIRTIO semantics. >>>>>>>> Note that though you're correct, my understanding is that config space is >>>>>>>> not suitable for this kind of error propagating. And it would be very hard >>>>>>>> to implement such kind of semantic in some transports. Virtqueue should be >>>>>>>> much better. As Yong Ji quoted, the config space is used for >>>>>>>> "rarely-changing or intialization-time parameters". >>>>>>>> >>>>>>>> >>>>>>>>> Agreed. I will use VDUSE_DEV_GET_CONFIG in the next version. And to >>>>>>>>> handle the message failure, I'm going to add a return value to >>>>>>>>> virtio_config_ops.get() and virtio_cread_* API so that the error can >>>>>>>>> be propagated to the virtio device driver. Then the virtio-blk device >>>>>>>>> driver can be modified to handle that. >>>>>>>>> >>>>>>>>> Jason and Stefan, what do you think of this way? >>>>>>> Why does VDUSE_DEV_GET_CONFIG need to support an error return value? >>>>>>> >>>>>>> The VIRTIO spec provides no way for the device to report errors from >>>>>>> config space accesses. >>>>>>> >>>>>>> The QEMU virtio-pci implementation returns -1 from invalid >>>>>>> virtio_config_read*() and silently discards virtio_config_write*() >>>>>>> accesses. >>>>>>> >>>>>>> VDUSE can take the same approach with >>>>>>> VDUSE_DEV_GET_CONFIG/VDUSE_DEV_SET_CONFIG. >>>>>>> >>>>>>>> I'd like to stick to the current assumption thich get_config won't fail. >>>>>>>> That is to say, >>>>>>>> >>>>>>>> 1) maintain a config in the kernel, make sure the config space read can >>>>>>>> always succeed >>>>>>>> 2) introduce an ioctl for the vduse usersapce to update the config space. >>>>>>>> 3) we can synchronize with the vduse userspace during set_config >>>>>>>> >>>>>>>> Does this work? >>>>>>> I noticed that caching is also allowed by the vhost-user protocol >>>>>>> messages (QEMU's docs/interop/vhost-user.rst), but the device doesn't >>>>>>> know whether or not caching is in effect. The interface you outlined >>>>>>> above requires caching. >>>>>>> >>>>>>> Is there a reason why the host kernel vDPA code needs to cache the >>>>>>> configuration space? >>>>>> Because: >>>>>> >>>>>> 1) Kernel can not wait forever in get_config(), this is the major difference >>>>>> with vhost-user. >>>>> virtio_cread() can sleep: >>>>> >>>>> #define virtio_cread(vdev, structname, member, ptr) \ >>>>> do { \ >>>>> typeof(((structname*)0)->member) virtio_cread_v; \ >>>>> \ >>>>> might_sleep(); \ >>>>> ^^^^^^^^^^^^^^ >>>>> >>>>> Which code path cannot sleep? >>>> Well, it can sleep but it can't sleep forever. For VDUSE, a >>>> buggy/malicious userspace may refuse to respond to the get_config. >>>> >>>> It looks to me the ideal case, with the current virtio spec, for VDUSE is to >>>> >>>> 1) maintain the device and its state in the kernel, userspace may sync >>>> with the kernel device via ioctls >>>> 2) offload the datapath (virtqueue) to the userspace >>>> >>>> This seems more robust and safe than simply relaying everything to >>>> userspace and waiting for its response. >>>> >>>> And we know for sure this model can work, an example is TUN/TAP: >>>> netdevice is abstracted in the kernel and datapath is done via >>>> sendmsg()/recvmsg(). >>>> >>>> Maintaining the config in the kernel follows this model and it can >>>> simplify the device generation implementation. >>>> >>>> For config space write, it requires more thought but fortunately it's >>>> not commonly used. So VDUSE can choose to filter out the >>>> device/features that depends on the config write. >>> This is the problem. There are other messages like SET_FEATURES where I >>> guess we'll face the same challenge. >> >> Probably not, userspace device can tell the kernel about the device_features >> and mandated_features during creation, and the feature negotiation could be >> done purely in the kernel without bothering the userspace. (For some reason I drop the list accidentally, adding them back, sorry) > Sorry, I confused the messages. I meant SET_STATUS. It's a synchronous > interface where the driver waits for the device. It depends on how we define "synchronous" here. If I understand correctly, the spec doesn't expect there will be any kind of failure for the operation of set_status itself. Instead, anytime it want any synchronization, it should be done via get_status(): 1) re-read device status to make sure FEATURES_OK is set during feature negotiation 2) re-read device status to be 0 to make sure the device has finish the reset > > VDUSE currently doesn't wait for the device emulation process to handle > this message (no reply is needed) but I think this is a mistake because > VDUSE is not following the VIRTIO device model. With the trick that is done for FEATURES_OK above, I think we don't need to wait for the reply. If userspace takes too long to respond, it can be detected since get_status() doesn't return the expected value for long time. And for the case that needs a timeout, we probably can use NEEDS_RESET. > > I strongly suggest designing the VDUSE interface to match the VIRTIO > device model (or at least the vDPA interface). I fully agree with you and that is what we want to achieve in this series. > Defining a custom > interface for VDUSE avoids some implementation complexity and makes it > easier to deal with untrusted userspace, but it's impossible to > implement certain VIRTIO features or devices. It also fragments VIRTIO > more than necessary; we have a standard, let's stick to it. Yes. > >>> I agree that caching the contents of configuration space in the kernel >>> helps, but if there are other VDUSE messages with the same problem then >>> an attacker will exploit them instead. >>> >>> I think a systematic solution is needed. It would be necessary to >>> enumerate the virtio_vdpa and vhost_vdpa cases separately to figure out >>> where VDUSE messages are synchronous/time-sensitive. >> >> This is the case of reset and needs more thought. We should stick a >> consistent uAPI for the userspace. >> >> For vhost-vDPA, it needs synchronzied with the userspace and we can wait for >> ever. > The VMM should still be able to handle signals when a vhost_vdpa ioctl > is waiting for a reply from the VDUSE userspace process. Or if that's > not possible then there needs to be a way to force disconnection from > VDUSE so the VMM can be killed. Note that VDUSE works under vDPA bus, so vhost should be transport to VDUSE. But we can detect this via whether or not the bounce buffer is used. Thanks > > Stefan From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,URIBL_RED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C4079C07E95 for ; Wed, 7 Jul 2021 09:24:32 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 746FB61CB6 for ; Wed, 7 Jul 2021 09:24:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 746FB61CB6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 2AAF583294; Wed, 7 Jul 2021 09:24:32 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fzgbjnVmiWel; Wed, 7 Jul 2021 09:24:31 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id D346583267; Wed, 7 Jul 2021 09:24:30 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 9165CC0010; Wed, 7 Jul 2021 09:24:30 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 50B09C000E for ; Wed, 7 Jul 2021 09:24:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 3D5A4403CA for ; Wed, 7 Jul 2021 09:24:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp4.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=redhat.com Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4U8eoqSWb4ze for ; Wed, 7 Jul 2021 09:24:27 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id 9FDC6404C3 for ; Wed, 7 Jul 2021 09:24:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1625649866; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6o/7kaTqPTYt2A7Z0zjqMN0nvm6hpJh6BNtPQwdwRLU=; b=PEqfqG2XBjTCw7LkQlYzgMpHLYo6w4Box9Gb+q8OD1yb7il+iHK4rR0j+f63idu5baECOl isg8Idgfll1aXFd/d6/tZOBEq8Re/jZwatma3TrSEUhURQkI4ALgfGDQaw+D1f6y9u50pR TfSU6Nvu3oBS/agDMgtsHp3M3ppRSWk= Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-288-KfIATlnxNHO9_BnvDDNVhw-1; Wed, 07 Jul 2021 05:24:24 -0400 X-MC-Unique: KfIATlnxNHO9_BnvDDNVhw-1 Received: by mail-pl1-f199.google.com with SMTP id u6-20020a1709027146b02901295f4cdfa0so671900plm.12 for ; Wed, 07 Jul 2021 02:24:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=6o/7kaTqPTYt2A7Z0zjqMN0nvm6hpJh6BNtPQwdwRLU=; b=ESLnx/yuZoGFcDXRX9pOQlT9/h+/aTB/bSpRZNjfNa9Eux8+pUYnyz8T9OnZ/rKbGT qAVvvZqbfZaePuCINtadawOcB8nI0OtS8ob96JwiBhMMAl4Y/VLAiHd1zhQtMY9pAe6t d/MzOMoHw+MkN4L5XZ3exa/v2QYgop25DuYf6ovB7jWHq9Z9D+frYII27hO5RhXeVNhm q9cxSw/cUHyqGkCRgP4jTgxfq5i8UAl+ncndyTQidkrdcd1uSARqbBdYQvR6QsL1ROS1 TslWMFgcmv1zqIyRcl3bk5+Zopw6zxSZ0xQROwUNY6wd808hi1jdyKE7qtAiZtuyqgP2 M2hw== X-Gm-Message-State: AOAM531UdEKd69DmfaPUFE84D0QvdqHlz//btCzz4qsGaK2fzWuO9ePS 7Z6zDd4JVgOVxjh7bZNJP/K57UxXGhe+FRbe7oP0pDVk8EEFwb3WryQK5DGXlfaf+f+csTxL+MH dzRs7fwkpou4O56JOyd12JClOhTFYSw== X-Received: by 2002:a63:d908:: with SMTP id r8mr25178231pgg.414.1625649863837; Wed, 07 Jul 2021 02:24:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzhom9V3zcwokImKdubLhhEYAw1OEUfXMki4J5NNqR0Ed07VLuH+WgHu4YOpQSJUGm/lh1JIQ== X-Received: by 2002:a63:d908:: with SMTP id r8mr25178193pgg.414.1625649863513; Wed, 07 Jul 2021 02:24:23 -0700 (PDT) Received: from wangxiaodeMacBook-Air.local ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id md15sm5946056pjb.30.2021.07.07.02.24.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 07 Jul 2021 02:24:23 -0700 (PDT) Subject: Re: [PATCH v8 10/10] Documentation: Add documentation for VDUSE To: Stefan Hajnoczi References: <8320d26d-6637-85c6-8773-49553dfa502d@redhat.com> <5b5107fa-3b32-8a3b-720d-eee6b2a84ace@redhat.com> <100e6788-7fdf-1505-d69c-bc28a8bc7a78@redhat.com> From: Jason Wang Message-ID: Date: Wed, 7 Jul 2021 17:24:08 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" , virtualization@lists.linux-foundation.org, Christian Brauner , Jonathan Corbet , Matthew Wilcox , Christoph Hellwig , Xie Yongji , Dan Carpenter , Stefano Garzarella , Al Viro , "songmuchun@bytedance.com" , Jens Axboe , gregkh@linuxfoundation.org, Randy Dunlap , linux-kernel , "iommu@lists.linux-foundation.org" , "bcrl@kvack.org" , netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, =?UTF-8?Q?Mika_Penttil=c3=a4?= X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" CuWcqCAyMDIxLzcvNyDkuIvljYg0OjU1LCBTdGVmYW4gSGFqbm9jemkg5YaZ6YGTOgo+IE9uIFdl ZCwgSnVsIDA3LCAyMDIxIGF0IDExOjQzOjI4QU0gKzA4MDAsIEphc29uIFdhbmcgd3JvdGU6Cj4+ IOWcqCAyMDIxLzcvNyDkuIrljYgxOjExLCBTdGVmYW4gSGFqbm9jemkg5YaZ6YGTOgo+Pj4gT24g VHVlLCBKdWwgMDYsIDIwMjEgYXQgMDk6MDg6MjZQTSArMDgwMCwgSmFzb24gV2FuZyB3cm90ZToK Pj4+PiBPbiBUdWUsIEp1bCA2LCAyMDIxIGF0IDY6MTUgUE0gU3RlZmFuIEhham5vY3ppIDxzdGVm YW5oYUByZWRoYXQuY29tPiB3cm90ZToKPj4+Pj4gT24gVHVlLCBKdWwgMDYsIDIwMjEgYXQgMTA6 MzQ6MzNBTSArMDgwMCwgSmFzb24gV2FuZyB3cm90ZToKPj4+Pj4+IOWcqCAyMDIxLzcvNSDkuIvl jYg4OjQ5LCBTdGVmYW4gSGFqbm9jemkg5YaZ6YGTOgo+Pj4+Pj4+IE9uIE1vbiwgSnVsIDA1LCAy MDIxIGF0IDExOjM2OjE1QU0gKzA4MDAsIEphc29uIFdhbmcgd3JvdGU6Cj4+Pj4+Pj4+IOWcqCAy MDIxLzcvNCDkuIvljYg1OjQ5LCBZb25namkgWGllIOWGmemBkzoKPj4+Pj4+Pj4+Pj4gT0ssIEkg Z2V0IHlvdSBub3cuIFNpbmNlIHRoZSBWSVJUSU8gc3BlY2lmaWNhdGlvbiBzYXlzICJEZXZpY2UK Pj4+Pj4+Pj4+Pj4gY29uZmlndXJhdGlvbiBzcGFjZSBpcyBnZW5lcmFsbHkgdXNlZCBmb3IgcmFy ZWx5LWNoYW5naW5nIG9yCj4+Pj4+Pj4+Pj4+IGluaXRpYWxpemF0aW9uLXRpbWUgcGFyYW1ldGVy cyIuIEkgYXNzdW1lIHRoZSBWRFVTRV9ERVZfU0VUX0NPTkZJRwo+Pj4+Pj4+Pj4+PiBpb2N0bCBz aG91bGQgbm90IGJlIGNhbGxlZCBmcmVxdWVudGx5Lgo+Pj4+Pj4+Pj4+IFRoZSBzcGVjIHVzZXMg TVVTVCBhbmQgb3RoZXIgdGVybXMgdG8gZGVmaW5lIHRoZSBwcmVjaXNlIHJlcXVpcmVtZW50cy4K Pj4+Pj4+Pj4+PiBIZXJlIHRoZSBsYW5ndWFnZSAoZXNwZWNpYWxseSB0aGUgd29yZCAiZ2VuZXJh bGx5IikgaXMgd2Vha2VyIGFuZCBtZWFucwo+Pj4+Pj4+Pj4+IHRoZXJlIG1heSBiZSBleGNlcHRp b25zLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gQW5vdGhlciB0eXBlIG9mIGFjY2VzcyB0aGF0IGRv ZXNuJ3Qgd29yayB3aXRoIHRoZSBWRFVTRV9ERVZfU0VUX0NPTkZJRwo+Pj4+Pj4+Pj4+IGFwcHJv YWNoIGlzIHJlYWRzIHRoYXQgaGF2ZSBzaWRlLWVmZmVjdHMuIEZvciBleGFtcGxlLCBpbWFnaW5l IGEgZmllbGQKPj4+Pj4+Pj4+PiBjb250YWluaW5nIGFuIGVycm9yIGNvZGUgaWYgdGhlIGRldmlj ZSBlbmNvdW50ZXJzIGEgcHJvYmxlbSB1bnJlbGF0ZWQgdG8KPj4+Pj4+Pj4+PiBhIHNwZWNpZmlj IHZpcnRxdWV1ZSByZXF1ZXN0LiBSZWFkaW5nIGZyb20gdGhpcyBmaWVsZCByZXNldHMgdGhlIGVy cm9yCj4+Pj4+Pj4+Pj4gY29kZSB0byAwLCBzYXZpbmcgdGhlIGRyaXZlciBhbiBleHRyYSBjb25m aWd1cmF0aW9uIHNwYWNlIHdyaXRlIGFjY2Vzcwo+Pj4+Pj4+Pj4+IGFuZCBwb3NzaWJseSByYWNl IGNvbmRpdGlvbnMuIEl0IGlzbid0IHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aG9zZQo+Pj4+Pj4+ Pj4+IHNlbWFudGljcyBzdWluZyBWRFVTRV9ERVZfU0VUX0NPTkZJRy4gSXQncyBhbm90aGVyIGNv cm5lciBjYXNlLCBidXQgaXQKPj4+Pj4+Pj4+PiBtYWtlcyBtZSB0aGluayB0aGF0IHRoZSBpbnRl cmZhY2UgZG9lcyBub3QgYWxsb3cgZnVsbCBWSVJUSU8gc2VtYW50aWNzLgo+Pj4+Pj4+PiBOb3Rl IHRoYXQgdGhvdWdoIHlvdSdyZSBjb3JyZWN0LCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgY29u ZmlnIHNwYWNlIGlzCj4+Pj4+Pj4+IG5vdCBzdWl0YWJsZSBmb3IgdGhpcyBraW5kIG9mIGVycm9y IHByb3BhZ2F0aW5nLiBBbmQgaXQgd291bGQgYmUgdmVyeSBoYXJkCj4+Pj4+Pj4+IHRvIGltcGxl bWVudCBzdWNoIGtpbmQgb2Ygc2VtYW50aWMgaW4gc29tZSB0cmFuc3BvcnRzLiAgVmlydHF1ZXVl IHNob3VsZCBiZQo+Pj4+Pj4+PiBtdWNoIGJldHRlci4gQXMgWW9uZyBKaSBxdW90ZWQsIHRoZSBj b25maWcgc3BhY2UgaXMgdXNlZCBmb3IKPj4+Pj4+Pj4gInJhcmVseS1jaGFuZ2luZyBvciBpbnRp YWxpemF0aW9uLXRpbWUgcGFyYW1ldGVycyIuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBB Z3JlZWQuIEkgd2lsbCB1c2UgVkRVU0VfREVWX0dFVF9DT05GSUcgaW4gdGhlIG5leHQgdmVyc2lv bi4gQW5kIHRvCj4+Pj4+Pj4+PiBoYW5kbGUgdGhlIG1lc3NhZ2UgZmFpbHVyZSwgSSdtIGdvaW5n IHRvIGFkZCBhIHJldHVybiB2YWx1ZSB0bwo+Pj4+Pj4+Pj4gdmlydGlvX2NvbmZpZ19vcHMuZ2V0 KCkgYW5kIHZpcnRpb19jcmVhZF8qIEFQSSBzbyB0aGF0IHRoZSBlcnJvciBjYW4KPj4+Pj4+Pj4+ IGJlIHByb3BhZ2F0ZWQgdG8gdGhlIHZpcnRpbyBkZXZpY2UgZHJpdmVyLiBUaGVuIHRoZSB2aXJ0 aW8tYmxrIGRldmljZQo+Pj4+Pj4+Pj4gZHJpdmVyIGNhbiBiZSBtb2RpZmllZCB0byBoYW5kbGUg dGhhdC4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBKYXNvbiBhbmQgU3RlZmFuLCB3aGF0IGRvIHlvdSB0 aGluayBvZiB0aGlzIHdheT8KPj4+Pj4+PiBXaHkgZG9lcyBWRFVTRV9ERVZfR0VUX0NPTkZJRyBu ZWVkIHRvIHN1cHBvcnQgYW4gZXJyb3IgcmV0dXJuIHZhbHVlPwo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhl IFZJUlRJTyBzcGVjIHByb3ZpZGVzIG5vIHdheSBmb3IgdGhlIGRldmljZSB0byByZXBvcnQgZXJy b3JzIGZyb20KPj4+Pj4+PiBjb25maWcgc3BhY2UgYWNjZXNzZXMuCj4+Pj4+Pj4KPj4+Pj4+PiBU aGUgUUVNVSB2aXJ0aW8tcGNpIGltcGxlbWVudGF0aW9uIHJldHVybnMgLTEgZnJvbSBpbnZhbGlk Cj4+Pj4+Pj4gdmlydGlvX2NvbmZpZ19yZWFkKigpIGFuZCBzaWxlbnRseSBkaXNjYXJkcyB2aXJ0 aW9fY29uZmlnX3dyaXRlKigpCj4+Pj4+Pj4gYWNjZXNzZXMuCj4+Pj4+Pj4KPj4+Pj4+PiBWRFVT RSBjYW4gdGFrZSB0aGUgc2FtZSBhcHByb2FjaCB3aXRoCj4+Pj4+Pj4gVkRVU0VfREVWX0dFVF9D T05GSUcvVkRVU0VfREVWX1NFVF9DT05GSUcuCj4+Pj4+Pj4KPj4+Pj4+Pj4gSSdkIGxpa2UgdG8g c3RpY2sgdG8gdGhlIGN1cnJlbnQgYXNzdW1wdGlvbiB0aGljaCBnZXRfY29uZmlnIHdvbid0IGZh aWwuCj4+Pj4+Pj4+IFRoYXQgaXMgdG8gc2F5LAo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAxKSBtYWludGFp biBhIGNvbmZpZyBpbiB0aGUga2VybmVsLCBtYWtlIHN1cmUgdGhlIGNvbmZpZyBzcGFjZSByZWFk IGNhbgo+Pj4+Pj4+PiBhbHdheXMgc3VjY2VlZAo+Pj4+Pj4+PiAyKSBpbnRyb2R1Y2UgYW4gaW9j dGwgZm9yIHRoZSB2ZHVzZSB1c2Vyc2FwY2UgdG8gdXBkYXRlIHRoZSBjb25maWcgc3BhY2UuCj4+ Pj4+Pj4+IDMpIHdlIGNhbiBzeW5jaHJvbml6ZSB3aXRoIHRoZSB2ZHVzZSB1c2Vyc3BhY2UgZHVy aW5nIHNldF9jb25maWcKPj4+Pj4+Pj4KPj4+Pj4+Pj4gRG9lcyB0aGlzIHdvcms/Cj4+Pj4+Pj4g SSBub3RpY2VkIHRoYXQgY2FjaGluZyBpcyBhbHNvIGFsbG93ZWQgYnkgdGhlIHZob3N0LXVzZXIg cHJvdG9jb2wKPj4+Pj4+PiBtZXNzYWdlcyAoUUVNVSdzIGRvY3MvaW50ZXJvcC92aG9zdC11c2Vy LnJzdCksIGJ1dCB0aGUgZGV2aWNlIGRvZXNuJ3QKPj4+Pj4+PiBrbm93IHdoZXRoZXIgb3Igbm90 IGNhY2hpbmcgaXMgaW4gZWZmZWN0LiBUaGUgaW50ZXJmYWNlIHlvdSBvdXRsaW5lZAo+Pj4+Pj4+ IGFib3ZlIHJlcXVpcmVzIGNhY2hpbmcuCj4+Pj4+Pj4KPj4+Pj4+PiBJcyB0aGVyZSBhIHJlYXNv biB3aHkgdGhlIGhvc3Qga2VybmVsIHZEUEEgY29kZSBuZWVkcyB0byBjYWNoZSB0aGUKPj4+Pj4+ PiBjb25maWd1cmF0aW9uIHNwYWNlPwo+Pj4+Pj4gQmVjYXVzZToKPj4+Pj4+Cj4+Pj4+PiAxKSBL ZXJuZWwgY2FuIG5vdCB3YWl0IGZvcmV2ZXIgaW4gZ2V0X2NvbmZpZygpLCB0aGlzIGlzIHRoZSBt YWpvciBkaWZmZXJlbmNlCj4+Pj4+PiB3aXRoIHZob3N0LXVzZXIuCj4+Pj4+IHZpcnRpb19jcmVh ZCgpIGNhbiBzbGVlcDoKPj4+Pj4KPj4+Pj4gICAgICNkZWZpbmUgdmlydGlvX2NyZWFkKHZkZXYs IHN0cnVjdG5hbWUsIG1lbWJlciwgcHRyKSAgICAgICAgICAgICAgICAgICAgIFwKPj4+Pj4gICAg ICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICB0eXBlb2YoKChzdHJ1 Y3RuYW1lKikwKS0+bWVtYmVyKSB2aXJ0aW9fY3JlYWRfdjsgICAgICAgIFwKPj4+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICBtaWdodF9zbGVlcCgpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4+Pj4gICAgICAgICAg ICAgICAgICAgICBeXl5eXl5eXl5eXl5eXgo+Pj4+Pgo+Pj4+PiBXaGljaCBjb2RlIHBhdGggY2Fu bm90IHNsZWVwPwo+Pj4+IFdlbGwsIGl0IGNhbiBzbGVlcCBidXQgaXQgY2FuJ3Qgc2xlZXAgZm9y ZXZlci4gRm9yIFZEVVNFLCBhCj4+Pj4gYnVnZ3kvbWFsaWNpb3VzIHVzZXJzcGFjZSBtYXkgcmVm dXNlIHRvIHJlc3BvbmQgdG8gdGhlIGdldF9jb25maWcuCj4+Pj4KPj4+PiBJdCBsb29rcyB0byBt ZSB0aGUgaWRlYWwgY2FzZSwgd2l0aCB0aGUgY3VycmVudCB2aXJ0aW8gc3BlYywgZm9yIFZEVVNF IGlzIHRvCj4+Pj4KPj4+PiAxKSBtYWludGFpbiB0aGUgZGV2aWNlIGFuZCBpdHMgc3RhdGUgaW4g dGhlIGtlcm5lbCwgdXNlcnNwYWNlIG1heSBzeW5jCj4+Pj4gd2l0aCB0aGUga2VybmVsIGRldmlj ZSB2aWEgaW9jdGxzCj4+Pj4gMikgb2ZmbG9hZCB0aGUgZGF0YXBhdGggKHZpcnRxdWV1ZSkgdG8g dGhlIHVzZXJzcGFjZQo+Pj4+Cj4+Pj4gVGhpcyBzZWVtcyBtb3JlIHJvYnVzdCBhbmQgc2FmZSB0 aGFuIHNpbXBseSByZWxheWluZyBldmVyeXRoaW5nIHRvCj4+Pj4gdXNlcnNwYWNlIGFuZCB3YWl0 aW5nIGZvciBpdHMgcmVzcG9uc2UuCj4+Pj4KPj4+PiBBbmQgd2Uga25vdyBmb3Igc3VyZSB0aGlz IG1vZGVsIGNhbiB3b3JrLCBhbiBleGFtcGxlIGlzIFRVTi9UQVA6Cj4+Pj4gbmV0ZGV2aWNlIGlz IGFic3RyYWN0ZWQgaW4gdGhlIGtlcm5lbCBhbmQgZGF0YXBhdGggaXMgZG9uZSB2aWEKPj4+PiBz ZW5kbXNnKCkvcmVjdm1zZygpLgo+Pj4+Cj4+Pj4gTWFpbnRhaW5pbmcgdGhlIGNvbmZpZyBpbiB0 aGUga2VybmVsIGZvbGxvd3MgdGhpcyBtb2RlbCBhbmQgaXQgY2FuCj4+Pj4gc2ltcGxpZnkgdGhl IGRldmljZSBnZW5lcmF0aW9uIGltcGxlbWVudGF0aW9uLgo+Pj4+Cj4+Pj4gRm9yIGNvbmZpZyBz cGFjZSB3cml0ZSwgaXQgcmVxdWlyZXMgbW9yZSB0aG91Z2h0IGJ1dCBmb3J0dW5hdGVseSBpdCdz Cj4+Pj4gbm90IGNvbW1vbmx5IHVzZWQuIFNvIFZEVVNFIGNhbiBjaG9vc2UgdG8gZmlsdGVyIG91 dCB0aGUKPj4+PiBkZXZpY2UvZmVhdHVyZXMgdGhhdCBkZXBlbmRzIG9uIHRoZSBjb25maWcgd3Jp dGUuCj4+PiBUaGlzIGlzIHRoZSBwcm9ibGVtLiBUaGVyZSBhcmUgb3RoZXIgbWVzc2FnZXMgbGlr ZSBTRVRfRkVBVFVSRVMgd2hlcmUgSQo+Pj4gZ3Vlc3Mgd2UnbGwgZmFjZSB0aGUgc2FtZSBjaGFs bGVuZ2UuCj4+Cj4+IFByb2JhYmx5IG5vdCwgdXNlcnNwYWNlIGRldmljZSBjYW4gdGVsbCB0aGUg a2VybmVsIGFib3V0IHRoZSBkZXZpY2VfZmVhdHVyZXMKPj4gYW5kIG1hbmRhdGVkX2ZlYXR1cmVz IGR1cmluZyBjcmVhdGlvbiwgYW5kIHRoZSBmZWF0dXJlIG5lZ290aWF0aW9uIGNvdWxkIGJlCj4+ IGRvbmUgcHVyZWx5IGluIHRoZSBrZXJuZWwgd2l0aG91dCBib3RoZXJpbmcgdGhlIHVzZXJzcGFj ZS4KCgooRm9yIHNvbWUgcmVhc29uIEkgZHJvcCB0aGUgbGlzdCBhY2NpZGVudGFsbHksIGFkZGlu ZyB0aGVtIGJhY2ssIHNvcnJ5KQoKCj4gU29ycnksIEkgY29uZnVzZWQgdGhlIG1lc3NhZ2VzLiBJ IG1lYW50IFNFVF9TVEFUVVMuIEl0J3MgYSBzeW5jaHJvbm91cwo+IGludGVyZmFjZSB3aGVyZSB0 aGUgZHJpdmVyIHdhaXRzIGZvciB0aGUgZGV2aWNlLgoKCkl0IGRlcGVuZHMgb24gaG93IHdlIGRl ZmluZSAic3luY2hyb25vdXMiIGhlcmUuIElmIEkgdW5kZXJzdGFuZCAKY29ycmVjdGx5LCB0aGUg c3BlYyBkb2Vzbid0IGV4cGVjdCB0aGVyZSB3aWxsIGJlIGFueSBraW5kIG9mIGZhaWx1cmUgZm9y IAp0aGUgb3BlcmF0aW9uIG9mIHNldF9zdGF0dXMgaXRzZWxmLgoKSW5zdGVhZCwgYW55dGltZSBp dCB3YW50IGFueSBzeW5jaHJvbml6YXRpb24sIGl0IHNob3VsZCBiZSBkb25lIHZpYSAKZ2V0X3N0 YXR1cygpOgoKMSkgcmUtcmVhZCBkZXZpY2Ugc3RhdHVzIHRvIG1ha2Ugc3VyZSBGRUFUVVJFU19P SyBpcyBzZXQgZHVyaW5nIGZlYXR1cmUgCm5lZ290aWF0aW9uCjIpIHJlLXJlYWQgZGV2aWNlIHN0 YXR1cyB0byBiZSAwIHRvIG1ha2Ugc3VyZSB0aGUgZGV2aWNlIGhhcyBmaW5pc2ggdGhlIApyZXNl dAoKCj4KPiBWRFVTRSBjdXJyZW50bHkgZG9lc24ndCB3YWl0IGZvciB0aGUgZGV2aWNlIGVtdWxh dGlvbiBwcm9jZXNzIHRvIGhhbmRsZQo+IHRoaXMgbWVzc2FnZSAobm8gcmVwbHkgaXMgbmVlZGVk KSBidXQgSSB0aGluayB0aGlzIGlzIGEgbWlzdGFrZSBiZWNhdXNlCj4gVkRVU0UgaXMgbm90IGZv bGxvd2luZyB0aGUgVklSVElPIGRldmljZSBtb2RlbC4KCgpXaXRoIHRoZSB0cmljayB0aGF0IGlz IGRvbmUgZm9yIEZFQVRVUkVTX09LIGFib3ZlLCBJIHRoaW5rIHdlIGRvbid0IG5lZWQgCnRvIHdh aXQgZm9yIHRoZSByZXBseS4KCklmIHVzZXJzcGFjZSB0YWtlcyB0b28gbG9uZyB0byByZXNwb25k LCBpdCBjYW4gYmUgZGV0ZWN0ZWQgc2luY2UgCmdldF9zdGF0dXMoKSBkb2Vzbid0IHJldHVybiB0 aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIGxvbmcgdGltZS4KCkFuZCBmb3IgdGhlIGNhc2UgdGhhdCBu ZWVkcyBhIHRpbWVvdXQsIHdlIHByb2JhYmx5IGNhbiB1c2UgTkVFRFNfUkVTRVQuCgoKPgo+IEkg c3Ryb25nbHkgc3VnZ2VzdCBkZXNpZ25pbmcgdGhlIFZEVVNFIGludGVyZmFjZSB0byBtYXRjaCB0 aGUgVklSVElPCj4gZGV2aWNlIG1vZGVsIChvciBhdCBsZWFzdCB0aGUgdkRQQSBpbnRlcmZhY2Up LgoKCkkgZnVsbHkgYWdyZWUgd2l0aCB5b3UgYW5kIHRoYXQgaXMgd2hhdCB3ZSB3YW50IHRvIGFj aGlldmUgaW4gdGhpcyBzZXJpZXMuCgoKPiBEZWZpbmluZyBhIGN1c3RvbQo+IGludGVyZmFjZSBm b3IgVkRVU0UgYXZvaWRzIHNvbWUgaW1wbGVtZW50YXRpb24gY29tcGxleGl0eSBhbmQgbWFrZXMg aXQKPiBlYXNpZXIgdG8gZGVhbCB3aXRoIHVudHJ1c3RlZCB1c2Vyc3BhY2UsIGJ1dCBpdCdzIGlt cG9zc2libGUgdG8KPiBpbXBsZW1lbnQgY2VydGFpbiBWSVJUSU8gZmVhdHVyZXMgb3IgZGV2aWNl cy4gSXQgYWxzbyBmcmFnbWVudHMgVklSVElPCj4gbW9yZSB0aGFuIG5lY2Vzc2FyeTsgd2UgaGF2 ZSBhIHN0YW5kYXJkLCBsZXQncyBzdGljayB0byBpdC4KCgpZZXMuCgoKPgo+Pj4gSSBhZ3JlZSB0 aGF0IGNhY2hpbmcgdGhlIGNvbnRlbnRzIG9mIGNvbmZpZ3VyYXRpb24gc3BhY2UgaW4gdGhlIGtl cm5lbAo+Pj4gaGVscHMsIGJ1dCBpZiB0aGVyZSBhcmUgb3RoZXIgVkRVU0UgbWVzc2FnZXMgd2l0 aCB0aGUgc2FtZSBwcm9ibGVtIHRoZW4KPj4+IGFuIGF0dGFja2VyIHdpbGwgZXhwbG9pdCB0aGVt IGluc3RlYWQuCj4+Pgo+Pj4gSSB0aGluayBhIHN5c3RlbWF0aWMgc29sdXRpb24gaXMgbmVlZGVk LiBJdCB3b3VsZCBiZSBuZWNlc3NhcnkgdG8KPj4+IGVudW1lcmF0ZSB0aGUgdmlydGlvX3ZkcGEg YW5kIHZob3N0X3ZkcGEgY2FzZXMgc2VwYXJhdGVseSB0byBmaWd1cmUgb3V0Cj4+PiB3aGVyZSBW RFVTRSBtZXNzYWdlcyBhcmUgc3luY2hyb25vdXMvdGltZS1zZW5zaXRpdmUuCj4+Cj4+IFRoaXMg aXMgdGhlIGNhc2Ugb2YgcmVzZXQgYW5kIG5lZWRzIG1vcmUgdGhvdWdodC4gV2Ugc2hvdWxkIHN0 aWNrIGEKPj4gY29uc2lzdGVudCB1QVBJIGZvciB0aGUgdXNlcnNwYWNlLgo+Pgo+PiBGb3Igdmhv c3QtdkRQQSwgaXQgbmVlZHMgc3luY2hyb256aWVkIHdpdGggdGhlIHVzZXJzcGFjZSBhbmQgd2Ug Y2FuIHdhaXQgZm9yCj4+IGV2ZXIuCj4gVGhlIFZNTSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0byBo YW5kbGUgc2lnbmFscyB3aGVuIGEgdmhvc3RfdmRwYSBpb2N0bAo+IGlzIHdhaXRpbmcgZm9yIGEg cmVwbHkgZnJvbSB0aGUgVkRVU0UgdXNlcnNwYWNlIHByb2Nlc3MuIE9yIGlmIHRoYXQncwo+IG5v dCBwb3NzaWJsZSB0aGVuIHRoZXJlIG5lZWRzIHRvIGJlIGEgd2F5IHRvIGZvcmNlIGRpc2Nvbm5l Y3Rpb24gZnJvbQo+IFZEVVNFIHNvIHRoZSBWTU0gY2FuIGJlIGtpbGxlZC4KCgpOb3RlIHRoYXQg VkRVU0Ugd29ya3MgdW5kZXIgdkRQQSBidXMsIHNvIHZob3N0IHNob3VsZCBiZSB0cmFuc3BvcnQg dG8gVkRVU0UuCgpCdXQgd2UgY2FuIGRldGVjdCB0aGlzIHZpYSB3aGV0aGVyIG9yIG5vdCB0aGUg Ym91bmNlIGJ1ZmZlciBpcyB1c2VkLgoKVGhhbmtzCgoKPgo+IFN0ZWZhbgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaW9tbXUgbWFpbGluZyBsaXN0Cmlv bW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0 aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lvbW11 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,URIBL_RED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 29034C07E9B for ; Wed, 7 Jul 2021 09:30:23 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C178461C6D for ; Wed, 7 Jul 2021 09:30:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C178461C6D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 8AA4040179; Wed, 7 Jul 2021 09:30:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id m_KnRfW5vUDf; Wed, 7 Jul 2021 09:30:20 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id F3970404BA; Wed, 7 Jul 2021 09:30:19 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id C7A09C0010; Wed, 7 Jul 2021 09:30:19 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 05E08C000E for ; Wed, 7 Jul 2021 09:30:19 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id E70628399E for ; Wed, 7 Jul 2021 09:30:18 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp1.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=redhat.com Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id i9MEytrPlOJP for ; Wed, 7 Jul 2021 09:30:18 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by smtp1.osuosl.org (Postfix) with ESMTPS id CEE368376D for ; Wed, 7 Jul 2021 09:30:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1625650216; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6o/7kaTqPTYt2A7Z0zjqMN0nvm6hpJh6BNtPQwdwRLU=; b=RZG+/29uI1O5+FKSDpZztRydr+U8DWOJEaFTBKbV1ib7FMbnurWPlxp8XZOOJad1y6lwmW QuGbZjosD7QF42fgEHZzfbmJwDQxi8zRBjkVsSPKaqmmIg7LlRaYCuRUtxuQsgyNk+djHL hP9GjQxXk3JP5PF2pnSdeUZhmnD65ag= Received: from mail-io1-f69.google.com (mail-io1-f69.google.com [209.85.166.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-593-ynQXtJUdOd-bz3-WfUO7_A-1; Wed, 07 Jul 2021 05:30:15 -0400 X-MC-Unique: ynQXtJUdOd-bz3-WfUO7_A-1 Received: by mail-io1-f69.google.com with SMTP id x21-20020a5d99150000b02904e00bb129f0so1223069iol.18 for ; Wed, 07 Jul 2021 02:30:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=6o/7kaTqPTYt2A7Z0zjqMN0nvm6hpJh6BNtPQwdwRLU=; b=Cylywlyb6xg3iJM5H6BKgCbu5oO8Sea3U4ZILlw9JJFTRyR5Hiz6/elZHmwp+pmQuh E958ekyj68LaRV5eF9/piYTlR75KJA8S3fe3vMwjagoJrAGs+huANWASEhns62ckn8Ho H5dL98IrSl1oc18sRvqic7SjTGr3YxYYgzCsmzc16ZSRtpIFIS9INQ4NjVGH8pCG3Bxp xNIGc3cKPIZc8YQ6MvSefaOissWq2A4V5dYO2873s1mYk6oKUrK6fziP8tqJMp/dtg4R u3zHFfm4I8jhmeTjaXWnUvNZtQ9x36POOAVAcXi6ALZHc7I6gpgD/SivahEy0Xt83CwG cNMA== X-Gm-Message-State: AOAM5325UWJsrjbu2CWW/dWuG1qUnSWGOvGtwZSCyIPasLU428wW3Is/ +8OCJSFGkpsjkypfNzQPakPS8a2jCzj2rKThOR6QY4v2kbqp3WsXfsTXFlvewzR93QBYOYh0qSP /v2eMXUg0n6mJJBBIT1dW6803iS7T5UKIvG3A7ow7Qg== X-Received: by 2002:a63:d908:: with SMTP id r8mr25178224pgg.414.1625649863837; Wed, 07 Jul 2021 02:24:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzhom9V3zcwokImKdubLhhEYAw1OEUfXMki4J5NNqR0Ed07VLuH+WgHu4YOpQSJUGm/lh1JIQ== X-Received: by 2002:a63:d908:: with SMTP id r8mr25178193pgg.414.1625649863513; Wed, 07 Jul 2021 02:24:23 -0700 (PDT) Received: from wangxiaodeMacBook-Air.local ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id md15sm5946056pjb.30.2021.07.07.02.24.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 07 Jul 2021 02:24:23 -0700 (PDT) Subject: Re: [PATCH v8 10/10] Documentation: Add documentation for VDUSE To: Stefan Hajnoczi References: <8320d26d-6637-85c6-8773-49553dfa502d@redhat.com> <5b5107fa-3b32-8a3b-720d-eee6b2a84ace@redhat.com> <100e6788-7fdf-1505-d69c-bc28a8bc7a78@redhat.com> From: Jason Wang Message-ID: Date: Wed, 7 Jul 2021 17:24:08 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" , virtualization@lists.linux-foundation.org, Christian Brauner , Jonathan Corbet , joro@8bytes.org, Matthew Wilcox , Christoph Hellwig , Xie Yongji , Dan Carpenter , Al Viro , "songmuchun@bytedance.com" , Jens Axboe , gregkh@linuxfoundation.org, Randy Dunlap , linux-kernel , "iommu@lists.linux-foundation.org" , "bcrl@kvack.org" , netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, =?UTF-8?Q?Mika_Penttil=c3=a4?= X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CuWcqCAyMDIxLzcvNyDkuIvljYg0OjU1LCBTdGVmYW4gSGFqbm9jemkg5YaZ6YGTOgo+IE9uIFdl ZCwgSnVsIDA3LCAyMDIxIGF0IDExOjQzOjI4QU0gKzA4MDAsIEphc29uIFdhbmcgd3JvdGU6Cj4+ IOWcqCAyMDIxLzcvNyDkuIrljYgxOjExLCBTdGVmYW4gSGFqbm9jemkg5YaZ6YGTOgo+Pj4gT24g VHVlLCBKdWwgMDYsIDIwMjEgYXQgMDk6MDg6MjZQTSArMDgwMCwgSmFzb24gV2FuZyB3cm90ZToK Pj4+PiBPbiBUdWUsIEp1bCA2LCAyMDIxIGF0IDY6MTUgUE0gU3RlZmFuIEhham5vY3ppIDxzdGVm YW5oYUByZWRoYXQuY29tPiB3cm90ZToKPj4+Pj4gT24gVHVlLCBKdWwgMDYsIDIwMjEgYXQgMTA6 MzQ6MzNBTSArMDgwMCwgSmFzb24gV2FuZyB3cm90ZToKPj4+Pj4+IOWcqCAyMDIxLzcvNSDkuIvl jYg4OjQ5LCBTdGVmYW4gSGFqbm9jemkg5YaZ6YGTOgo+Pj4+Pj4+IE9uIE1vbiwgSnVsIDA1LCAy MDIxIGF0IDExOjM2OjE1QU0gKzA4MDAsIEphc29uIFdhbmcgd3JvdGU6Cj4+Pj4+Pj4+IOWcqCAy MDIxLzcvNCDkuIvljYg1OjQ5LCBZb25namkgWGllIOWGmemBkzoKPj4+Pj4+Pj4+Pj4gT0ssIEkg Z2V0IHlvdSBub3cuIFNpbmNlIHRoZSBWSVJUSU8gc3BlY2lmaWNhdGlvbiBzYXlzICJEZXZpY2UK Pj4+Pj4+Pj4+Pj4gY29uZmlndXJhdGlvbiBzcGFjZSBpcyBnZW5lcmFsbHkgdXNlZCBmb3IgcmFy ZWx5LWNoYW5naW5nIG9yCj4+Pj4+Pj4+Pj4+IGluaXRpYWxpemF0aW9uLXRpbWUgcGFyYW1ldGVy cyIuIEkgYXNzdW1lIHRoZSBWRFVTRV9ERVZfU0VUX0NPTkZJRwo+Pj4+Pj4+Pj4+PiBpb2N0bCBz aG91bGQgbm90IGJlIGNhbGxlZCBmcmVxdWVudGx5Lgo+Pj4+Pj4+Pj4+IFRoZSBzcGVjIHVzZXMg TVVTVCBhbmQgb3RoZXIgdGVybXMgdG8gZGVmaW5lIHRoZSBwcmVjaXNlIHJlcXVpcmVtZW50cy4K Pj4+Pj4+Pj4+PiBIZXJlIHRoZSBsYW5ndWFnZSAoZXNwZWNpYWxseSB0aGUgd29yZCAiZ2VuZXJh bGx5IikgaXMgd2Vha2VyIGFuZCBtZWFucwo+Pj4+Pj4+Pj4+IHRoZXJlIG1heSBiZSBleGNlcHRp b25zLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gQW5vdGhlciB0eXBlIG9mIGFjY2VzcyB0aGF0IGRv ZXNuJ3Qgd29yayB3aXRoIHRoZSBWRFVTRV9ERVZfU0VUX0NPTkZJRwo+Pj4+Pj4+Pj4+IGFwcHJv YWNoIGlzIHJlYWRzIHRoYXQgaGF2ZSBzaWRlLWVmZmVjdHMuIEZvciBleGFtcGxlLCBpbWFnaW5l IGEgZmllbGQKPj4+Pj4+Pj4+PiBjb250YWluaW5nIGFuIGVycm9yIGNvZGUgaWYgdGhlIGRldmlj ZSBlbmNvdW50ZXJzIGEgcHJvYmxlbSB1bnJlbGF0ZWQgdG8KPj4+Pj4+Pj4+PiBhIHNwZWNpZmlj IHZpcnRxdWV1ZSByZXF1ZXN0LiBSZWFkaW5nIGZyb20gdGhpcyBmaWVsZCByZXNldHMgdGhlIGVy cm9yCj4+Pj4+Pj4+Pj4gY29kZSB0byAwLCBzYXZpbmcgdGhlIGRyaXZlciBhbiBleHRyYSBjb25m aWd1cmF0aW9uIHNwYWNlIHdyaXRlIGFjY2Vzcwo+Pj4+Pj4+Pj4+IGFuZCBwb3NzaWJseSByYWNl IGNvbmRpdGlvbnMuIEl0IGlzbid0IHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aG9zZQo+Pj4+Pj4+ Pj4+IHNlbWFudGljcyBzdWluZyBWRFVTRV9ERVZfU0VUX0NPTkZJRy4gSXQncyBhbm90aGVyIGNv cm5lciBjYXNlLCBidXQgaXQKPj4+Pj4+Pj4+PiBtYWtlcyBtZSB0aGluayB0aGF0IHRoZSBpbnRl cmZhY2UgZG9lcyBub3QgYWxsb3cgZnVsbCBWSVJUSU8gc2VtYW50aWNzLgo+Pj4+Pj4+PiBOb3Rl IHRoYXQgdGhvdWdoIHlvdSdyZSBjb3JyZWN0LCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgY29u ZmlnIHNwYWNlIGlzCj4+Pj4+Pj4+IG5vdCBzdWl0YWJsZSBmb3IgdGhpcyBraW5kIG9mIGVycm9y IHByb3BhZ2F0aW5nLiBBbmQgaXQgd291bGQgYmUgdmVyeSBoYXJkCj4+Pj4+Pj4+IHRvIGltcGxl bWVudCBzdWNoIGtpbmQgb2Ygc2VtYW50aWMgaW4gc29tZSB0cmFuc3BvcnRzLiAgVmlydHF1ZXVl IHNob3VsZCBiZQo+Pj4+Pj4+PiBtdWNoIGJldHRlci4gQXMgWW9uZyBKaSBxdW90ZWQsIHRoZSBj b25maWcgc3BhY2UgaXMgdXNlZCBmb3IKPj4+Pj4+Pj4gInJhcmVseS1jaGFuZ2luZyBvciBpbnRp YWxpemF0aW9uLXRpbWUgcGFyYW1ldGVycyIuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBB Z3JlZWQuIEkgd2lsbCB1c2UgVkRVU0VfREVWX0dFVF9DT05GSUcgaW4gdGhlIG5leHQgdmVyc2lv bi4gQW5kIHRvCj4+Pj4+Pj4+PiBoYW5kbGUgdGhlIG1lc3NhZ2UgZmFpbHVyZSwgSSdtIGdvaW5n IHRvIGFkZCBhIHJldHVybiB2YWx1ZSB0bwo+Pj4+Pj4+Pj4gdmlydGlvX2NvbmZpZ19vcHMuZ2V0 KCkgYW5kIHZpcnRpb19jcmVhZF8qIEFQSSBzbyB0aGF0IHRoZSBlcnJvciBjYW4KPj4+Pj4+Pj4+ IGJlIHByb3BhZ2F0ZWQgdG8gdGhlIHZpcnRpbyBkZXZpY2UgZHJpdmVyLiBUaGVuIHRoZSB2aXJ0 aW8tYmxrIGRldmljZQo+Pj4+Pj4+Pj4gZHJpdmVyIGNhbiBiZSBtb2RpZmllZCB0byBoYW5kbGUg dGhhdC4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBKYXNvbiBhbmQgU3RlZmFuLCB3aGF0IGRvIHlvdSB0 aGluayBvZiB0aGlzIHdheT8KPj4+Pj4+PiBXaHkgZG9lcyBWRFVTRV9ERVZfR0VUX0NPTkZJRyBu ZWVkIHRvIHN1cHBvcnQgYW4gZXJyb3IgcmV0dXJuIHZhbHVlPwo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhl IFZJUlRJTyBzcGVjIHByb3ZpZGVzIG5vIHdheSBmb3IgdGhlIGRldmljZSB0byByZXBvcnQgZXJy b3JzIGZyb20KPj4+Pj4+PiBjb25maWcgc3BhY2UgYWNjZXNzZXMuCj4+Pj4+Pj4KPj4+Pj4+PiBU aGUgUUVNVSB2aXJ0aW8tcGNpIGltcGxlbWVudGF0aW9uIHJldHVybnMgLTEgZnJvbSBpbnZhbGlk Cj4+Pj4+Pj4gdmlydGlvX2NvbmZpZ19yZWFkKigpIGFuZCBzaWxlbnRseSBkaXNjYXJkcyB2aXJ0 aW9fY29uZmlnX3dyaXRlKigpCj4+Pj4+Pj4gYWNjZXNzZXMuCj4+Pj4+Pj4KPj4+Pj4+PiBWRFVT RSBjYW4gdGFrZSB0aGUgc2FtZSBhcHByb2FjaCB3aXRoCj4+Pj4+Pj4gVkRVU0VfREVWX0dFVF9D T05GSUcvVkRVU0VfREVWX1NFVF9DT05GSUcuCj4+Pj4+Pj4KPj4+Pj4+Pj4gSSdkIGxpa2UgdG8g c3RpY2sgdG8gdGhlIGN1cnJlbnQgYXNzdW1wdGlvbiB0aGljaCBnZXRfY29uZmlnIHdvbid0IGZh aWwuCj4+Pj4+Pj4+IFRoYXQgaXMgdG8gc2F5LAo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAxKSBtYWludGFp biBhIGNvbmZpZyBpbiB0aGUga2VybmVsLCBtYWtlIHN1cmUgdGhlIGNvbmZpZyBzcGFjZSByZWFk IGNhbgo+Pj4+Pj4+PiBhbHdheXMgc3VjY2VlZAo+Pj4+Pj4+PiAyKSBpbnRyb2R1Y2UgYW4gaW9j dGwgZm9yIHRoZSB2ZHVzZSB1c2Vyc2FwY2UgdG8gdXBkYXRlIHRoZSBjb25maWcgc3BhY2UuCj4+ Pj4+Pj4+IDMpIHdlIGNhbiBzeW5jaHJvbml6ZSB3aXRoIHRoZSB2ZHVzZSB1c2Vyc3BhY2UgZHVy aW5nIHNldF9jb25maWcKPj4+Pj4+Pj4KPj4+Pj4+Pj4gRG9lcyB0aGlzIHdvcms/Cj4+Pj4+Pj4g SSBub3RpY2VkIHRoYXQgY2FjaGluZyBpcyBhbHNvIGFsbG93ZWQgYnkgdGhlIHZob3N0LXVzZXIg cHJvdG9jb2wKPj4+Pj4+PiBtZXNzYWdlcyAoUUVNVSdzIGRvY3MvaW50ZXJvcC92aG9zdC11c2Vy LnJzdCksIGJ1dCB0aGUgZGV2aWNlIGRvZXNuJ3QKPj4+Pj4+PiBrbm93IHdoZXRoZXIgb3Igbm90 IGNhY2hpbmcgaXMgaW4gZWZmZWN0LiBUaGUgaW50ZXJmYWNlIHlvdSBvdXRsaW5lZAo+Pj4+Pj4+ IGFib3ZlIHJlcXVpcmVzIGNhY2hpbmcuCj4+Pj4+Pj4KPj4+Pj4+PiBJcyB0aGVyZSBhIHJlYXNv biB3aHkgdGhlIGhvc3Qga2VybmVsIHZEUEEgY29kZSBuZWVkcyB0byBjYWNoZSB0aGUKPj4+Pj4+ PiBjb25maWd1cmF0aW9uIHNwYWNlPwo+Pj4+Pj4gQmVjYXVzZToKPj4+Pj4+Cj4+Pj4+PiAxKSBL ZXJuZWwgY2FuIG5vdCB3YWl0IGZvcmV2ZXIgaW4gZ2V0X2NvbmZpZygpLCB0aGlzIGlzIHRoZSBt YWpvciBkaWZmZXJlbmNlCj4+Pj4+PiB3aXRoIHZob3N0LXVzZXIuCj4+Pj4+IHZpcnRpb19jcmVh ZCgpIGNhbiBzbGVlcDoKPj4+Pj4KPj4+Pj4gICAgICNkZWZpbmUgdmlydGlvX2NyZWFkKHZkZXYs IHN0cnVjdG5hbWUsIG1lbWJlciwgcHRyKSAgICAgICAgICAgICAgICAgICAgIFwKPj4+Pj4gICAg ICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICB0eXBlb2YoKChzdHJ1 Y3RuYW1lKikwKS0+bWVtYmVyKSB2aXJ0aW9fY3JlYWRfdjsgICAgICAgIFwKPj4+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICBtaWdodF9zbGVlcCgpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4+Pj4gICAgICAgICAg ICAgICAgICAgICBeXl5eXl5eXl5eXl5eXgo+Pj4+Pgo+Pj4+PiBXaGljaCBjb2RlIHBhdGggY2Fu bm90IHNsZWVwPwo+Pj4+IFdlbGwsIGl0IGNhbiBzbGVlcCBidXQgaXQgY2FuJ3Qgc2xlZXAgZm9y ZXZlci4gRm9yIFZEVVNFLCBhCj4+Pj4gYnVnZ3kvbWFsaWNpb3VzIHVzZXJzcGFjZSBtYXkgcmVm dXNlIHRvIHJlc3BvbmQgdG8gdGhlIGdldF9jb25maWcuCj4+Pj4KPj4+PiBJdCBsb29rcyB0byBt ZSB0aGUgaWRlYWwgY2FzZSwgd2l0aCB0aGUgY3VycmVudCB2aXJ0aW8gc3BlYywgZm9yIFZEVVNF IGlzIHRvCj4+Pj4KPj4+PiAxKSBtYWludGFpbiB0aGUgZGV2aWNlIGFuZCBpdHMgc3RhdGUgaW4g dGhlIGtlcm5lbCwgdXNlcnNwYWNlIG1heSBzeW5jCj4+Pj4gd2l0aCB0aGUga2VybmVsIGRldmlj ZSB2aWEgaW9jdGxzCj4+Pj4gMikgb2ZmbG9hZCB0aGUgZGF0YXBhdGggKHZpcnRxdWV1ZSkgdG8g dGhlIHVzZXJzcGFjZQo+Pj4+Cj4+Pj4gVGhpcyBzZWVtcyBtb3JlIHJvYnVzdCBhbmQgc2FmZSB0 aGFuIHNpbXBseSByZWxheWluZyBldmVyeXRoaW5nIHRvCj4+Pj4gdXNlcnNwYWNlIGFuZCB3YWl0 aW5nIGZvciBpdHMgcmVzcG9uc2UuCj4+Pj4KPj4+PiBBbmQgd2Uga25vdyBmb3Igc3VyZSB0aGlz IG1vZGVsIGNhbiB3b3JrLCBhbiBleGFtcGxlIGlzIFRVTi9UQVA6Cj4+Pj4gbmV0ZGV2aWNlIGlz IGFic3RyYWN0ZWQgaW4gdGhlIGtlcm5lbCBhbmQgZGF0YXBhdGggaXMgZG9uZSB2aWEKPj4+PiBz ZW5kbXNnKCkvcmVjdm1zZygpLgo+Pj4+Cj4+Pj4gTWFpbnRhaW5pbmcgdGhlIGNvbmZpZyBpbiB0 aGUga2VybmVsIGZvbGxvd3MgdGhpcyBtb2RlbCBhbmQgaXQgY2FuCj4+Pj4gc2ltcGxpZnkgdGhl IGRldmljZSBnZW5lcmF0aW9uIGltcGxlbWVudGF0aW9uLgo+Pj4+Cj4+Pj4gRm9yIGNvbmZpZyBz cGFjZSB3cml0ZSwgaXQgcmVxdWlyZXMgbW9yZSB0aG91Z2h0IGJ1dCBmb3J0dW5hdGVseSBpdCdz Cj4+Pj4gbm90IGNvbW1vbmx5IHVzZWQuIFNvIFZEVVNFIGNhbiBjaG9vc2UgdG8gZmlsdGVyIG91 dCB0aGUKPj4+PiBkZXZpY2UvZmVhdHVyZXMgdGhhdCBkZXBlbmRzIG9uIHRoZSBjb25maWcgd3Jp dGUuCj4+PiBUaGlzIGlzIHRoZSBwcm9ibGVtLiBUaGVyZSBhcmUgb3RoZXIgbWVzc2FnZXMgbGlr ZSBTRVRfRkVBVFVSRVMgd2hlcmUgSQo+Pj4gZ3Vlc3Mgd2UnbGwgZmFjZSB0aGUgc2FtZSBjaGFs bGVuZ2UuCj4+Cj4+IFByb2JhYmx5IG5vdCwgdXNlcnNwYWNlIGRldmljZSBjYW4gdGVsbCB0aGUg a2VybmVsIGFib3V0IHRoZSBkZXZpY2VfZmVhdHVyZXMKPj4gYW5kIG1hbmRhdGVkX2ZlYXR1cmVz IGR1cmluZyBjcmVhdGlvbiwgYW5kIHRoZSBmZWF0dXJlIG5lZ290aWF0aW9uIGNvdWxkIGJlCj4+ IGRvbmUgcHVyZWx5IGluIHRoZSBrZXJuZWwgd2l0aG91dCBib3RoZXJpbmcgdGhlIHVzZXJzcGFj ZS4KCgooRm9yIHNvbWUgcmVhc29uIEkgZHJvcCB0aGUgbGlzdCBhY2NpZGVudGFsbHksIGFkZGlu ZyB0aGVtIGJhY2ssIHNvcnJ5KQoKCj4gU29ycnksIEkgY29uZnVzZWQgdGhlIG1lc3NhZ2VzLiBJ IG1lYW50IFNFVF9TVEFUVVMuIEl0J3MgYSBzeW5jaHJvbm91cwo+IGludGVyZmFjZSB3aGVyZSB0 aGUgZHJpdmVyIHdhaXRzIGZvciB0aGUgZGV2aWNlLgoKCkl0IGRlcGVuZHMgb24gaG93IHdlIGRl ZmluZSAic3luY2hyb25vdXMiIGhlcmUuIElmIEkgdW5kZXJzdGFuZCAKY29ycmVjdGx5LCB0aGUg c3BlYyBkb2Vzbid0IGV4cGVjdCB0aGVyZSB3aWxsIGJlIGFueSBraW5kIG9mIGZhaWx1cmUgZm9y IAp0aGUgb3BlcmF0aW9uIG9mIHNldF9zdGF0dXMgaXRzZWxmLgoKSW5zdGVhZCwgYW55dGltZSBp dCB3YW50IGFueSBzeW5jaHJvbml6YXRpb24sIGl0IHNob3VsZCBiZSBkb25lIHZpYSAKZ2V0X3N0 YXR1cygpOgoKMSkgcmUtcmVhZCBkZXZpY2Ugc3RhdHVzIHRvIG1ha2Ugc3VyZSBGRUFUVVJFU19P SyBpcyBzZXQgZHVyaW5nIGZlYXR1cmUgCm5lZ290aWF0aW9uCjIpIHJlLXJlYWQgZGV2aWNlIHN0 YXR1cyB0byBiZSAwIHRvIG1ha2Ugc3VyZSB0aGUgZGV2aWNlIGhhcyBmaW5pc2ggdGhlIApyZXNl dAoKCj4KPiBWRFVTRSBjdXJyZW50bHkgZG9lc24ndCB3YWl0IGZvciB0aGUgZGV2aWNlIGVtdWxh dGlvbiBwcm9jZXNzIHRvIGhhbmRsZQo+IHRoaXMgbWVzc2FnZSAobm8gcmVwbHkgaXMgbmVlZGVk KSBidXQgSSB0aGluayB0aGlzIGlzIGEgbWlzdGFrZSBiZWNhdXNlCj4gVkRVU0UgaXMgbm90IGZv bGxvd2luZyB0aGUgVklSVElPIGRldmljZSBtb2RlbC4KCgpXaXRoIHRoZSB0cmljayB0aGF0IGlz IGRvbmUgZm9yIEZFQVRVUkVTX09LIGFib3ZlLCBJIHRoaW5rIHdlIGRvbid0IG5lZWQgCnRvIHdh aXQgZm9yIHRoZSByZXBseS4KCklmIHVzZXJzcGFjZSB0YWtlcyB0b28gbG9uZyB0byByZXNwb25k LCBpdCBjYW4gYmUgZGV0ZWN0ZWQgc2luY2UgCmdldF9zdGF0dXMoKSBkb2Vzbid0IHJldHVybiB0 aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIGxvbmcgdGltZS4KCkFuZCBmb3IgdGhlIGNhc2UgdGhhdCBu ZWVkcyBhIHRpbWVvdXQsIHdlIHByb2JhYmx5IGNhbiB1c2UgTkVFRFNfUkVTRVQuCgoKPgo+IEkg c3Ryb25nbHkgc3VnZ2VzdCBkZXNpZ25pbmcgdGhlIFZEVVNFIGludGVyZmFjZSB0byBtYXRjaCB0 aGUgVklSVElPCj4gZGV2aWNlIG1vZGVsIChvciBhdCBsZWFzdCB0aGUgdkRQQSBpbnRlcmZhY2Up LgoKCkkgZnVsbHkgYWdyZWUgd2l0aCB5b3UgYW5kIHRoYXQgaXMgd2hhdCB3ZSB3YW50IHRvIGFj aGlldmUgaW4gdGhpcyBzZXJpZXMuCgoKPiBEZWZpbmluZyBhIGN1c3RvbQo+IGludGVyZmFjZSBm b3IgVkRVU0UgYXZvaWRzIHNvbWUgaW1wbGVtZW50YXRpb24gY29tcGxleGl0eSBhbmQgbWFrZXMg aXQKPiBlYXNpZXIgdG8gZGVhbCB3aXRoIHVudHJ1c3RlZCB1c2Vyc3BhY2UsIGJ1dCBpdCdzIGlt cG9zc2libGUgdG8KPiBpbXBsZW1lbnQgY2VydGFpbiBWSVJUSU8gZmVhdHVyZXMgb3IgZGV2aWNl cy4gSXQgYWxzbyBmcmFnbWVudHMgVklSVElPCj4gbW9yZSB0aGFuIG5lY2Vzc2FyeTsgd2UgaGF2 ZSBhIHN0YW5kYXJkLCBsZXQncyBzdGljayB0byBpdC4KCgpZZXMuCgoKPgo+Pj4gSSBhZ3JlZSB0 aGF0IGNhY2hpbmcgdGhlIGNvbnRlbnRzIG9mIGNvbmZpZ3VyYXRpb24gc3BhY2UgaW4gdGhlIGtl cm5lbAo+Pj4gaGVscHMsIGJ1dCBpZiB0aGVyZSBhcmUgb3RoZXIgVkRVU0UgbWVzc2FnZXMgd2l0 aCB0aGUgc2FtZSBwcm9ibGVtIHRoZW4KPj4+IGFuIGF0dGFja2VyIHdpbGwgZXhwbG9pdCB0aGVt IGluc3RlYWQuCj4+Pgo+Pj4gSSB0aGluayBhIHN5c3RlbWF0aWMgc29sdXRpb24gaXMgbmVlZGVk LiBJdCB3b3VsZCBiZSBuZWNlc3NhcnkgdG8KPj4+IGVudW1lcmF0ZSB0aGUgdmlydGlvX3ZkcGEg YW5kIHZob3N0X3ZkcGEgY2FzZXMgc2VwYXJhdGVseSB0byBmaWd1cmUgb3V0Cj4+PiB3aGVyZSBW RFVTRSBtZXNzYWdlcyBhcmUgc3luY2hyb25vdXMvdGltZS1zZW5zaXRpdmUuCj4+Cj4+IFRoaXMg aXMgdGhlIGNhc2Ugb2YgcmVzZXQgYW5kIG5lZWRzIG1vcmUgdGhvdWdodC4gV2Ugc2hvdWxkIHN0 aWNrIGEKPj4gY29uc2lzdGVudCB1QVBJIGZvciB0aGUgdXNlcnNwYWNlLgo+Pgo+PiBGb3Igdmhv c3QtdkRQQSwgaXQgbmVlZHMgc3luY2hyb256aWVkIHdpdGggdGhlIHVzZXJzcGFjZSBhbmQgd2Ug Y2FuIHdhaXQgZm9yCj4+IGV2ZXIuCj4gVGhlIFZNTSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0byBo YW5kbGUgc2lnbmFscyB3aGVuIGEgdmhvc3RfdmRwYSBpb2N0bAo+IGlzIHdhaXRpbmcgZm9yIGEg cmVwbHkgZnJvbSB0aGUgVkRVU0UgdXNlcnNwYWNlIHByb2Nlc3MuIE9yIGlmIHRoYXQncwo+IG5v dCBwb3NzaWJsZSB0aGVuIHRoZXJlIG5lZWRzIHRvIGJlIGEgd2F5IHRvIGZvcmNlIGRpc2Nvbm5l Y3Rpb24gZnJvbQo+IFZEVVNFIHNvIHRoZSBWTU0gY2FuIGJlIGtpbGxlZC4KCgpOb3RlIHRoYXQg VkRVU0Ugd29ya3MgdW5kZXIgdkRQQSBidXMsIHNvIHZob3N0IHNob3VsZCBiZSB0cmFuc3BvcnQg dG8gVkRVU0UuCgpCdXQgd2UgY2FuIGRldGVjdCB0aGlzIHZpYSB3aGV0aGVyIG9yIG5vdCB0aGUg Ym91bmNlIGJ1ZmZlciBpcyB1c2VkLgoKVGhhbmtzCgoKPgo+IFN0ZWZhbgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGlu ZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8v bGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u