Bug 44510 - Lenovo X201s requires "intel_iommu=igfx_off" with v3.2 kernel
Summary: Lenovo X201s requires "intel_iommu=igfx_off" with v3.2 kernel
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: high critical
Assignee: Ben Widawsky
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 42991 44622
  Show dependency treegraph
 
Reported: 2012-01-05 13:17 UTC by Leann Ogasawara
Modified: 2017-07-24 23:03 UTC (History)
8 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Leann Ogasawara 2012-01-05 13:17:01 UTC
Hi,

I'm forwarding this bug on behalf of an Ubuntu bug reporter Jamie Strandboge:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911236

On a Lenovo X201s running an Ubuntu 3.2.0-7.13-generic kernel which was rebased on upstream v3.2-rc7 Jamie's witnessing repeated fault messages in dmesg and experiencing system 'pauses' every few seconds.  The repeated dmesg output is as follows:

[ 56.996322] DRHD: handling fault status reg 2
[ 56.996330] DMAR:[DMA Write] Request device [00:02.0] fault addr 7bf1c7000
[ 56.996332] DMAR:[fault reason 05] PTE Write access is not set

00:02.0 VGA compatible controller [0300]: Intel Corporation Core Processor Integrated Graphics Controller [8086:0046] (rev 02) (prog-if 00 [VGA controller])

Jamie can confirm that booting with 'intel_iommu=igfx_off' resolves the issue and he no longer sees the repeated messages nor experiences the system pausing.

His full lspci output can be seen at:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911236/+attachment/2655442/+files/Lspci.txt

And dmesg output at:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911236/+attachment/2655434/+files/BootDmesg.txt

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/911236/+attachment/2655439/+files/CurrentDmesg.txt

Please let us know if you need any additional information.  Thanks in advance.
Comment 1 Roland Dreier 2012-01-05 13:46:45 UTC
I have the same issue with a Lenovo T410s (updated to latest BIOS); I see I have the 8086:0044 device that triggers quirk_calpella_no_shadow_gtt() in intel-iommu.c, but the PCI header is such that I hit the second clause in:

static void __devinit quirk_calpella_no_shadow_gtt(struct pci_dev *dev)
{
        unsigned short ggc;

        if (pci_read_config_word(dev, GGC, &ggc))
                return;

        if (!(ggc & GGC_MEMORY_VT_ENABLED)) {
                printk(KERN_INFO "DMAR: BIOS has allocated no shadow GTT; disabling IOMMU for graphics\n");
                dmar_map_gfx = 0;
        } else if (dmar_map_gfx) {
                /* we have to ensure the gfx device is idle before we flush */
                printk(KERN_INFO "DMAR: Disabling batched IOTLB flush on Ironlake\n");
                intel_iommu_strict = 1;
       }
}

so I see:

[    0.802361] DMAR: Disabling batched IOTLB flush on Ironlake

in my kernel log, but then I get a stream of

[   98.467011] DRHD: handling fault status reg 2
[   98.467014] DMAR:[DMA Write] Request device [00:02.0] fault addr 400020000 
[   98.467038] DMAR:[fault reason 05] PTE Write access is not set

"intel_iommu=igfx_off" resolves this for me as well.

Full lspci:

00:00.0 Host bridge [0600]: Intel Corporation Core Processor DRAM Controller [8086:0044] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation Core Processor Integrated Graphics Controller [8086:0046] (rev 02)
00:16.0 Communication controller [0780]: Intel Corporation 5 Series/3400 Series Chipset HECI Controller [8086:3b64] (rev 06)
00:16.3 Serial controller [0700]: Intel Corporation 5 Series/3400 Series Chipset KT Controller [8086:3b67] (rev 06)
00:19.0 Ethernet controller [0200]: Intel Corporation 82577LM Gigabit Network Connection [8086:10ea] (rev 06)
00:1a.0 USB controller [0c03]: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller [8086:3b3c] (rev 06)
00:1b.0 Audio device [0403]: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio [8086:3b57] (rev 06)
00:1c.0 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 [8086:3b42] (rev 06)
00:1c.1 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 2 [8086:3b44] (rev 06)
00:1c.3 PCI bridge [0604]: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 4 [8086:3b48] (rev 06)
00:1d.0 USB controller [0c03]: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller [8086:3b34] (rev 06)
00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev a6)
00:1f.0 ISA bridge [0601]: Intel Corporation 5 Series/3400 Series Chipset LPC Interface Controller [8086:3b0f] (rev 06)
00:1f.2 SATA controller [0106]: Intel Corporation 5 Series/3400 Series Chipset 6 port SATA AHCI Controller [8086:3b2f] (rev 06)
00:1f.3 SMBus [0c05]: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller [8086:3b30] (rev 06)
00:1f.6 Signal processing controller [1180]: Intel Corporation 5 Series/3400 Series Chipset Thermal Subsystem [8086:3b32] (rev 06)
03:00.0 Network controller [0280]: Intel Corporation Centrino Wireless-N 1000 [8086:0084]
ff:00.0 Host bridge [0600]: Intel Corporation Core Processor QuickPath Architecture Generic Non-core Registers [8086:2c62] (rev 02)
ff:00.1 Host bridge [0600]: Intel Corporation Core Processor QuickPath Architecture System Address Decoder [8086:2d01] (rev 02)
ff:02.0 Host bridge [0600]: Intel Corporation Core Processor QPI Link 0 [8086:2d10] (rev 02)
ff:02.1 Host bridge [0600]: Intel Corporation Core Processor QPI Physical 0 [8086:2d11] (rev 02)
ff:02.2 Host bridge [0600]: Intel Corporation Core Processor Reserved [8086:2d12] (rev 02)
ff:02.3 Host bridge [0600]: Intel Corporation Core Processor Reserved [8086:2d13] (rev 02)
Comment 2 Chris Wilson 2012-03-02 04:09:39 UTC
In linus/master:

commit 5c0422878fcdc279ae9a8e8b66972a15b5efb67f
Author: Ben Widawsky <ben@bwidawsk.net>
Date:   Mon Oct 17 15:51:55 2011 -0700

    drm/i915: ILK + VT-d workaround
    
    Idle the GPU before doing any unmaps. We know if VT-d is in use through
    an exported variable from iommu code.
    
    This should avoid a known HW issue.
    
    Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Keith Packard <keithp@keithp.com>

This does introduce a synchronous flush of the iommu tlb everytime a buffer is released which can cause stalls of ~1s every few seconds... But it does prevent the eventual machine hang. However, I would advise you to continue to use intel_iommu=igfx_off unless you truly do require virtualised graphics.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.