On 06/12/17 06:51, Yisheng Xie wrote: > Hi Jean, > > On 2017/10/6 21:31, Jean-Philippe Brucker wrote: >> If the SMMU supports it and the kernel was built with HTTU support, enable >> + if (IS_ENABLED(CONFIG_ARM64_HW_AFDBM) && (reg & (IDR0_HA | IDR0_HD))) { >> + smmu->features |= ARM_SMMU_FEAT_HA; >> + if (reg & IDR0_HD) >> + smmu->features |= ARM_SMMU_FEAT_HD; >> + } > > What is relationship of armv8.1 HW_AFDBM and SMMUv3 HTTU? I mean why we need > IS_ENABLED(CONFIG_ARM64_HW_AFDBM) ? I think the reason we needed this was that, without CONFIG_ARM64_HW_AFDBM, the CPU wouldn't update the pte atomically and pte_dirty() wouldn't check the DBM bit 51 (only the SW dirty bit 55). Since af29678fe785 ("arm64: Remove the !CONFIG_ARM64_HW_AFDBM alternative code paths") removed lots of #ifdefs, I'll see if we can remove the above IS_ENABLED as well. > If CONFIG_ARM64_HW_AFDBM=y but the process do not support ARMv8.1, should it also > enable related feature for SMMUv3? Yes I think we can enable HTTU in the SMMU even if the CPU doesn't support it (though HTTU is only useful when sharing process address spaces). The mm code checks for both HW and SW bits even when the CPU doesn't support ARMv8.1 Thanks, Jean -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html