Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1334339pxf; Fri, 12 Mar 2021 07:21:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJwYpMYC0/DcIz1Qg+W3jyySW0IZ+BAqbr/Y3WWNlKoOFdAb1CgWr7NWlOI4jxFjPdLeMGhe X-Received: by 2002:aa7:c1d8:: with SMTP id d24mr4985096edp.290.1615562468082; Fri, 12 Mar 2021 07:21:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615562468; cv=none; d=google.com; s=arc-20160816; b=r2SpAcqecCFz58DKkzPUpah3M85kFvsEkT2cRJBIqtaijxrpEKjPmGg/majZ7+JLsK mO9KTpYxlcBDdXfF/bPIMCzsL6Yao8U3czZ23nuZ5SjLqLSm7DjDJnbNZNT6KQ55zm1g L9zq+9AvtJ2hAWOZfLVO/usVgBXyBtLWYHFwl6/vdu+P6nISERYIi1nlFMTBax2+Omt2 wQol1OGby69D0/jPhjzRgAhJGWMjWLmi31HVFTbOcu6i6btDZVGlVDzquB2+IipsWrWW sJ6k+xaxfcwz8887MuCz0Q+1WY6TOhSydHvDS5MV4GanTHkKda25CBLmxNEjM48tSrsm BxOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=lO2/u4BrFAn2QI1ved/BOjaof8Rw9P95dHEPoXPS/xM=; b=INtqM1V5woEUsK7OQKXIm2sBDBiSOJgHOQ42ujFiaDyZ8uD8inQ2xqD7NVmw0JvaAG Y7bz3Ie02NuSH5zQVw6rKsh5vppLw4b62E8hwTk+8FwlNpDnTPs+PSFunOl1wYYD6Q8X owUdaVWawu/9GznF+xWd7cIDNWJ+Y7BGsfocRDC2jbAzyKPNsMr8pWKdz9X9N1PshDRX DlDCilpCOvWr5JOBFpKotp7yIjgzgy5bXkcy5qaKZOR25xn1jqBxK3L7agsHHVkaGaCk az2MyeJP3sVSMKlC39F947ssxGxqdtOAMNF8TLSnV0oIWNLHyzEqzaznRkDrlOAbgM/G LjFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id rl3si4409568ejb.86.2021.03.12.07.20.32; Fri, 12 Mar 2021 07:21:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229748AbhCLPTg (ORCPT + 99 others); Fri, 12 Mar 2021 10:19:36 -0500 Received: from foss.arm.com ([217.140.110.172]:55386 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232024AbhCLPTM (ORCPT ); Fri, 12 Mar 2021 10:19:12 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A9E221FB; Fri, 12 Mar 2021 07:19:11 -0800 (PST) Received: from e112269-lin.arm.com (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D25E93F7D7; Fri, 12 Mar 2021 07:19:08 -0800 (PST) From: Steven Price To: Catalin Marinas , Marc Zyngier , Will Deacon Cc: Steven Price , James Morse , Julien Thierry , Suzuki K Poulose , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Dave Martin , Mark Rutland , Thomas Gleixner , qemu-devel@nongnu.org, Juan Quintela , "Dr. David Alan Gilbert" , Richard Henderson , Peter Maydell , Haibo Xu , Andrew Jones Subject: [PATCH v10 0/6] MTE support for KVM guest Date: Fri, 12 Mar 2021 15:18:56 +0000 Message-Id: <20210312151902.17853-1-steven.price@arm.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series adds support for using the Arm Memory Tagging Extensions (MTE) in a KVM guest. This version is rebased on v5.12-rc2. Changes since v9[1]: * Check fault_status in user_mem_abort() to avoid unnecessarily checking if tags need clearing when handling permission faults. * The MTE CPU feature exposed is now 0b10 explicitly rather than the host's CPU feature. This prevents problems when a newer MTE version is supported by the host CPU. * Add a couple of reserved u64s to struct kvm_arm_copy_mte_tags for potential future expansion (and check they are 0 for now). * Correctly hold slots_lock during the ioctl (rather than embarrassingly not do any locking as before...). * Add the structure definition to the documentation and some improvements suggested by Peter. [1] https://lore.kernel.org/r/20210301142315.30920-1-steven.price%40arm.com Steven Price (6): arm64: mte: Sync tags for pages where PTE is untagged arm64: kvm: Introduce MTE VM feature arm64: kvm: Save/restore MTE registers arm64: kvm: Expose KVM_ARM_CAP_MTE KVM: arm64: ioctl to fetch/store tags in a guest KVM: arm64: Document MTE capability and ioctl Documentation/virt/kvm/api.rst | 53 +++++++++++++++ arch/arm64/include/asm/kvm_emulate.h | 3 + arch/arm64/include/asm/kvm_host.h | 9 +++ arch/arm64/include/asm/kvm_mte.h | 66 ++++++++++++++++++ arch/arm64/include/asm/pgtable.h | 2 +- arch/arm64/include/asm/sysreg.h | 3 +- arch/arm64/include/uapi/asm/kvm.h | 14 ++++ arch/arm64/kernel/asm-offsets.c | 3 + arch/arm64/kernel/mte.c | 16 +++-- arch/arm64/kvm/arm.c | 78 ++++++++++++++++++++++ arch/arm64/kvm/hyp/entry.S | 7 ++ arch/arm64/kvm/hyp/exception.c | 3 +- arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 21 ++++++ arch/arm64/kvm/mmu.c | 16 +++++ arch/arm64/kvm/sys_regs.c | 28 ++++++-- include/uapi/linux/kvm.h | 2 + 16 files changed, 313 insertions(+), 11 deletions(-) create mode 100644 arch/arm64/include/asm/kvm_mte.h -- 2.20.1