Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp1711ybp; Thu, 3 Oct 2019 13:52:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqxGDcRI/Y7/L8zU7iAXa8jn38GbM/3wUMuUANrM3thiWe0lgrFeo0bUQrTdwzrkdfr/3In+ X-Received: by 2002:a05:6402:1549:: with SMTP id p9mr11750913edx.221.1570135926749; Thu, 03 Oct 2019 13:52:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570135926; cv=none; d=google.com; s=arc-20160816; b=r/qyGyRgOL7hA4S3yu1iy5xxDFzFakuoj668eLct8PIR6IVU0ipWgv2tAPxL6uhzpS Jd3cbhBs8WRnvt3TYruy/hR/sMcBUKsyyOap2orv2XT44OX70uU2PTGqAg35DF/7r2YT Olu2bZ97gskwzLrmIYEl/gBgDO8Nep/ZKRc2iaEUQQjal6iXjji9ykvNtU4PS6Jye3VZ 4V0OGslqY34p1RtI9eRhh+S57kfpfDg4XNDp1i0dOUHeQIc+AYIdTMhkRzVPum7pJ0Lo M4T14oBrymoZoEWW6maa2MuDxSZvBGBzzhnvcW94/dMFqd9mzddmHXhDFZRpi5wHA0/f AcHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=oT5munY2A09zpSHzYJ6m6wmIRb/RVjgLvFvW+U+KSoY=; b=0vDjO/zGHhyBjMx/MibI/eYNEHpbeAjhOwdi6ZYSPo7Y4rEZ27NDdKKLB7Ph3uudCJ q0D5OjpbFU952X7crXH5ayqzehhVVoGJy4JHrQs6uQY05jyc2Sa88plQ4N/lmgT+/Foh 5rPf3w16F67rPw3w064nhHjGEuLgouzb5UdmvmCIjVTInWGh5NubcCa8hHR9HMVopa/j OD3KNGc3QFpJjpBsj3Q2TNdjnepFtnEktr9ajT7h93h7MjImXSm/4tC2rDSA7by3W9Zn /tSjw/45QFTBsM6wP5eJQVdRW5Tg+xFlfxdRAw0r+ElUyFgwjvzW0zAdFBmysBHeZl8T 6sww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gateworks-com.20150623.gappssmtp.com header.s=20150623 header.b=xMip7plz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id sb7si1929420ejb.321.2019.10.03.13.51.42; Thu, 03 Oct 2019 13:52:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gateworks-com.20150623.gappssmtp.com header.s=20150623 header.b=xMip7plz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731669AbfJCUvR (ORCPT + 99 others); Thu, 3 Oct 2019 16:51:17 -0400 Received: from mail-wr1-f67.google.com ([209.85.221.67]:41462 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729732AbfJCUvR (ORCPT ); Thu, 3 Oct 2019 16:51:17 -0400 Received: by mail-wr1-f67.google.com with SMTP id q9so4261762wrm.8 for ; Thu, 03 Oct 2019 13:51:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gateworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=oT5munY2A09zpSHzYJ6m6wmIRb/RVjgLvFvW+U+KSoY=; b=xMip7plzqBtaMG8e7QIgtdrUd2y6V5SX/WOrz/GyKIxy13ehe0olzrNXZCKbJc13d9 QwKm2GmW1840zwcHGUXOwYOVSuL/asmBZ1MmpK1l0JICCd9iqE1VeaY+n7liUlqi2vqZ dJ9rY47/oWc9gslxYiT1uKiS1yBOGY+Ex56+2xpEP9Dfr/IB0fUkiriCZGIqAfaxNU3G a3dkCvWXxXNecnV0MGX0M+cUsf6uVqVZIOa1M/HJzW2Gdndaf7RxSYyY26ilNeTaQ+bt +ewWpw++s6oJEj4OEHQ6hnQ/ohA5Ac4dAVk2cQX9O1beDM2QFJxUGeqEE1197IHvnOzq +XBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oT5munY2A09zpSHzYJ6m6wmIRb/RVjgLvFvW+U+KSoY=; b=GuspkiIM6cIXEyjTxwB5rFY3ludE87petU0PPJAg6J72tZQYOX4HkqS/dwV5LjJY3D BaTu3+XZx0lpUN4PlrRuNGJ5ghe9ClUhZhKVN3envwOxmAdBjJJNVzj0UNOwpkncSBuS g5nfLUn6ni7G3Umqadw02IDUNjCiMcWIDWfSU5RfBHmcMvh56WDl2o7aMtEepgKf/I+5 VetDrqeTOwbrQOnjVtTpluWvOwjcpN+xGwNP8je2/akSanVtPI1JFDHHkFrhONCeX4ds 46+jBFQp4k1hac6/2/+3MdT6ck5ZCo3uDg/2nCU6u/sp8NmNK7q6idzdwbJ+UY5u5U4Y QaGQ== X-Gm-Message-State: APjAAAWuKUYBTtal9zQUI0mi5Ebvl2L3y2kREOTHAJnNq99moKkrwc1l gOoPcPhXnlWUfacA2Ib+n7R++0S+LvKZ/MGMIgahwQ== X-Received: by 2002:a05:6000:45:: with SMTP id k5mr7782985wrx.259.1570135874531; Thu, 03 Oct 2019 13:51:14 -0700 (PDT) MIME-Version: 1.0 References: <20190301192017.39770-1-dianders@chromium.org> <5dce2964-8761-e7d0-8963-f0f5cb2feb02@arm.com> In-Reply-To: <5dce2964-8761-e7d0-8963-f0f5cb2feb02@arm.com> From: Tim Harvey Date: Thu, 3 Oct 2019 13:51:03 -0700 Message-ID: Subject: Re: [PATCH v2] iommu/arm-smmu: Break insecure users by disabling bypass by default To: Robin Murphy Cc: Douglas Anderson , Tirumalesh Chalamarla , Joerg Roedel , Will Deacon , linux-arm-msm@vger.kernel.org, evgreen@chromium.org, tfiga@chromium.org, Rob Clark , iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, Vivek Gautam , open list Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Oct 3, 2019 at 1:42 PM Robin Murphy wrote: > > Hi Tim, > > On 2019-10-03 7:27 pm, Tim Harvey wrote: > > On Fri, Mar 1, 2019 at 11:21 AM Douglas Anderson wrote: > >> > >> If you're bisecting why your peripherals stopped working, it's > >> probably this CL. Specifically if you see this in your dmesg: > >> Unexpected global fault, this could be serious > >> ...then it's almost certainly this CL. > >> > >> Running your IOMMU-enabled peripherals with the IOMMU in bypass mode > >> is insecure and effectively disables the protection they provide. > >> There are few reasons to allow unmatched stream bypass, and even fewer > >> good ones. > >> > >> This patch starts the transition over to make it much harder to run > >> your system insecurely. Expected steps: > >> > >> 1. By default disable bypass (so anyone insecure will notice) but make > >> it easy for someone to re-enable bypass with just a KConfig change. > >> That's this patch. > >> > >> 2. After people have had a little time to come to grips with the fact > >> that they need to set their IOMMUs properly and have had time to > >> dig into how to do this, the KConfig will be eliminated and bypass > >> will simply be disabled. Folks who are truly upset and still > >> haven't fixed their system can either figure out how to add > >> 'arm-smmu.disable_bypass=n' to their command line or revert the > >> patch in their own private kernel. Of course these folks will be > >> less secure. > >> > >> Suggested-by: Robin Murphy > >> Signed-off-by: Douglas Anderson > >> --- > > > > Hi Doug / Robin, > > > > I ran into this breaking things on OcteonTx boards based on CN80XX > > CPU. The IOMMU configuration is a bit beyond me and I'm hoping you can > > offer some advice. The IOMMU here is cavium,smmu-v2 as defined in > > https://github.com/Gateworks/dts-newport/blob/master/cn81xx-linux.dtsi > > > > Booting with 'arm-smmu.disable_bypass=n' does indeed work around the > > breakage as the commit suggests. > > > > Any suggestions for a proper fix? > > Ah, you're using the old "mmu-masters" binding (and in a way which isn't > well-defined - it's never been specified what the stream ID argument(s) > would mean for a PCI host bridge, and Linux just ignores them). The > ideal thing would be to update the DT to generic "iommu-map" properties > - it's been a long time since I last played with a ThunderX, but I > believe the SMMU stream IDs should just be the same as the ITS device > IDs (which is how the "mmu-masters" mapping would have played out anyway). > > The arm-smmu driver support for the old binding has always relied on > implicit bypass - there are technical reasons why we can't realistically > support the full functionality offered to the generic bindings, but it > would be possible to add some degree of workaround to prevent it > interacting quite so poorly with disable_bypass, if necessary. Do you > have deployed systems with DTs that can't be updated, but still might > need to run new kernels? > Robin, Thanks for the response. I don't care too much about supporting new kernels with the current DT - I'm good with fixing this with a DT change. Would you be able to give me an example? I would love to see Cavium mainline an cn81xx dts/dtsi in arch/arm64/boot/dts to be used as a base as the only thing we have to go off of currently is the Cavium SDK which has fairly old kernel support. Thanks, Tim