[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] x86/CPUID: unconditionally set XEN_HVM_CPUID_IOMMU_MAPPINGS


  • To: Roger Pau Monné <roger.pau@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Mon, 18 Jan 2021 17:48:37 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UM55XNUnDFYW7D4RFM5GQMMHi1vq3xGtmoO6SUQuCCM=; b=K2JeEVOWUYrnO4OAcHe8+iJMrZlZjGc+/vHBKPbFHN5pTXLaKODhyQdzl1kGE9Nc655zrglpHn3z34h0z9Capta7872XuwMZ2/pB/IiVWI+JdrrNInUtA3Qmrpp9mZtrssBrs4EvkodeftHVNZsIsCGeQc+oAwDxfHW9gjWE+FLPJM6sRFULdw5AEflNFNEgGHx26yTkyWTwChvs5gAz5F3/Vg1yl0FgSSuXLgBS0yaTM18fJ4RdPJecd/0nEY0gH1s/UzDdI3p944IhsHT7xSSoI4+CehlpV/CtpVoBNpazbdVfXi3/vyMLIUZywmnr+uoJsIosoVLMP2nQMSw0ig==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nmC7JF9OMrXekcdpAkRwsgwsDlVm/FFxFktkO7qPVNCKeQe+bUunE6aQOqwIQqNd759RHAY5EoSFXQxMUXeeDps+QzlY/9zTl2j7ptUvAkH5zrgaDm5LgF5Nx3tBwQQ1juXrY2FHVxt+sNPDdBP9BuECDYzOp1xej8dnBp8WLOXjL4Kz6Ds2oYJUbfcysZg7Fpd9KTWtoH6yrflpZDZStDnRAMutFbNPNmJv05hxykRxzmpIOv02wPBjYXrGb+FiDlZDKuaQId1nEiHHRre29lOpDz8LDO/eUdFxHS9t47Tb53KPx+onyF4f2LsZTsqgaGqjklhdOQbVn9QvBcfAEQ==
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Wei Liu <wl@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 18 Jan 2021 17:49:01 +0000
  • Ironport-sdr: i6JFGPTksSGaCaSNHfEzI59E2xPXqSvvIyzOqQGnh5QJGBAwwzkjoHro39wz66CkyKqrXkzOAo uGwPoP4jUhxbmo5YXzKUw+dOzSXu08LmzhJM+JGv0TNIdqKf349sQArr+1ZGd/Jd9JqhfhMP/R smAlRhYmgllUBXsyXot9/6JGNuVJlO+vEW+NT0/YdzSYPJ1L9CGlgfZ/Y7AvFzxBJfbuCKcCQP jPvVanO5FfMy6RSGD2V/+NI1eVL5hoJOKbheOy7NdIHL+U6JNpdwYwpqGxP90XORGIxbYVdvkE s/c=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 18/01/2021 17:10, Roger Pau Monné wrote:
> On Mon, Jan 18, 2021 at 05:04:19PM +0100, Jan Beulich wrote:
>> On 18.01.2021 16:54, Roger Pau Monné wrote:
>>> On Mon, Jan 18, 2021 at 12:05:12PM +0100, Jan Beulich wrote:
>>>> On 15.01.2021 16:01, Roger Pau Monne wrote:
>>>>> --- a/xen/arch/x86/traps.c
>>>>> +++ b/xen/arch/x86/traps.c
>>>>> @@ -1049,11 +1049,10 @@ void cpuid_hypervisor_leaves(const struct vcpu 
>>>>> *v, uint32_t leaf,
>>>>>              res->a |= XEN_HVM_CPUID_X2APIC_VIRT;
>>>>>  
>>>>>          /*
>>>>> -         * Indicate that memory mapped from other domains (either grants 
>>>>> or
>>>>> -         * foreign pages) has valid IOMMU entries.
>>>>> +         * Unconditionally set the flag to indicate this version of Xen 
>>>>> has
>>>>> +         * been fixed to create IOMMU mappings for grant/foreign maps.
>>>>>           */
>>>>> -        if ( is_iommu_enabled(d) )
>>>>> -            res->a |= XEN_HVM_CPUID_IOMMU_MAPPINGS;
>>>>> +        res->a |= XEN_HVM_CPUID_IOMMU_MAPPINGS;
>>>> ... try to clarify the "Unconditionally" here?
>>> I guess Unconditionally doesn't make much sense, so would be better to
>>> start the sentence with 'Set ...' instead?
>> Hmm, this would further move us away from the goal of the comment
>> making sufficiently clear that a conditional shouldn't be (re-)
>> introduced here, I would think. Since I can't seem to think of a
>> good way to express this more briefly than in the description,
>> and if maybe you can't either, perhaps there's no choice then to
>> leave it as is, hoping that people would look at the commit before
>> proposing a further change here.
> /*
>  * Unconditionally set the flag to indicate this version of Xen has
>  * been fixed to create IOMMU mappings for grant/foreign maps.
>  *
>  * NB: this flag shouldn't be made conditional on IOMMU presence, as
>  * it could force guests to resort to using bounce buffers when using
>  * grant/foreign maps with devices.
>  */
>
> Would be better? (albeit too verbose maybe).

The comment should be rather more direct.

1) Xen 4.10 and older was broken WRT grant maps requesting a DMA
mapping, and forgot to honour the guest's request.
2) 4.11 (and presumably backports) fixed the bug, so the map hypercall
actually did what the guest asked.
3) To work around the bug, guests must bounce buffer all DMA, because it
doesn't know whether the DMA is originating from an emulated or a real
device.
4) This flag tells guests it is safe not to bounce-buffer all DMA to
work around the bug.

~Andrew



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.