All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Philipp Stanner <pstanner@redhat.com>
Cc: "Takashi Iwai" <tiwai@suse.de>,
	"Damien Le Moal" <dlemoal@kernel.org>,
	"Niklas Cassel" <cassel@kernel.org>,
	"Sergey Shtylyov" <s.shtylyov@omp.ru>,
	"Basavaraj Natikar" <basavaraj.natikar@amd.com>,
	"Jiri Kosina" <jikos@kernel.org>,
	"Benjamin Tissoires" <bentiss@kernel.org>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Alex Dubov" <oakad@yahoo.com>,
	"Sudarsana Kalluru" <skalluru@marvell.com>,
	"Manish Chopra" <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Rasesh Mody" <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	"Igor Mitsyanko" <imitsyanko@quantenna.com>,
	"Sergey Matyukevich" <geomatsi@gmail.com>,
	"Kalle Valo" <kvalo@kernel.org>,
	"Sanjay R Mehta" <sanju.mehta@amd.com>,
	"Shyam Sundar S K" <Shyam-sundar.S-k@amd.com>,
	"Jon Mason" <jdmason@kudzu.us>,
	"Dave Jiang" <dave.jiang@intel.com>,
	"Allen Hubbe" <allenbh@gmail.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Alex Williamson" <alex.williamson@redhat.com>,
	"Juergen Gross" <jgross@suse.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	"Oleksandr Tyshchenko" <oleksandr_tyshchenko@epam.com>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Takashi Iwai" <tiwai@suse.com>, "Chen Ni" <nichen@iscas.ac.cn>,
	"Mario Limonciello" <mario.limonciello@amd.com>,
	"Ricky Wu" <ricky_wu@realtek.com>,
	"Al Viro" <viro@zeniv.linux.org.uk>,
	"Breno Leitao" <leitao@debian.org>,
	"Kevin Tian" <kevin.tian@intel.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Mostafa Saleh" <smostafa@google.com>,
	"Jason Gunthorpe" <jgg@ziepe.ca>, "Yi Liu" <yi.l.liu@intel.com>,
	"Christian Brauner" <brauner@kernel.org>,
	"Ankit Agrawal" <ankita@nvidia.com>,
	"Eric Auger" <eric.auger@redhat.com>,
	"Reinette Chatre" <reinette.chatre@intel.com>,
	"Ye Bin" <yebin10@huawei.com>,
	"Marek Marczykowski-Górecki" <marmarek@invisiblethingslab.com>,
	"Pierre-Louis Bossart" <pierre-louis.bossart@linux.dev>,
	"Peter Ujfalusi" <peter.ujfalusi@linux.intel.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Kai Vehmanen" <kai.vehmanen@linux.intel.com>,
	"Rui Salvaterra" <rsalvaterra@gmail.com>,
	linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
	linux-pci@vger.kernel.org, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of pcim_intx()
Date: Thu, 24 Oct 2024 17:43:12 +0200	[thread overview]
Message-ID: <875xphzeun.wl-tiwai@suse.de> (raw)
In-Reply-To: <aec23bb79b9ff7dd7f13eb67460e0605eac22912.camel@redhat.com>

On Thu, 24 Oct 2024 10:02:59 +0200,
Philipp Stanner wrote:
> 
> On Wed, 2024-10-23 at 17:03 +0200, Takashi Iwai wrote:
> > On Wed, 23 Oct 2024 15:50:09 +0200,
> > Philipp Stanner wrote:
> > > 
> > > On Tue, 2024-10-22 at 16:08 +0200, Takashi Iwai wrote:
> > > > On Tue, 15 Oct 2024 20:51:12 +0200,
> > > > Philipp Stanner wrote:
> > > > > 
> > > > > pci_intx() is a hybrid function which can sometimes be managed
> > > > > through
> > > > > devres. To remove this hybrid nature from pci_intx(), it is
> > > > > necessary to
> > > > > port users to either an always-managed or a never-managed
> > > > > version.
> > > > > 
> > > > > hda_intel enables its PCI-Device with pcim_enable_device().
> > > > > Thus,
> > > > > it needs
> > > > > the always-managed version.
> > > > > 
> > > > > Replace pci_intx() with pcim_intx().
> > > > > 
> > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > > ---
> > > > >  sound/pci/hda/hda_intel.c | 2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/sound/pci/hda/hda_intel.c
> > > > > b/sound/pci/hda/hda_intel.c
> > > > > index b4540c5cd2a6..b44ca7b6e54f 100644
> > > > > --- a/sound/pci/hda/hda_intel.c
> > > > > +++ b/sound/pci/hda/hda_intel.c
> > > > > @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx
> > > > > *chip,
> > > > > int do_disconnect)
> > > > >  	}
> > > > >  	bus->irq = chip->pci->irq;
> > > > >  	chip->card->sync_irq = bus->irq;
> > > > > -	pci_intx(chip->pci, !chip->msi);
> > > > > +	pcim_intx(chip->pci, !chip->msi);
> > > > >  	return 0;
> > > > >  }
> > > > >  
> > > > 
> > > > Hm, it's OK-ish to do this as it's practically same as what
> > > > pci_intx()
> > > > currently does.  But, the current code can be a bit inconsistent
> > > > about
> > > > the original intx value.  pcim_intx() always stores !enable to
> > > > res->orig_intx unconditionally, and it means that the orig_intx
> > > > value
> > > > gets overridden at each time pcim_intx() gets called.
> > > 
> > > Yes.
> > > 
> > > > 
> > > > Meanwhile, HD-audio driver does release and re-acquire the
> > > > interrupt
> > > > after disabling MSI when something goes wrong, and pci_intx()
> > > > call
> > > > above is a part of that procedure.  So, it can rewrite the
> > > > res->orig_intx to another value by retry without MSI.  And after
> > > > the
> > > > driver removal, it'll lead to another state.
> > > 
> > > I'm not sure that I understand this paragraph completely. Still,
> > > could
> > > a solution for the driver on the long-term just be to use
> > > pci_intx()?
> > 
> > pci_intx() misses the restore of the original value, so it's no
> > long-term solution, either.
> 
> Sure that is missing – I was basically asking whether the driver could
> live without that feature.
> 
> Consider that point obsolete, see below
> 
> > 
> > What I meant is that pcim_intx() blindly assumes the negative of the
> > passed argument as the original state, which isn't always true.  e.g.
> > when the driver calls it twice with different values, a wrong value
> > may be remembered.
> 
> Ah, I see – thoguh the issue is when it's called several times with the
> *same* value, isn't it?
> 
> E.g.
> 
> pcim_intx(pdev, 1); // 0 is remembered as the old value
> pcim_intx(pdev, 1); // 0 is falsely remembered as the old value
> 
> Also, it would seem that calling the function for the first time like
> that:
> 
> pcim_intx(pdev, 0); // old value: 1
> 
> is at least incorrect, because INTx should be 0 per default, shouldn't
> it? Could then even be a 1st class bug, because INTx would end up being
> enabled despite having been disabled all the time.

Yeah, and the unexpected restore can happen even with a single call of
pcim_intx(), if the driver calls it unnecessarily.

> > That said, I thought of something like below.
> 
> At first glance that looks like a good idea to me, thanks for working
> this out!
> 
> IMO you can submit that as a patch so we can discuss it separately.

Sure, I'm going to submit later.


thanks,

Takashi

  reply	other threads:[~2024-10-24 15:42 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-15 18:51 [PATCH 00/13] Remove implicit devres from pci_intx() Philipp Stanner
2024-10-15 18:51 ` [PATCH 01/13] PCI: Prepare removing " Philipp Stanner
2024-10-31 13:45   ` Thomas Gleixner
2024-11-04  9:26     ` Philipp Stanner
2024-10-15 18:51 ` [PATCH 02/13] ALSA: hda_intel: Use always-managed version of pcim_intx() Philipp Stanner
2024-10-22 14:08   ` Takashi Iwai
2024-10-23 13:50     ` Philipp Stanner
2024-10-23 15:03       ` Takashi Iwai
2024-10-24  8:02         ` Philipp Stanner
2024-10-24 15:43           ` Takashi Iwai [this message]
2024-10-25  8:37             ` Philipp Stanner
2024-10-25  8:46               ` Takashi Iwai
2024-10-15 18:51 ` [PATCH 03/13] drivers/xen: Use never-managed version of pci_intx() Philipp Stanner
2024-10-15 18:51 ` [PATCH 04/13] net/ethernet: " Philipp Stanner
2024-10-15 18:51 ` [PATCH 05/13] net/ntb: " Philipp Stanner
2024-10-15 18:51 ` [PATCH 06/13] misc: " Philipp Stanner
2024-10-15 18:51 ` [PATCH 07/13] vfio/pci: " Philipp Stanner
2024-10-15 18:51 ` [PATCH 08/13] PCI: MSI: " Philipp Stanner
2024-10-15 18:51 ` [PATCH 09/13] ata: Use always-managed " Philipp Stanner
2024-10-16 19:49   ` Sergey Shtylyov
2024-10-17  7:51   ` Niklas Cassel
2024-10-15 18:51 ` [PATCH 10/13] wifi: qtnfmac: use always-managed version of pcim_intx() Philipp Stanner
2024-10-16  9:36   ` Kalle Valo
2024-10-15 18:51 ` [PATCH 11/13] HID: amd_sfh: Use " Philipp Stanner
2024-10-15 18:51 ` [PATCH 12/13] Remove devres from pci_intx() Philipp Stanner
2024-10-15 18:51 ` [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx() Philipp Stanner
2024-10-15 19:53   ` Alex Williamson
2024-10-16  6:57     ` Philipp Stanner
2024-10-16  8:43       ` Heiner Kallweit
2024-10-16  8:53         ` Philipp Stanner
2024-10-18 23:45           ` Bjorn Helgaas
2024-10-21  6:47             ` Philipp Stanner
2024-10-16  5:39   ` Greg Kroah-Hartman
2024-10-30 22:17 ` [PATCH 00/13] Remove implicit devres from pci_intx() Bjorn Helgaas
2024-10-31  9:19   ` Takashi Iwai
2024-10-31  9:28     ` Philipp Stanner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875xphzeun.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=GR-Linux-NIC-Dev@marvell.com \
    --cc=Shyam-sundar.S-k@amd.com \
    --cc=alex.williamson@redhat.com \
    --cc=allenbh@gmail.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=ankita@nvidia.com \
    --cc=arnd@arndb.de \
    --cc=basavaraj.natikar@amd.com \
    --cc=bentiss@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=brauner@kernel.org \
    --cc=cassel@kernel.org \
    --cc=dave.jiang@intel.com \
    --cc=davem@davemloft.net \
    --cc=dlemoal@kernel.org \
    --cc=edumazet@google.com \
    --cc=eric.auger@redhat.com \
    --cc=geomatsi@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=imitsyanko@quantenna.com \
    --cc=jdmason@kudzu.us \
    --cc=jgg@ziepe.ca \
    --cc=jgross@suse.com \
    --cc=jikos@kernel.org \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=kevin.tian@intel.com \
    --cc=kuba@kernel.org \
    --cc=kvalo@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=leitao@debian.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=manishc@marvell.com \
    --cc=mario.limonciello@amd.com \
    --cc=marmarek@invisiblethingslab.com \
    --cc=netdev@vger.kernel.org \
    --cc=nichen@iscas.ac.cn \
    --cc=ntb@lists.linux.dev \
    --cc=oakad@yahoo.com \
    --cc=oleksandr_tyshchenko@epam.com \
    --cc=pabeni@redhat.com \
    --cc=perex@perex.cz \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=pierre-louis.bossart@linux.dev \
    --cc=pstanner@redhat.com \
    --cc=reinette.chatre@intel.com \
    --cc=ricky_wu@realtek.com \
    --cc=rmody@marvell.com \
    --cc=rsalvaterra@gmail.com \
    --cc=s.shtylyov@omp.ru \
    --cc=sanju.mehta@amd.com \
    --cc=skalluru@marvell.com \
    --cc=smostafa@google.com \
    --cc=sstabellini@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tiwai@suse.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xen-devel@lists.xenproject.org \
    --cc=yebin10@huawei.com \
    --cc=yi.l.liu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.