Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp972576ybl; Fri, 24 Jan 2020 12:59:51 -0800 (PST) X-Google-Smtp-Source: APXvYqy8YEEIY7zgq0Gf8PoYhAf7OPewBQJSvd6dt1cFzZLtRQZV7x+Eq7BizKxT6N6yRFW4ZDjk X-Received: by 2002:a9d:7ada:: with SMTP id m26mr4280145otn.111.1579899591013; Fri, 24 Jan 2020 12:59:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579899591; cv=none; d=google.com; s=arc-20160816; b=j1o657niCJcazDRXHfnOZSi9fPi3hUBhPdjQeDDHkm8Y1VAX+FyJS4wVA+7PdGIlTP O7yhsrwQHqFQLJZa+OHpm9l1cMAU80Rg1Zjhwr08vzjR+D8fjtljHNKmsQcrx7AhEaud ffm+/8JVGzzH1xDq449E2rXbbVJDoGnHVfmqhND5bS72kB/kMDD4D9Iiubo6wfO2GuCE CVMFTVXxKsdghJBrZKI45KM2yIcfdlpRJBs+R7SvIcOL+OpfmNwjY02NvMH6S4NJ85xN dtqTZ4+ndxVvd5U6C+0O0uCS9rpVtK/96OxodIeIS9zlonsT9njOWNu2YDUKGwljLy07 rgAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version; bh=oW6cDQjZo9M158DMYBhLZ9KoX6m4J57IUdjn0G/gus0=; b=lqU/Chg/dT4huTqXqX0eD9NAnL9NmGn2eQh26Owgg0dvLrtXhgny+xE33mq9D5EooH rA+ibYQ33fCxlvqTtYBfaR9SEwss76TiPkJWcHvSymj0SrCkGan5XBccmDhrk5B/BKcu gBIYNUzgigAepggndnCC8SruSu9WZv5gkcBRILH6N+lUYv7dbjBsws7AYVTfugKOhrUA 2Gil/NGa9ciBStGv0t1pdxxHIjPhWU0a2dXPkvCIZsT44UIGnBcN3/Kv/YRTEZm4q762 wiKCB4eGW2DSS8fFgKYpdcpSMsAsaoiubujYL2oSn2lLbfY7APx6hOKdDdokBkxqhlIT YC6g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-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 t12si3396606otq.53.2020.01.24.12.59.38; Fri, 24 Jan 2020 12:59:50 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-bluetooth-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-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388654AbgAXS6f convert rfc822-to-8bit (ORCPT + 99 others); Fri, 24 Jan 2020 13:58:35 -0500 Received: from coyote.holtmann.net ([212.227.132.17]:47996 "EHLO mail.holtmann.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391725AbgAXS6e (ORCPT ); Fri, 24 Jan 2020 13:58:34 -0500 Received: from marcel-macpro.fritz.box (p4FEFC5A7.dip0.t-ipconnect.de [79.239.197.167]) by mail.holtmann.org (Postfix) with ESMTPSA id CFDB2CED12; Fri, 24 Jan 2020 20:07:51 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.40.2.2.4\)) Subject: Re: [PATCH] Bluetooth: btrtl: Use kvmalloc for FW allocations From: Marcel Holtmann In-Reply-To: <20200124171535.32919-1-maxtram95@gmail.com> Date: Fri, 24 Jan 2020 19:58:31 +0100 Cc: Johan Hedberg , linux-bluetooth@vger.kernel.org, Martin Blumenstingl , Carlo Caione Content-Transfer-Encoding: 8BIT Message-Id: References: <20200124171535.32919-1-maxtram95@gmail.com> To: Maxim Mikityanskiy X-Mailer: Apple Mail (2.3608.40.2.2.4) Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Hi Maxim, > Currently, kmemdup is applied to the firmware data, and it invokes > kmalloc under the hood. The firmware size and patch_length are big (more > than PAGE_SIZE), and on some low-end systems (like ASUS E202SA) kmalloc > may fail to allocate a contiguous chunk under high memory usage and > fragmentation: > > Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000a lmp_ver=06 lmp_subver=8821 > Bluetooth: hci0: RTL: rom_version status=0 version=1 > Bluetooth: hci0: RTL: loading rtl_bt/rtl8821a_fw.bin > kworker/u9:2: page allocation failure: order:4, mode:0x40cc0(GFP_KERNEL|__GFP_COMP), nodemask=(null),cpuset=/,mems_allowed=0 > > > As firmware load happens on each resume, Bluetooth will stop working > after several iterations, when the kernel fails to allocate an order-4 > page. > > This patch replaces kmemdup with kvmalloc+memcpy. It's not required to > have a contiguous chunk here, because it's not mapped to the device > directly. > > Signed-off-by: Maxim Mikityanskiy > --- > drivers/bluetooth/btrtl.c | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) patch has been applied to bluetooth-next tree. Regards Marcel