From patchwork Tue Jun 13 04:17:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Brian X-Patchwork-Id: 774926 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wmxMM1tTbz9s8N for ; Tue, 13 Jun 2017 14:18:06 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=accelecon.onmicrosoft.com header.i=@accelecon.onmicrosoft.com header.b="WtH2vJVk"; dkim-atps=neutral Received: from localhost ([::1]:41043 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKdHH-00011M-0L for incoming@patchwork.ozlabs.org; Tue, 13 Jun 2017 00:18:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKdGx-00011G-Kj for qemu-devel@nongnu.org; Tue, 13 Jun 2017 00:17:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKdGu-0001WM-FN for qemu-devel@nongnu.org; Tue, 13 Jun 2017 00:17:43 -0400 Received: from mail-sn1nam02on0062.outbound.protection.outlook.com ([104.47.36.62]:29302 helo=NAM02-SN1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dKdGu-0001WA-1N for qemu-devel@nongnu.org; Tue, 13 Jun 2017 00:17:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=accelecon.onmicrosoft.com; s=selector1-accelerated-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=0TO73CiveA/5CD3unw9xZ0UFvOhUAXDfAE30SkL+2Ik=; b=WtH2vJVkwpHRTzWe9MXGCqy7EVrCEOVRZ+MtIDw8zcMsIEMV4H/TjeducGpTlI8xRfd5nu7V2aDGu8thu5Im25SK8bpBebmCKlJ/PdZa0lINjGcCe7LTtNLGJMXkiprYvKyyORBgJ+rzmRLi9dQbyzDPwReZV9x5824YlH3pj9Y= Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none; redhat.com; dmarc=none action=none header.from=accelerated.com; Received: from [172.16.0.191] (103.48.210.53) by DM5PR14MB1226.namprd14.prod.outlook.com (10.173.131.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Tue, 13 Jun 2017 04:17:36 +0000 From: Samuel Brian To: qemu-devel@nongnu.org Message-ID: Date: Tue, 13 Jun 2017 14:17:29 +1000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 Content-Language: en-US X-Originating-IP: [103.48.210.53] X-ClientProxiedBy: BN6PR18CA0017.namprd18.prod.outlook.com (10.175.188.27) To DM5PR14MB1226.namprd14.prod.outlook.com (10.173.131.148) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR14MB1226: X-MS-Office365-Filtering-Correlation-Id: d8906aed-e1b9-4c47-684b-08d4b2131fae X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:DM5PR14MB1226; X-Microsoft-Exchange-Diagnostics: 1; DM5PR14MB1226; 3:/dbrO/kCQiTj8e8r4Qmqm1+YGDwy4Ks67qUnv6sCAJYKfjBtDHlu7apVOw4v/kNX5BqvSoR37R4bfGAc5eOWqntnvLc17QgrtV7QCSUlLEvmI6Q/qizdgGSTvGkybEDRvSlZ3ERgZP34zHl2quqA4l8uv30/6rc4YKWB2EiMkpu8pdO9cfeNLYfns10+kn8ap6W2rhI7lnXL+rsjyaqFLnuUGhfS6Ak1udkFdwBa5rOoBj4dxw+xySK+37BCBPZzym+19QH1B850McRe9ATf5t30gO3+8JFZFVZ8qti20cEqT4fKnszeFll2IPRWbA2+g0i+8jsDUafK8hlYNkmWPw==; 25:wcvQhpkNheIqdQWnvvJkA7ZyMR9drt3/0j4jpW+9/faxhRhFAkUPps4YOeCi1fsXSVsXYLqFqcW9Q+rE87oTdMuRviPtZNUFm/SJzN4R3/k6h/kTHKKdIZQyoWiKfF7aBVsvVzl0Sg4Uga7FGNtxKJq/EbwP9ilim632b1ELGsEVLIPJHKhhDJkH2acpsY7UKJygF0LKBOr9WbawvbT0Vtdq0rLljrp9o4XWK0l0FD/jANdgC5dRRq89GNknrQvlXO9fYdQQEYnptKXAwal9+v2Ty6kcJ5ZcY/L36v7Qn8rGe+uDxTWzhoekQxb9SrRq6BsNTE5mVtQe8s1BXTcPrfTaOY6xELhrSfh7YUjX3DMk6KvF9AWBfa5hp6wfNV9LiHzRDnotvgWDIVjpMzXaZe1TqgYIksgfsdoCrvntGzpRIdpGN45cdJXaEmjAyWQmdh6wepIAA/B4reGbqY2BRF7upSxQWi9UoBCQ+rTruGM= X-Microsoft-Exchange-Diagnostics: 1; DM5PR14MB1226; 31:csnphU+oWdPUyghi8SYl8yytEH/Y4ccvB/kdlhiniIY70HdnHfe6hd62eATN9tv+iOHDmGjL8zbIGl+xndCVDjM3Q//TgJJIUmHGSqi6Ql8d7q3Q6rXihA7WSQpgMrGnCI2Or/ztoL4MfqgCixwB6P1Z0BtjiGt0FNEi2ys+7P5YLLFnO1psnbNgM33F9I1/LerFxk8tzVKgy/aXsCOGG+6bdbnHg+tUI70LdZOin0KHNN7Ow2jMsLvjycfGjSwA7MSsLrey+rjyq7dD2WxElQ==; 20:tbpuVMpq6xd5K/kB21c9paS6XY1d/osKoy2OZ8QpjR4/QXnO+crWEorVpBwF7Ewr+GjD/NeVofEyMkiPTTSFiHMigY5MVgOuBG+5aYX6208LPyO2naUOmg4BoE8+alZcK+lPLnGcoRtH8YPW+LtW/5RQoHe0l6Rg2kjuqR3oOtutE+UqebIY8pTUiuutEnREe9R1uKu87AVR6Itnw8uzArgPrzgk23XG4l8uhk4zGVgQUNX+Z+Fug2a0jTOiNHjugWocBA6AizQom+A9ToJ4/YxD4h3yFnBQD6FbianQdX5fDz79aR2LuWr4LMRQcTFuJomFRVQsKimh0QR43KsqxlUL4dPdI8WLfK9f9CIsdmkDU1sXqMaJJNEND4jeJlV59OD/rHsFuhwDlp+5raPiJ48u4mThbcA6rcFc2mW/eX87TGJ/3n6S9AjqtrDoZRBzc+CX8zqN4jn0r5FfJS9QniQYgig69H0S2+QMiAaWGHVvaNNcESQ3pwZeZgsOcuVz0sPQGKh1KBIFNUkOFU8F1VrTNQzIMq1ywfCoxwrXEpCdcNFGE0IZUdHmwojucoaCfuBJ/xPhCMW2FXg4zwnfz7ex0Qhz847WGPPlpU2mKDU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123560025)(20161123562025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR14MB1226; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR14MB1226; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjE0TUIxMjI2OzQ6d2hMWE5wWkRaTWtkcGNSSURmeWVJNC9vY0tY?= =?utf-8?B?dE04WEl4K1hoeEUwZzJaY01SdmlWVGJBdktxV0IwekJYWGxtVnA3NEx5SXNW?= =?utf-8?B?cnNHeVlTL0lFbTYvM0d5bENkUWFTL1lnem5UVnFwQ2lwbnZWZWRYS1JONENO?= =?utf-8?B?N0pLYitxTmtkOXNxZVVRVzF1dFdCVzFiaFJBZmUzWVM1ZGhJTXRPQmFpa0ZH?= =?utf-8?B?TFJOUHBacGNCQ2w1TW5oYy8xV2FNUHhieTFialo4d3JlNVMydXFnTWFwUGQz?= =?utf-8?B?ZEs2em1TcFlSNWd1L1RFWVFLU20zZHppS3FLcGl0bnR0K1NPdnpaZ0NMTWtx?= =?utf-8?B?ODIvWWVYZ1JzbVlUZjFmRzhRRmR6clhPOHNiWk1YMy9RTDI4a2t5dVR2SjhP?= =?utf-8?B?VlQ3NVUxb1hXdDR6SkZZaVB6TVRjS0plSm5sVFJTa0NTRUtFc0RlQUd0d2Rm?= =?utf-8?B?T1J0TzNqOWVFZ1RBUDlnaVlaa3FCU3JKc2s1L0s4N3RsTHpMMVY2ZGZsVkh6?= =?utf-8?B?R2FPMXE4UklFWFkrNzdpZFlmNVBQWHB4RXorZWNXVCtra3N6K1ZXVG16UHox?= =?utf-8?B?dVk2cEpoZnhNRVJGaW1NcEExY0VBSk9LNkFDamV6dTVpMUh6RXRVa0pPd0lT?= =?utf-8?B?ZnNJVzFuQS9wUWZBSVVndFI1N3dnTlNTYTNyQjdFUjZkV0pjdENxMVJNMTNC?= =?utf-8?B?SWhpd0VweWxzc1lCUDZXVmVwRG5yTm1Kc3VDdVA2S0VrQ2hGbGFxa3YyU2hV?= =?utf-8?B?YVIyd1hYZWhhL0tWdVlYdXE1cnhmVnRCSEV2aXZNRUVLaHcrQVpMS2lYVWVE?= =?utf-8?B?Vmx4RUVyRUhaUWhNN3lFOVJta0pwaCtWMlRpOERpejBLT2hybGIzTExlMjVI?= =?utf-8?B?TXcvTHRwZ2VOVkd5WUh2ZlY4Qm1kV0c4dVlzWUQ2Sm5JVVZjTDQ3VWJCU1Fz?= =?utf-8?B?d0I5Zy9JcEVRY0IyWkZuRmhtK21oYy9Mb2poUGFyazVSNmQwZS9Eb1FxNS9s?= =?utf-8?B?Si9NbllYOGlGQmxkYlMxZ1dZdHRXQmlwU01BKzI3UHBxYmFLRDI5cEtVUzA2?= =?utf-8?B?UFhzUEZ4Y1NuREVENmtTcGQ3RU1rWkFwL1BOTVlFeEplZkJBUmJOMGV4VXQv?= =?utf-8?B?OGUyK0lDUXc0Y2l1c3FzTUJQaEh3R3d5bUxTa1ZyK0tJVnFGTW5ibEN2Wlo5?= =?utf-8?B?SXd6NlQ3bVU1TUdzRklqOFFQZkxtTGQ5QkNJNG5lRk5oNUpWMTRKbE5HdWNO?= =?utf-8?B?S2hYcGRTc0lrWVRISWJYWHZNbklwTzgzeVBNaXJXWS9WS1pyS3MzVDJpYWxC?= =?utf-8?B?Q3B1WXh1Vm4yc0VyMFdVTlFQOEowK084dmNjSHU1bjJLbUNURXhHbWU3Z1NP?= =?utf-8?B?NklQY3dqNnU2QlFCa3l2OE96ZW1yeUhsQ0lsQ3JNSHk1dFBJLzBlQUpKOTR4?= =?utf-8?B?RW41TG5HN2NDbWRiZWRFVCtoMkR6UGRMTXFiTEpocGFUNW9xcmhLWFM2bjlt?= =?utf-8?Q?a8mioH3XVzqXR8OUKWmpVKDWvYOII9kCwUdBLrm0QXVYB?= X-Forefront-PRVS: 0337AFFE9A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39410400002)(39400400002)(39830400002)(39450400003)(6486002)(4326008)(90366009)(230700001)(478600001)(64126003)(3846002)(6916009)(65826007)(8676002)(86362001)(5660300001)(77096006)(6666003)(81166006)(65806001)(2361001)(65956001)(66066001)(2351001)(305945005)(47776003)(31686004)(33646002)(31696002)(2906002)(25786009)(38730400002)(53936002)(23676002)(50986999)(189998001)(110136004)(5890100001)(54356999)(36756003)(7736002)(42186005); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR14MB1226; H:[172.16.0.191]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjE0TUIxMjI2OzIzOkFIRkFRVytVeFFtRjB2bUxLRWt4bkVyQ1lx?= =?utf-8?B?YW9seXlKRTEzUkFweStXUE0vRmx2eGFybGwrTGhvREFqd29TTlZkL2p6N3pN?= =?utf-8?B?bWZ1djBlTmRGRFNRNkdXSGM2RnQ4N3JXb2dXVGF5LzJibmd5SVY2WGIzRkJo?= =?utf-8?B?d0xURGNMYmJNVVB0UmorNnNMQ3hEODFOMWMvRyttOGVwVEswMXBpUURPaEFV?= =?utf-8?B?aUl3NldKMCszN3d3ZjgySHhZMjIrejJDeldDUUo2Q2RvTVdoQ1VMaW5sM1Vo?= =?utf-8?B?N3QrYVZUNWNhL2hoYmQxeEl6N05odjBXTWlMbzhLa1U5ZE5wNEhqT1hRZk9s?= =?utf-8?B?UXNKUkhHOVJ5b3ZFQkwrRFcxOWVTTTlsaExoMFJzYzd6czg2VUZqZ244ay8w?= =?utf-8?B?ZG85ZlpSd08wT1Y1TGtzZGl2VFlPRCsvbnI1bTQvVXp0bkRKY3BFbWNZdkNB?= =?utf-8?B?YVZtd1hFSjM0OWdQMGR0aFFIK1FXUk5KdFU5VkhERUVBaHVncy9mUWpjck5S?= =?utf-8?B?NW1DMnNnbS93OFVpMDF0Qm5kZStJcm5kVUhncHF4UTQxaFdvWEthZEZMeENF?= =?utf-8?B?WEhTbmlaNnVBZFZDb1NVaGlnSDFQQVBKSWtLNDJmUEZHNjlzVUI3Zkc2Rmhx?= =?utf-8?B?SGtwSC8wbmp2VW5PR0ROK1Q1NXdCSjBsRXdMVjliMEF6cEhZUmIwMFhRU0c5?= =?utf-8?B?S1RLK3NYejYvUlZXUnZRZWNwcUh3cEdyRnBnSmR3NzF3cUlIU0M2WEVzOEJL?= =?utf-8?B?cy95d04rL3V6ZDgzVm9NUDN6eHpnOUZ6MG5QczgxOS9HSHptNHpMS0hXMUlF?= =?utf-8?B?QnFGc3RhOHNCZWFLNTZLa2c1ZFg2N2lJQmozaDNWY0VUaU9WZTVwRUdlSm1z?= =?utf-8?B?Rk1hak9nQi94ZzJJVHhRakdRS3pqaytiVTFEZ216Slo4ZVJWQjBDWHY1MGcy?= =?utf-8?B?c3J0VUFmUWhGelY5aDVLRVdBd1piTm9ya1Y5K1k2U3VGOWN1cHh1Qlp6TmtS?= =?utf-8?B?bUV6Zmp1U3ZxK3VLanh1RXhWU00vd0pyejdxZGI3b3FGZGs3U1hvRitKTzRB?= =?utf-8?B?eVl0QXNqcUpKSHk1YUxFaWdYenhvVUV5aVVBRDJWdkR3a1NkencycFlFKzBX?= =?utf-8?B?bHhnN3hoUmROQzFjcDNsNHJTS09aY2lGZmU1Z3Y4SnZlenFXWHhsLzFtcE9z?= =?utf-8?B?Wm9VQk05VFFrN2ZTNDRwMzM2Z0dBaEV5VDJXR3lEZzNOREFSVmJVZnF5YlVx?= =?utf-8?B?SkVNTllxM09aTVpWZy9rNUFRT1ZQNXR2TEVORmo4aEhQVVBVL2J1R1ljTk1R?= =?utf-8?B?ejlZUU5OWVhPNzdGQjRmVnd6RXRNUk0yMS96USs3ZnhiTkZRQ1NwSXZHZlVK?= =?utf-8?B?S2gyanRnUzM3b3ZTQVM0Y2V4Qk5WdWs3eGE4RWE1KzNkQjRMOXJFb0FoOW1o?= =?utf-8?B?QWlYRnB0amREWDBLSTB6bklGVHpRTzB5eFh2dktBY0hZTU5HS3JnRWt1bTky?= =?utf-8?Q?LIXJ56BcoFa0G7kE02N2si854=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR14MB1226; 6:G7UdqVSvfax37C8PkdvbTM2u36k8ZR/xS2RjURJNch/a+RJl2R20JSBCc331RcaMkXDICJqa1+SSjWue9C6EIK2CE8PCWlKKyrukCKZvGorCbZfw+kgTWFuAhMxOnhxGwReJ3XFD7mO9R8EiA2T6o80OjqyUhXpEw2nArBfpFDZOJw0rWIvOBsJxaaMEBk9tU0GqZfOWOKovm+5Fl0w4JWG9t7UeX3p5yVG+O1Q4G1v6rLvYk8D7B1hrgJG7X8KLe0KG62SL4xl7DvVtxdawSV+VVVvtBUaV6P7iVc5EQy/v2+NS7yPk+RGZT3ZncOvStUeetySzQdM6UDpGY8nc+yAl9VwenZs2ki4VIL+wLXtvFplk8QQCDLDN7B4mJcybyk8MaQP8yWBypdo82s1b8Xi3GuzgXTel+Tyw8AnQgG123cb8H0PJCqdCkgQCPs+7j74HOGEoAe1grnCpbqrzuThrIuxzuZrlSxb/O1lZ+an+Fy6BKUCEEpCxmzRZOv0HrmC4yW7iHsEaY2ShokWmUQ== X-Microsoft-Exchange-Diagnostics: 1; DM5PR14MB1226; 5:UgWboKusGLH19Zb2xIQaGUpPnY2fVukBSwWTd7Fd9lbafK4ZgB17QkxY53uOc2pSTwo0KgBxTM7YDyreUulJjARm/5QHvsK78azKKL9Vs6F+vMBmTIvT1wNboDpB2wQL+gEjA98q4iPmogK6kAWVKCQd+ffz88A4yK2PD2ukc9iYOHrlv8/mVjpL2B2xyC06MQ/topRe3UhNuLV+T4VlQDvoIRtiXic59ZpWhDv8n4ICfnOIuVYM77+VrOh9Ag9e5Fbg6KHMpNWx47emyFcF7tS9A6ZTfJFEj8UmtaEtykSckI8l0Kx4NJXcYtmo5L1bgXTF1WBlDoT3GIdLZ9akwFyqlmhcj418QfJ08goGbUc2juKS0ILfYYRJHEYENLC/Nb19WGfK4xeyjgS/iRDTnWYluwEuj/jtgYks1yMlLe9z4Ash+ZbsbqE1GL0xGsCVbz1IwZ0ELjDLRLV+J7aBc1BzbpDhUsX1CwIe+wHfb+Bm8fnjI6vdGiO1SEN3bBcL; 24:J9L7YLWkGC3JmlLEdbeREpdW7sqcr2Uh8O6qCLWOYcl+xHdnhBzFZWDKsCuFQ0qrwd0/yEMJi12Fvi9UcSpkpcSEFVWWoTXexy1nZusl+7c= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR14MB1226; 7:9pFNUhmQvk4ifSnvVv6gIbAa7IQjWACmrLJO09K869rApgQiivyKYyNoQWcZMYTiZQRlBVaIWw2vr/qQspgfsyQx3O+tsyzZ57xjJT4w6TGi8Bx08M5IXopng29q3F1PGiqydQmUbe+HhWg+GqPqls8ju4qU4VOpR70BFQd8SlzsLEZB1/RqR/sqYehmwMtCRQkGvu9yXtIPMyJHt64bq7nc5SpwZNLXX+cHAcC1duvR5qK1Y80FDmmcnMl1xwLY6xJCeu3tpnQ+OxE/btFGoS+ieVB+xVpfCAaykgv9EZ5m6tM0ySPMOIhPGG16TEel7nOJHrVxBACB2NxPtLt/1Q== X-OriginatorOrg: accelerated.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jun 2017 04:17:36.2050 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR14MB1226 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.62 Subject: [Qemu-devel] [PATCH] usb-host: support devices with sparse/non-sequential USB interfaces X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Some USB devices have sparse interface numbering which is not able to be passthroughed. For example, the Sierra Wireless MC7455/MC7430: # lsusb -D /dev/bus/usb/003/003 | egrep '1199|9071|bNumInterfaces|bInterfaceNumber' Device: ID 1199:9071 Sierra Wireless, Inc. idVendor 0x1199 Sierra Wireless, Inc. idProduct 0x9071 bNumInterfaces 5 bInterfaceNumber 0 bInterfaceNumber 2 bInterfaceNumber 3 bInterfaceNumber 8 bInterfaceNumber 10 In this case, the interface numbers are 0, 2, 3, 8, 10 and not the 0, 1, 2, 3, 4 that QEMU tries to claim. This change allows sparse USB interface numbering. Instead of only claiming the interfaces in the range reported by the USB device through bNumInterfaces, QEMU attempts to claim all possible interfaces. Signed-off-by: Samuel Brian --- hw/usb/host-libusb.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) udev->altsetting[i] = 0; @@ -1164,14 +1164,19 @@ static int usb_host_claim_interfaces(USBHostDevice *s, int configuration) return USB_RET_STALL; } - for (i = 0; i < conf->bNumInterfaces; i++) { + claimed = 0; + for (i = 0; i < USB_MAX_INTERFACES; i++) { trace_usb_host_claim_interface(s->bus_num, s->addr, configuration, i); rc = libusb_claim_interface(s->dh, i); - usb_host_libusb_error("libusb_claim_interface", rc); - if (rc != 0) { - return USB_RET_STALL; + if (rc == 0) { + s->ifs[i].claimed = true; + if (++claimed == conf->bNumInterfaces) { + break; + } } - s->ifs[i].claimed = true; + } + if (claimed != conf->bNumInterfaces) { + return USB_RET_STALL; } udev->ninterfaces = conf->bNumInterfaces; @@ -1183,10 +1188,9 @@ static int usb_host_claim_interfaces(USBHostDevice *s, int configuration) static void usb_host_release_interfaces(USBHostDevice *s) { - USBDevice *udev = USB_DEVICE(s); int i, rc; - for (i = 0; i < udev->ninterfaces; i++) { + for (i = 0; i < USB_MAX_INTERFACES; i++) { if (!s->ifs[i].claimed) { continue; } diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index f9c8eafe06..2e3a752ef6 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -1107,7 +1107,7 @@ static void usb_host_detach_kernel(USBHostDevice *s) if (rc != 0) { return; } - for (i = 0; i < conf->bNumInterfaces; i++) { + for (i = 0; i < USB_MAX_INTERFACES; i++) { rc = libusb_kernel_driver_active(s->dh, i); usb_host_libusb_error("libusb_kernel_driver_active", rc); if (rc != 1) { @@ -1130,7 +1130,7 @@ static void usb_host_attach_kernel(USBHostDevice *s) if (rc != 0) { return; } - for (i = 0; i < conf->bNumInterfaces; i++) { + for (i = 0; i < USB_MAX_INTERFACES; i++) { if (!s->ifs[i].detached) { continue; } @@ -1145,7 +1145,7 @@ static int usb_host_claim_interfaces(USBHostDevice *s, int configuration) { USBDevice *udev = USB_DEVICE(s); struct libusb_config_descriptor *conf; - int rc, i; + int rc, i, claimed; for (i = 0; i < USB_MAX_INTERFACES; i++) {