On 00:10 Sat 28 Jun , Abdul Basit wrote:
>
> Hi Folks,
>
> I am trying to bring Xorg 7.x on PowerPC 440EPx Sequoia board, X is
> configured to use sisfb for video and the sisfb is loaded properly in
> kernel and registered as fb0, running X causes a machine check exception
> / BUS error by kernel.
>
> The reason for that is in :-
>
> xorg/xorg-server/hw/xfree86/os-support/linux/lnx_video.c:558
>
> X is doing the following :-
>
> ----
> ioBase_phys = syscall(__NR_pciconfig_iobase, 2, 0, 0);
> fd = open("/dev/mem", O_RDWR);
> if (ioBase == NULL) {
> ioBase = (volatile unsigned char *)mmap(0, 0x20000,
> PROT_READ | PROT_WRITE, MAP_SHARED,
> ioBase_phys);
> ----
Where do you pass the file descriptor to mmap?
> the pci I/O memory in my case is 36-bits but the CPU is 32-bits so the
> ioBase_phys is getting truncated as long is 32-bits and when later X try
> to write to this address causes a BUS error.
>
> Since i know the ioBase_phys address which is 0x1E8000000, I could hard
> code it but the mmap(..) offset size is 32-bits as well, so I could not
> pass it as an offset.
>
> How would i pass a large offset to mmap on PPC32? is there any other way
> to do it?
You can call mmap2 if the offset is a multiply of 4096. (see the manpage)
-Michi
--
programing a layer 3+4 network protocol for mesh networks
see http://michaelblizek.twilightparadox.com
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ