From patchwork Mon Feb 11 01:08:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 157939 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp2056659jaa; Sun, 10 Feb 2019 17:11:28 -0800 (PST) X-Google-Smtp-Source: AHgI3IaXGo4BHI3jjDT6o7eFQz7Fx5CspigAw2jQE2GkrmRmS9xFB32Ufnf1GVIO3Hw9alI/jdJV X-Received: by 2002:a7b:c5d1:: with SMTP id n17mr7122547wmk.152.1549847488475; Sun, 10 Feb 2019 17:11:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549847488; cv=none; d=google.com; s=arc-20160816; b=qVZfISWr8Z8rMkberMSw6MdXzIfZq2EOtt6jkVYn+YeoknZ9AfQQr6t4juSnlKovpY N7FZ/SBntsxNFzQRYaenscoQstvTku5tsDNL3nTKWdGGZb/WR6B1j5eEy3e5YMrPNkFT aj+SboXvMqox2Ak2djni2xaa2LF/pp97Bfne77i4acDmIrNXw/ObJydCYpBFBtHcX0vi /OoSxOnAPI2Y4hhXgZ7R6M3+yvLqmldoXEYBdqnoQU6n/U+TxGM6ZBQ6sPAGq2etVyAo RxkUkp3tRcpqoGaTNFj7GcGUDkg8JK4fkICLHLty/AI3RFAp4fEKKKURXh30c60Fq27u w6Cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:message-id:date:to:from :dkim-signature; bh=Z/+P88U6HTRT97Deomt+7PJ0HBzMiMRaWaClb4I1Ngg=; b=IqnBTq0EiMSK/OxGmcDAp5Gf8mCqTbFb+U2hv8y4xlRoTzHkxECqx3NCf8mL7dujM0 jw229AQ75raKO1eZ5TDUNc+B4EMkqnXAgAo+8dbv9ILPzwKbGfrnhQqQsPW4/4oHAH/Z nPHhQk6j39hzHgqw2DDDTbZNR9VxLZDYOxRgF3MzqUCAUZ9Yj6Q+QWaLGwX1+ejGNhiK mgw4u4CvMR3IJWf5fshB/INv+OlsUOt6Z1EPjtLXEESgsThtvlQzdz3k9i7WRGhlDpLg RMVJhWDYchvtMoTQRRTIVAg5HCk7EGJObuNi1ySAFh4Hfn2ZVw70UJHTR+RNctGWJnun pwlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=g5+7bKPD; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 63si6667697wrm.435.2019.02.10.17.11.28 for (version=TLS1 cipher=AES128-SHA bits=128/128); Sun, 10 Feb 2019 17:11:28 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=g5+7bKPD; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:42072 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gt087-0006iW-Ak for patch@linaro.org; Sun, 10 Feb 2019 20:11:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gt05L-0005M9-61 for qemu-devel@nongnu.org; Sun, 10 Feb 2019 20:08:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gt05K-0007wq-5j for qemu-devel@nongnu.org; Sun, 10 Feb 2019 20:08:35 -0500 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:36789) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gt05J-0007w3-KY for qemu-devel@nongnu.org; Sun, 10 Feb 2019 20:08:34 -0500 Received: by mail-pl1-x643.google.com with SMTP id g9so4514584plo.3 for ; Sun, 10 Feb 2019 17:08:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=Z/+P88U6HTRT97Deomt+7PJ0HBzMiMRaWaClb4I1Ngg=; b=g5+7bKPDgXzBAiRC27r/ACGhb1St/suVymUkmaWVTGUIz7xi8zNVg/zOInRv9KyLni 3Fpbtec0+aP32oW0fRqkBtHjrBvTS8wVHpRhDvHjoly3AWKdK+gPEdzMHXgcBhyoHEqC Pk9D0nB8MKNDgy9m3wrLJztPnG9ohB3zS86aTXxLNnaKtE+UmNZUHjd9Eja6L6Gpvc3W 0hVjVtKm2mhdemfLbxS0hckENJ9lNLvopAyzDpASA7E9W1nkdYgLc2IK9ImmDQKvtDzC XMqHhWebwLWxqIIT+8XAbI2W28bSKmNE6L6Qm7k9qphQnhG0fWlsZkOI2e612Udabtsl G/Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Z/+P88U6HTRT97Deomt+7PJ0HBzMiMRaWaClb4I1Ngg=; b=EJ3vQvkE8gL2FAJ3Zev5HqQa5RUJmZvlTAyNE2cO1/chqZGqz+WhnGCXLyH+5G2owK F5Xb/YrGqU6zDHZzCPOoZCGuTVSgeWX16204YVjPwNNOebrgiMYhP9CO5E8kGwW2nZMH 3ovXDtumxcTTwBl+4x85IV5hSy1IlSnEig1fTflPYuOAnAm4VAdqsiOPE36nj+o4E8RC XiV1VHjpYqBs5UleddFm+ogAokRQKQKBs4QYh3dkwvbeLFb9npx57KLsAbO/s0bE6NLf lbGuCI4bvDQASX0v4Off2c35GPw+cPh5vH1BvMFSxT2mxQiwxy6KL3iN23OKPI0cc5B3 PqWg== X-Gm-Message-State: AHQUAuZCfrlG5pFWjbH9nV8r8IIquyjB/KG/OJgAhza2ETNVYb/7eFB9 ScBpuT/4711/2jgZYN1q/KlWZJOSOdw= X-Received: by 2002:a17:902:8bc6:: with SMTP id r6mr34675615plo.67.1549847312019; Sun, 10 Feb 2019 17:08:32 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id g14sm17177630pfg.27.2019.02.10.17.08.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 10 Feb 2019 17:08:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 10 Feb 2019 17:08:03 -0800 Message-Id: <20190211010829.29869-1-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::643 Subject: [Qemu-devel] [PATCH v2 00/26] target/arm: Implement ARMv8.5-MemTag X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Based-on: <20190204131228.25949-1-richard.henderson@linaro.org> aka "[PATCH v3 0/4] target/arm: Implement ARMv8.5-BTI". The full tree is available at https://github.org/rth7680/qemu.git tgt-arm-mte Changes since v1: * Updates to a newer revision of the spec. I know there is still work to do here: another argument to STG, ST2G, and a new STZGM insn. * User emulation adds an x-tagged-pages property. Without that, all pages are MemAttr != Tagged and so all accesses unchecked. I am not turning off SCTLR_EL1.ATA0, so even without x-tagged-pages the program has access to tag generation (e.g. the IRG insn). * System emulation is new, though effectively untested. I need to fiddle around with the kernel to see what I can put together there. What I can see is: address-space: cpu-tag-memory-0 0000000000000000-07fffffffffffffe (prio 0, i/o): tag-memory 0000000002000000-0000000009ffffff (prio 0, ram): mach-virt.tag address-space: cpu-memory-0 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000040000000-000000013fffffff (prio 0, ram): mach-virt.ram * New checks for alignment and page permissions before allowing access to the tag memory. r~ Richard Henderson (26): target/arm: Split out arm_sctlr target/arm: Split helper_msr_i_pstate into 3 target/arm: Add clear_pstate_bits, share gen_ss_advance target/arm: Add MTE_ACTIVE to tb_flags target/arm: Extract TCMA with ARMVAParameters target/arm: Add MTE system registers target/arm: Assert no manual change to CACHED_PSTATE_BITS target/arm: Fill in helper_mte_check target/arm: Suppress tag check for sp+offset target/arm: Implement the IRG instruction target/arm: Implement ADDG, SUBG instructions target/arm: Implement the GMI instruction target/arm: Implement the SUBP instruction target/arm: Define arm_cpu_do_unaligned_access for CONFIG_USER_ONLY target/arm: Implement LDG, STG, ST2G instructions target/arm: Implement the STGP instruction target/arm: Implement the access tag cache flushes target/arm: Implement data cache set allocation tags target/arm: Set PSTATE.TCO on exception entry tcg: Introduce target-specific page data for user-only target/arm: Cache the Tagged bit for a page in MemTxAttrs target/arm: Create tagged ram when MTE is enabled target/arm: Add allocation tag storage for user mode target/arm: Add allocation tag storage for system mode target/arm: Enable MTE tests/tcg/aarch64: Add mte smoke tests include/exec/cpu-all.h | 10 +- target/arm/cpu.h | 52 ++- target/arm/helper-a64.h | 15 + target/arm/helper.h | 3 - target/arm/internals.h | 37 +++ target/arm/translate.h | 36 ++ accel/tcg/translate-all.c | 28 ++ hw/arm/virt.c | 33 ++ linux-user/mmap.c | 10 +- linux-user/syscall.c | 4 +- target/arm/cpu.c | 31 +- target/arm/cpu64.c | 19 ++ target/arm/helper-a64.c | 30 ++ target/arm/helper.c | 208 ++++++++++-- target/arm/mte_helper.c | 529 ++++++++++++++++++++++++++++++ target/arm/op_helper.c | 80 +---- target/arm/translate-a64.c | 352 ++++++++++++++++---- target/arm/translate.c | 11 - tests/tcg/aarch64/mte-1.c | 27 ++ tests/tcg/aarch64/mte-2.c | 39 +++ target/arm/Makefile.objs | 2 +- tests/tcg/aarch64/Makefile.target | 4 + 22 files changed, 1360 insertions(+), 200 deletions(-) create mode 100644 target/arm/mte_helper.c create mode 100644 tests/tcg/aarch64/mte-1.c create mode 100644 tests/tcg/aarch64/mte-2.c -- 2.17.2