Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp335734ybt; Wed, 17 Jun 2020 02:08:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz/+2inNnswmzILZSOsMNJDCCRUVg0cBo5RHB8AaproOPDrWbUtdL1RTo9sKriW0LuudtOk X-Received: by 2002:a17:906:6b8a:: with SMTP id l10mr6253136ejr.465.1592384880470; Wed, 17 Jun 2020 02:08:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592384880; cv=none; d=google.com; s=arc-20160816; b=ZsY2OIdNL08vv5IE/0yZDLYD9xXBA7HlzpOKeDCxykdtsQJUjlE0Yl4TRNFdlIK5sN JYMSoY/W2Tis+kSafQuAhaVtXL2p/cdnQHAwTBVBavqGoPOOi3HxzKX+c8wc7dVQDfW8 5eB65g6z2Orl+UhhD6Yw57i7ZK3felTiBSusgZNCSUw736A9kDjF/VJdwUn0xmPzHQ2p S3IZX624W9WqUz1AzJQjP8cmIICJiuGPvkdZ6W7JBmsLNGNaRRZXnqQEAdrANUMB2i+A TN5Bq6GMXMIUakbJklwz9UoPLGpHJiLB5wkaUk0P96DqzZl5/uiuflDrwUwMBbierMsf FEZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=O8uusENFHgtRiLU833qE274616Po1yGCg5u4oskG+Pc=; b=Y+VpBj9qBt5N2wTNmfVURBfV7uvNyy3TwMfbxAwFSZxt+FfTj4QwYAfJWe3niiAxxE XIhQZN0ehlM9TsV3wDGk2rw5mkyK+9Wa3dNdeVAHEZXIPz2na3krAzbA3qBVa1Ekmx4V AsXnseBwWtMv1uTqXY14h1kU9hfykZiF9zfsAmyyCrojRE5z+diMye2m7LkwFw98aIoe g+i0LRBLtQUy0dGQ48n8l+jnc5oRAjDi1bmieFcXoMMPnaPw5X0FOLNC6VrYf5nqGBjL srwDgtkeUPMFY3MCPMn9ek4lPhG4mk3P0MZipGJi4gu92BlS72a9MBkDYws9Me3rm0dA ydww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=BJezgYXO; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w19si11632158edt.402.2020.06.17.02.07.37; Wed, 17 Jun 2020 02:08:00 -0700 (PDT) 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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=BJezgYXO; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726313AbgFQJDd (ORCPT + 99 others); Wed, 17 Jun 2020 05:03:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725894AbgFQJDc (ORCPT ); Wed, 17 Jun 2020 05:03:32 -0400 Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E124DC061573 for ; Wed, 17 Jun 2020 02:03:31 -0700 (PDT) Received: by mail-pl1-x641.google.com with SMTP id v24so627102plo.6 for ; Wed, 17 Jun 2020 02:03:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=O8uusENFHgtRiLU833qE274616Po1yGCg5u4oskG+Pc=; b=BJezgYXOSuWVS6fopqT6ic6EXVlT4CnCbhywI6aSA+lD5URJTr9n4660kaqw0qb8RL N5Ia+vAa6op1xONrEv+0OQ8cJX2cxKWf4YeQOpo27ZqoXvVmeakNsAQoXHYK6BAHUIhi ONf1+fdHrU5zC2GOeLgQl5AOiYtpnJa78Agz7K5VkGstFCBObC4xOeiifszZCN7/lqBy PsG2LGaNdh2kaYWigLmATnheEjRzkan8JKA/NLGPJLDMoMuqn79v387mGkWbPabO0qwi qnF9pI0/PkOM0kM05ioKKhthnLRsnQzhqhHmDiyaC/K1UEFCUbhXJBlh8EW2S5NCGjtt r54Q== 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:mime-version :content-transfer-encoding; bh=O8uusENFHgtRiLU833qE274616Po1yGCg5u4oskG+Pc=; b=Z6XAwiKSLXW9JXF9W9v0di9Uxg/lx9x8tlz9+UQ/eichuV0s0MthiZ/vMl2EQnh3nK Cw6HSR+4R8UsOpwumfIhkqcLk53yYPjtyk1qvQkURoDgsNK1jZDqT4x0vOsxMuS4uAxL ia7UA6DZVutL1exK7LVWEKW12hRn4dQWr3uUNr/339VUvsimrh8bNngSQ7t+ShGhbVNu ZjQsGeGbaejpKKocIv+EuaeLRwWcrQixgHmycPpl/XBHHEsg1q2MfsdGO8JgzI5z0Fab EMYjPs3ahLalsqZKuuFdZ/CrEFIed481nuGLCFcrpTmtRuJczMbTj5Gp6qqYI3g0/neh 8pqw== X-Gm-Message-State: AOAM532UpTcH0wPtiuOwz4qDVN/RNjO27cgYUsWFdCBq6X3UZcSmYwY3 zSP6BgAa511eLbWx+PDMP790ikNtg4Y= X-Received: by 2002:a17:902:8c84:: with SMTP id t4mr5681414plo.315.1592384610948; Wed, 17 Jun 2020 02:03:30 -0700 (PDT) Received: from localhost (g228.115-65-196.ppp.wakwak.ne.jp. [115.65.196.228]) by smtp.gmail.com with ESMTPSA id b5sm19768965pfg.191.2020.06.17.02.03.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2020 02:03:29 -0700 (PDT) From: Stafford Horne To: LKML Cc: Stafford Horne , Michel Lespinasse , Jonas Bonn , Stefan Kristiansson , Jason Gunthorpe , Steven Price , Thomas Hellstrom , Robin Murphy , Andrew Morton , Vlastimil Babka , Daniel Jordan , openrisc@lists.librecores.org Subject: [PATCH] openrisc: Fix boot oops when DEBUG_VM is enabled Date: Wed, 17 Jun 2020 18:02:46 +0900 Message-Id: <20200617090247.1680188-1-shorne@gmail.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since v5.8-rc1 OpenRISC Linux fails to boot when DEBUG_VM is enabled. This has been bisected to commit 42fc541404f2 ("mmap locking API: add mmap_assert_locked() and mmap_assert_write_locked()"). The added locking checks exposed the issue that OpenRISC was not taking this mmap lock when during page walks for DMA operations. This patch locks and unlocks the mmap lock for page walking. Fixes: 42fc541404f2 ("mmap locking API: add mmap_assert_locked() and mmap_assert_write_locked()" Cc: Michel Lespinasse Signed-off-by: Stafford Horne --- arch/openrisc/kernel/dma.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/openrisc/kernel/dma.c b/arch/openrisc/kernel/dma.c index c152a68811dd..345727638d52 100644 --- a/arch/openrisc/kernel/dma.c +++ b/arch/openrisc/kernel/dma.c @@ -74,8 +74,11 @@ void *arch_dma_set_uncached(void *cpu_addr, size_t size) * We need to iterate through the pages, clearing the dcache for * them and setting the cache-inhibit bit. */ + mmap_read_lock(&init_mm); error = walk_page_range(&init_mm, va, va + size, &set_nocache_walk_ops, NULL); + mmap_read_unlock(&init_mm); + if (error) return ERR_PTR(error); return cpu_addr; @@ -85,9 +88,11 @@ void arch_dma_clear_uncached(void *cpu_addr, size_t size) { unsigned long va = (unsigned long)cpu_addr; + mmap_read_lock(&init_mm); /* walk_page_range shouldn't be able to fail here */ WARN_ON(walk_page_range(&init_mm, va, va + size, &clear_nocache_walk_ops, NULL)); + mmap_read_unlock(&init_mm); } void arch_sync_dma_for_device(phys_addr_t addr, size_t size, -- 2.26.2