From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4815606A32E for ; Tue, 3 Nov 2026 14:24:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key, unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=dY1EC/1Y Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xOFQo-0005ye-Q5; Tue, 03 Nov 2026 09:24:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xOFQn-0005xw-By for qemu-devel@nongnu.org; Tue, 03 Nov 2026 09:24:09 -0500 Received: from out-234.mta0.migadu.com ([2001:41d0:1004:224b::ea] helo=mta0.migadu.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xOFQl-0003bB-LJ for qemu-devel@nongnu.org; Tue, 03 Nov 2026 09:24:08 -0500 X-Envelope-To: qemu-devel@nongnu.org DKIM-Signature: a=rsa-sha256; bh=QRv0PGJzuMeUy1tGthTU9o4n7HMlfygesRnl9JM8w94=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1793715846; v=1; x=1794320646; b=dY1EC/1YYGTeYStO1e47NCUu1FmoRkj5M8sm2+38jieuaaMbSCLm+HWrEtETz2YjicxvkpMh rkGBxEPD07F4dskTJpx40R3kcjsh+2VPZ4iI7gshjzgCdodzcI4ikHlLspMZWYO/DVif0u+mH0i 2JAnddUi73T699A06WxGbsD4= X-Envelope-To: qemu-devel@nongnu.org Received: by smtp.migadu.com with ESMTPS id ec71b1ccc94d0644; Tue, 03 Nov 2026 14:24:05 +0000 X-Mizu-Trace-ID: ec71b1ccc94d0644 X-Migadu-Flow: FLOW_OUT From: Junjie Cao To: jamin_lin@aspeedtech.com Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, clg@kaod.org, pierrick.bouvier@oss.qualcomm.com, peter.maydell@linaro.org, kane_chen@aspeedtech.com, philmd@oss.qualcomm.com, kfting@nuvoton.com, wuhaotsh@google.com, zhao1.liu@intel.com, richard.henderson@linaro.org, deller@gmx.de, sstabellini@kernel.org, anthony@xenproject.org, edgar.iglesias@gmail.com, troy_lee@aspeedtech.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, xen-devel@lists.xenproject.org, junjie.cao@linux.dev Subject: Re: [PATCH v8 14/18] hw/usb/redirect-server: Implement control transfers Date: Tue, 3 Nov 2026 08:23:25 -0600 Message-ID: <20261103142327.1348025-7-junjie.cao@linux.dev> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261102092201.1729245-15-jamin_lin@aspeedtech.com> References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-15-jamin_lin@aspeedtech.com> X-Archived-By: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2001:41d0:1004:224b::ea; envelope-from=junjie.cao@linux.dev; helo=mta0.migadu.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org X-Spam-Status: No, score=-6.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_PASS,SPF_PASS,USER_AGENT_GIT autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 Hi Jamin, On Mon, Nov 02, 2026 at 09:22:23AM +0000, Jamin Lin wrote: > + if (!s->host_connected || !device || !device->attached) { > + return usb_redir_ioerror; > + } The device stays in USB_STATE_ATTACHED until the announce BH resets it, so a control_packet in the same read as hello passes this check and hits the USB_STATE_DEFAULT assert in usb_handle_packet(). Checking device_announced here would cover it. For whenever you respin: stop_transfers() on a reset drops packets the client may still cancel; usbredirhost answers them first. Tested: usb-storage exported from ast2600-evb enumerates behind qemu-xhci and usb-ehci, usb-audio behind qemu-xhci, and each SET_INTERFACE alt 1 is followed by an ep_info with the iso OUT endpoint. Junjie