From nobody Wed Nov 5 12:15:30 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534843011511411.4402284687403; Tue, 21 Aug 2018 02:16:51 -0700 (PDT) Received: from localhost ([::1]:51706 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2mI-00054s-7v for importer@patchew.org; Tue, 21 Aug 2018 05:16:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37234) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2hk-0008Fh-0M for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:12:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fs2hd-0000e9-6N for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:58 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:55384 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fs2hc-0000cE-U2 for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:53 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EAF5A401DE6C; Tue, 21 Aug 2018 09:11:50 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-184.ams2.redhat.com [10.36.116.184]) by smtp.corp.redhat.com (Postfix) with ESMTP id CC5E710EE828; Tue, 21 Aug 2018 09:11:48 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 3352A93F6; Tue, 21 Aug 2018 11:11:48 +0200 (CEST) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Tue, 21 Aug 2018 11:11:42 +0200 Message-Id: <20180821091148.32220-2-kraxel@redhat.com> In-Reply-To: <20180821091148.32220-1-kraxel@redhat.com> References: <20180821091148.32220-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 21 Aug 2018 09:11:50 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 21 Aug 2018 09:11:50 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'kraxel@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PULL 1/7] docs/usb2.txt: ehci has six ports 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: npes87184 , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: npes87184 In commit 5cc194caeb019cf1dae7f74ccbdf0401a56c2ac6, the number of ehci ports is corrected to six. Fix docs related to it. Signed-off-by: npes87184 Message-id: 20180801122410.10343-1-npes87184@gmail.com Signed-off-by: Gerd Hoffmann --- docs/usb2.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/usb2.txt b/docs/usb2.txt index f63c8d9465..172614d3a7 100644 --- a/docs/usb2.txt +++ b/docs/usb2.txt @@ -94,8 +94,8 @@ physical port addressing =20 First you can (for all USB devices) specify the physical port where the device will show up in the guest. This can be done using the -"port" property. UHCI has two root ports (1,2). EHCI has four root -ports (1-4), the emulated (1.1) USB hub has eight ports. +"port" property. UHCI has two root ports (1,2). EHCI has six root +ports (1-6), the emulated (1.1) USB hub has eight ports. =20 Plugging a tablet into UHCI port 1 works like this: =20 --=20 2.9.3 From nobody Wed Nov 5 12:15:30 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534842844476750.866655727827; Tue, 21 Aug 2018 02:14:04 -0700 (PDT) Received: from localhost ([::1]:51689 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2ji-0000zU-HD for importer@patchew.org; Tue, 21 Aug 2018 05:14:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37237) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2hk-0008Fj-0W for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:12:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fs2hd-0000e2-4y for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:58 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:55386 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fs2hc-0000cH-SE for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:52 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 120FF401DE88; Tue, 21 Aug 2018 09:11:51 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-184.ams2.redhat.com [10.36.116.184]) by smtp.corp.redhat.com (Postfix) with ESMTP id D2F7B94640; Tue, 21 Aug 2018 09:11:48 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 3B2519B2E2; Tue, 21 Aug 2018 11:11:48 +0200 (CEST) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Tue, 21 Aug 2018 11:11:43 +0200 Message-Id: <20180821091148.32220-3-kraxel@redhat.com> In-Reply-To: <20180821091148.32220-1-kraxel@redhat.com> References: <20180821091148.32220-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 21 Aug 2018 09:11:51 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 21 Aug 2018 09:11:51 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'kraxel@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PULL 2/7] ohci: Clear the interrupt counter for erroneous transfers 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: Sebastian Bauer , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sebastian Bauer This is mandated by the ohci specification. It tells at 6.4.4 on page 104 that for transfer descriptors that are retired with an error the done queue interrupt counter is cleared as if the interrupt delay field of the descriptions were zero. Before this change, error conditions were handled similarly to the successful condition which is especially troublesome for control transfers. Some drivers (e.g., the AmigaOS-one) as well as the example code in the spec, set the setup stage with an interrupt delay of seven (which means no interrupt). This is fine under normal conditions, because one usually doesn't want to be notified about the completion of this stage. However, if an error occurs in this stage, these drivers will not get notified with the current implementation. The fix addresses this by following the spec more closely. Also, otherwise, the ability to set interrupt delay to seven would be useless. Note that Linux drivers that I looked at don't seem to be affected as they set six as the interrupt delay presumably for the reason that they won't get notified otherwise. Signed-off-by: Sebastian Bauer Message-id: 20180729191928.11254-1-mail@sebastianbauer.info Signed-off-by: Gerd Hoffmann --- hw/usb/hcd-ohci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index d4c0293db5..98da5f0f04 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -1156,6 +1156,9 @@ static int ohci_service_td(OHCIState *ohci, struct oh= ci_ed *ed) OHCI_SET_BM(td.flags, TD_EC, 3); break; } + /* An error occured so we have to clear the interrupt counter.= See + * spec at 6.4.4 on page 104 */ + ohci->done_count =3D 0; } ed->head |=3D OHCI_ED_H; } --=20 2.9.3 From nobody Wed Nov 5 12:15:30 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534842854615903.5023141575246; Tue, 21 Aug 2018 02:14:14 -0700 (PDT) Received: from localhost ([::1]:51692 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2jt-0001AK-FE for importer@patchew.org; Tue, 21 Aug 2018 05:14:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37239) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2hk-0008Fl-0m for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:12:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fs2hf-0000gL-NC for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:58 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:55394 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fs2hf-0000f6-AQ for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:55 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 79F99400738B for ; Tue, 21 Aug 2018 09:11:54 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-184.ams2.redhat.com [10.36.116.184]) by smtp.corp.redhat.com (Postfix) with ESMTP id D32DE2166BA1; Tue, 21 Aug 2018 09:11:48 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 431359B2F9; Tue, 21 Aug 2018 11:11:48 +0200 (CEST) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Tue, 21 Aug 2018 11:11:44 +0200 Message-Id: <20180821091148.32220-4-kraxel@redhat.com> In-Reply-To: <20180821091148.32220-1-kraxel@redhat.com> References: <20180821091148.32220-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 21 Aug 2018 09:11:54 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 21 Aug 2018 09:11:54 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'kraxel@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PULL 3/7] dev-mtp: add support for canceling transaction 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: Bandan Das , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Bandan Das The initiator can choose to cancel an ongoing request which is specified by bRequest=3D0x64. If such a request arrives, free up any pending state Signed-off-by: Bandan Das Message-id: 20180720214020.22897-2-bsd@redhat.com Signed-off-by: Gerd Hoffmann --- hw/usb/dev-mtp.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index 1ded7ac9a3..c40b0de0bb 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -82,6 +82,7 @@ enum mtp_code { FMT_ASSOCIATION =3D 0x3001, =20 /* event codes */ + EVT_CANCEL_TRANSACTION =3D 0x4001, EVT_OBJ_ADDED =3D 0x4002, EVT_OBJ_REMOVED =3D 0x4003, EVT_OBJ_INFO_CHANGED =3D 0x4007, @@ -1551,14 +1552,35 @@ static void usb_mtp_handle_control(USBDevice *dev, = USBPacket *p, int length, uint8_t *data) { int ret; + MTPState *s =3D USB_MTP(dev); + uint16_t *event =3D (uint16_t *)data; =20 - ret =3D usb_desc_handle_control(dev, p, request, value, index, length,= data); - if (ret >=3D 0) { - return; + switch (request) { + case ClassInterfaceOutRequest | 0x64: + if (*event =3D=3D EVT_CANCEL_TRANSACTION) { + g_free(s->result); + s->result =3D NULL; + usb_mtp_data_free(s->data_in); + s->data_in =3D NULL; + if (s->write_pending) { + g_free(s->dataset.filename); + s->write_pending =3D false; + } + usb_mtp_data_free(s->data_out); + s->data_out =3D NULL; + } else { + p->status =3D USB_RET_STALL; + } + break; + default: + ret =3D usb_desc_handle_control(dev, p, request, + value, index, length, data); + if (ret >=3D 0) { + return; + } } =20 trace_usb_mtp_stall(dev->addr, "unknown control request"); - p->status =3D USB_RET_STALL; } =20 static void usb_mtp_cancel_packet(USBDevice *dev, USBPacket *p) --=20 2.9.3 From nobody Wed Nov 5 12:15:30 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534843115833986.346452194386; Tue, 21 Aug 2018 02:18:35 -0700 (PDT) Received: from localhost ([::1]:51716 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2o6-0006Kz-K9 for importer@patchew.org; Tue, 21 Aug 2018 05:18:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2hk-0008Fr-2N for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:12:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fs2hd-0000dw-3I for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:58 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:43966 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fs2hc-0000cN-Co for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:52 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 22F84B5C3 for ; Tue, 21 Aug 2018 09:11:51 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-184.ams2.redhat.com [10.36.116.184]) by smtp.corp.redhat.com (Postfix) with ESMTP id D301F2026D64; Tue, 21 Aug 2018 09:11:48 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 4BD6031F2A; Tue, 21 Aug 2018 11:11:48 +0200 (CEST) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Tue, 21 Aug 2018 11:11:45 +0200 Message-Id: <20180821091148.32220-5-kraxel@redhat.com> In-Reply-To: <20180821091148.32220-1-kraxel@redhat.com> References: <20180821091148.32220-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 21 Aug 2018 09:11:51 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 21 Aug 2018 09:11:51 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'kraxel@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PULL 4/7] dev-mtp: fix buffer allocation for writing file contents 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: Bandan Das , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Bandan Das usb_mtp_realloc() was being incorrectly used when allocating buffer for incoming data. Set d->length only after resizing the buffer. Signed-off-by: Bandan Das Message-id: 20180720214020.22897-3-bsd@redhat.com Signed-off-by: Gerd Hoffmann --- hw/usb/dev-mtp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index c40b0de0bb..1b72603dc5 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -1721,6 +1721,7 @@ static void usb_mtp_get_data(MTPState *s, mtp_contain= er *container, MTPData *d =3D s->data_out; uint64_t dlen; uint32_t data_len =3D p->iov.size; + uint64_t total_len; =20 if (!d) { usb_mtp_queue_result(s, RES_INVALID_OBJECTINFO, 0, @@ -1729,10 +1730,11 @@ static void usb_mtp_get_data(MTPState *s, mtp_conta= iner *container, } if (d->first) { /* Total length of incoming data */ - d->length =3D cpu_to_le32(container->length) - sizeof(mtp_containe= r); + total_len =3D cpu_to_le32(container->length) - sizeof(mtp_containe= r); /* Length of data in this packet */ data_len -=3D sizeof(mtp_container); - usb_mtp_realloc(d, d->length); + usb_mtp_realloc(d, total_len); + d->length +=3D total_len; d->offset =3D 0; d->first =3D false; } --=20 2.9.3 From nobody Wed Nov 5 12:15:30 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534843013310946.5992288828186; Tue, 21 Aug 2018 02:16:53 -0700 (PDT) Received: from localhost ([::1]:51708 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2mS-0005AU-3A for importer@patchew.org; Tue, 21 Aug 2018 05:16:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37248) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2hk-0008Fq-27 for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:12:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fs2hf-0000g1-Jp for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:58 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:43970 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fs2hd-0000eT-Rg for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:55 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8694177741 for ; Tue, 21 Aug 2018 09:11:53 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-184.ams2.redhat.com [10.36.116.184]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8DE1F10AF9C0; Tue, 21 Aug 2018 09:11:51 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 562393EC0B; Tue, 21 Aug 2018 11:11:48 +0200 (CEST) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Tue, 21 Aug 2018 11:11:46 +0200 Message-Id: <20180821091148.32220-6-kraxel@redhat.com> In-Reply-To: <20180821091148.32220-1-kraxel@redhat.com> References: <20180821091148.32220-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 21 Aug 2018 09:11:53 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 21 Aug 2018 09:11:53 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'kraxel@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PULL 5/7] dev-mtp: retry write for incomplete transfers 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: Bandan Das , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Bandan Das For large buffers, write may not copy the full buffer. For example, on Linux, write imposes a limit of 0x7ffff000. Note that this does not fix >4G transfers but ~>2G files will transfer successfully. Signed-off-by: Bandan Das Message-id: 20180720214020.22897-4-bsd@redhat.com Signed-off-by: Gerd Hoffmann --- hw/usb/dev-mtp.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index 1b72603dc5..c8f6eb4e9e 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -1602,6 +1602,24 @@ static void utf16_to_str(uint8_t len, uint16_t *arr,= char *name) g_free(wstr); } =20 +/* Wrapper around write, returns 0 on failure */ +static uint64_t write_retry(int fd, void *buf, uint64_t size) +{ + uint64_t bytes_left =3D size, ret; + + while (bytes_left > 0) { + ret =3D write(fd, buf, bytes_left); + if ((ret =3D=3D -1) && (errno !=3D EINTR || errno !=3D EAG= AIN || + errno !=3D EWOULDBLOCK)) { + break; + } + bytes_left -=3D ret; + buf +=3D ret; + } + + return size - bytes_left; +} + static void usb_mtp_write_data(MTPState *s) { MTPData *d =3D s->data_out; @@ -1644,8 +1662,8 @@ static void usb_mtp_write_data(MTPState *s) goto success; } =20 - rc =3D write(d->fd, d->data, s->dataset.size); - if (rc =3D=3D -1) { + rc =3D write_retry(d->fd, d->data, s->dataset.size); + if (!rc) { usb_mtp_queue_result(s, RES_STORE_FULL, d->trans, 0, 0, 0, 0); goto done; --=20 2.9.3 From nobody Wed Nov 5 12:15:30 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534843011597896.3175561402797; Tue, 21 Aug 2018 02:16:51 -0700 (PDT) Received: from localhost ([::1]:51707 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2mN-00057T-49 for importer@patchew.org; Tue, 21 Aug 2018 05:16:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37242) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2hk-0008Fn-1r for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:12:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fs2hf-0000gT-Np for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:58 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:43974 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fs2hf-0000f2-CH for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:55 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6CCE668800 for ; Tue, 21 Aug 2018 09:11:54 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-184.ams2.redhat.com [10.36.116.184]) by smtp.corp.redhat.com (Postfix) with ESMTP id 901C72157F49; Tue, 21 Aug 2018 09:11:51 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 5F5249B2FA; Tue, 21 Aug 2018 11:11:48 +0200 (CEST) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Tue, 21 Aug 2018 11:11:47 +0200 Message-Id: <20180821091148.32220-7-kraxel@redhat.com> In-Reply-To: <20180821091148.32220-1-kraxel@redhat.com> References: <20180821091148.32220-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 21 Aug 2018 09:11:54 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 21 Aug 2018 09:11:54 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'kraxel@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PULL 6/7] dev-mtp: Add support for > 4GB file transfers 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: Bandan Das , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Bandan Das To support larger file transfers, rely on a short packet to detect end of the data phase and rewrite d->length to the size received Signed-off-by: Bandan Das Message-id: 20180720214020.22897-5-bsd@redhat.com Signed-off-by: Gerd Hoffmann --- hw/usb/dev-mtp.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index c8f6eb4e9e..2e3ea58da6 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -147,9 +147,12 @@ struct MTPData { uint32_t trans; uint64_t offset; uint64_t length; - uint32_t alloc; + uint64_t alloc; uint8_t *data; bool first; + /* Used for >4G file sizes */ + bool pending; + uint64_t cached_length; int fd; }; =20 @@ -1626,7 +1629,7 @@ static void usb_mtp_write_data(MTPState *s) MTPObject *parent =3D usb_mtp_object_lookup(s, s->dataset.parent_handle); char *path =3D NULL; - int rc =3D -1; + uint64_t rc; mode_t mask =3D 0644; =20 assert(d !=3D NULL); @@ -1643,7 +1646,7 @@ static void usb_mtp_write_data(MTPState *s) d->fd =3D mkdir(path, mask); goto free; } - if (s->dataset.size < d->length) { + if ((s->dataset.size !=3D 0xFFFFFFFF) && (s->dataset.size < d->len= gth)) { usb_mtp_queue_result(s, RES_STORE_FULL, d->trans, 0, 0, 0, 0); goto done; @@ -1754,13 +1757,27 @@ static void usb_mtp_get_data(MTPState *s, mtp_conta= iner *container, usb_mtp_realloc(d, total_len); d->length +=3D total_len; d->offset =3D 0; + d->cached_length =3D total_len; d->first =3D false; + d->pending =3D false; + } + + if (d->pending) { + usb_mtp_realloc(d, d->cached_length); + d->length +=3D d->cached_length; + d->pending =3D false; } =20 if (d->length - d->offset > data_len) { dlen =3D data_len; } else { dlen =3D d->length - d->offset; + /* Check for cached data for large files */ + if ((s->dataset.size =3D=3D 0xFFFFFFFF) && (dlen < p->iov.size)) { + usb_mtp_realloc(d, p->iov.size - dlen); + d->length +=3D p->iov.size - dlen; + dlen =3D p->iov.size; + } } =20 switch (d->code) { @@ -1780,12 +1797,18 @@ static void usb_mtp_get_data(MTPState *s, mtp_conta= iner *container, case CMD_SEND_OBJECT: usb_packet_copy(p, d->data + d->offset, dlen); d->offset +=3D dlen; - if (d->offset =3D=3D d->length) { + if ((p->iov.size % 64) || !p->iov.size) { + assert((s->dataset.size =3D=3D 0xFFFFFFFF) || + (s->dataset.size =3D=3D d->length)); + usb_mtp_write_data(s); usb_mtp_data_free(s->data_out); s->data_out =3D NULL; return; } + if (d->offset =3D=3D d->length) { + d->pending =3D true; + } break; default: p->status =3D USB_RET_STALL; --=20 2.9.3 From nobody Wed Nov 5 12:15:30 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534842848760860.9994629714922; Tue, 21 Aug 2018 02:14:08 -0700 (PDT) Received: from localhost ([::1]:51690 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2jn-00011a-JY for importer@patchew.org; Tue, 21 Aug 2018 05:14:07 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37238) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fs2hk-0008Fk-0a for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:12:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fs2hf-0000gK-NM for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:58 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:43972 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fs2hf-0000eW-9N for qemu-devel@nongnu.org; Tue, 21 Aug 2018 05:11:55 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8F3FE738EF for ; Tue, 21 Aug 2018 09:11:53 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-184.ams2.redhat.com [10.36.116.184]) by smtp.corp.redhat.com (Postfix) with ESMTP id A12B410B7CB7; Tue, 21 Aug 2018 09:11:51 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 67D839B2FB; Tue, 21 Aug 2018 11:11:48 +0200 (CEST) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Tue, 21 Aug 2018 11:11:48 +0200 Message-Id: <20180821091148.32220-8-kraxel@redhat.com> In-Reply-To: <20180821091148.32220-1-kraxel@redhat.com> References: <20180821091148.32220-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 21 Aug 2018 09:11:53 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 21 Aug 2018 09:11:53 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'kraxel@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PULL 7/7] dev-mtp: rename x-root to rootdir 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: Bandan Das , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Bandan Das x-root was renamed as such owing to the experimental nature of the property; the underlying filesystem semantics were undecided Signed-off-by: Bandan Das Message-id: 20180720214020.22897-6-bsd@redhat.com Signed-off-by: Gerd Hoffmann --- hw/usb/dev-mtp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index 2e3ea58da6..3fdc4b0da1 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -2018,7 +2018,7 @@ static void usb_mtp_realize(USBDevice *dev, Error **e= rrp) QTAILQ_INIT(&s->objects); if (s->desc =3D=3D NULL) { if (s->root =3D=3D NULL) { - error_setg(errp, "usb-mtp: x-root property must be configured"= ); + error_setg(errp, "usb-mtp: rootdir property must be configured= "); return; } s->desc =3D strrchr(s->root, '/'); @@ -2047,7 +2047,7 @@ static const VMStateDescription vmstate_usb_mtp =3D { }; =20 static Property mtp_properties[] =3D { - DEFINE_PROP_STRING("x-root", MTPState, root), + DEFINE_PROP_STRING("rootdir", MTPState, root), DEFINE_PROP_STRING("desc", MTPState, desc), DEFINE_PROP_BOOL("readonly", MTPState, readonly, true), DEFINE_PROP_END_OF_LIST(), --=20 2.9.3