lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20211019065245.GA8007@linux.intel.com>
Date:   Tue, 19 Oct 2021 14:52:47 +0800
From:   Carel Si <beibei.si@...el.com>
To:     Barry Song <21cnbao@...il.com>
Cc:     "Winkler, Tomas" <tomas.winkler@...el.com>, lkp <lkp@...el.com>,
        "Brandeburg, Jesse" <jesse.brandeburg@...el.com>,
        "Nguyen, Anthony L" <anthony.l.nguyen@...el.com>,
        Barry Song <song.bao.hua@...ilicon.com>,
        LKML <linux-kernel@...r.kernel.org>,
        "lkp@...ts.01.org" <lkp@...ts.01.org>,
        Bjorn Helgaas <bhelgaas@...gle.com>,
        Marc Zyngier <maz@...nel.org>,
        Thomas Gleixner <tglx@...utronix.de>,
        "Jonathan.Cameron@...wei.com" <Jonathan.Cameron@...wei.com>,
        "bilbao@...edu" <bilbao@...edu>, Jonathan Corbet <corbet@....net>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        "leon@...nel.org" <leon@...nel.org>,
        "linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>,
        Linuxarm <linuxarm@...wei.com>,
        "luzmaximilian@...il.com" <luzmaximilian@...il.com>,
        "mchehab+huawei@...nel.org" <mchehab+huawei@...nel.org>,
        "schnelle@...ux.ibm.com" <schnelle@...ux.ibm.com>,
        "intel-wired-lan@...ts.osuosl.org" <intel-wired-lan@...ts.osuosl.org>
Subject: Re: [LKP] Re: [PCI/MSI] a4fc4cf388:
 dmesg.genirq:Flags_mismatch_irq##(mei_me)vs.#(xhci_hcd)

Hi Barry,

On Sat, Oct 16, 2021 at 08:08:43AM +0800, Barry Song wrote:
> > issue, but it still has "Flags_mismatch_irq##(i915)vs.#(xhci_hcd)" and
> 
> Can you post the backtrace of i915?

Sure, and dmesg log is attached in dmesg.xz.

[  186.776123][  T198] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[  186.776390][   T12] i915 0000:00:02.0: Direct firmware load for i915/skl_dmc_ver1_27.bin failed with error -2
[  186.776407][   T12] i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/skl_dmc_ver1_27.bin. Disabling runtime power management.
[  186.776409][   T12] i915 0000:00:02.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[  186.776697][  T198] genirq: Flags mismatch irq 16. 00000080 (i915) vs. 00000000 (xhci_hcd)
[  186.776701][  T198] CPU: 0 PID: 198 Comm: systemd-udevd Not tainted 5.14.0-rc7-00016-gd41aee79717a #1
[  186.776703][  T198] Hardware name: Dell Inc. OptiPlex 7040/0Y7WYT, BIOS 1.8.1 12/05/2017
[  186.776704][  T198] Call Trace:
[  186.776706][  T198]  dump_stack_lvl+0x45/0x59
[  186.776712][  T198]  __setup_irq.cold+0x106/0x13e
[  186.776717][  T198]  ? dg1_irq_handler+0x100/0x100 [i915]
[  186.776800][  T198]  request_threaded_irq+0x10c/0x180
[  186.776807][  T198]  intel_irq_install+0x93/0x100 [i915]
[  186.776873][  T198]  i915_driver_probe+0x18f/0x440 [i915]
[  186.776943][  T198]  i915_pci_probe+0x54/0x140 [i915]
[  186.777008][  T198]  local_pci_probe+0x42/0x80
[  186.777014][  T198]  pci_device_probe+0x16b/0x200
[  186.777017][  T198]  ? sysfs_do_create_link_sd+0x69/0x100
[  186.777025][  T198]  really_probe+0xb6/0x380
[  186.777028][  T198]  __driver_probe_device+0xfe/0x180
[  186.777032][  T198]  driver_probe_device+0x1e/0xc0
[  186.777035][  T198]  __driver_attach+0x9e/0x180
[  186.777036][  T198]  ? __device_attach_driver+0x100/0x100
[  186.777038][  T198]  ? __device_attach_driver+0x100/0x100
[  186.777040][  T198]  bus_for_each_dev+0x7b/0xc0
[  186.777046][  T198]  bus_add_driver+0x150/0x200
[  186.777051][  T198]  driver_register+0x6c/0xc0
[  186.777052][  T198]  ? 0xffffffffc065d000
[  186.777055][  T198]  i915_init+0x62/0x81 [i915]
[  186.777126][  T198]  do_one_initcall+0x5b/0x340
[  186.777129][  T198]  ? do_init_module+0x23/0x280
[  186.777132][  T198]  ? kmem_cache_alloc_trace+0x533/0x640
[  186.777135][  T198]  ? lock_is_held_type+0xd5/0x140
[  186.777142][  T198]  do_init_module+0x5c/0x280
[  186.777145][  T198]  load_module+0x11b7/0x1540
[  186.777166][  T198]  ? __do_sys_finit_module+0xae/0x140
[  186.777168][  T198]  __do_sys_finit_module+0xae/0x140
[  186.777182][  T198]  do_syscall_64+0x5c/0x80
[  186.777184][  T198]  ? do_syscall_64+0x69/0x80
[  186.777187][  T198]  ? asm_exc_page_fault+0x1e/0x30
[  186.777189][  T198]  ? asm_exc_page_fault+0x8/0x30
[  186.777191][  T198]  ? lockdep_hardirqs_on+0x79/0x100
[  186.777194][  T198]  entry_SYSCALL_64_after_hwframe+0x44/0xae

> 
> > "Flags_mismatch_irq##(i801_smbus)vs.#(xhci_hcd)" issue, could you help on them?
> 
> I assume the below can fix i801_smbus:

We tested below patch, it can't completely fix 
"Flags_mismatch_irq##(i801_smbus)vs.#(xhci_hcd)", the result is unstable, we
tested 31 times, there's 21 times that we still have 
"Flags_mismatch_irq##(i801_smbus)vs.#(xhci_hcd)" issue.

Could you help on this? thanks! The dmesg log is also attached in dmesg.xz.

=========================================================================================
compiler/group/kconfig/rootfs/tbox_group/testcase/ucode:
  gcc-9/pidfd/x86_64-rhel-8.3-kselftests/debian-10.4-x86_64-20200603.cgz/lkp-skl-d05/kernel-selftests/0xe2

commit: 
  86c19983f1 ("PCI/sysfs: Don't depend on pci_dev.irq for IRQ entry")  <<< parent
  a4fc4cf388 ("PCI/MSI: remove msi_attrib.default_irq in msi_desc")    <<< fbc
  29368adf4c ("fixup-for-a4fc4cf388")               <<< patch to fix "mei_me"
  d41aee7971 ("fixup-for-29368adf4c")               <<< patch to fix "i801_smbus"

86c19983f1808cea a4fc4cf388319ea957ffbdab507 29368adf4c2b598c3e13dbd9603 d41aee79717a7f4ac7f1888e488 
---------------- --------------------------- --------------------------- --------------------------- 
       fail:runs  %reproduction    fail:runs  %reproduction    fail:runs  %reproduction    fail:runs
           |             |             |             |             |             |             |    
           :31          68%          21:31          71%          22:31          68%          21:31    dmesg.genirq:Flags_mismatch_irq##(i801_smbus)vs.#(xhci_hcd)
           :31          84%          26:31          94%          29:31          87%          27:31    dmesg.genirq:Flags_mismatch_irq##(i915)vs.#(xhci_hcd)
           :31          77%          24:31           0%            :31           0%            :31    dmesg.genirq:Flags_mismatch_irq##(mei_me)vs.#(xhci_hcd)


[  185.967634][  T230] i801_smbus 0000:00:1f.4: SPD Write Disable is set
[  185.969376][  T220] ahci 0000:00:17.0: flags: 64bit ncq pm led clo only pio slum part ems deso sadm sds apst 
[  185.974251][  T230] genirq: Flags mismatch irq 16. 00000080 (i801_smbus) vs. 00000000 (xhci_hcd)
[  185.993159][  T230] CPU: 0 PID: 230 Comm: systemd-udevd Not tainted 5.14.0-rc7-00016-gd41aee79717a #1
[  185.993164][  T230] Hardware name: Dell Inc. OptiPlex 7040/0Y7WYT, BIOS 1.8.1 12/05/2017
         Startin[  185.993165][  T230] Call Trace:
e UTMP about Sys[  186.020986][  T230]  __setup_irq.cold+0x106/0x13e
tem Boot/Shutdow[  186.027042][  T230]  ? i801_remove+0x80/0x80 [i2c_i801]
[  186.033616][  T230]  request_threaded_irq+0x10c/0x180
[  186.039480][  T230]  ? i801_remove+0x80/0x80 [i2c_i801]
[  186.044791][  T230]  devm_request_threaded_irq+0x72/0x100
[  186.044799][  T230]  i801_probe+0x576/0x680 [i2c_i801]
         Startin[  186.055535][  T230]  ? preempt_count_sub+0xa1/0x100
ind portmap serv[  186.068795][  T230]  local_pci_probe+0x42/0x80
[  186.074591][  T230]  pci_device_probe+0x16b/0x200
[  186.080277][  T230]  ? sysfs_do_create_link_sd+0x69/0x100
[  186.086373][  T230]  really_probe+0xb6/0x380
[  186.086379][  T230]  __driver_probe_device+0xfe/0x180
[  186.086382][  T230]  driver_probe_device+0x1e/0xc0
         Startin[  186.086385][  T230]  __driver_attach+0x9e/0x180
rk Time Synchron[  186.086389][  T230]  ? __device_attach_driver+0x100/0x100
[  186.086391][  T230]  bus_for_each_dev+0x7b/0xc0
[  186.086397][  T230]  bus_add_driver+0x150/0x200
[  186.086402][  T230]  driver_register+0x6c/0xc0
[  186.086404][  T230]  ? 0xffffffffc0085000
[  186.086407][  T230]  i2c_i801_init+0xb3/0x1000 [i2c_i801]
[  186.086413][  T230]  ? 0xffffffffc0085000
[  186.086415][  T230]  do_one_initcall+0x5b/0x340
[  186.086418][  T230]  ? do_init_module+0x23/0x280
[  186.086421][  T230]  ? kmem_cache_alloc_trace+0x533/0x640
[  186.086424][  T230]  ? lock_is_held_type+0xd5/0x140
[  186.086431][  T230]  do_init_module+0x5c/0x280
[  186.086435][  T230]  load_module+0x11b7/0x1540
[  186.086455][  T230]  ? __do_sys_finit_module+0xae/0x140
[  186.086457][  T230]  __do_sys_finit_module+0xae/0x140
[  186.086471][  T230]  do_syscall_64+0x5c/0x80
[  186.086474][  T230]  ? do_syscall_64+0x69/0x80
[  186.086476][  T230]  ? lockdep_hardirqs_on+0x79/0x100
[  186.086480][  T230]  ? do_syscall_64+0x69/0x80
[  186.086480][  T230]  ? do_syscall_64+0x69/0x80
[  186.086482][  T230]  ? do_syscall_64+0x69/0x80
[  186.086484][  T230]  ? do_syscall_64+0x69/0x80
[  186.086488][  T230]  ? do_syscall_64+0x69/0x80
[  186.086490][  T230]  ? lockdep_hardirqs_on+0x79/0x100
[  186.086493][  T230]  ? do_syscall_64+0x69/0x80
[  186.086495][  T230]  ? asm_exc_page_fault+0x1e/0x30
[  186.086497][  T230]  ? asm_exc_page_fault+0x8/0x30
[  186.086498][  T230]  ? lockdep_hardirqs_on+0x79/0x100
[  186.086502][  T230]  entry_SYSCALL_64_after_hwframe+0x44/0xae

> 
> diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
> index 89ae78ef1a1c..88d96e3ca268 100644
> --- a/drivers/i2c/busses/i2c-i801.c
> +++ b/drivers/i2c/busses/i2c-i801.c
> @@ -1827,7 +1827,7 @@ static int i801_probe(struct pci_dev *dev, const
> struct pci_device_id *id)
>         /* Default timeout in interrupt mode: 200 ms */
>         priv->adapter.timeout = HZ / 5;
> 
> -       if (dev->irq == IRQ_NOTCONNECTED)
> +       if (pci_irq_vector(dev, 0) == IRQ_NOTCONNECTED)
>                 priv->features &= ~FEATURE_IRQ;
> 
>         if (priv->features & FEATURE_IRQ) {
> @@ -1849,11 +1849,11 @@ static int i801_probe(struct pci_dev *dev,
> const struct pci_device_id *id)
>         if (priv->features & FEATURE_IRQ) {
>                 init_completion(&priv->done);
> 
> -               err = devm_request_irq(&dev->dev, dev->irq, i801_isr,
> +               err = devm_request_irq(&dev->dev, pci_irq_vector(dev,
> 0), i801_isr,
>                                        IRQF_SHARED, DRV_NAME, priv);
>                 if (err) {
>                         dev_err(&dev->dev, "Failed to allocate irq %d: %d\n",
> -                               dev->irq, err);
> +                               pci_irq_vector(dev, 0), err);
>                         priv->features &= ~FEATURE_IRQ;
>                 }
>         }
> 
> 
> 
> > thanks!
> >
> >
> > =========================================================================================
> > compiler/group/kconfig/rootfs/tbox_group/testcase/ucode:
> >   gcc-9/pidfd/x86_64-rhel-8.3-kselftests/debian-10.4-x86_64-20200603.cgz/lkp-skl-d05/kernel-selftests/0xe2
> >
> > commit:
> >   86c19983f1 ("PCI/sysfs: Don't depend on pci_dev.irq for IRQ entry")   <<< parent
> >   a4fc4cf388 ("PCI/MSI: remove msi_attrib.default_irq in msi_desc")     <<< fbc
> >   29368adf4c ("fixup-for-a4fc4cf388")
> >
> > 86c19983f1808cea a4fc4cf388319ea957ffbdab507 29368adf4c2b598c3e13dbd9603
> > ---------------- --------------------------- ---------------------------
> >        fail:runs  %reproduction    fail:runs  %reproduction    fail:runs
> >            |             |             |             |             |
> >            :31          68%          21:31          71%          22:31    dmesg.genirq:Flags_mismatch_irq##(i801_smbus)vs.#(xhci_hcd)
> >            :31          84%          26:31          94%          29:31    dmesg.genirq:Flags_mismatch_irq##(i915)vs.#(xhci_hcd)
> >            :31          77%          24:31           0%            :31    dmesg.genirq:Flags_mismatch_irq##(mei_me)vs.#(xhci_hcd)
> >
> > >
> > > diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
> > > index c3393b383e59..97495931fadd 100644
> > > --- a/drivers/misc/mei/pci-me.c
> > > +++ b/drivers/misc/mei/pci-me.c
> > > @@ -216,18 +216,18 @@ static int mei_me_probe(struct pci_dev *pdev,
> > > const struct pci_device_id *ent)
> > >
> > >   pci_enable_msi(pdev);
> > >
> > > - hw->irq = pdev->irq;
> > > + hw->irq = pci_irq_vector(pdev, 0);
> > >
> > >   /* request and enable interrupt */
> > >   irqflags = pci_dev_msi_enabled(pdev) ? IRQF_ONESHOT : IRQF_SHARED;
> > >
> > > - err = request_threaded_irq(pdev->irq,
> > > + err = request_threaded_irq(pci_irq_vector(pdev, 0),
> > >   mei_me_irq_quick_handler,
> > >   mei_me_irq_thread_handler,
> > >   irqflags, KBUILD_MODNAME, dev);
> > >   if (err) {
> > >   dev_err(&pdev->dev, "request_threaded_irq failure. irq = %d\n",
> > > -        pdev->irq);
> > > +        pci_irq_vector(pdev, 0));
> > >   goto end;
> > >   }
> > >
> > > @@ -278,7 +278,7 @@ static int mei_me_probe(struct pci_dev *pdev,
> > > const struct pci_device_id *ent)
> > >  release_irq:
> > >   mei_cancel_work(dev);
> > >   mei_disable_interrupts(dev);
> > > - free_irq(pdev->irq, dev);
> > > + free_irq(pci_irq_vector(pdev, 0), dev);
> > >  end:
> > >   dev_err(&pdev->dev, "initialization failed.\n");
> > >   return err;
> > > @@ -307,7 +307,7 @@ static void mei_me_shutdown(struct pci_dev *pdev)
> > >   mei_me_unset_pm_domain(dev);
> > >
> > >   mei_disable_interrupts(dev);
> > > - free_irq(pdev->irq, dev);
> > > + free_irq(pci_irq_vector(pdev, 0), dev);
> > >  }
> > >
> > >  /**
> > > @@ -336,7 +336,7 @@ static void mei_me_remove(struct pci_dev *pdev)
> > >
> > >   mei_disable_interrupts(dev);
> > >
> > > - free_irq(pdev->irq, dev);
> > > + free_irq(pci_irq_vector(pdev, 0), dev);
> > >
> > >   mei_deregister(dev);
> > >  }
> > > @@ -356,7 +356,7 @@ static int mei_me_pci_suspend(struct device *device)
> > >
> > >   mei_disable_interrupts(dev);
> > >
> > > - free_irq(pdev->irq, dev);
> > > + free_irq(pci_irq_vector(pdev, 0), dev);
> > >   pci_disable_msi(pdev);
> > >
> > >   return 0;
> > > @@ -378,14 +378,14 @@ static int mei_me_pci_resume(struct device *device)
> > >   irqflags = pci_dev_msi_enabled(pdev) ? IRQF_ONESHOT : IRQF_SHARED;
> > >
> > >   /* request and enable interrupt */
> > > - err = request_threaded_irq(pdev->irq,
> > > + err = request_threaded_irq(pci_irq_vector(pdev, 0),
> > >   mei_me_irq_quick_handler,
> > >   mei_me_irq_thread_handler,
> > >   irqflags, KBUILD_MODNAME, dev);
> > >
> > >   if (err) {
> > >   dev_err(&pdev->dev, "request_threaded_irq failed: irq = %d.\n",
> > > - pdev->irq);
> > > + pci_irq_vector(pdev, 0));
> > >   return err;
> > >   }
> > >
> > >
> > > Thanks
> > > barry
> 
> Thanks
> barry

Download attachment "dmesg.xz" of type "application/x-xz" (23428 bytes)

View attachment "config-5.14.0-rc7-00016-gd41aee79717a" of type "text/plain" (175449 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ