From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52C28FA3743 for ; Fri, 28 Oct 2022 08:14:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229893AbiJ1IOv (ORCPT ); Fri, 28 Oct 2022 04:14:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230144AbiJ1IOb (ORCPT ); Fri, 28 Oct 2022 04:14:31 -0400 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 22B68F3E; Fri, 28 Oct 2022 01:14:27 -0700 (PDT) Received: from fraeml708-chm.china.huawei.com (unknown [172.18.147.200]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4MzFdl4Xzlz685K1; Fri, 28 Oct 2022 16:12:27 +0800 (CST) Received: from lhrpeml500003.china.huawei.com (7.191.162.67) by fraeml708-chm.china.huawei.com (10.206.15.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 28 Oct 2022 10:14:24 +0200 Received: from [10.48.144.136] (10.48.144.136) by lhrpeml500003.china.huawei.com (7.191.162.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 28 Oct 2022 09:14:23 +0100 Message-ID: Date: Fri, 28 Oct 2022 09:14:24 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH RFC v3 2/7] ata: libata-scsi: Add ata_internal_queuecommand() To: Damien Le Moal , Hannes Reinecke , , , , , , CC: , , , , , , , References: <1666693976-181094-1-git-send-email-john.garry@huawei.com> <1666693976-181094-3-git-send-email-john.garry@huawei.com> <08fdb698-0df3-7bc8-e6af-7d13cc96acfa@opensource.wdc.com> <83d9dc82-ea37-4a3c-7e67-1c097f777767@huawei.com> <3ef0347f-f3e2-cf08-2b27-f65a7afe82a2@suse.de> <07028dac-d6cc-d707-db08-b92c365a6220@opensource.wdc.com> From: John Garry In-Reply-To: <07028dac-d6cc-d707-db08-b92c365a6220@opensource.wdc.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.48.144.136] X-ClientProxiedBy: lhrpeml100006.china.huawei.com (7.191.160.224) To lhrpeml500003.china.huawei.com (7.191.162.67) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org On 27/10/2022 23:35, Damien Le Moal wrote: >> At what stage do you want to send these commands? The tags for the shost >> are not setup until scsi_add_host() -> scsi_mq_setup_tags() is called, >> so can't expect blk-mq to manage reserved tags before then. >> >> If you are required to send commands prior to scsi_add_host(), then I >> suppose the low-level driver still needs to manage tags until the shost >> is ready. I guess that some very simple scheme can be used, like always >> use tag 0, since most probe is done serially per-host. But that's not a >> case which I have had to deal with yet. > In libata case, ata_dev_configure() will cause a lot of > ata_exec_internal_sg() calls for IDENTIFY and various READ LOG commands. > That is all done with non-ncq commands, which means that we do not require > a hw tag. But given that you are changing ata_exec_internal_sg() to call > alloc_request + blk_execute_rq_nowait(), how would these work without a > tag, at least a soft one ? Or we would need to keep the current code to > use ata_qc_issue() directly for probe time ? That will look very ugly... > I am not sure if there is really a problem. So libata/libsas allocs the shost quite early, and that is before we try using ata_exec_internal_sg(). Also note that I added patch "ata: libata-scsi: Allocate sdev early in port probe" so that we have ata_device.sdev ready before issuing ata_exec_internal_sg() (sorry if I'm stating the obvious). I think Hannes' issue is that some SCSI HBA driver needs to send "internal" commands to probe the HW for info, and this would be before shost is ready. He can tell us more. Thanks, John