Received: by 10.223.176.5 with SMTP id f5csp3983131wra; Mon, 29 Jan 2018 23:53:11 -0800 (PST) X-Google-Smtp-Source: AH8x226bjTtiUFngJADbrqAiE8kd/2wS4HIEjRP1vM1Tl/tOUC31tqDaMowJXM3ThdQqanQW5Ol/ X-Received: by 10.101.68.138 with SMTP id l10mr13582529pgq.150.1517298791395; Mon, 29 Jan 2018 23:53:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517298791; cv=none; d=google.com; s=arc-20160816; b=FTm2Dt+3azrsKqyXX7s9xTcOMXoMXm0/jltYGkqNIMb93FuuYkEYDhxiGNG4AQDGZt s2LAKM3HojFOKERongilPD/tqy4MfU4pwlwbTvU9axxkYzZHyRZipnI231IDMTev4INH BN57NCQRqVuQbiBUx502YExhNmhuX+eG89KNXFpyTEMXGixTsCIZ1A9S8aWBDrtPtY+Z uPNZppAelvZOtzKkJzmHhqm5JcKDCoX8HYstrKAQ0H6bEocrPyX437fxKonFMmAbLf9O c6jGrZZyJeppmP0UTsffOmrEbCb3CmRH2GNFPQ0ryi/OXQNlvuWoS0DdjtemYIh/ZCa7 j0hA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=FV4oJrtzv72EHV3Ss8/drTvwkdfqY6gBJNcwQiZymOg=; b=ovZn3VwWSjmNT9q3Q2r+TmQ1Y0af/pPm12HEACm99rXn4IQEm+GmOeG4dbaTY8Hy+/ RA+LfF5ca96s/2yfNfRswN9IJQmumJ9tOx+4PSBuyFVqEoLBdsznXLfMHbHQzs/ht1BS IaxXDdojIADrjp/3k09fcUkJ8hN6F0396Y8SXKiympyumR6rfMYgGu6IV+tyYJIfd/IN ZwLwcNStUOChdiuYb7UtuMKRtrI/lMLwO89VRfM7QScJXQJkjvYDHr98Bmzok3mu0w9I Ho8DQHIbhES3Ymsm9xMEasuZQctqmSwddNuXcunQJWZsaKgyuphNylVMR1z2stvSaZzq d4sQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Z/4zdOmL; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b73-v6si1387698pli.488.2018.01.29.23.52.45; Mon, 29 Jan 2018 23:53:11 -0800 (PST) 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=@gmail.com header.s=20161025 header.b=Z/4zdOmL; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751756AbeA3HwN (ORCPT + 99 others); Tue, 30 Jan 2018 02:52:13 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:40329 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751537AbeA3HwM (ORCPT ); Tue, 30 Jan 2018 02:52:12 -0500 Received: by mail-pg0-f66.google.com with SMTP id g16so6604323pgn.7 for ; Mon, 29 Jan 2018 23:52:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=FV4oJrtzv72EHV3Ss8/drTvwkdfqY6gBJNcwQiZymOg=; b=Z/4zdOmL9OYGsQU+z1txdK4amFWvNBLd+SF0fqofizM3gEisdFDlbQCN3852nQN+Q9 38aMa/YDub+krLG4/IayUqt4xQasLhkQv3NvezDlTU0ITnIE7DVRjYPirWhGt1gA5bbm IFI3WCuCCaL59iGoRpsrR9FF3AaZfKpR4LiRYlpS7+pV1V985Nu9ZHQMpghLujuFTJN2 gAwwrNF2Ti/JZToj0MQJZE8Grphx6jIwL+NGibEN5rNHyyGZRKC3MIQTj1DLfsdEMlQ1 9nLBhdcM5FsmveuGAhF4pP9uglbVqoLBakD4qMcFxt+OGsJuuMxEuNR9RVkeqB124YOO 27gA== 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=FV4oJrtzv72EHV3Ss8/drTvwkdfqY6gBJNcwQiZymOg=; b=iMjdxZ9IJ4S9bXnhBvmeKk1DZd18MjEyAFNAS7RoL9Nhse/0V74g+G4ma0klBxNRFJ fEZ0IL1FYk6h6endVl+jtUQ6EImW7F2TOfEeSE3FsaXaqsvLM//h4KFWagPKIm4LGI5z S/LVXU704G7zThda8g64CEhqv2a0n07wGTjavVRDkY5mWLn2Q9N5PKCvKIjom/hpjIN7 pz7JgsGLfLk+jL0VZuu1xQH30CzmvEUftUF1uWe9qOhrZEQxUITbJ5y/EeRK77z3Q3Jp 8F0pSfm64rp0anAMz0SnUWxNBmItM3gRIUNAnzUEhM83Am46Qp15w21bEk5Zi2V+sKzj zCuA== X-Gm-Message-State: AKwxytdlMk765/e4X0xy9MVuzyLwd1O9tI2PUwSA5DlOCBoDuB9D8sQ+ do+0q+Pl0USuFGy1i4vISDQ= X-Received: by 2002:a17:902:d81:: with SMTP id 1-v6mr25045642plv.270.1517298731286; Mon, 29 Jan 2018 23:52:11 -0800 (PST) Received: from app09.andestech.com ([118.163.51.199]) by smtp.gmail.com with ESMTPSA id c185sm34411376pfb.146.2018.01.29.23.52.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Jan 2018 23:52:10 -0800 (PST) From: Zong Li To: palmer@sifive.com, albert@sifive.com, patches@groups.riscv.org, linux-kernel@vger.kernel.org Cc: zongbox@gmail.com, zong@andestech.com Subject: [PATCH] RISC-V: Enable IRQ during exception handling Date: Tue, 30 Jan 2018 15:51:45 +0800 Message-Id: <1517298705-19061-1-git-send-email-zongbox@gmail.com> X-Mailer: git-send-email 1.7.9.5 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Interrupt is allowed during exception handling. There are warning messages if the kernel enables the configuration 'CONFIG_DEBUG_ATOMIC_SLEEP=y'. BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:23 in_atomic(): 0, irqs_disabled(): 1, pid: 43, name: ash CPU: 0 PID: 43 Comm: ash Tainted: G W 4.15.0-rc8-00089-g89ffdae-dirty #17 Call Trace: [<000000009abb1587>] walk_stackframe+0x0/0x7a [<00000000d4f3d088>] ___might_sleep+0x102/0x11a [<00000000b1fd792a>] down_read+0x18/0x28 [<000000000289ec01>] do_page_fault+0x86/0x2f6 [<00000000012441f6>] _do_fork+0x1b4/0x1e0 [<00000000f46c3e3b>] ret_from_syscall+0xa/0xe Signed-off-by: Zong Li --- arch/riscv/kernel/entry.S | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S index 7404ec2..61f063e 100644 --- a/arch/riscv/kernel/entry.S +++ b/arch/riscv/kernel/entry.S @@ -169,6 +169,9 @@ ENTRY(handle_exception) move a1, sp /* pt_regs */ tail do_IRQ 1: + /* Exceptions run with interrupts enabled */ + csrs sstatus, SR_SIE + /* Handle syscalls */ li t0, EXC_SYSCALL beq s4, t0, handle_syscall @@ -195,8 +198,6 @@ handle_syscall: */ addi s2, s2, 0x4 REG_S s2, PT_SEPC(sp) - /* System calls run with interrupts enabled */ - csrs sstatus, SR_SIE /* Trace syscalls, but only if requested by the user. */ REG_L t0, TASK_TI_FLAGS(tp) andi t0, t0, _TIF_SYSCALL_TRACE -- 2.9.3