From: Prakash Punnoor <prakash@punnoor.de>
To: Yinghai Lu <yinghai@kernel.org>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>,
Andrew Morton <akpm@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Robert Hancock <hancockrwd@gmail.com>,
david@lang.hm, Matthew Wilcox <matthew@wil.cx>,
"linux-kernel" <linux-kernel@vger.kernel.org>,
linux-pci@vger.kernel.org
Subject: Re: [PATCH] pci: don't enable too many HT MSI mapping
Date: Sat, 28 Feb 2009 09:25:55 +0100 [thread overview]
Message-ID: <200902280925.56450.prakash@punnoor.de> (raw)
In-Reply-To: <49A8541C.4030601@kernel.org>
On Freitag 27 Februar 2009 21:59:08 Yinghai Lu wrote:
> Prakash Punnoor wrote:
> > On Dienstag 24 Februar 2009 18:37:35 Jesse Barnes wrote:
> >> On Monday, February 23, 2009 11:51:59 am Yinghai Lu wrote:
> >>> Impact: fix bug
> >>>
> >>> Prakash reported that his c51-mcp51 system ondie sound card doesn't
> >>> work MSI but if he hack out the HT-MSI on mcp51, the MSI will work well
> >>> with sound card.
> >>>
> >>> this patch rework the nv_msi_ht_cap_quirk()
> >>> and will only enable ht_msi on own root device and try to avoid to
> >>> enable ht_msi on device following that root dev
> >>>
> >>> Reported-by: Prakash Punnoor <prakash@punnoor.de>
> >>> Tested-by: Prakash Punnoor <prakash@punnoor.de>
> >>> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
> >>
> >> Thanks Yinghai & Prakash, applied this fix to my for-linus branch.
> >
> > I am very sorry, but I made a mistake testing this patch. I messed up my
> > kernels and got a false positive and only noticed this now. The patch
> > does NOT work and even makes things worse:
> >
> > dmesg|grep HT
> > pci 0000:00:09.0: Found disabled HT MSI Mapping
> > pci 0000:00:09.0: Enabling HT MSI Mapping
> > pci 0000:00:09.0: Found enabled HT MSI Mapping
> > pci 0000:00:09.0: Found enabled HT MSI Mapping
> > pci 0000:00:09.0: Found enabled HT MSI Mapping
> > pci 0000:00:09.0: Found enabled HT MSI Mapping
> >
> > This is exactly the device which shouldn't be MSI enabled for me. On the
> > other hand, it doesn't enable the needed devices anymore.
>
> please check this one, please power off the system before load the kernel
> with new patch.
Well, the problem now is that MSI doesn't get enabled on the needed host
bridge 00.0 (device 10de:02f0), so MSI doesn't work at all on my system (but
also doesn't hang my system.) I have no idea how to differentiate the 00.0
device from the "forbidden" 09.0 (device 10de:0270) on my system. Perhaps a
blacklist is really the best? The original patch by NVidia had a white list,
btw, see also here:
http://kerneltrap.org/mailarchive/linux-kernel/2007/11/25/443612/thread
The output of your current patch:
pci 0000:00:05.0: Boot video device
pci 0000:00:09.0: Found disabled HT MSI Mapping
pci 0000:00:0e.0: Enabling HT MSI Mapping
pci 0000:00:09.0: Found disabled HT MSI Mapping
pci 0000:00:0f.0: Enabling HT MSI Mapping
pci 0000:00:09.0: Found disabled HT MSI Mapping
pci 0000:00:10.0: Enabling HT MSI Mapping
pci 0000:00:09.0: Found disabled HT MSI Mapping
pci 0000:00:10.1: Enabling HT MSI Mapping
So, ok, MSI gets enabled on the devices as such (good), not enabled on 09.0
(good), but also not on the needed host bridge 00.0 (bad).
BTW, I noticed a typo in the patch. In ht_disable_msi_mapping you want the
text to be "Disabling"... instead of
+ dev_info(&dev->dev, "Enabling HT MSI Mapping\n");
And a minor simplification in ht_check_msi_mapping would be instead of
+ if (flags & HT_MSI_FLAGS_ENABLE) {
+ if (found < 2) {
+ found = 2;
+ break;
+ }
+ }
just
+ if (flags & HT_MSI_FLAGS_ENABLE) {
+ found = 2;
+ break;
+ }
as it is the only place where found is set to something higher than 1 and then
the function is exited anyway. Or make the return paths clearer by this change
from
+ int pos, ttl = 48;
+ int found = 0;
+
+ /* check if there is HT MSI cap or enabled on this device */
+ pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
+ while (pos && ttl--) {
+ u8 flags;
+
+ if (found < 1)
+ found = 1;
+ if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
+ &flags) == 0) {
+ if (flags & HT_MSI_FLAGS_ENABLE) {
+ if (found < 2) {
+ found = 2;
+ break;
+ }
+ }
+ }
+ pos = pci_find_next_ht_capability(dev, pos,
+ HT_CAPTYPE_MSI_MAPPING);
+ }
+
+ return found;
to
+ int pos, ttl = 48;
+
+ /* check if there is HT MSI cap or enabled on this device */
+ pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
+ if (!pos)
+ return 0;
+
+ do {
+ u8 flags;
+
+ if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
+ &flags) == 0) {
+ if (flags & HT_MSI_FLAGS_ENABLE)
+ return 2;
+ }
+ pos = pci_find_next_ht_capability(dev, pos,
+ HT_CAPTYPE_MSI_MAPPING);
+ } while (pos && --ttl);
+
+ return 1;
+}
Then at least I would have to think less, under which conditions found takes
the values 0, 1 or 2.
Regards,
Prakash
next prev parent reply other threads:[~2009-02-28 8:23 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-17 22:24 mpt fusion broken sometime since 2.6.24 david
2009-02-17 21:44 ` david
2009-02-17 23:00 ` Matthew Wilcox
2009-02-17 23:07 ` david
2009-02-17 23:11 ` Matthew Wilcox
2009-02-17 23:20 ` Yinghai Lu
2009-02-17 23:21 ` david
2009-02-17 23:11 ` Yinghai Lu
2009-02-17 23:20 ` david
2009-02-17 23:22 ` Yinghai Lu
2009-02-17 23:37 ` david
2009-02-18 2:01 ` Yinghai Lu
2009-02-18 2:03 ` david
2009-02-18 2:14 ` Yinghai Lu
2009-02-18 2:32 ` david
2009-02-18 2:28 ` Yinghai Lu
2009-02-18 2:34 ` david
2009-02-18 2:40 ` david
2009-02-18 2:49 ` Yinghai Lu
2009-02-18 3:26 ` david
2009-02-18 3:28 ` Yinghai Lu
2009-02-18 3:35 ` david
2009-02-18 3:45 ` david
2009-02-18 3:47 ` Yinghai Lu
2009-02-18 4:14 ` david
2009-02-18 4:36 ` Yinghai Lu
2009-02-18 5:06 ` Yinghai Lu
2009-02-18 5:10 ` Yinghai Lu
2009-02-18 4:40 ` [PATCH] pci: enable MSI on 8132 Yinghai Lu
2009-02-18 12:21 ` Matthew Wilcox
2009-02-18 12:27 ` david
2009-02-18 18:04 ` Andrew Morton
2009-02-18 18:18 ` david
2009-02-18 18:32 ` Greg KH
2009-02-18 18:38 ` James Bottomley
2009-02-18 18:40 ` david
2009-02-18 19:08 ` Yinghai Lu
2009-02-18 19:14 ` James Bottomley
2009-02-18 19:25 ` Yinghai Lu
2009-02-18 20:12 ` Jeff Garzik
2009-02-18 20:18 ` James Bottomley
2009-02-18 19:15 ` Andrew Morton
2009-02-18 19:29 ` Yinghai Lu
2009-02-18 19:33 ` James Bottomley
2009-02-19 4:21 ` Prakash, Sathya
2009-02-18 19:00 ` Jesse Barnes
2009-02-19 3:39 ` Robert Hancock
2009-02-21 7:50 ` Eric W. Biederman
2009-02-21 8:31 ` Yinghai Lu
2009-02-21 8:58 ` Eric W. Biederman
2009-02-21 10:23 ` Yinghai Lu
2009-02-21 18:59 ` Robert Hancock
2009-02-22 12:08 ` Prakash Punnoor
2009-02-22 12:54 ` Eric W. Biederman
2009-02-22 15:17 ` Prakash Punnoor
2009-02-22 21:45 ` Yinghai Lu
2009-02-22 22:07 ` Yinghai Lu
2009-02-23 6:18 ` Yinghai Lu
2009-02-23 18:21 ` Prakash Punnoor
2009-02-23 18:50 ` Yinghai Lu
2009-02-23 19:01 ` Prakash Punnoor
2009-02-23 19:51 ` [PATCH] pci: don't enable too many HT MSI mapping Yinghai Lu
2009-02-24 17:37 ` Jesse Barnes
2009-02-27 6:52 ` Prakash Punnoor
2009-02-27 20:59 ` Yinghai Lu
2009-02-28 8:25 ` Prakash Punnoor [this message]
2009-02-28 20:57 ` Yinghai Lu
2009-02-28 22:43 ` Yinghai Lu
2009-03-01 7:50 ` Prakash Punnoor
2009-03-01 7:58 ` Prakash Punnoor
2009-03-01 8:12 ` Yinghai Lu
2009-03-01 8:29 ` Prakash Punnoor
2009-03-04 7:15 ` Prakash Punnoor
2009-03-04 8:21 ` Yinghai Lu
2009-03-05 17:01 ` Matthew Wilcox
2009-03-05 17:15 ` Matthew Wilcox
2009-03-05 23:26 ` Yinghai Lu
2009-03-05 23:45 ` Prakash Punnoor
2009-03-06 1:10 ` Matthew Wilcox
2009-03-06 4:15 ` Yinghai Lu
2009-03-06 9:10 ` Prakash Punnoor
2009-03-21 2:29 ` [PATCH] pci: don't enable too much HT MSI mapping -v5 -resend Yinghai Lu
2009-03-26 23:10 ` Jesse Barnes
2009-03-28 12:34 ` Prakash Punnoor
2009-03-28 13:31 ` Prakash Punnoor
2009-03-28 20:18 ` Yinghai Lu
2009-03-28 22:11 ` Prakash Punnoor
2009-03-28 20:52 ` Yinghai Lu
2009-03-28 22:16 ` Prakash Punnoor
2009-03-28 23:15 ` Yinghai Lu
2009-03-29 1:33 ` Yinghai Lu
2009-03-29 9:15 ` Prakash Punnoor
2009-03-29 9:32 ` Yinghai Lu
2009-03-29 12:50 ` Prakash Punnoor
2009-03-29 19:27 ` Yinghai Lu
2009-03-29 19:30 ` [PATCH] pci: don't enable too much HT MSI mapping -v6 Yinghai Lu
2009-03-30 19:17 ` Jesse Barnes
2009-02-22 23:42 ` [PATCH] pci: enable MSI on 8132 Matthew Wilcox
2009-02-22 3:42 ` Grant Grundler
2009-02-18 3:12 ` mpt fusion broken sometime since 2.6.24 david
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=200902280925.56450.prakash@punnoor.de \
--to=prakash@punnoor.de \
--cc=akpm@linux-foundation.org \
--cc=david@lang.hm \
--cc=ebiederm@xmission.com \
--cc=hancockrwd@gmail.com \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=mingo@elte.hu \
--cc=yinghai@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®