On Mon, 26 Mar 2012, ron minnich wrote:

This file:

static unsigned long i915_stolen_to_phys(struct drm_device *dev, u32 offset)
{
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct pci_dev *pdev = dev_priv->bridge_dev;
        u32 base;

#if 0
        /* On the machines I have tested the Graphics Base of Stolen Memory
         * is unreliable, so compute the base by subtracting the stolen memory
         * from the Top of Low Usable DRAM which is where the BIOS places
         * the graphics stolen memory.
         */
        if (INTEL_INFO(dev)->gen > 3 || IS_G33(dev)) {
                /* top 32bits are reserved = 0 */
                pci_read_config_dword(pdev, 0xA4, &base);
        } else {
                /* XXX presume 8xx is the same as i915 */
                pci_bus_read_config_dword(pdev->bus, 2, 0x5C, &base);
        }
#else
        if (INTEL_INFO(dev)->gen > 3 || IS_G33(dev)) {
                u16 val;
                pci_read_config_word(pdev, 0xb0, &val);
                base = val >> 4 << 20;
        } else {
                u8 val;
                pci_read_config_byte(pdev, 0x9c, &val);
                base = val >> 3 << 27;
        }
        base -= dev_priv->mm.gtt->stolen_size;
#endif

        return base + offset;
}

Wit this patch:
@@
@@
-i915_stolen_to_phys(...){...}

yields this:

--- x.c
+++ /tmp/cocci-output-12465-bccf72-x.c
@@ -1,8 +1,4 @@
-static unsigned long i915_stolen_to_phys(struct drm_device *dev, u32 offset)
-{
-       struct drm_i915_private *dev_priv = dev->dev_private;
-       struct pci_dev *pdev = dev_priv->bridge_dev;
-       u32 base;
+

#if 0
        /* On the machines I have tested the Graphics Base of Stolen Memory
@@ -18,17 +14,4 @@ static unsigned long i915_stolen_to_phys
                pci_bus_read_config_dword(pdev->bus, 2, 0x5C, &base);
        }
#else
-       if (INTEL_INFO(dev)->gen > 3 || IS_G33(dev)) {
-               u16 val;
-               pci_read_config_word(pdev, 0xb0, &val);
-               base = val >> 4 << 20;
-       } else {
-               u8 val;
-               pci_read_config_byte(pdev, 0x9c, &val);
-               base = val >> 3 << 27;
-       }
-       base -= dev_priv->mm.gtt->stolen_size;
-#endif

-       return base + offset;
-}

which is unexpected :-)

Indeed. In the short term, try the argument --noif0-passing. The skipping of if0s does not seem to take into account that there might be an else.

julia
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to