Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1649951imm; Sat, 4 Aug 2018 07:51:31 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfgq3m13UELcqB1bLENz/NPcRnl0ZLPOoCRR/ZZg1hjqJDuCvVqtlf2mekn5JMyk1AQ30QW X-Received: by 2002:a62:5302:: with SMTP id h2-v6mr1036804pfb.183.1533394291524; Sat, 04 Aug 2018 07:51:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533394291; cv=none; d=google.com; s=arc-20160816; b=VjyWL1/bWeLAcBhQ6oZH4KanvnzZ4J9XtfYatnlBrtvdJuGvmoISwAB5cwon81FmDT AvxM6CPuL/di7rNkoGTfjjwiL1HGIi6BojznIGsZ5y68VcNbASC5XO4kCJfBSQv1lrMU hGx03DUI3tF2qh2vw98xMn585TR99bCde/ylGSgjEopth6tuXCk99jf5yHi5Ahq+6XYN VKfN4uuyIfekO1lOvjjT46diJuYQZ01eB4dSnNBrkEggKyJZXLAomePAntOxrWEmPXax c6gAmqsr7+WWDZJZAqHqEudufAWAkVeyFbpiGi07oh3PwN1HXJtYtsKGRWCgLXzN2sEH Ra4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:in-reply-to :subject:cc:to:from:date:arc-authentication-results; bh=uxUvflwzwE5y/d1NDOFFpApbS1agNZtrxdTN5SAC7bI=; b=ldVYDff/8Ri8DLo/CBda8xY+zhgk6ICGCB/gZkCCS6K+FRxs2G5hj91E4eGJNWy3E6 XV7rHmghq/pqqdQkPm5yA1A/cZJ6m0Jg+psWRGGRVnWmqYZn3mk5UBcwBKkFHPoHmRMw dyiOmdqw6FbJz3HQ9sqap+eIcrd1oJZyL8IyqdXQaNbvbptquNjGlEQi5EwhFTD0UYhp HVoCqLP6CfFBBhOSwGanueI98zoKWrh1sFHed72KcPwe8wEakQsGx7shkmrpsaxvCHsd LiKh3ntL6Lq/ILKHqGsxW/zsI2S+gDclsgSi+ovO7uuYQWu5V04hcfMSBEvuegdeo9Y7 +/Zg== ARC-Authentication-Results: i=1; mx.google.com; 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 w7-v6si7307219pgf.231.2018.08.04.07.51.16; Sat, 04 Aug 2018 07:51:31 -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; 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 S1729707AbeHDQvM (ORCPT + 99 others); Sat, 4 Aug 2018 12:51:12 -0400 Received: from netrider.rowland.org ([192.131.102.5]:40987 "HELO netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1727832AbeHDQvM (ORCPT ); Sat, 4 Aug 2018 12:51:12 -0400 Received: (qmail 26243 invoked by uid 500); 4 Aug 2018 10:50:15 -0400 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 4 Aug 2018 10:50:15 -0400 Date: Sat, 4 Aug 2018 10:50:15 -0400 (EDT) From: Alan Stern X-X-Sender: stern@netrider.rowland.org To: Guenter Roeck cc: Greg Kroah-Hartman , , Subject: Re: [PATCH] USB: OHCI: ohci-sm501: complete URBs in BH context In-Reply-To: <1533355279-26725-1-git-send-email-linux@roeck-us.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 3 Aug 2018, Guenter Roeck wrote: > Testing an USB drive connected to ohci-sm501 results in a large number > of runtime warnings. > > WARNING: CPU: 0 PID: 0 at ./include/linux/dma-mapping.h:541 > hcd_buffer_free+0x148/0x178 > Modules linked in: > > CPU: 0 PID: 0 Comm: swapper Not tainted 4.18.0-rc7-00014-g7ec386e4c991-dirty > PC is at hcd_buffer_free+0x148/0x178 > PR is at hcd_buffer_free+0x66/0x178 > PC : 8c26cbb0 SP : 8c481da8 SR : 400080f1 > TEA : c00c8fe0 > R0 : 000000f0 R1 : 000000f0 R2 : 8f9bb890 R3 : 00000000 > R4 : 8f9c8800 R5 : 00001004 R6 : b07c6000 R7 : 007c6000 > R8 : 00001004 R9 : 8f9bb814 R10 : 8c388104 R11 : 007c6000 > R12 : b07c6000 R13 : 8f875680 R14 : 00000000 > MACH: 000002fe MACL: 0000017c GBR : 00000000 PR : 8c26cace > > Call trace: > [<(ptrval)>] usb_hcd_unmap_urb_for_dma+0xf4/0x13c > [<(ptrval)>] arch_local_save_flags+0x0/0x8 > [<(ptrval)>] __usb_hcd_giveback_urb+0x2e/0xdc > [<(ptrval)>] arch_local_save_flags+0x0/0x8 > [<(ptrval)>] finish_urb+0x8a/0x164 > [<(ptrval)>] arch_local_save_flags+0x0/0x8 > [<(ptrval)>] printk+0x0/0x48 > [<(ptrval)>] ohci_work.part.11+0x150/0x41c > [<(ptrval)>] td_done.isra.4+0x0/0x11c > [<(ptrval)>] vprintk_default+0x14/0x20 > [<(ptrval)>] arch_local_save_flags+0x0/0x8 > [<(ptrval)>] ohci_irq+0x20c/0x314 > [<(ptrval)>] usb_hcd_irq+0x16/0x28 > > Code analysis shows that interrupts are indeed disabled in ohci_irq(). > Handle the situation by setting the HCD_BH flag in the ohci-sm501 driver. > With this flag set, urbs are released in a tasklet and not by the > interrupt handler. > > Fixes: f54aab6ebcecd ("usb: ohci-sm501 driver") > Signed-off-by: Guenter Roeck Unfortunately, one must not simply turn on this flag. Doing so will violate some of the documented requirements for scheduling of periodic transfers. Significantly deeper changes to the OHCI driver are necessary before the flag is set. Alan Stern > --- > drivers/usb/host/ohci-sm501.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/host/ohci-sm501.c b/drivers/usb/host/ohci-sm501.c > index c9233cddf9a2..eeb5b3137cf2 100644 > --- a/drivers/usb/host/ohci-sm501.c > +++ b/drivers/usb/host/ohci-sm501.c > @@ -49,7 +49,7 @@ static const struct hc_driver ohci_sm501_hc_driver = { > * generic hardware linkage > */ > .irq = ohci_irq, > - .flags = HCD_USB11 | HCD_MEMORY | HCD_LOCAL_MEM, > + .flags = HCD_USB11 | HCD_MEMORY | HCD_LOCAL_MEM | HCD_BH, > > /* > * basic lifecycle operations >