|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 13/13] drivers/passthrough: arm: Add support for SMMU drivers
Hi Ian,
On 03/18/2014 04:54 PM, Ian Campbell wrote:
> On Tue, 2014-03-11 at 15:49 +0000, Julien Grall wrote:
>> This patch add support for ARM architected SMMU driver. It's based on the
>> linux drivers (drivers/iommu/arm-smmu) commit 89ac23cd.
>>
>> The major differences with the Linux driver are:
>> - Fault by default if the SMMU is enabled to translate an
>> address (Linux is bypassing the SMMU)
>> - Using P2M page table instead of creating new one
>> - Dropped stage-1 support
>> - Dropped chained SMMUs support for now
>> - Reworking device assignment and the different structures
>>
>> Xen is programming each IOMMU by:
>> - Using stage-2 mode translation
>> - Sharing the page table with the processor
>> - Injecting a fault if the device has made a wrong translation
>>
>> Signed-off-by: Julien Grall<julien.grall@xxxxxxxxxx>
>> Cc: Xiantao Zhang <xiantao.zhang@xxxxxxxxx>
>> Cc: Jan Beulich <jbeulich@xxxxxxxx>
>
> I don't think it is sensible to try and review this code in great detail
> given you no doubt did so as you imported it. I looked through the bits
> which seemed like they were new Xen code rather than imported Linux
> code. It mostly looks good, one question and when grammar nit.
>
>> +static __init void arm_smmu_device_reset(struct arm_smmu_device *smmu)
>> +{
>> +[...]
>> + /* Don't upgrade barriers */
>> + reg &= ~(SMMU_sCR0_BSU_MASK << SMMU_sCR0_BSU_SHIFT);
>
> No? Is that safe when a vcpu migrates around pCPUs?
From the SMMU doc 9.6.3, this field is only used when client devices are
not mapped to a translation context banks.
By default, the policy in Xen is to deny every transaction that doesn't
have a valid mapping. So we are safe.
I can update the comment if you want, or even better removing this code.
>> +
>> +static int __init smmu_init(struct dt_device_node *dev,
>> + const void *data)
>> +{
>> + struct arm_smmu_device *smmu;
>> + int res;
>> + u64 addr, size;
>> + unsigned int num_irqs, i;
>> + struct dt_phandle_args masterspec;
>> + struct rb_node *node;
>> +
>> + /* Even if the device can't be initialized, we don't want to give to
>> + * dom0 the smmu device
>
> "we don't want to give the smmu device to dom0"
Will do the modification in the next version.
Regards,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |