On Thu, 22 Oct 2009 18:53:19 -0700
Eric Anholt <eric@...> wrote:
> On Thu, 2009-10-22 at 17:11 -0700, Suresh Siddha wrote:
> > On Thu, 2009-10-22 at 16:10 -0700, Jesse Barnes wrote:
> > > On Thu, 22 Oct 2009 14:47:30 -0700
> > > Suresh Siddha <suresh.b.siddha@...> wrote:
> > >
> > > > On Thu, 2009-10-22 at 08:34 -0700, Eric Anholt wrote:
> > > > > Can we just not create the _wc sysfs entry if we don't have
> > > > > PAT? I don't think there's userland relying on its presence
> > > > > as opposed to the non-_wc entry.
> > > >
> > > > Yes indeed. Jesse do you see an issue with this? This is simple
> > > > and clean. Thanks Eric.
> > >
> > > Yeah, I think that will be fine. In fact, older versions of
> > > libpciaccess will behave better if we do it that way (iirc it only
> > > allocates an MTRR if the resource_wc file doesn't exist or fails
> > > to get mapped).
> > Eric, care to send the patch?
> I don't have a patch, I was just suggesting a way to handle the
> submitter's problem that won't involve complicated changes that nobody
> else will be testing since everyone *should* have a graphics driver
> for their graphics hardware.
Here's a quick & dirty version, totally untested. A cleaner approach
would be to separate the WC mapping routines and hide the return
-EINVAL in arch specific code...
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index 0f6382f..41010bb 100644
@@ -23,6 +23,9 @@
static int sysfs_initialized; /* = 0 */
@@ -730,6 +733,10 @@ static int
pci_mmap_resource_wc(struct kobject *kobj, struct bin_attribute *attr,
struct vm_area_struct *vma)
+ if (!pat_enabled)
+ return -EINVAL;
return pci_mmap_resource(kobj, attr, vma, 1);