From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755945AbcIMKhB (ORCPT ); Tue, 13 Sep 2016 06:37:01 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:57084 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752031AbcIMKg7 (ORCPT ); Tue, 13 Sep 2016 06:36:59 -0400 From: Arnd Bergmann To: Roger Quadros Cc: gregkh@linuxfoundation.org, stern@rowland.harvard.edu, ssantosh@kernel.org, grygorii.strashko@ti.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4] usb: core: setup dma_pfn_offset for USB devices and, interfaces Date: Tue, 13 Sep 2016 12:36:43 +0200 Message-ID: <4403953.WnstcHvg1n@wuerfel> User-Agent: KMail/5.1.3 (Linux/4.4.0-34-generic; KDE/5.18.0; x86_64; ; ) In-Reply-To: <92772fe0-5c3d-b2f0-6ab3-0504f29de7e4@ti.com> References: <1471437328-8621-1-git-send-email-rogerq@ti.com> <92772fe0-5c3d-b2f0-6ab3-0504f29de7e4@ti.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:nX7C2Ppo4Jqic7ebfOJD4Cm/4Otre3H7RgUFaCfVMviRuxbuLgv ozSBQmVsPHUKVGSoNYWCI3M0wuWTil0rEDP8ePFtowy9MUQ/gxAGMyZRfJSIQn23mJgIAA5 sK44LJ1OsNwXu0KyjJU9j1MDY4lO1j5AdD8Nlfxox0I8mBuE+CGZqpkF7JopCpic9/41D1w pB8/YOua46j3DFCFx0AuQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:GJu66a/x1BA=:n7qHDvPotaycVpdon0vA4U 54WL1+niGStzb90//2oIP3WTJPbX10hfYmugpm5jNi6wSKPLTJqJICupqxyktWlmH7ZBPYDDZ V45g8+E27B1zBlfFnl1YgLz3+DEJPodOjR+uYuQjVCS3vksF/pUyDstjla1V1mhr55Z9mVHiB Xttvb2PQenshZSSOt2XnqTgX3kXOS+RQOp6/NhAqIuObobXk0rSQDgjW6G7Z6zJuYoqtAUYAe Q1fe4NNXzx71HING6PDEoqy29S/riEu/jErsT6wcUM516A1V5AFhWd4M6+0+1LdAnZjZb2k2t QmKZNjkv3HJ1WYLOefjRghNQ7u0eteH4W57jlerW2anlMCdQDCmnEAbMw4oWVhcAB1/BCNzuH xJAlIU6L/tcG3PqmVCc4FyDHZpoV/8tanEzu94hMAztbxmk6YK7+oPjAVTMI4ek/wNLUoNUIN r+ESSVQIPbhbFs64tvyKKImR74jRzSMUXNfv+vQWf3leOIT5Plqy+F7Wj3dmmMePeBrVs6xmN QFh38Jd90kDCrtszFZCjh1rizudtrVmmBMoK7iEozyD/eXRkMNvvgT+qK+V8hsWeQ1T6mXO+4 ONtBT6Jvbx9K1zAY63xamJycrNXWNJev/JAsnQjNUAdCzpe7CkCdIkcVXvwIeV9MM62p9zns7 X8n6bgIT4sXOjaUfcs/kvV1bjO8fEBCI15UDrOo3bNX7NHqtyN0sNdb9MhJ/z0bf/zygCuQlA ps2JH1PuoBSYsQY7 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tuesday, September 13, 2016 11:16:03 AM CEST Roger Quadros wrote: > If dma_pfn_offset is not inherited correctly from the host controller, > it might result in sub-optimal configuration as bounce > buffer limit might be set to less than optimal level. > > Consider the mass storage device case. > USB storage driver creates a scsi host for the mass storage interface in > drivers/usb/storage/usb.c > The scsi host parent device is nothing but the the USB interface device. > Now, __scsi_init_queue() calls scsi_calculate_bounce_limit() to find out > and set the block layer bounce limit. > scsi_calculate_bounce_limit() uses dma_max_pfn(host_dev) to get the > bounce_limit. host_dev is nothing but the device representing the > mass storage interface. > If that device doesn't have the right dma_pfn_offset, then dma_max_pfn() > is messed up and the bounce buffer limit is wrong. > > e.g. On Keystone 2 systems, dma_max_pfn() is 0x87FFFF and dma_mask_pfn > is 0xFFFFF. Consider a mass storage use case: Without this patch, > usb scsi host device (usb-storage) will get a dma_pfn_offset of 0 resulting > in a dma_max_pfn() of 0xFFFFF within the scsi layer > (scsi_calculate_bounce_limit()). > This will result in bounce buffers being unnecessarily used. > > Hint: On 32-bit ARM platforms dma_max_pfn() = dma_mask_pfn + dma_pfn_offset > > Signed-off-by: Roger Quadros Acked-by: Arnd Bergmann