Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: Ralf Baechle <ralf@linux-mips.org>
To: linux-mips@linux-mips.org
Subject: Re: xorg-server-1.5.2 doesn't work because of missing sysfs pci resource files
Date: Sat, 6 Dec 2008 10:20:30 +0000	[thread overview]
Message-ID: <20081206102030.GA9410@linux-mips.org> (raw)
In-Reply-To: <20081205154339.GA14327@adriano.hkcable.com.hk>

On Fri, Dec 05, 2008 at 11:43:42PM +0800, Zhang Le wrote:

> I have tried xorg-server-1.5.2 on loongson 2f recently.
> But I found it doesn't work.
> It's mainly because of this change:
> http://www.x.org/wiki/PciReworkProposal
> 
> In short:
> "Rather than duplicating the efforts of kernel developers, X.org needs to use the
> interfaces provided by the kernel as much as possible."
> 
> I have read some code of libpciaccess, the new library utilizing kernel function
> to access pci bus. It will try to mmap this file:
> /sys/bus/pci/devices/0000:0x:xx.x/resource0
> (replace x with any digit appropriate)
> Note there is a 0 at the end of the file name. This file's permission is 600.
> 
> However, I found on my loongson system, there is only 
> /sys/bus/pci/devices/0000:0x:xx.x/resource
> Note there is no 0 at the end.
> 
> Then I tried to read kernel code. I found it seems that for mips linux to have
> this file, HAVE_PCI_MMAP must be defined. However, it is currently not defined.
> 
> Since I am not familiar with PCI, yet.
> So could someone please shed some light on this?
> Why HAVE_PCI_MMAP is not defined?

Here is a quick'n'dirty solution which I've not tested beyond just
compiling.  It should work but performance will be bad.  Either way, I'm
interested in a test report with X.

  Ralf

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

diff --git a/arch/mips/include/asm/pci.h b/arch/mips/include/asm/pci.h
index 5510c53..053e463 100644
--- a/arch/mips/include/asm/pci.h
+++ b/arch/mips/include/asm/pci.h
@@ -79,6 +79,11 @@ static inline void pcibios_penalize_isa_irq(int irq, int active)
 	/* We don't do dynamic PCI IRQ allocation */
 }
 
+#define HAVE_PCI_MMAP
+
+extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
+	enum pci_mmap_state mmap_state, int write_combine);
+
 /*
  * Dynamic DMA mapping stuff.
  * MIPS has everything mapped statically.
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index a377e9d..9233193 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -354,6 +354,22 @@ EXPORT_SYMBOL(PCIBIOS_MIN_IO);
 EXPORT_SYMBOL(PCIBIOS_MIN_MEM);
 #endif
 
+int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
+			enum pci_mmap_state mmap_state, int write_combine)
+{
+	unsigned long prot;
+
+	/*
+	 * Ignore write-combine; for now only return uncached mappings.
+	 */
+	prot = pgprot_val(vma->vm_page_prot);
+	prot = (prot & ~_CACHE_MASK) | _CACHE_UNCACHED;
+	vma->vm_page_prot = __pgprot(prot);
+
+	return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
+		vma->vm_end - vma->vm_start, vma->vm_page_prot);
+}
+
 char * (*pcibios_plat_setup)(char *str) __devinitdata;
 
 char *__devinit pcibios_setup(char *str)

  parent reply	other threads:[~2008-12-06 10:20 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-05 15:43 xorg-server-1.5.2 doesn't work because of missing sysfs pci resource files Zhang Le
2008-12-05 17:59 ` Arnaud Patard
2008-12-05 18:08   ` Ralf Baechle
2008-12-06 10:20 ` Ralf Baechle [this message]
2008-12-06 16:47   ` Zhang Le
2008-12-09 17:22     ` Zhang Le
2008-12-09 17:39       ` Zhang Le
2008-12-09 17:57         ` Ralf Baechle
2008-12-09 18:17   ` Arnaud Patard
2008-12-09 18:36     ` Ralf Baechle
2008-12-09 19:01       ` Arnaud Patard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081206102030.GA9410@linux-mips.org \
    --to=ralf@linux-mips.org \
    --cc=linux-mips@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox