[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] intel IGD driver intel_detect_pch() failure
On Fri, 14 Dec 2012, G.R. wrote: > I did another experiment to change the header type to 0x80. > The devices now shows up as an ISA bridge. Great! Could you please resend the patch with your change to xen-devel? > But as long as the PIIX3 bridge cannot be overridden, I need another > hack in intel driver to make it work. > > This is the local hack I made, based on kernel 3.2.31. > But the function does not change in new version, other than new chip support. > Not sure if this change is acceptable to upstream... I am not the maintainer of the i915 driver, but my feeling is that it is acceptable. However when making changes to Linux, you need to make them against the the latest release or one of the latest RCs of Linus' git tree (git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git), for example v3.7. You also need to generate the patch with git diff. > --- i915_drv.c.orig 2012-10-10 10:31:37.000000000 +0800 > +++ i915_drv.c 2012-12-14 19:10:32.000000000 +0800 > @@ -303,6 +303,7 @@ > { > struct drm_i915_private *dev_priv = dev->dev_private; > struct pci_dev *pch; > + unsigned found = 0; You don't need to introduce found: I would just use "continue" in the while loop if there isn't a match and "break" at the first good match. > > /* > * The reason to probe ISA bridge instead of Dev31:Fun0 is to > @@ -311,11 +312,13 @@ > * underneath. This is a requirement from virtualization team. > */ > pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL); > - if (pch) { > + while (pch) { > if (pch->vendor == PCI_VENDOR_ID_INTEL) { > int id; > id = pch->device & INTEL_PCH_DEVICE_ID_MASK; > > + found = pch->device; > + > if (id == INTEL_PCH_IBX_DEVICE_ID_TYPE) { > dev_priv->pch_type = PCH_IBX; > DRM_DEBUG_KMS("Found Ibex Peak PCH\n"); > @@ -326,9 +329,21 @@ > /* PantherPoint is CPT compatible */ > dev_priv->pch_type = PCH_CPT; > DRM_DEBUG_KMS("Found PatherPoint PCH\n"); > + } else { > + found = 0; > } > + } > + if (found) { > + pci_dev_put(pch); > + break; > + } else { > + struct pci_dev *curr = pch; > + pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, curr); > + pci_dev_put(curr); > } > - pci_dev_put(pch); > + } > + if (!found) { > + DRM_DEBUG_KMS("intel PCH detect failed, nothing found\n"); > } > } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |