From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752763AbcAGCfD (ORCPT ); Wed, 6 Jan 2016 21:35:03 -0500 Received: from mail-by2on0061.outbound.protection.outlook.com ([207.46.100.61]:4320 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752575AbcAGCe5 (ORCPT ); Wed, 6 Jan 2016 21:34:57 -0500 X-Greylist: delayed 1067 seconds by postgrey-1.27 at vger.kernel.org; Wed, 06 Jan 2016 21:34:57 EST Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=lingzhu.xiang@mail.utoronto.ca; MIME-Version: 1.0 In-Reply-To: References: <20160106001143.GA1171@kroah.com> From: Lingzhu Xiang Date: Wed, 6 Jan 2016 21:01:11 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2] Add support for usbfs zerocopy. To: "Steinar H. Gunderson" CC: Greg Kroah-Hartman , , , Content-Type: text/plain; charset="UTF-8" X-Originating-IP: [209.85.160.174] X-ClientProxiedBy: CY1PR13CA0063.namprd13.prod.outlook.com (25.163.230.159) To BLUPR03MB360.namprd03.prod.outlook.com (10.141.75.155) X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB360;2:BuCaigOMROozMrFTUL2b7cxzN8dKCyrTCszcQH5xoYgQejL81Alim6TdEYxP9Ak+h/Ag+YAXh1xZsLspWFk0b6N2fQqnkK1Ffiq6AYyglyRer4ZzyT4wkoy4mAUZZmp66IGkAovJ88esJ2YC+Xl9uA==;3:zEZ/lvdqQBJEwFBnpDGyMdasaBE6bhMoUnMX+8qRWtsB9y0LNqOThg5RFHdPpA54DKNgicA9PENFEXPScTqBik8D1JJgtN6ONkzc7mDV4k7g2FO7JcQWSxz2NDFjrbMc;25:rjKJUFTsIguGvq0XdcWFdK6anfU0XiDrIqSaBLWps+9htfXVADd+CIixxek7UhGKvI4ykSathqaoiKnAJ7wpXVAOG+MfUHsYjbFVM5/TDSgyi8pbw+IIt5JJi9pP4ll4Td2vn73BHg85ASmWrapfNJg6eHUR82nlZeB45oPz6P6soKPievD/83SvEbJo9sKkp1L8VrVq5o3UI+uaXkiJ8w==;20:I0YG4sXASXiTB51c1Mao6OKTBvyoFglJ21YUArT+OoWUQ/l4YNOf4nwys9aTw3qgvJpB00xSrbKs5D8d1gDmlzRbOSIcNNiv3QgTSczpx8jQ5OZG3SuKFUHy7is/b05zJxNNtCxp9zgt2gJR1ImCltXpwmBQNOPMCW0kjSaQ00M= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB360; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(10201501046)(3002001);SRVR:BLUPR03MB360;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB360; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB360;4:+xb6Ar2iU06jiJuL+nC7ubyWrmGElsfvVbCppa9Np3queJ/AHlK+8dWTPIiNEb4/fmOT1aXuipPzYvnJfTB8Lg92XQuZgtzO2D0+fxzs8wfr4/jBfwoHUnrM+K/Q0bi4HtHfzhjApk6hukWwtLOUzTdEXTQMDvRGf3tcfbIotNZ45hi54Johu5hHGVO0FNnVbsTTyrHAEDfU8vvpo9AN7sSLePUNT5p9cBD/SA0spWzdTQzlJacrvaPlcUNuSn++/gnGZ2H/x82iSrNWH6uD1WivCf61EDamR7ey2Ve208o8d3dLnq+RG/OlJiGkTZDooxmRBcNslt1fU2mhRSKVteXxVufR3hmLaUJE96L9t9fcn5iftyLtJJmwNE4ukzyk X-Forefront-PRVS: 0814A2C7A3 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(199003)(189002)(377424004)(24454002)(377454003)(479174004)(122386002)(189998001)(97736004)(105586002)(101416001)(59536001)(42186005)(122856001)(106356001)(69596002)(3846002)(575784001)(87976001)(23676002)(19580395003)(61726006)(4326007)(47776003)(74482002)(2950100001)(98316002)(50466002)(586003)(5001960100002)(92566002)(4001430100002)(61266001)(5820100001)(50986999)(40100003)(81156007)(1096002)(4001450100002)(107886002)(5004730100002)(19580405001)(93516999)(55446002)(110136002)(86362001)(5008740100001)(6116002)(66066001)(54356999)(76176999)(2906002)(63696999)(450100001)(55456009);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR03MB360;H:mail-yk0-f174.google.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjAzTUIzNjA7MjM6aHhaSytzSjhxbTh5ejNEakhMcVRIOGlMOEhv?= =?utf-8?B?QUdTVDI0WlFqUUk5ZmgrQmVUaVQvVXl3TUJDbVRFQWlaR2VrNmRBajFuaVFF?= =?utf-8?B?ZitpeEFKVGNHZmNYdE83Y2dGMGt6SXZsRktsSjZ5eU1FeFUvaFFCNEhGNmk4?= =?utf-8?B?ZDVuUzU0NW5hRm1halo5elV4NWczTElvNFBZTXNKSkxHYWlDek1BMjNVVW12?= =?utf-8?B?TVlWSWVWTVZnL1kxUEhsRU1YZ2ZNdndmZkxRaE1tN0UvYlRSNjdnbVU0Uk9I?= =?utf-8?B?NWNmTzBMSzVVQlNpM2pzWXhNTFlrbVlMT0lVSCtBNzJLS2p4R3pYQ3RHaGpB?= =?utf-8?B?UFFUdnc4KzBPZ2xDbzljeHBvN1VnTS96eGV0S2c5YlI1cWRUMXY1N3A5VHQx?= =?utf-8?B?RHFHN1NXR0h6L1pxOTVVM1VENlVwa1FockZuOUVGRXJ0SWtBaTJVajJwMXR2?= =?utf-8?B?YUY3SkFFeERKMTkrVHc3ZW5TZWY1YzNnQ2dWVGN2Q2hpWkt4RHo2YzgvT25N?= =?utf-8?B?djRlSGRBdVI0SmE0QUcwZ1drbjE5SzJZV3VhNlNueEFzWFBKOG9xSnRLblM5?= =?utf-8?B?aE01QjZqVEMvc1huZVlzOWhjZnFtRmZldVQzZURNbDJ3Qk5vdjBLM2d0Kzlh?= =?utf-8?B?NUdjZmxoUXRCelZCd3pQYXVmbEUzK0dTTWRwUmdib1JQYVZOcXpFelc2UTRa?= =?utf-8?B?TUhBRmx0eEZTZDN4cjdNcGdPQ3VuWUxkMTlrbWRDdFM1eXFmd3pTN09OVnY4?= =?utf-8?B?Nk1ESG0zeGpsYzJadEFocHdiTGU4YzZkTTFYZE9LN3lvWVRLS2FmeHFzUFF6?= =?utf-8?B?bGVqNk9ESzRRdktWWG1Cc0FKY0FMNmlhZDVESTl6WmkxZjNhUWJSaU9jZGxU?= =?utf-8?B?aW9URVdhSXl2V3NKUk9weUtiYWF5cU52cm0xNGlkTTVlaEY0OUp4SWZiT0Q4?= =?utf-8?B?a1JTM0FnL2ZZbENRakxFQjRpRytYVVcwRWlyTjRVdWMrTjFuV3NSRUwza3BR?= =?utf-8?B?cVNRWUVYMmdOZm9hWVNZUVJ6SHFNYkFhYlJPTkQxQ1hTajJZTEZRQTBmQmJX?= =?utf-8?B?R1E2azZCRnI2b1BHWngzV1NzZnBQalB4K1k1NlM0ZXRadUdvWCtyMzZncTBi?= =?utf-8?B?bjBSeHltYXd4eWRzMUg5WEhUeVRRTlBMOFFqN1Q1WFVjQUNSS09kaUo2b1d6?= =?utf-8?B?b1ZtaG03MXFSK1NseW4yQVNnZUplaFBicGFlR3RJZjlmVDZCclFQSHp6TTM1?= =?utf-8?B?YjBxbDFnL21JMzBJS2ZIVFJKTFF1Uk1ZbWJldmx0bFBjQzdERXVLLzRENDdn?= =?utf-8?B?OExkNGUzVHJ0aE5tQThnc0lpMGNYc1BjOHY3VWJ6VzM1SXQyR2ErcGVHQmZL?= =?utf-8?B?Qk5wd0VhT1VlRk5TRVBzSjZCMUdBWnN2U0QzUHloVTNsMTMwdFo4NDV6YjFS?= =?utf-8?B?QzloOWd5TXdNeHlWYkMvVml5bDBtTURVdTdicmN6bXhXNDJpazdKVXp4VUps?= =?utf-8?B?RFRYd0pZK2ZEU0d2dHU3MWtDUlhONTBTWm12ZFIyUVlXR1VQVlFCUE5PU1hZ?= =?utf-8?B?MTNwS0s3YlNvRTFOeDhMVUJsUDdnN3VoMXNmSERXYURnd1pYTlpMRUFVMkVR?= =?utf-8?B?UVBFOGNPQWJZdEpjWUtsVG9raGhpVENoSWFqOUZzeU1MTGRqQ2RuWGtGemlW?= =?utf-8?B?S2lDQmVtemNEWGZRdnpSa1dFc3NLZzNqbkllalJHVEN5VGEvVGwvbzJYYWJJ?= =?utf-8?B?VUNoY1g0bkpiVXJKQlZNb05UZWlyMXRBUDBlM0VsaUhDOC92T2QyenU0QitR?= =?utf-8?B?STNqcXh0NlMzYmRqNFpiZGEyM0hUUjQ1ODJmSlh6Yi9HeWc2c1VvNTI3NTRp?= =?utf-8?B?Ymh0WUNaQ1ptRU1OSkRnRUFqOHpuOGE0YmIzTHVvc2ptV2M3VnRDRWtOSXZB?= =?utf-8?Q?qGxn8tKS/uGPm82U88X8d4C0XZXzw=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB360;5:5ipV9k3CQ34ApJXlt/Dyj6EvhxH4f7Ioncz2B1Lbm5wd9mQHkiXrKhPNgS+EjE8fq8CMBdkG3brKedEaxECVodUDlIPhUcPznTsMA22dYIIhrY7okhqoPM+nvEmiO7UKwjmwnfMHLQCkYkrcfe+C6A==;24:/5ca7/GOQ0qZBXZDZ9SqZi36qfU/aUxWcptZzsJ/3zTv2R5JLzm8eqCPyS+K5a7yH/jgis3Q53iYSk8MKrltE3YY053n8lhLSlaLQ9/o04g= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: mail.utoronto.ca X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2016 02:01:56.0301 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB360 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 25, 2015 at 7:19 PM, Steinar H. Gunderson wrote: > Add a new interface for userspace to preallocate memory that can be > used with usbfs. This gives two primary benefits: I got this when trying to allocate a little bit large buffer (~4MB) using the new userspace libusb_dev_mem_alloc(): > [ 1706.212407] usb 2-1.1: reset SuperSpeed USB device number 3 using xhci_hcd > [ 1706.234823] xhci_hcd 0000:00:14.0: swiotlb buffer is full (sz: 4325376 bytes) > [ 1706.234827] swiotlb: coherent allocation failed for device 0000:00:14.0 size=4325376 > [ 1706.234830] CPU: 1 PID: 3233 Comm: Protonect Tainted: G U W 4.4.0-rc8-amd64 #1 Debian 4.4~rc8-1~exp1 > [ 1706.234831] Hardware name: LENOVO 20ALCTO1WW/20ALCTO1WW, BIOS GIET76WW (2.26 ) 08/27/2014 > [ 1706.234833] 0000000000000000 000000000f50c266 ffffffff812e6019 ffffffffffffffff > [ 1706.234836] ffffffff8130dc45 ffff88020000000b 0000000000420000 ffffffff81a2a0e0 > [ 1706.234838] ffff880206263d80 0000000000000000 ffff88021c892f40 0000000000420040 > [ 1706.234841] Call Trace: > [ 1706.234847] [] ? dump_stack+0x40/0x57 > [ 1706.234851] [] ? swiotlb_alloc_coherent+0x135/0x150 > [ 1706.234867] [] ? hcd_buffer_alloc+0xb1/0x130 [usbcore] > [ 1706.234875] [] ? usbdev_mmap+0xa5/0x1b0 [usbcore] > [ 1706.234880] [] ? tty_insert_flip_string_fixed_flag+0x85/0xe0 > [ 1706.234885] [] ? mmap_region+0x3e7/0x660 > [ 1706.234888] [] ? do_mmap+0x336/0x420 > [ 1706.234892] [] ? vm_mmap_pgoff+0xaf/0xf0 > [ 1706.234895] [] ? SyS_mmap_pgoff+0x1ad/0x270 > [ 1706.234898] [] ? SyS_write+0x76/0xc0 > [ 1706.234903] [] ? system_call_fast_compare_end+0xc/0x67 I understand there are some requirements on the allocation such that large blocks are not always available. But what is the proper way to determine the upper limit of the size such that the user can avoid generating warnings like this? (Also, the application really wants to be able to allocate large buffers, maybe tune swiotlb=?.) Test results: Basic testing with smaller buffer size shows the patch works well with Kinect v2 (~260MB/s isochronous). Tests were performed on top of 4.4-rc8 with Debian config. I'm still trying to verify whether this patch fixes page allocation failure, but is having some trouble reproducing memory fragmentation. I will later test it on the original machine which had the problem. Regards, Lingzhu