Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp7087564rwb; Tue, 15 Nov 2022 07:32:37 -0800 (PST) X-Google-Smtp-Source: AA0mqf7AFRuxBTDSBNmmLku21MoQM58Z2OfRij8GRgt9dJ4wC40WB1Sbf4LsvWe6AhPZ8yug3WHx X-Received: by 2002:a05:6402:3719:b0:462:6ace:c522 with SMTP id ek25-20020a056402371900b004626acec522mr15158377edb.91.1668526357793; Tue, 15 Nov 2022 07:32:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668526357; cv=none; d=google.com; s=arc-20160816; b=A4ZrLK7mCsT+Ij2ccE7wWofvnoFVwSMemPJ3G8lrQ2Bor/riAAShyMEN2UepCHZ7Y/ U8Liw6Wb9pwb8E6VZMLJBtojFR8j6+i06qzlXUXE69aCcf1UGPIQT/WUsIIPRrdXK6Tv Sl34GzY5hs9aLXjWKxgmVVfjL0upjCvVToeTxsiF920v+NkArMGu0CHfTkAVIqy09hoT OVMzUKMR8z9Qiqi/yJSi0Pd205i8FXnGyu0jwo/necd5e1WU5ceOyUmrRNYzNldhPwZz ove0pShebmvQBkHlw49TfesESlnmj3CTec3XkApML2Z3q4bPEgnPmiWSTqSM7nI9DgVf Y/gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:content-disposition :content-transfer-encoding:mime-version:in-reply-to:references:cc :user-agent:date:subject:to:from; bh=RV58vKYq+DLSTryWSVADM5UUCNNvS2/tuR3TnT+BnVA=; b=XoouCGQGjjKhxH9/O7YgxC4tC56Hubn5M3uBo/WVuviULRPENu+K3qDdOGIZzBtrQn 0oaSKpGXhsy/A8MonR6ROlDESUgHuZlZse/A2ZmPyc86X5BC83CFxVKL4/8/vAAZDXxj /TS15c8VNw0DnzYqHKgWCqwH4mLs1vsKO40YUlWllbBWPkW4PkW5V0JgIpkEixx47ofd D9xR0SVnnZI5zMMqZGpY5bS6jK67IV3eFh19JZ+oGU9P+mU0j1HLbJ22wDF+VnZGf3cH i9/9pAFPsaTKPhzfALvmWL2jmaa9T5FQCEM22T3xzby4fCIH0l79x4SOTfwP6IuVyMd9 IJAQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id js3-20020a17090797c300b0078a4aad3141si13271904ejc.211.2022.11.15.07.31.40; Tue, 15 Nov 2022 07:32:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229955AbiKOO5M (ORCPT + 89 others); Tue, 15 Nov 2022 09:57:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39684 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229814AbiKOO5B (ORCPT ); Tue, 15 Nov 2022 09:57:01 -0500 Received: from hosting.gsystem.sk (hosting.gsystem.sk [212.5.213.30]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 2BDD5F00E; Tue, 15 Nov 2022 06:56:58 -0800 (PST) Received: from [192.168.1.3] (gsystem.sk [85.248.217.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by hosting.gsystem.sk (Postfix) with ESMTPSA id 6F3107A0426; Tue, 15 Nov 2022 15:56:56 +0100 (CET) From: Ondrej Zary To: Damien Le Moal Subject: Re: [PATCH] pata_parport: add driver (PARIDE replacement) Date: Tue, 15 Nov 2022 15:56:52 +0100 User-Agent: KMail/1.9.10 Cc: Christoph Hellwig , Sergey Shtylyov , Jens Axboe , Tim Waugh , linux-block@vger.kernel.org, linux-parport@lists.infradead.org, linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org References: <20220312144415.20010-1-linux@zary.sk> <202211142025.46723.linux@zary.sk> In-Reply-To: X-KMail-QuotePrefix: > MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <202211151556.52895.linux@zary.sk> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tuesday 15 November 2022, Damien Le Moal wrote: > On 11/15/22 04:25, Ondrej Zary wrote: > > On Monday 14 November 2022 09:03:28 Damien Le Moal wrote: > >> On 11/14/22 16:53, Ondrej Zary wrote: > >>> On Monday 14 November 2022, Damien Le Moal wrote: > >>>> On 11/12/22 20:17, Ondrej Zary wrote: > >>>>> On Wednesday 19 October 2022 09:34:31 Christoph Hellwig wrote: > >>>>>> It's been a while - did you get a chance to make some progress on > >>>>>> this? Do you need any help to unblock you? > >>>>>> > >>>>> > >>>>> Sorry again, I'm back now. Trying to fix locking problems. > >>>>> Added this to each function for analysis how the functions are called wrt. > >>>>> locking: > >>>>> > >>>>> printk("%s, locked=%d\n", __FUNCTION__, spin_is_locked(ap->lock)); > >>>> > >>>> Do you have your code somewhere that we can look at ? > >>> > >>> This is the current version with debug printks. I've also added dump_stack() > >>> to find out the code path but haven't analyzed the output yet. > >> > >> Can you send a proper patch ? Or a link to a git tree ? That is easier to > >> handle than pasted code in an email... > > > > Patch against what? I don't have a git server. > > patch against current 6.1-rc, or against an older kernel should be OK too. > But please "git send-email" a patch, or push your dev tree to github ? > > > I've done some call trace analysis. These code paths are calling > > pata_parport functions with ap->lock locked during init. > > > > Comm: kworker, Workqueue: ata_sff ata_sff_pio_task > > ata_sff_hsm_move -> ata_pio_sectors-> ata_sff_altstatus -> pata_parport_tf_read -> pata_parport_check_altstatus > > ata_sff_hsm_move -> ata_sff_altstatus -> pata_parport_tf_read -> pata_parport_check_altstatus > > ata_sff_pio_task -> ata_sff_busy_wait -> pata_parport_check_status > > ata_sff_hsm_move -> ata_wait_idle -> ata_sff_busy_wait -> pata_parport_check_status > > ata_sff_hsm_move -> ata_hsm_qc_complete -> ata_sff_irq_on -> ata_wait_idle -> ata_sff_busy_wait -> pata_parport_check_status > > ata_sff_pio_task -> ata_sff_hsm_move -> ata_pio_sectors -> ata_pio_sector -> ata_pio_xfer -> pata_parport_data_xfer > > ata_sff_pio_task -> ata_sff_hsm_move -> pata_parport_data_xfer > > ata_sff_pio_task -> ata_sff_hsm_move -> pata_parport_tf_read > > ata_sff_hsm_move -> ata_hsm_qc_complete -> ata_qc_complete -> fill_result_tf -> ata_sff_qc_fill_rtf -> pata_parport_tf_read > > ata_sff_hsm_move -> ata_pio_sectors -> ata_sff_altstatus -> pata_parport_check_altstatus > > ata_sff_hsm_move -> ata_sff_altstatus -> pata_parport_check_altstatus > > > > Comm: modprobe > > ata_host_start -> ata_eh_freeze_port -> ata_sff_freeze -> pata_parport_check_status > > > > Comm: scsi_eh_4 > > ata_eh_recover -> ata_eh_reset -> ata_eh_thaw_port -> ata_sff_thaw -> ata_sff_irq_on -> ata_wait_idle -> ata_sff_busy_wait -> pata_parport_check_status > > ata_eh_reset -> ata_eh_freeze_port -> ata_sff_freeze -> pata_parport_check_status > > ata_scsi_error -> ata_scsi_port_error_handler -> ata_port_freeze -> ata_sff_freeze -> pata_parport_check_status > > ata_sff_error_handler -> pata_parport_drain_fifo -> pata_parport_check_status > > What exactly are the issues you are having with ap->lock ? It looks like > you have done a lot of analysis of the code, but without any context about > the problem, I do not understand what I am looking at. > The problem is that pi_connect() can sleep because it calls parport_claim_or_block(). And any access (even reading ATA status register) requires pi_connect. -- Ondrej Zary