View previous topic :: View next topic |
Author |
Message |
PrakashP Veteran
Joined: 27 Oct 2003 Posts: 1249 Location: C.C.A.A., Germania
|
Posted: Fri Dec 16, 2011 4:10 pm Post subject: [PATCH] Enabling (more) MSI usage for AMD SB700 |
|
|
I poked around with my chipset, so that more devices can use MSI und thus I don't have shared interrupts anymore:
Code: |
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 121 0 1 0 IO-APIC-edge timer
1: 0 0 2 0 IO-APIC-edge i8042
8: 0 0 1 0 IO-APIC-edge rtc0
9: 0 0 0 0 IO-APIC-fasteoi acpi
12: 0 0 4 0 IO-APIC-edge i8042
18: 0 1 1728 7 IO-APIC-fasteoi radeon
43: 4 4 22211 37 PCI-MSI-edge ahci
44: 0 0 587 2 PCI-MSI-edge pata_atiixp
45: 0 0 31 0 PCI-MSI-edge eth0
46: 0 0 0 0 PCI-MSI-edge eth1
47: 0 0 0 0 PCI-MSI-edge ehci_hcd:usb1
48: 0 0 195 1 PCI-MSI-edge ehci_hcd:usb2
49: 0 0 0 0 PCI-MSI-edge ohci_hcd:usb3
50: 0 0 0 0 PCI-MSI-edge ohci_hcd:usb4
51: 0 0 462 3 PCI-MSI-edge ohci_hcd:usb5
52: 0 0 0 0 PCI-MSI-edge ohci_hcd:usb6
53: 0 0 487 0 PCI-MSI-edge snd_hda_intel
NMI: 0 0 0 0 Non-maskable interrupts
LOC: 502 16819 36710 21430 Local timer interrupts
SPU: 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 Performance monitoring interrupts
IWI: 0 0 0 0 IRQ work interrupts
RES: 18444 18765 15323 18871 Rescheduling interrupts
CAL: 123 156 69 153 Function call interrupts
TLB: 784 638 588 800 TLB shootdowns
ERR: 0
MIS: 0
|
This is the patch against Linux 3.12.5, but it should work with older kernels also. Don't forget to add snd-hda-intel.enable_msi=1 to your kernel command line to let the intel HD Audio driver use MSI.
Code: |
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index 04ee1e2..49bf4f8 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -497,6 +497,8 @@ void force_hpet_resume(void)
}
}
+/* XXX: should add EPP/ECP parport as well.. */
+#if defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE)
/*
* HPET MSI on some boards (ATI SB700/SB800) has side effect on
* floppy DMA. Disable HPET MSI on such platforms.
@@ -511,6 +513,7 @@ static void force_disable_hpet_msi(struct pci_dev *unused)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
force_disable_hpet_msi);
+#endif
#endif
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c
index 24e5105..cc222a7 100644
--- a/drivers/ata/pata_atiixp.c
+++ b/drivers/ata/pata_atiixp.c
@@ -278,7 +278,15 @@ static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
.port_ops = &atiixp_port_ops
};
const struct ata_port_info *ppi[] = { &info, &info };
-
+ u8 tmp8, mask;
+
+ pci_read_config_byte(pdev, PCI_CLASS_PROG, &tmp8);
+ mask = (1 << 2) | (1 << 0);
+
+ /* Both channels in native mode? */
+ if ((tmp8 & mask) == mask)
+ pci_enable_msi(pdev);
+
return ata_pci_bmdma_init_one(pdev, ppi, &atiixp_sht, NULL,
ATA_HOST_PARALLEL_SCAN);
}
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index f6c31fa..e98a885 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2581,16 +2581,44 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5715S,
quirk_msi_intx_disable_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
- quirk_msi_intx_disable_ati_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
- quirk_msi_intx_disable_ati_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
- quirk_msi_intx_disable_ati_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
- quirk_msi_intx_disable_ati_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
- quirk_msi_intx_disable_ati_bug);
+/* Enable MSI capability on SB7x0 SATA */
+static void quirk_amd_sb700_sata_enable_msi_capability(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x34, &tmp);
+
+ /* Is D3 enabled or MSI disabled? */
+ if (tmp != 0x50) {
+ pci_read_config_byte(dev, 0x40, &tmp);
+ pci_write_config_byte(dev, 0x40, tmp|1);
+
+ /* Set next pointer to MSI cap ignoring power management cap, see RPR 7.11 */
+ pci_write_config_byte(dev, 0x34, 0x50);
+
+ pci_write_config_byte(dev, 0x40, tmp);
+ dev_info(&dev->dev, "Enabled SATA MSI capability and disabled D3 power management capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4390, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4390, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390, quirk_msi_intx_disable_ati_bug);
+
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4391, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4391, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391, quirk_msi_intx_disable_ati_bug);
+
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4392, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4392, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392, quirk_msi_intx_disable_ati_bug);
+
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4393, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4393, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393, quirk_msi_intx_disable_ati_bug);
+
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4394, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4394, quirk_amd_sb700_sata_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394, quirk_msi_intx_disable_ati_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373,
quirk_msi_intx_disable_bug);
@@ -2599,6 +2627,99 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4374,
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4375,
quirk_msi_intx_disable_bug);
+/* Enable MSI capability on SB7x0 PCIB */
+static void quirk_amd_sb700_pcib_enable_msi_capability(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x40, &tmp);
+
+ /* Is MSI disabled ? */
+ if ((tmp & (1 << 3)) == 0) {
+ pci_write_config_byte(dev, 0x40, tmp | (1 << 3));
+ dev_info(&dev->dev, "Enabled PCIB MSI capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4384, quirk_amd_sb700_pcib_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4384, quirk_amd_sb700_pcib_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4384, quirk_msi_intx_disable_ati_bug);
+
+/* Enable MSI capability on SB7x0 Azalia */
+static void quirk_amd_sb700_azalia_enable_msi_capability(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x45, &tmp);
+
+ /* Is MSI disabled ? */
+ if ((tmp & 1) == 0) {
+ pci_write_config_byte(dev, 0x45, tmp | 1);
+ dev_info(&dev->dev, "Enabled Azalia MSI capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4383, quirk_amd_sb700_azalia_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4383, quirk_amd_sb700_azalia_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4383, quirk_msi_intx_disable_ati_bug);
+
+/* Enable MSI capability on SB7x0 OHCI */
+static void quirk_amd_sb700_ohci_enable_msi_capability(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x41, &tmp);
+
+ /* Is MSI disabled ? */
+ if ((tmp & 3) != 0) {
+ pci_write_config_byte(dev, 0x41, tmp & ~3);
+ dev_info(&dev->dev, "Enabled OHCI0/1 MSI capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4397, quirk_amd_sb700_ohci_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4397, quirk_amd_sb700_ohci_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4397, quirk_msi_intx_disable_ati_bug);
+
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4398, quirk_amd_sb700_ohci_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4398, quirk_amd_sb700_ohci_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4398, quirk_msi_intx_disable_ati_bug);
+
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4399, quirk_amd_sb700_ohci_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4399, quirk_amd_sb700_ohci_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4399, quirk_msi_intx_disable_ati_bug);
+
+/* Enable MSI capability on SB7x0 EHCI */
+static void quirk_amd_sb700_ehci_enable_msi_capability(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x50, &tmp);
+
+ /* Is MSI disabled ? */
+ if ((tmp & (1 << 6)) != 0) {
+ pci_write_config_byte(dev, 0x50, tmp & ~(1 << 6));
+ dev_info(&dev->dev, "Enabled EHCI MSI capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4396, quirk_amd_sb700_ehci_enable_msi_capability);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4396, quirk_amd_sb700_ehci_enable_msi_capability);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4396, quirk_msi_intx_disable_ati_bug);
+
+static void quirk_amd_ide_native_mode(struct pci_dev *pdev)
+{
+ /* set SBX00/Hudson-2 IDE to native mode */
+ const u8 mask = 1 | (1 << 2);
+ u8 tmp;
+
+ pci_read_config_byte(pdev, 0x9, &tmp);
+ if ((tmp & mask) != mask) {
+ pci_write_config_byte(pdev, 0x9, tmp | mask);
+ dev_info(&pdev->dev, "set both IDE channels to native mode\n");
+ }
+}
+
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x439c, quirk_amd_ide_native_mode);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x439c, quirk_amd_ide_native_mode);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x439c, quirk_msi_intx_disable_ati_bug);
+
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1062,
quirk_msi_intx_disable_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1063,
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 6bd299e..e12e800 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -352,12 +352,19 @@ static const struct pci_device_id pci_ids [] = { {
};
MODULE_DEVICE_TABLE(pci, pci_ids);
+static int ehci_hcd_pci_probe(struct pci_dev *dev,
+ const struct pci_device_id *id)
+{
+ pci_enable_msi(dev);
+ return usb_hcd_pci_probe(dev, id);
+}
+
/* pci driver glue; this is a "new style" PCI driver module */
static struct pci_driver ehci_pci_driver = {
.name = (char *) hcd_name,
.id_table = pci_ids,
- .probe = usb_hcd_pci_probe,
+ .probe = ehci_hcd_pci_probe,
.remove = usb_hcd_pci_remove,
.shutdown = usb_hcd_pci_shutdown,
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
index ec337c2..82117cb 100644
--- a/drivers/usb/host/ohci-pci.c
+++ b/drivers/usb/host/ohci-pci.c
@@ -28,6 +28,12 @@
static const char hcd_name[] = "ohci-pci";
+static int ohci_hcd_pci_probe(struct pci_dev *dev,
+ const struct pci_device_id *id)
+{
+ pci_enable_msi(dev);
+ return usb_hcd_pci_probe(dev, id);
+}
/*-------------------------------------------------------------------------*/
@@ -285,7 +291,7 @@ static struct pci_driver ohci_pci_driver = {
.name = (char *) hcd_name,
.id_table = pci_ids,
- .probe = usb_hcd_pci_probe,
+ .probe = ohci_hcd_pci_probe,
.remove = usb_hcd_pci_remove,
.shutdown = usb_hcd_pci_shutdown,
|
The part in the usb subsystem is inspired a patch posted by Clemens Ladisch in the lkml. I simplified it by enabling MSI unconditionally and added the AMD SB700 specific bits which I extracted from the data sheets. My BIOS disables most of the MSI capabilities, so I have to go this route. I haven't tests supsend, though. So if anybody wants to try, let me know how it goes. The patch enabled MSI capabilities, for USB OHCI, USB EHCI, Azalia (Intel HD Audio) and the PCI Bridge. I didn't test the latter, but everything else just works nicely for me. I have a older revision of SB 700 - I think A12 revision. If you have a different but similar AMD SBxxx chipset, I could try to add some more quirks to enable MSI on it. I need an output of lspci -nnv, though. I would be interested to know how this patch works for others. Cheers!
(Update) Warning, the following patch for not disabling MSI for HPET shouldn't be used if you have DMA enabled devices on the LPC bus (eg. floppy drive, maybe also flashrom fro reading/writing to SPI flash rom?) due to a chipset bug. For me it seems to work nicely, but I didn't test flash rom and I don't have a floppy attached. You'll get another line in /proc/interrups:
Code: |
40: 64775 0 0 0 HPET_MSI-edge hpet2
|
If it doesn't show up, you either haven't enabled HPET in the kernel or MSI for HPET is disabled via chipset bits. I can create an additional patch to enable those, if necessary.
The patch: (Update) Removed and incorporated into main patch
(Update 2) Modified the patch to a) switch the IDE controller to native mode and B) let it use MSI, as well. (I should note that simply switching IDE controller from legacy mode to native mode at this stage will only reliably work when using MSI, as my bios doesn't properly assign an IRQ for it. So it won't work in PIC mode unless the IRQ line register is properly set up - as far as I understood. It worked in APIC mode though, as Linux seems to correctly choose the proper irq, even though at least the mp table didn't contain routing infos for it. I didn't understand the acpi dump though...)
(Update 3) Includes roarinelk's changes (thx!) and SATA bits.
(Update 4) Patch against Linux 3.12.5.
Last edited by PrakashP on Fri Dec 13, 2013 10:12 pm; edited 6 times in total |
|
Back to top |
|
|
asturm Developer
Joined: 05 Apr 2007 Posts: 9280
|
Posted: Fri Dec 16, 2011 5:12 pm Post subject: |
|
|
That's finally a good reason to start my AMD system again. I think it should have the SB750 on it. |
|
Back to top |
|
|
zbiggy n00b
Joined: 26 Dec 2011 Posts: 6 Location: Europe/Poland/Pultusk
|
Posted: Mon Dec 26, 2011 6:29 pm Post subject: |
|
|
Great job PrakashP,
if I will have AMD chipset mainboard I will use your patch. Why you do not use MSI for radeon?
Now I have nForce 720/Geforce8200 chipset and apic/acpi is putting everything on interrupts 20-23. ohci is hanging after few minutes of use - I had to turn off apic and it works now. I was able to offload ahci, hd audio and eth0 to msi so my system is more stable and looks to be faster. Unfortunately I was not able to move nvidia binary blob to MSI using nvidia NVreg_EnableMSI=1 parameter. It hangs after few minutes of using. However this happens on my integrated Geforce 8200. People using discrete Geforces are fine.
I was unable to turn on MSI for this devices:
Code: |
00:10.0 PCI bridge [0604]: nVidia Corporation MCP78S [GeForce 8200] PCI Express Bridge [10de:0778] (rev a1) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
Prefetchable memory behind bridge: 00000000fbd00000-00000000fbdfffff
Capabilities: [40] Subsystem: ASRock Incorporation K10N78FullHD-hSLI R3.0 PCI Express Bridge [1849:0778]
Capabilities: [48] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/2 Maskable- 64bit+
Capabilities: [60] HyperTransport: MSI Mapping Enable+ Fixed-
Capabilities: [80] Express Root Port (Slot+), MSI 00
Kernel driver in use: pcieport
00:12.0 PCI bridge [0604]: nVidia Corporation MCP78S [GeForce 8200] PCI Express Bridge [10de:075b] (rev a1) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
Prefetchable memory behind bridge: 00000000fbe00000-00000000fbefffff
Capabilities: [40] Subsystem: ASRock Incorporation K10N78FullHD-hSLI R3.0 PCI Express Bridge [1849:075b]
Capabilities: [48] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/2 Maskable- 64bit+
Capabilities: [60] HyperTransport: MSI Mapping Enable+ Fixed-
Capabilities: [80] Express Root Port (Slot+), MSI 00
Kernel driver in use: pcieport
0:13.0 PCI bridge [0604]: nVidia Corporation MCP78S [GeForce 8200] PCI Bridge [10de:077a] (rev a1) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=05, subordinate=05, sec-latency=0
Prefetchable memory behind bridge: 00000000fbf00000-00000000fbffffff
Capabilities: [40] Subsystem: ASRock Incorporation K10N78FullHD-hSLI R3.0 PCI Bridge [1849:077a]
Capabilities: [48] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/2 Maskable- 64bit+
Capabilities: [60] HyperTransport: MSI Mapping Enable+ Fixed-
Capabilities: [80] Express Root Port (Slot+), MSI 00
Kernel driver in use: pcieport
|
I use linux 3.2-rc7 from kernel.org and pcieport driver code is in /usr/src/linux-3.2-rc7/drivers/pci/pcie directory.
It has implemented MSI code but do not know why it is disabled for these controllers. I could not find any code which disables msi for my chipset so it may be doing this indirectly somehow in generic way. I'm wondering if it will be possible to turn on msi for these pci(e) bridges maybe my nvidia binary blob will work stable with msi on if bridges will have msi on.
I also enabled MSI on my Intel Atom netbook - NM10 chipset. It works great and rock solid for: i915 GPU, ahci, eth0 (Marvell Yukon), HD audio. Only Broadcom BCM4313 wifi is not - it reports MSI but driver has no MSI. It is binary blob but will try to implement MSI. What a pity uhci/ehci can not be moved to msi - intel chipset specs do not say about msi on usb so hardware is not ready. USB occupies many interrupts - too many - I have interrupt sharing because of this . |
|
Back to top |
|
|
PrakashP Veteran
Joined: 27 Oct 2003 Posts: 1249 Location: C.C.A.A., Germania
|
Posted: Tue Dec 27, 2011 9:10 am Post subject: |
|
|
zbiggy wrote: | Why you do not use MSI for radeon? |
I tried, but it won't work. It seems BIOS forgets to initialize some things. There actually is a linux quirk which specifically disables MSI on the associated brigde because of this issue.
Quote: |
Now I have nForce 720/Geforce8200 chipset and apic/acpi is putting everything on interrupts 20-23. ohci is hanging after few minutes of use - I had to turn off apic and it works now.
|
Have you checked whether the timer override quirk is activated for your board? I had some troubles on my old C51/MCP51 board, as well and disabling the quirk made it stable under APIC. If you have a HPET enabled the quirk also shouldn't be activated. If you search on lkml you might find my posts about this problem - if it is the same you are experiencing... But maybe your USB needs some other quirk. Have you checked ehci-pci.c and ohci-pci.c and checked for quirks to enabled/disable? I remember seeing some Nvidia specific stuff, also.
BTW, I tried enabling MSI on sata_nv on the old MCP51 motherboard and it still won't work properly. Halfway through init the controller starts making troubles.
Quote: |
I was unable to turn on MSI for this devices:
|
These are brigde devices. So I don't know whether it actually makes sense there, except HT MSI. That's why I am not sure whether my patch of enabling MSI on the PCIB makes sense, also...
I am happy to have an AMD chipset with some public datasheets available - unlike the Nvidia stuff. I am actually also working on getting coreboot running on my mobo. So far I am a bit scared, though I have some backup bios chips... |
|
Back to top |
|
|
roarinelk Guru
Joined: 04 Mar 2004 Posts: 520
|
Posted: Tue Jan 24, 2012 7:41 am Post subject: |
|
|
Hello,
Here's an updated patch against 3.3-rc1. I reimplemented the OHCI/EHCI MSI enable code
since the old one was interfering with the XHCI controllers' MSI-X.
It boots and runs on my SB850.
Code: |
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index 03920a1..fd171ed 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -493,6 +493,8 @@ void force_hpet_resume(void)
}
}
+/* XXX: should add EPP/ECP parport as well.. */
+#if defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE)
/*
* HPET MSI on some boards (ATI SB700/SB800) has side effect on
* floppy DMA. Disable HPET MSI on such platforms.
@@ -507,6 +509,7 @@ static void force_disable_hpet_msi(struct pci_dev *unused)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
force_disable_hpet_msi);
+#endif
#endif
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c
index be1aa14..5b6c6a7 100644
--- a/drivers/ata/pata_atiixp.c
+++ b/drivers/ata/pata_atiixp.c
@@ -262,6 +262,12 @@ static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
.port_ops = &atiixp_port_ops
};
const struct ata_port_info *ppi[] = { &info, &info };
+ u8 tmp;
+
+ /* enable MSI if both channels are in native mode */
+ pci_config_read_byte(pdev, PCI_CLASS_PROG, &tmp);
+ if ((tmp & 0x5) == 0x5)
+ pci_enable_msi(pdev);
return ata_pci_bmdma_init_one(pdev, ppi, &atiixp_sht, NULL,
ATA_HOST_PARALLEL_SCAN);
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 6476547..351b252 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2665,6 +2665,119 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4374,
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4375,
quirk_msi_intx_disable_bug);
+/* Enable MSI capability on SB7x0 PCIB */
+static void __devinit quirk_amd_sb700_pcib_enable_msi_cap(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x40, &tmp);
+
+ /* Is MSI disabled ? */
+ if ((tmp & (1 << 3)) == 0) {
+ pci_write_config_byte(dev, 0x40, tmp | (1 << 3));
+ dev_info(&dev->dev, "Enabled PCIB MSI capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4384,
+ quirk_amd_sb700_pcib_enable_msi_cap);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4384,
+ quirk_amd_sb700_pcib_enable_msi_cap);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4384,
+ quirk_msi_intx_disable_ati_bug);
+
+/* Enable MSI capability on SB7x0 Azalia */
+static void __devinit quirk_amd_sb700_azalia_enable_msi_cap(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x45, &tmp);
+
+ /* Is MSI disabled ? */
+ if ((tmp & 1) == 0) {
+ pci_write_config_byte(dev, 0x45, tmp | 1);
+ dev_info(&dev->dev, "Enabled Azalia MSI capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4383,
+ quirk_amd_sb700_azalia_enable_msi_cap);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4383,
+ quirk_amd_sb700_azalia_enable_msi_cap);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4383,
+ quirk_msi_intx_disable_ati_bug);
+
+/* Enable MSI capability on SB7x0 OHCI */
+static void __devinit quirk_amd_sb700_ohci_enable_msi_cap(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x41, &tmp);
+
+ /* Is MSI disabled ? */
+ if ((tmp & 3) != 0) {
+ pci_write_config_byte(dev, 0x41, tmp & ~3);
+ dev_info(&dev->dev, "Enabled OHCI0/1 MSI capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4397,
+ quirk_amd_sb700_ohci_enable_msi_cap);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4397,
+ quirk_amd_sb700_ohci_enable_msi_cap);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4397,
+ quirk_msi_intx_disable_ati_bug);
+
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4398,
+ quirk_amd_sb700_ohci_enable_msi_cap);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4398,
+ quirk_amd_sb700_ohci_enable_msi_cap);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4398,
+ quirk_msi_intx_disable_ati_bug);
+
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4399,
+ quirk_amd_sb700_ohci_enable_msi_cap);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4399,
+ quirk_amd_sb700_ohci_enable_msi_cap);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4399,
+ quirk_msi_intx_disable_ati_bug);
+
+/* Enable MSI capability on SB7x0 EHCI */
+static void __devinit quirk_amd_sb700_ehci_enable_msi_cap(struct pci_dev *dev)
+{
+ u8 tmp;
+
+ pci_read_config_byte(dev, 0x50, &tmp);
+
+ /* Is MSI disabled ? */
+ if ((tmp & (1 << 6)) != 0) {
+ pci_write_config_byte(dev, 0x50, tmp & ~(1 << 6));
+ dev_info(&dev->dev, "Enabled EHCI MSI capability\n");
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4396,
+ quirk_amd_sb700_ehci_enable_msi_cap);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x4396,
+ quirk_amd_sb700_ehci_enable_msi_cap);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4396,
+ quirk_msi_intx_disable_ati_bug);
+
+static void __devinit quirk_amd_ide_native_mode(struct pci_dev *pdev)
+{
+ /* set SBX00/Hudson-2 IDE to native mode */
+ const u8 mask = 1 | (1 << 2);
+ u8 tmp;
+
+ pci_read_config_byte(pdev, 0x9, &tmp);
+ if ((tmp & mask) != mask) {
+ pci_write_config_byte(pdev, 0x9, tmp | mask);
+ dev_info(&pdev->dev, "set both IDE channels to native mode\n");
+ }
+}
+
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x439c, quirk_amd_ide_native_mode);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, 0x439c,
+ quirk_amd_ide_native_mode);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x439c,
+ quirk_msi_intx_disable_ati_bug);
+
#endif /* CONFIG_PCI_MSI */
/* Allow manual resource allocation for PCI hotplug bridges
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index f4b627d..5d8cfd8 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -465,6 +465,13 @@ static int ehci_update_device(struct usb_hcd *hcd, struct usb_device *udev)
return rc;
}
+static int ehci_hcd_pci_probe(struct pci_dev *dev,
+ const struct pci_device_id *id)
+{
+ pci_enable_msi(dev);
+ return usb_hcd_pci_probe(dev, id);
+}
+
static const struct hc_driver ehci_pci_hc_driver = {
.description = hcd_name,
.product_desc = "EHCI Host Controller",
@@ -536,7 +543,7 @@ static struct pci_driver ehci_pci_driver = {
.name = (char *) hcd_name,
.id_table = pci_ids,
- .probe = usb_hcd_pci_probe,
+ .probe = ehci_hcd_pci_probe,
.remove = usb_hcd_pci_remove,
.shutdown = usb_hcd_pci_shutdown,
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
index 6109810..985348b 100644
--- a/drivers/usb/host/ohci-pci.c
+++ b/drivers/usb/host/ohci-pci.c
@@ -339,6 +339,12 @@ static int ohci_pci_resume(struct usb_hcd *hcd, bool hibernated)
#endif /* CONFIG_PM */
+static int ohci_hcd_pci_probe(struct pci_dev *dev,
+ const struct pci_device_id *id)
+{
+ pci_enable_msi(dev);
+ return usb_hcd_pci_probe(dev, id);
+}
/*-------------------------------------------------------------------------*/
@@ -406,7 +412,7 @@ static struct pci_driver ohci_pci_driver = {
.name = (char *) hcd_name,
.id_table = pci_ids,
- .probe = usb_hcd_pci_probe,
+ .probe = ohci_hcd_pci_probe,
.remove = usb_hcd_pci_remove,
.shutdown = usb_hcd_pci_shutdown,
|
|
|
Back to top |
|
|
DaggyStyle Watchman
Joined: 22 Mar 2006 Posts: 5929
|
Posted: Tue Jan 24, 2012 9:21 am Post subject: |
|
|
if this indeed introduces gains, why not submitting it to the kernel mailing list? _________________ Only two things are infinite, the universe and human stupidity and I'm not sure about the former - Albert Einstein |
|
Back to top |
|
|
roarinelk Guru
Joined: 04 Mar 2004 Posts: 520
|
Posted: Tue Jan 24, 2012 12:42 pm Post subject: |
|
|
There are no real gains as far as I can see. Yes it's easier to direct an MSI interrupt
to a certain CPU when the line isn't shared, but who does that anyway?
MSI support is usually disabled because it is more or less untested and buggy
(I've already had ALSA complain about non-responding audio hardware).
Consider the patch a proof-of-concept that MSI on SB700/800 southbridges
works but that it is disabled usually for a reason. |
|
Back to top |
|
|
PrakashP Veteran
Joined: 27 Oct 2003 Posts: 1249 Location: C.C.A.A., Germania
|
Posted: Tue Jan 24, 2012 3:57 pm Post subject: |
|
|
@roarinelk
Nice, I will try your changes to the usb stack. Out of curiosity, could you post your /proc/interrupts and lspci -nnv?
What is the problem with xhci? Doesn't is work using MSI? Might it need quirk_msi_intx_disable_ati_bug quirk?
@DaggyStyle
Some parts of the patch are obviously hackish, so won't get accepted. The kernel maintainers also don't want the hassle with introducing MSI support in the ohci and ehci drivers. The reason bios disables most of the MSI stuff is due to AMD advising so - if you look into the datasheets. Usually they don't give a reason why, though. I guess it is because of the needed quirks that the legacy interrupt pin must not be disabled when using MSI, as then the AMD chipsets (at least older ones like mine) won't give any interrupts anymore. So for every device on the affected AMD chipsets you need to set the quirk_msi_intx_disable_ati_bug quirk. I doubt kernel maintainers would like it done this way. So I guess the only part of the patch which might have to chances to get included is the Azalia/Intel HDA part, as it is least hackish. (To be honest it is not documented in the public SB700 datasheet, but in the Sb800 one, so I tried my luck. ) If I can make sure, it works for different SBx00 versions, I might try to submit that part. |
|
Back to top |
|
|
roarinelk Guru
Joined: 04 Mar 2004 Posts: 520
|
Posted: Tue Jan 24, 2012 5:23 pm Post subject: |
|
|
xhci calls usb_add_hcd() for its ehci companion, _after_ it has enabled MSI-X for itself.
Placing pci_enable_msi() in usb_hcd_pci_probe() screws up xhci int handling; the ehci is part
of the xhcis register space which means it has the same struct pci_dev.
in the list below, xhci is bus2, its ehci companion is bus1. the ati controllers are 3-9.
Code: | CPU0 CPU1 CPU2 CPU3 CPU4 CPU5
0: 319 295 21591812 9137 912525 1615 IO-APIC-edge timer
1: 0 0 2 0 0 0 IO-APIC-edge i8042
8: 0 0 80 0 0 0 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 IO-APIC-fasteoi acpi
17: 0 0 189642 141 5394 4 IO-APIC-fasteoi ahci, pata_jmicron
20: 0 0 19 0 0 0 IO-APIC-fasteoi saa7146 (0)
22: 0 0 554 1 3 0 IO-APIC-fasteoi firewire_ohci
43: 0 2 378012 59 2905 2 PCI-MSI-edge ahci
44: 1 1 1795738 187 8012 14 PCI-MSI-edge eth0
45: 0 0 247686 54 2930 2 PCI-MSI-edge snd_hda_intel
46: 0 0 1 0 0 0 PCI-MSI-edge xhci_hcd
47: 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
48: 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
49: 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
50: 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
51: 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
52: 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
53: 0 0 1753 1 25 0 PCI-MSI-edge ehci_hcd:usb3
54: 0 0 209 0 5 0 PCI-MSI-edge ehci_hcd:usb4
55: 0 3 1077030 447 24533 18 PCI-MSI-edge ehci_hcd:usb5
56: 0 0 214641 42 2934 2 PCI-MSI-edge ohci_hcd:usb6
57: 0 0 0 0 0 0 PCI-MSI-edge ohci_hcd:usb7
58: 0 0 0 0 0 0 PCI-MSI-edge ohci_hcd:usb8
59: 0 0 0 0 0 0 PCI-MSI-edge ohci_hcd:usb9
60: 0 0 3247203 477 32089 8 PCI-MSI-edge nvidia
NMI: 0 0 0 0 0 0 Non-maskable interrupts
LOC: 6508140 5930579 4065232 8386922 4659750 4626132 Local timer interrupts
SPU: 0 0 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 0 0 Performance monitoring interrupts
IWI: 0 0 0 0 0 0 IRQ work interrupts
RTR: 0 0 0 0 0 0 APIC ICR read retries
RES: 6195247 3605424 2777191 3381714 2990018 2759982 Rescheduling interrupts
CAL: 27546 26448 18016 23816 22971 22815 Function call interrupts
TLB: 44923 46784 105299 57067 51079 49952 TLB shootdowns
THR: 0 0 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 0 0 Machine check exceptions
MCP: 119 119 119 119 119 119 Machine check polls
ERR: 0
MIS: 0 |
http://pastebin.com/7PucSntw |
|
Back to top |
|
|
DaggyStyle Watchman
Joined: 22 Mar 2006 Posts: 5929
|
Posted: Tue Jan 24, 2012 7:51 pm Post subject: |
|
|
PrakashP wrote: | @roarinelk
Nice, I will try your changes to the usb stack. Out of curiosity, could you post your /proc/interrupts and lspci -nnv?
What is the problem with xhci? Doesn't is work using MSI? Might it need quirk_msi_intx_disable_ati_bug quirk?
@DaggyStyle
Some parts of the patch are obviously hackish, so won't get accepted. The kernel maintainers also don't want the hassle with introducing MSI support in the ohci and ehci drivers. The reason bios disables most of the MSI stuff is due to AMD advising so - if you look into the datasheets. Usually they don't give a reason why, though. I guess it is because of the needed quirks that the legacy interrupt pin must not be disabled when using MSI, as then the AMD chipsets (at least older ones like mine) won't give any interrupts anymore. So for every device on the affected AMD chipsets you need to set the quirk_msi_intx_disable_ati_bug quirk. I doubt kernel maintainers would like it done this way. So I guess the only part of the patch which might have to chances to get included is the Azalia/Intel HDA part, as it is least hackish. (To be honest it is not documented in the public SB700 datasheet, but in the Sb800 one, so I tried my luck. ) If I can make sure, it works for different SBx00 versions, I might try to submit that part. | ok, so why one should use this patch? _________________ Only two things are infinite, the universe and human stupidity and I'm not sure about the former - Albert Einstein |
|
Back to top |
|
|
PrakashP Veteran
Joined: 27 Oct 2003 Posts: 1249 Location: C.C.A.A., Germania
|
|
Back to top |
|
|
trubicoid Tux's lil' helper
Joined: 04 Aug 2009 Posts: 79
|
Posted: Tue Mar 13, 2012 1:59 pm Post subject: |
|
|
Did you tried some "benchmarks", like latency or CPU load?
I have two affected computers, so I'll try it. Now they don't use MSI a lot:
Code: | CPU0 CPU1
0: 2587087 24865819 IO-APIC-edge timer
1: 1 87 IO-APIC-edge i8042
8: 1 91 IO-APIC-edge rtc0
9: 81 1235 IO-APIC-fasteoi acpi
12: 196 19092 IO-APIC-edge i8042
16: 23602 335262 IO-APIC-fasteoi snd_hda_intel, ohci_hcd:usb3, ohci_hcd:usb4
17: 915847 132464247 IO-APIC-fasteoi ehci_hcd:usb1, ath9k
18: 5 41 IO-APIC-fasteoi ohci_hcd:usb5, ohci_hcd:usb6
19: 0 7 IO-APIC-fasteoi ehci_hcd:usb2
22: 50590 656866 IO-APIC-fasteoi ahci
23: 0 0 IO-APIC-edge lis3lv02d
45: 5891 153165 PCI-MSI-edge radeon
46: 34233 735408 PCI-MSI-edge eth0
47: 0 46 PCI-MSI-edge snd_hda_intel
NMI: 0 0 Non-maskable interrupts
LOC: 27030579 23692587 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
IWI: 0 0 IRQ work interrupts
RTR: 0 0 APIC ICR read retries
RES: 55526481 7291386 Rescheduling interrupts
CAL: 2351 780 Function call interrupts
TLB: 75888 98135 TLB shootdowns
THR: 0 0 Threshold APIC interrupts
MCE: 0 0 Machine check exceptions
MCP: 352 352 Machine check polls
ERR: 0
MIS: 0
|
Code: |
CPU0 CPU1 CPU2 CPU3
0: 6118 23170 191106 10381802 IO-APIC-edge timer
1: 0 0 0 4 IO-APIC-edge i8042
8: 0 0 0 97 IO-APIC-edge rtc0
9: 0 0 0 0 IO-APIC-fasteoi acpi
12: 0 0 0 7 IO-APIC-edge i8042
16: 4 36 21266 3873446 IO-APIC-fasteoi snd_hda_intel
17: 0 0 0 4 IO-APIC-fasteoi ehci_hcd:usb1, ehci_hcd:usb2, ehci_hcd:usb3
18: 0 0 17 4638 IO-APIC-fasteoi ohci_hcd:usb4, ohci_hcd:usb5, radeon, ohci_hcd:usb6, ohci_hcd:usb7
19: 0 15 3125 301508 IO-APIC-fasteoi ahci
40: 0 0 0 0 PCI-MSI-edge PCIe PME
41: 0 6 736 114602 PCI-MSI-edge eth0
NMI: 0 0 0 0 Non-maskable interrupts
LOC: 4381704 3815811 3116546 917008 Local timer interrupts
SPU: 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 Performance monitoring interrupts
IWI: 0 0 0 0 IRQ work interrupts
RTR: 0 0 0 0 APIC ICR read retries
RES: 2113733 1866339 1447414 1409566 Rescheduling interrupts
CAL: 266 340 341 159 Function call interrupts
TLB: 43156 54688 44527 31117 TLB shootdowns
THR: 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 Machine check exceptions
MCP: 278 278 278 278 Machine check polls
ERR: 0
MIS: 0
|
lspci -nnv
Code: | 00:00.0 Host bridge [0600]: Advanced Micro Devices [AMD] RS880 Host Bridge [1022:9601]
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 0
Capabilities: [c4] HyperTransport: Slave or Primary Interface
Capabilities: [54] HyperTransport: UnitID Clumping
Capabilities: [40] HyperTransport: Retry Mode
Capabilities: [9c] HyperTransport: #1a
Capabilities: [f8] HyperTransport: #1c
00:02.0 PCI bridge [0604]: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (ext gfx port 0) [1022:9603] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00007000-00007fff
Memory behind bridge: f2300000-f23fffff
Prefetchable memory behind bridge: 00000000e0000000-00000000efffffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Hewlett-Packard Company Device [103c:363a]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [110] Virtual Channel
Kernel driver in use: pcieport
00:04.0 PCI bridge [0604]: Advanced Micro Devices [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 0) [1022:9604] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=02, subordinate=07, sec-latency=0
I/O behind bridge: 00003000-00006fff
Memory behind bridge: f1300000-f22fffff
Prefetchable memory behind bridge: 00000000f0000000-00000000f0ffffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Hewlett-Packard Company Device [103c:363a]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [110] Virtual Channel
Kernel driver in use: pcieport
00:05.0 PCI bridge [0604]: Advanced Micro Devices [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 1) [1022:9605] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=08, subordinate=08, sec-latency=0
Memory behind bridge: f1200000-f12fffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Hewlett-Packard Company Device [103c:363a]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [110] Virtual Channel
Kernel driver in use: pcieport
00:06.0 PCI bridge [0604]: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (PCIE port 2) [1022:9606] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=09, subordinate=09, sec-latency=0
I/O behind bridge: 00002000-00002fff
Memory behind bridge: f2500000-f25fffff
Prefetchable memory behind bridge: 00000000f1000000-00000000f10fffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Hewlett-Packard Company Device [103c:363a]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [110] Virtual Channel
Kernel driver in use: pcieport
00:0a.0 PCI bridge [0604]: Advanced Micro Devices [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 5) [1022:9609] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=0a, subordinate=0a, sec-latency=0
Memory behind bridge: f1100000-f11fffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Hewlett-Packard Company Device [103c:363a]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [110] Virtual Channel
Kernel driver in use: pcieport
00:11.0 SATA controller [0106]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] [1002:4391] (prog-if 01 [AHCI 1.0])
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 22
I/O ports at 8038 [size=8]
I/O ports at 804c [size=4]
I/O ports at 8030 [size=8]
I/O ports at 8048 [size=4]
I/O ports at 8010 [size=16]
Memory at f2408000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [60] Power Management version 2
Capabilities: [70] SATA HBA v1.0
Kernel driver in use: ahci
00:12.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI])
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 16
Memory at f2407000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
Kernel modules: ohci-hcd
00:12.1 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0 USB OHCI1 Controller [1002:4398] (prog-if 10 [OHCI])
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 16
Memory at f2406000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
Kernel modules: ohci-hcd
00:12.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396] (prog-if 20 [EHCI])
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 17
Memory at f2408500 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Capabilities: [e4] Debug port: BAR=1 offset=00e0
Kernel driver in use: ehci_hcd
00:13.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI])
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18
Memory at f2405000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
Kernel modules: ohci-hcd
00:13.1 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0 USB OHCI1 Controller [1002:4398] (prog-if 10 [OHCI])
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18
Memory at f2404000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
Kernel modules: ohci-hcd
00:13.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396] (prog-if 20 [EHCI])
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 19
Memory at f2408400 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Capabilities: [e4] Debug port: BAR=1 offset=00e0
Kernel driver in use: ehci_hcd
00:14.0 SMBus [0c05]: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller [1002:4385] (rev 3c)
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: 66MHz, medium devsel
Capabilities: [b0] HyperTransport: MSI Mapping Enable- Fixed+
Kernel modules: i2c-piix4
00:14.2 Audio device [0403]: Advanced Micro Devices [AMD] nee ATI SBx00 Azalia (Intel HDA) [1002:4383]
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, slow devsel, latency 64, IRQ 16
Memory at f2400000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Kernel driver in use: snd_hda_intel
Kernel modules: snd-hda-intel
00:14.3 ISA bridge [0601]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller [1002:439d]
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, 66MHz, medium devsel, latency 0
00:14.4 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge [1002:4384] (prog-if 01 [Subtractive decode])
Flags: bus master, 66MHz, medium devsel, latency 64
Bus: primary=00, secondary=0b, subordinate=0b, sec-latency=64
00:18.0 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration [1022:1200]
Flags: fast devsel
Capabilities: [80] HyperTransport: Host or Secondary Interface
00:18.1 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Address Map [1022:1201]
Flags: fast devsel
00:18.2 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller [1022:1202]
Flags: fast devsel
00:18.3 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control [1022:1203]
Flags: fast devsel
Capabilities: [f0] Secure device <?>
Kernel driver in use: k10temp
Kernel modules: k10temp
00:18.4 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Link Control [1022:1204]
Flags: fast devsel
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI M96 [Mobility Radeon HD 4650] [1002:9480] (prog-if 00 [VGA controller])
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, fast devsel, latency 0, IRQ 45
Memory at e0000000 (32-bit, prefetchable) [size=256M]
I/O ports at 7000 [size=256]
Memory at f2300000 (32-bit, non-prefetchable) [size=64K]
Expansion ROM at f2320000 [disabled] [size=128K]
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Legacy Endpoint, MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Kernel driver in use: radeon
01:00.1 Audio device [0403]: Advanced Micro Devices [AMD] nee ATI RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, fast devsel, latency 0, IRQ 47
Memory at f2310000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Legacy Endpoint, MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Kernel driver in use: snd_hda_intel
Kernel modules: snd-hda-intel
08:00.0 Network controller [0280]: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) [168c:002a] (rev 01)
Subsystem: Hewlett-Packard Company Device [103c:3042]
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at f1200000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 2
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [60] Express Legacy Endpoint, MSI 00
Capabilities: [90] MSI-X: Enable- Count=1 Masked-
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 00-00-00-00-00-00-00-00
Kernel driver in use: ath9k
Kernel modules: ath9k
09:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 03)
Subsystem: Hewlett-Packard Company Device [103c:363a]
Flags: bus master, fast devsel, latency 0, IRQ 46
I/O ports at 2000 [size=256]
Memory at f1004000 (64-bit, prefetchable) [size=4K]
Memory at f1000000 (64-bit, prefetchable) [size=16K]
Expansion ROM at f1010000 [disabled] [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [ac] MSI-X: Enable- Count=4 Masked-
Capabilities: [cc] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 00-00-00-00-00-00-00-00
Kernel driver in use: r8169
Kernel modules: r8169
|
Code: | 00:00.0 Host bridge [0600]: Advanced Micro Devices [AMD] RS880 Host Bridge [1022:9601]
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:843e]
Flags: bus master, 66MHz, medium devsel, latency 0
Capabilities: [c4] HyperTransport: Slave or Primary Interface
Capabilities: [54] HyperTransport: UnitID Clumping
Capabilities: [40] HyperTransport: Retry Mode
Capabilities: [9c] HyperTransport: #1a
Capabilities: [f8] HyperTransport: #1c
00:01.0 PCI bridge [0604]: ASUSTeK Computer Inc. RS880 PCI to PCI bridge (int gfx) [1043:9602] (prog-if 00 [Normal decode])
Flags: bus master, 66MHz, medium devsel, latency 64
Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
I/O behind bridge: 0000d000-0000dfff
Memory behind bridge: fea00000-febfffff
Prefetchable memory behind bridge: 00000000f0000000-00000000f7ffffff
Capabilities: [44] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [b0] Subsystem: ASUSTeK Computer Inc. Device [1043:843e]
00:0a.0 PCI bridge [0604]: Advanced Micro Devices [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 5) [1022:9609] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
I/O behind bridge: 0000e000-0000efff
Prefetchable memory behind bridge: 00000000fdf00000-00000000fdffffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: ASUSTeK Computer Inc. Device [1043:843e]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [110] Virtual Channel
Kernel driver in use: pcieport
00:11.0 SATA controller [0106]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] [1002:4391] (rev 40) (prog-if 01 [AHCI 1.0])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 19
I/O ports at c000 [size=8]
I/O ports at b000 [size=4]
I/O ports at a000 [size=8]
I/O ports at 9000 [size=4]
I/O ports at 8000 [size=16]
Memory at fe9ffc00 (32-bit, non-prefetchable) [size=1K]
Capabilities: [70] SATA HBA v1.0
Capabilities: [a4] PCI Advanced Features
Kernel driver in use: ahci
00:12.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18
Memory at fe9fe000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
Kernel modules: ohci-hcd
00:12.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396] (prog-if 20 [EHCI])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 17
Memory at fe9ff800 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Capabilities: [e4] Debug port: BAR=1 offset=00e0
Kernel driver in use: ehci_hcd
00:13.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18
Memory at fe9fd000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
Kernel modules: ohci-hcd
00:13.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396] (prog-if 20 [EHCI])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 17
Memory at fe9ff400 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Capabilities: [e4] Debug port: BAR=1 offset=00e0
Kernel driver in use: ehci_hcd
00:14.0 SMBus [0c05]: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller [1002:4385] (rev 42)
Flags: 66MHz, medium devsel
Kernel modules: i2c-piix4
00:14.2 Audio device [0403]: Advanced Micro Devices [AMD] nee ATI SBx00 Azalia (Intel HDA) [1002:4383] (rev 40)
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:841b]
Flags: bus master, slow devsel, latency 64, IRQ 16
Memory at fe9f4000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Kernel driver in use: snd_hda_intel
Kernel modules: snd-hda-intel
00:14.3 ISA bridge [0601]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller [1002:439d] (rev 40)
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 0
00:14.4 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge [1002:4384] (rev 40) (prog-if 01 [Subtractive decode])
Flags: bus master, 66MHz, medium devsel, latency 64
Bus: primary=00, secondary=03, subordinate=03, sec-latency=64
00:14.5 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI2 Controller [1002:4399] (prog-if 10 [OHCI])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18
Memory at fe9fc000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
Kernel modules: ohci-hcd
00:16.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18
Memory at fe9f3000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
Kernel modules: ohci-hcd
00:16.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396] (prog-if 20 [EHCI])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:8443]
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 17
Memory at fe9ff000 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Capabilities: [e4] Debug port: BAR=1 offset=00e0
Kernel driver in use: ehci_hcd
00:18.0 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration [1022:1200]
Flags: fast devsel
Capabilities: [80] HyperTransport: Host or Secondary Interface
00:18.1 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Address Map [1022:1201]
Flags: fast devsel
00:18.2 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller [1022:1202]
Flags: fast devsel
Kernel driver in use: amd64_edac
Kernel modules: amd64_edac_mod
00:18.3 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control [1022:1203]
Flags: fast devsel
Capabilities: [f0] Secure device <?>
Kernel driver in use: k10temp
Kernel modules: k10temp
00:18.4 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Link Control [1022:1204]
Flags: fast devsel
01:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RS880 [Radeon HD 4250] [1002:9715] (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. M5A88-V EVO [1043:843e]
Flags: bus master, fast devsel, latency 0, IRQ 18
Memory at f0000000 (32-bit, prefetchable) [size=128M]
I/O ports at d000 [size=256]
Memory at febe0000 (32-bit, non-prefetchable) [size=64K]
Memory at fea00000 (32-bit, non-prefetchable) [size=1M]
Expansion ROM at <unassigned> [disabled]
Capabilities: [50] Power Management version 3
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Kernel driver in use: radeon
Kernel modules: radeon
02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06)
Subsystem: ASUSTeK Computer Inc. P8P67 and other motherboards [1043:8432]
Flags: bus master, fast devsel, latency 0, IRQ 41
I/O ports at e800 [size=256]
Memory at fdfff000 (64-bit, prefetchable) [size=4K]
Memory at fdff8000 (64-bit, prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
Kernel driver in use: r8169
Kernel modules: r8169
|
|
|
Back to top |
|
|
PrakashP Veteran
Joined: 27 Oct 2003 Posts: 1249 Location: C.C.A.A., Germania
|
Posted: Wed Mar 14, 2012 6:38 pm Post subject: |
|
|
Nope, I didn't try to write any benchmarks. BTW, I suggest you try roarinelk's patch. It's more robust than mine. (Update) My version now includes roarinelk's changes.
I find it it interesting that both your AHCI controllers have MSI disabled. I remember there was some erratum with S3 or alike. Anyway, I can look up how to enable MSI on AHCI, as well.
Last edited by PrakashP on Sat Mar 17, 2012 7:29 am; edited 1 time in total |
|
Back to top |
|
|
potenzial n00b
Joined: 11 Oct 2004 Posts: 10 Location: Earth, Germany, Essen
|
Posted: Thu Mar 15, 2012 8:48 pm Post subject: |
|
|
PrakashP wrote: | Nope, I didn't try to write any benchmarks. BTW, I suggest you try roarinelk's patch. It's more robust than mine.
I find it it interesting that both your AHCI controllers have MSI disabled. I remember there was some erratum with S3 or alike. Anyway, I can look up how to enable MSI on AHCI, as well. |
That would be nice. I have exactly the same problem one of my AHCI controllers get no msi interrupt.
/proc/interrupts
Code: |
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 24 0 0 0 0 0 2 1 IO-APIC-edge timer
1: 526 539 538 529 533 524 522 574 IO-APIC-edge i8042
8: 15 11 10 9 10 15 10 18 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
18: 0 1 0 0 0 0 0 0 IO-APIC-fasteoi ohci_hcd:usb4
19: 7219 7218 7247 7272 7268 7221 7325 8378 IO-APIC-fasteoi ahci
20: 0 0 1 0 0 0 0 0 IO-APIC-fasteoi ohci_hcd:usb5
22: 0 0 0 0 1 0 0 0 IO-APIC-fasteoi ohci_hcd:usb7
32: 12 13 12 11 11 12 13 15 IO-APIC-fasteoi snd_oxygen_lib
72: 0 0 0 0 0 0 0 0 PCI-MSI-edge AMD-Vi
75: 24 21 34 29 28 28 24 37 PCI-MSI-edge ahci
76: 4 3 2 2 2 4 4 5 PCI-MSI-edge ehci_hcd:usb1
77: 911 947 917 989 931 990 987 1180 PCI-MSI-edge ehci_hcd:usb2
78: 0 0 0 0 0 0 0 0 PCI-MSI-edge ehci_hcd:usb3
79: 0 0 0 1 0 0 0 0 PCI-MSI-edge ohci_hcd:usb6
80: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
81: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
82: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
83: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
84: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
85: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
86: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
87: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
88: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
89: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
90: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
91: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
92: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
93: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
94: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
95: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
96: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
97: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
98: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
99: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
100: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
101: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
102: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
103: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
104: 519 510 509 507 514 514 526 843 PCI-MSI-edge eth0
105: 1060 1043 1013 945 1026 978 1012 1182 PCI-MSI-edge nvidia
NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts
LOC: 25656 24210 16338 13305 7312 6824 12168 3861 Local timer interrupts
SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 0 0 0 0 Performance monitoring interrupts
IWI: 0 0 0 0 0 0 0 0 IRQ work interrupts
RES: 168729 137325 73848 45939 21262 17407 13822 7231 Rescheduling interrupts
CAL: 7594 7858 7435 9654 9729 10406 10429 10190 Function call interrupts
TLB: 11546 10855 6499 4955 3204 5188 3316 2675 TLB shootdowns
THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 0 0 0 0 Machine check exceptions
MCP: 3 3 3 3 3 3 3 3 Machine check polls
|
lspci -nnv
Code: |
00:00.0 Host bridge [0600]: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (external gfx0 port B) [1002:5a14] (rev 02)
Subsystem: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (external gfx0 port B) [1002:5a14]
Flags: fast devsel
Capabilities: [f0] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [c4] HyperTransport: Slave or Primary Interface
Capabilities: [40] HyperTransport: Retry Mode
Capabilities: [54] HyperTransport: UnitID Clumping
Capabilities: [9c] HyperTransport: #1a
Capabilities: [70] MSI: Enable- Count=1/4 Maskable- 64bit-
00:00.2 IOMMU [0806]: Advanced Micro Devices [AMD] nee ATI RD990 I/O Memory Management Unit (IOMMU) [1002:5a23]
Subsystem: Advanced Micro Devices [AMD] nee ATI RD990 I/O Memory Management Unit (IOMMU) [1002:5a23]
Flags: fast devsel, IRQ 72
Capabilities: [40] Secure device <?>
Capabilities: [54] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [64] HyperTransport: MSI Mapping Enable+ Fixed+
00:02.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port B) [1002:5a16] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 0000e000-0000efff
Memory behind bridge: fd000000-fe0fffff
Prefetchable memory behind bridge: 00000000d0000000-00000000d9ffffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:5a14]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [190] Access Control Services
Kernel driver in use: pcieport
00:04.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port D) [1002:5a18] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
I/O behind bridge: 0000d000-0000dfff
Memory behind bridge: fe500000-fe5fffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:5a14]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [190] Access Control Services
Kernel driver in use: pcieport
00:05.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port E) [1002:5a19] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
I/O behind bridge: 0000c000-0000cfff
Memory behind bridge: fe400000-fe4fffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:5a14]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [190] Access Control Services
Kernel driver in use: pcieport
00:06.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port F) [1002:5a1a] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
Memory behind bridge: fe300000-fe3fffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:5a14]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [190] Access Control Services
Kernel driver in use: pcieport
00:07.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port G) [1002:5a1b] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=05, subordinate=05, sec-latency=0
Memory behind bridge: fe200000-fe2fffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:5a14]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [190] Access Control Services
Kernel driver in use: pcieport
00:09.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (PCI express gpp port H) [1002:5a1c] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=06, subordinate=06, sec-latency=0
Memory behind bridge: fe100000-fe1fffff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:5a14]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [190] Access Control Services
Kernel driver in use: pcieport
00:0b.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD890 PCI to PCI bridge (NB-SB link) [1002:5a1f] (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=07, subordinate=08, sec-latency=0
I/O behind bridge: 0000b000-0000bfff
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Root Port (Slot+), MSI 00
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [b0] Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:5a14]
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [190] Access Control Services
Kernel driver in use: pcieport
00:11.0 RAID bus controller [0104]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode] [1002:4393] (rev 40)
Subsystem: ASUSTeK Computer Inc. Device [1043:84df]
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 19
I/O ports at f040 [size=8]
I/O ports at f030 [size=4]
I/O ports at f020 [size=8]
I/O ports at f010 [size=4]
I/O ports at f000 [size=16]
Memory at fe607000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [70] SATA HBA v1.0
Capabilities: [a4] PCI Advanced Features
Kernel driver in use: ahci
00:12.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI])
Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397]
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 18
Memory at fe606000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
00:12.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396] (prog-if 20 [EHCI])
Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396]
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 76
Memory at fe605000 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [e4] Debug port: BAR=1 offset=00e0
Kernel driver in use: ehci_hcd
00:13.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI])
Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397]
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 20
Memory at fe604000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
00:13.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396] (prog-if 20 [EHCI])
Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396]
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 77
Memory at fe603000 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [e4] Debug port: BAR=1 offset=00e0
Kernel driver in use: ehci_hcd
00:14.0 SMBus [0c05]: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller [1002:4385] (rev 42)
Subsystem: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller [1002:4385]
Flags: 66MHz, medium devsel
00:14.3 ISA bridge [0601]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller [1002:439d] (rev 40)
Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller [1002:439d]
Flags: bus master, 66MHz, medium devsel, latency 0
00:14.4 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge [1002:4384] (rev 40) (prog-if 01 [Subtractive decode])
Flags: bus master, VGA palette snoop, 66MHz, medium devsel, latency 64
Bus: primary=00, secondary=09, subordinate=09, sec-latency=64
Capabilities: [54] HyperTransport: MSI Mapping Enable+ Fixed+
00:14.5 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI2 Controller [1002:4399] (prog-if 10 [OHCI])
Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI2 Controller [1002:4399]
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 79
Memory at fe602000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Kernel driver in use: ohci_hcd
00:16.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397] (prog-if 10 [OHCI])
Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller [1002:4397]
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 22
Memory at fe601000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci_hcd
00:16.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396] (prog-if 20 [EHCI])
Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller [1002:4396]
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 78
Memory at fe600000 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [e4] Debug port: BAR=1 offset=00e0
Kernel driver in use: ehci_hcd
00:18.0 Host bridge [0600]: Advanced Micro Devices [AMD] Family 15h Processor Function 0 [1022:1600]
Flags: fast devsel
Capabilities: [80] HyperTransport: Host or Secondary Interface
00:18.1 Host bridge [0600]: Advanced Micro Devices [AMD] Family 15h Processor Function 1 [1022:1601]
Flags: fast devsel
00:18.2 Host bridge [0600]: Advanced Micro Devices [AMD] Family 15h Processor Function 2 [1022:1602]
Flags: fast devsel
00:18.3 Host bridge [0600]: Advanced Micro Devices [AMD] Family 15h Processor Function 3 [1022:1603]
Flags: fast devsel
Capabilities: [f0] Secure device <?>
Kernel driver in use: k10temp
00:18.4 Host bridge [0600]: Advanced Micro Devices [AMD] Family 15h Processor Function 4 [1022:1604]
Flags: fast devsel
Kernel driver in use: fam15h_power
Kernel modules: fam15h_power
00:18.5 Host bridge [0600]: Advanced Micro Devices [AMD] Family 15h Processor Function 5 [1022:1605]
Flags: fast devsel
01:00.0 VGA compatible controller [0300]: nVidia Corporation GF110 [GeForce GTX 570 HD] [10de:1086] (rev a1) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Device [1043:8387]
Flags: bus master, fast devsel, latency 0, IRQ 105
Memory at fd000000 (32-bit, non-prefetchable) [size=16M]
Memory at d0000000 (64-bit, prefetchable) [size=128M]
Memory at d8000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
[virtual] Expansion ROM at fe000000 [disabled] [size=512K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [b4] Vendor Specific Information: Len=14 <?>
Capabilities: [100] Virtual Channel
Capabilities: [128] Power Budgeting <?>
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
Kernel driver in use: nvidia
Kernel modules: nvidia
01:00.1 Audio device [0403]: nVidia Corporation GF110 High Definition Audio Controller [10de:0e09] (rev a1)
Subsystem: ASUSTeK Computer Inc. Device [1043:8387]
Flags: bus master, fast devsel, latency 0, IRQ 7
Memory at fe080000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
02:00.0 SATA controller [0106]: ASMedia Technology Inc. ASM1062 Serial ATA Controller [1b21:0612] (rev 01) (prog-if 01 [AHCI 1.0])
Subsystem: ASUSTeK Computer Inc. Device [1043:84b7]
Flags: bus master, fast devsel, latency 0, IRQ 75
I/O ports at d050 [size=8]
I/O ports at d040 [size=4]
I/O ports at d030 [size=8]
I/O ports at d020 [size=4]
I/O ports at d000 [size=32]
Memory at fe500000 (32-bit, non-prefetchable) [size=512]
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Kernel driver in use: ahci
03:00.0 Ethernet controller [0200]: Intel Corporation 82583V Gigabit Network Connection [8086:150c]
Subsystem: ASUSTeK Computer Inc. Device [1043:8457]
Flags: bus master, fast devsel, latency 0, IRQ 104
Memory at fe400000 (32-bit, non-prefetchable) [size=128K]
I/O ports at c000 [size=32]
Memory at fe420000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [e0] Express Endpoint, MSI 00
Capabilities: [a0] MSI-X: Enable- Count=1 Masked-
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Device Serial Number 54-04-a6-ff-ff-0b-c6-f6
Kernel driver in use: e1000e
Kernel modules: e1000e
04:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller [1b21:1042] (prog-if 30 [XHCI])
Subsystem: ASUSTeK Computer Inc. Device [1043:8488]
Flags: bus master, fast devsel, latency 0, IRQ 51
Memory at fe300000 (64-bit, non-prefetchable) [size=32K]
Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [68] MSI-X: Enable+ Count=8 Masked-
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Kernel driver in use: xhci_hcd
05:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller [1b21:1042] (prog-if 30 [XHCI])
Subsystem: ASUSTeK Computer Inc. Device [1043:8488]
Flags: bus master, fast devsel, latency 0, IRQ 50
Memory at fe200000 (64-bit, non-prefetchable) [size=32K]
Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [68] MSI-X: Enable+ Count=8 Masked-
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Kernel driver in use: xhci_hcd
06:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller [1b21:1042] (prog-if 30 [XHCI])
Subsystem: ASUSTeK Computer Inc. Device [1043:8488]
Flags: bus master, fast devsel, latency 0, IRQ 48
Memory at fe100000 (64-bit, non-prefetchable) [size=32K]
Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [68] MSI-X: Enable+ Count=8 Masked-
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Kernel driver in use: xhci_hcd
07:00.0 PCI bridge [0604]: PLX Technology, Inc. PEX8112 x1 Lane PCI Express-to-PCI Bridge [10b5:8112] (rev aa) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=07, secondary=08, subordinate=08, sec-latency=32
I/O behind bridge: 0000b000-0000bfff
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [60] Express PCI/PCI-X Bridge, MSI 00
Capabilities: [100] Power Budgeting <?>
08:04.0 Multimedia audio controller [0401]: C-Media Electronics Inc CMI8788 [Oxygen HD Audio] [13f6:8788]
Subsystem: ASUSTeK Computer Inc. Virtuoso 100 (Xonar Essence STX) [1043:835c]
Flags: bus master, medium devsel, latency 32, IRQ 32
I/O ports at b000 [size=256]
Capabilities: [c0] Power Management version 2
Kernel driver in use: snd_virtuoso
Kernel modules: snd-virtuoso
|
|
|
Back to top |
|
|
PrakashP Veteran
Joined: 27 Oct 2003 Posts: 1249 Location: C.C.A.A., Germania
|
Posted: Sat Mar 17, 2012 7:26 am Post subject: |
|
|
Ok, I updated the patch to inlcude roarinelk's changes and also added SATA MSI enabling. Therefore I disable D3 power management to be on the safe side. So using S1 Standby is no problem. The RPR actually says to disable MSI on older revisions, but I guess that's just because of the INTX disable quirk. It works fine on my system.
@potenzial
Did you already apply the patch and then dumped lspci? Because then I wouldn't understand why MSI for OHCI wouldn't be enabled. What is your southbridge chipset? Nice system, btw. |
|
Back to top |
|
|
potenzial n00b
Joined: 11 Oct 2004 Posts: 10 Location: Earth, Germany, Essen
|
Posted: Sat Mar 17, 2012 1:48 pm Post subject: |
|
|
PrakashP wrote: | Ok, I updated the patch to inlcude roarinelk's changes and also added SATA MSI enabling. Therefore I disable D3 power management to be on the safe side. So using S1 Standby is no problem. The RPR actually says to disable MSI on older revisions, but I guess that's just because of the INTX disable quirk. It works fine on my system.
@potenzial
Did you already apply the patch and then dumped lspci? Because then I wouldn't understand why MSI for OHCI wouldn't be enabled. What is your southbridge chipset? Nice system, btw. |
Yes, I did sry forget to mention it. |
|
Back to top |
|
|
PrakashP Veteran
Joined: 27 Oct 2003 Posts: 1249 Location: C.C.A.A., Germania
|
Posted: Sat Mar 17, 2012 2:47 pm Post subject: |
|
|
Well, it would be helpful to tell me the chipset you motherboard has. |
|
Back to top |
|
|
potenzial n00b
Joined: 11 Oct 2004 Posts: 10 Location: Earth, Germany, Essen
|
Posted: Sat Mar 17, 2012 6:52 pm Post subject: |
|
|
It'a ASUS Crosshair 5 and the chipset is AMD 990FX/SB950
But with your patch everything is using msi.
Thanks for the help.
/proc/interrupts
Code: |
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 29 6 6 10 5 4 8 9 IO-APIC-edge timer
1: 3953 4006 3948 4011 3973 4027 4244 6033 IO-APIC-edge i8042
8: 13 18 15 14 12 15 14 18 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
32: 63 69 69 71 69 67 69 84 IO-APIC-fasteoi snd_oxygen_lib
72: 0 0 0 0 0 0 0 0 PCI-MSI-edge AMD-Vi
73: 225195 230080 230552 228237 228893 223831 231656 325231 PCI-MSI-edge ahci
74: 36 27 30 29 36 34 38 41 PCI-MSI-edge ahci
75: 106709 104981 104586 105711 105707 106336 109553 142469 PCI-MSI-edge ehci_hcd:usb1
76: 77115 76824 77012 77522 76863 78104 81289 133622 PCI-MSI-edge ehci_hcd:usb2
77: 0 0 0 0 0 0 0 0 PCI-MSI-edge ehci_hcd:usb3
78: 0 1 0 0 0 0 0 0 PCI-MSI-edge ohci_hcd:usb4
79: 0 0 1 0 0 0 0 0 PCI-MSI-edge ohci_hcd:usb5
80: 0 0 0 1 0 0 0 0 PCI-MSI-edge ohci_hcd:usb6
81: 0 0 0 0 1 0 0 0 PCI-MSI-edge ohci_hcd:usb7
82: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
83: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
84: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
85: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
86: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
87: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
88: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
89: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
90: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
91: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
92: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
93: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
94: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
95: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
96: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
97: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
98: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
99: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
100: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
101: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
102: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
103: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
104: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
105: 0 0 0 0 0 0 0 0 PCI-MSI-edge xhci_hcd
106: 418702 424524 423486 427569 425925 428305 437578 631839 PCI-MSI-edge eth0
107: 126074 129567 128866 127969 127785 126821 131617 190713 PCI-MSI-edge nvidia
NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts
LOC: 10565986 10436705 9581323 7989167 4570563 2357276 749455 460092 Local timer interrupts
SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 0 0 0 0 Performance monitoring interrupts
IWI: 0 0 0 0 0 0 0 0 IRQ work interrupts
RES: 14986817 14060214 11426854 8805579 4852224 2427484 999271 576936 Rescheduling interrupts
CAL: 1418752 1403668 1465288 1502408 1614837 1665673 1676964 1679916 Function call interrupts
TLB: 1311774 1364116 1326196 1196649 1068995 971792 824616 790479 TLB shootdowns
THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 0 0 0 0 Machine check exceptions
MCP: 53 53 53 53 53 53 53 53 Machine check polls
ERR: 0
MIS: 0
|
Last edited by potenzial on Fri Mar 23, 2012 6:45 pm; edited 2 times in total |
|
Back to top |
|
|
j_c_p Guru
Joined: 30 Aug 2003 Posts: 319 Location: France - Colmar
|
Posted: Mon Mar 19, 2012 11:12 pm Post subject: |
|
|
I've tried the patch too :
Code: | CPU0 CPU1 CPU2 CPU3 CPU4 CPU5
0: 120 7 209 34 4568 43191 IO-APIC-edge timer
1: 0 0 0 0 10 728 IO-APIC-edge i8042
6: 0 0 0 0 0 3 IO-APIC-edge floppy
9: 0 0 0 0 0 0 IO-APIC-fasteoi acpi
20: 0 1 0 0 2 444 IO-APIC-fasteoi snd_ice1712
42: 1 0 8 1 221 56702 PCI-MSI-edge ahci
43: 0 0 1 0 16 1183 PCI-MSI-edge pata_atiixp
44: 0 0 1 0 33 6438 PCI-MSI-edge eth0
45: 0 0 0 0 0 0 PCI-MSI-edge ehci_hcd:usb1
46: 0 0 0 0 0 3 PCI-MSI-edge ehci_hcd:usb2
47: 0 0 0 0 0 0 PCI-MSI-edge ohci_hcd:usb3
48: 0 0 0 0 0 0 PCI-MSI-edge ohci_hcd:usb4
49: 0 0 0 0 3 30 PCI-MSI-edge ohci_hcd:usb5
50: 0 0 1 1 16 970 PCI-MSI-edge ohci_hcd:usb6
51: 0 0 0 0 0 0 PCI-MSI-edge ohci_hcd:usb7
52: 0 0 1 0 56 6067 PCI-MSI-edge nvidia
NMI: 0 0 0 0 0 0 Non-maskable interrupts
LOC: 32738 28000 26078 23273 21616 58260 Local timer interrupts
SPU: 0 0 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 0 0 Performance monitoring interrupts
IWI: 0 0 0 0 0 0 IRQ work interrupts
RTR: 0 0 0 0 0 0 APIC ICR read retries
RES: 56660 28092 24769 23241 23042 13736 Rescheduling interrupts
CAL: 9450 9139 9000 9465 9301 6669 Function call interrupts
TLB: 1463 1645 1476 1386 1273 1230 TLB shootdowns
THR: 0 0 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 0 0 Machine check exceptions
MCP: 1 1 1 1 1 1 Machine check polls
ERR: 0
MIS: 0 |
Code: | 00:00.0 Host bridge: Advanced Micro Devices [AMD] nee ATI RD780 Northbridge only dual slot PCI-e_GFX and HT1 K8 part
00:02.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD790 PCI to PCI bridge (external gfx0 port A)
00:0a.0 PCI bridge: Advanced Micro Devices [AMD] nee ATI RD790 PCI to PCI bridge (PCI express gpp port F)
00:11.0 SATA controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
00:12.0 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:12.1 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0 USB OHCI1 Controller
00:12.2 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:13.0 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:13.1 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0 USB OHCI1 Controller
00:13.2 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:14.0 SMBus: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller (rev 3a)
00:14.1 IDE interface: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 IDE Controller
00:14.3 ISA bridge: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller
00:14.4 PCI bridge: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge
00:14.5 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Link Control
01:00.0 VGA compatible controller: NVIDIA Corporation GT200 [GeForce GTX 260] (rev a1)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
03:06.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi-Channel I/O Controller (rev 02)
03:0e.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) |
_________________ Lian Li PC60 - AMD FX 8300 - Asrock 990FX EXTREME9 - Gigabyte GTX960 G1 Gaming 4Go |
|
Back to top |
|
|
s4e8 Guru
Joined: 29 Jul 2006 Posts: 311
|
Posted: Wed Mar 28, 2012 3:14 pm Post subject: |
|
|
I work beatiful here. But I'd like to have 64 bit DMA in ehci controller either. It think 64bit DMA is more important than MSI interrupt. Intel ehci controller support 64bit DMA, but AMD/ATI not. In order to enable 64 bit DMA, you must check and set dma_mask before ehci_mem_init(). The kernel source has some commented code in ehci_run(), it's wrong place, because ehci_mem_init() allocate/map DMA buffer before ehci_run(). |
|
Back to top |
|
|
roarinelk Guru
Joined: 04 Mar 2004 Posts: 520
|
Posted: Thu Mar 29, 2012 7:06 pm Post subject: |
|
|
s4e8 wrote: | I work beatiful here. But I'd like to have 64 bit DMA in ehci controller either. It think 64bit DMA is more important than MSI interrupt. Intel ehci controller support 64bit DMA, but AMD/ATI not. In order to enable 64 bit DMA, you must check and set dma_mask before ehci_mem_init(). The kernel source has some commented code in ehci_run(), it's wrong place, because ehci_mem_init() allocate/map DMA buffer before ehci_run(). |
The dma_mask describes the address range the device can DMA from/to. So if there is a 32bit
dma_mask it means the device can only DMA to/from the first 4G of RAM. That isn't something
that can be changed in the hardware on the fly. |
|
Back to top |
|
|
maudeb n00b
Joined: 14 May 2012 Posts: 1
|
Posted: Mon May 14, 2012 9:44 pm Post subject: |
|
|
PrakashP's patch works like a charm here too:
- Debian Squeeze/Sid w/ Liquorix 3.3.6 kernel
- Asrock 870 Extreme 3 (AMD 870 + SB850) + Phenom II X4 965
...but I still can't see HPET_MSI-edge (BLK_DEV_FD is not set). I'd really like if someone could port this on the kernel tree.
Thanks! Mau
Code: |
$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 240 318 9098 944740 IO-APIC-edge timer
1: 1 0 57 7195 IO-APIC-edge i8042
7: 1 0 0 0 IO-APIC-edge
8: 0 0 0 1 IO-APIC-edge rtc0
9: 0 0 0 0 IO-APIC-fasteoi acpi
16: 0 0 2 100 IO-APIC-fasteoi firewire_ohci
20: 0 0 0 0 IO-APIC-fasteoi pata_hpt37x
21: 0 0 3 213 IO-APIC-fasteoi snd_rme96
43: 2 10 1045 219080 PCI-MSI-edge ahci
44: 0 2 187 36635 PCI-MSI-edge eth0
45: 0 0 1 42 PCI-MSI-edge ehci_hcd:usb1
46: 0 0 0 1 PCI-MSI-edge xhci_hcd
47: 0 0 0 0 PCI-MSI-edge xhci_hcd
48: 0 0 0 0 PCI-MSI-edge xhci_hcd
49: 0 0 0 0 PCI-MSI-edge xhci_hcd
50: 0 0 0 0 PCI-MSI-edge xhci_hcd
51: 0 0 0 0 PCI-MSI-edge ehci_hcd:usb4
52: 0 0 0 4 PCI-MSI-edge ehci_hcd:usb5
53: 0 0 0 1 PCI-MSI-edge ohci_hcd:usb6
54: 0 0 0 1 PCI-MSI-edge ohci_hcd:usb7
55: 0 0 0 1 PCI-MSI-edge ohci_hcd:usb8
56: 13 28 5176 1089298 PCI-MSI-edge ohci_hcd:usb9
57: 0 1 51 26989 PCI-MSI-edge snd_hda_intel
58: 0 0 0 133 PCI-MSI-edge snd_hda_intel
59: 4 27 3355 678668 PCI-MSI-edge nvidia
NMI: 0 0 0 0 Non-maskable interrupts
LOC: 1961953 1900546 1471976 1108968 Local timer interrupts
SPU: 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 Performance monitoring interrupts
IWI: 0 0 0 0 IRQ work interrupts
RTR: 0 0 0 0 APIC ICR read retries
RES: 2365595 2268301 1397656 576100 Rescheduling interrupts
CAL: 44648 52905 54065 59860 Function call interrupts
TLB: 33309 26895 28393 22008 TLB shootdowns
TRM: 0 0 0 0 Thermal event interrupts
THR: 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 Machine check exceptions
MCP: 22 22 22 22 Machine check polls
ERR: 1
MIS: 0
|
|
|
Back to top |
|
|
roarinelk Guru
Joined: 04 Mar 2004 Posts: 520
|
Posted: Tue May 15, 2012 3:52 am Post subject: |
|
|
maudeb wrote: | 4 965
...but I still can't see HPET_MSI-edge (BLK_DEV_FD is not set). I'd really like if someone could port this on the kernel tree.
|
a) it's overrated (APIC timer has a much higher resolution than HPET),
b) you need to set CONFIG_HPET=n AND have a HPET with 3 or more timers for one of the
entries to appear. |
|
Back to top |
|
|
_______0 Guru
Joined: 15 Oct 2012 Posts: 521
|
Posted: Thu Dec 27, 2012 7:31 pm Post subject: |
|
|
roarinelk wrote: | maudeb wrote: | 4 965
...but I still can't see HPET_MSI-edge (BLK_DEV_FD is not set). I'd really like if someone could port this on the kernel tree.
|
a) it's overrated (APIC timer has a much higher resolution than HPET),
b) you need to set CONFIG_HPET=n AND have a HPET with 3 or more timers for one of the
entries to appear. |
this is interesting, how to pick APIC timer?? I don't see it in /sys/bus/clocksource/devices/clocksource0/available_clocksource
In fact, there's no kernel parametr for apic timer:
Code: | clocksource= Override the default clocksource
Format: <string>
Override the default clocksource and use the clocksource
with the name specified.
Some clocksource names to choose from, depending on
the platform:
[all] jiffies (this is the base, fallback clocksource)
[ACPI] acpi_pm
[ARM] imx_timer1,OSTS,netx_timer,mpu_timer2,
pxa_timer,timer3,32k_counter,timer0_1
[AVR32] avr32
[X86-32] pit,hpet,tsc;
scx200_hrt on Geode; cyclone on IBM x440
[MIPS] MIPS
[PARISC] cr16
[S390] tod
[SH] SuperH
[SPARC64] tick
[X86-64] hpet,tsc
|
And how do you determine HPET is overrated and apic timer is better??
I am interested, I think this can help run a system tuned for real time audio.
thanks.
Oh, also, does this patch work with 3.7.x kernels?? is it 100% bug-free?? Moving stuff over to MSI seems rather trivial. |
|
Back to top |
|
|
PrakashP Veteran
Joined: 27 Oct 2003 Posts: 1249 Location: C.C.A.A., Germania
|
Posted: Fri Dec 28, 2012 11:41 am Post subject: |
|
|
I am always running a relatively new kernel from the git tree and thus forward-port the patch. And yes it works (for me), but I haven't posted any updated patches. I cannot guarantee though that no bugs emerge. Only AMD can give that guarantee. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|