Ühel kenal päeval, L, 2008-05-03 kell 05:31, kirjutas Mart Raudsepp:
* lxfb and Xorg does not work, probably no video memory setup: lxfb 0000:00:01.1: failed to map frame buffer or controller registers lxfb: probe of 0000:00:01.1 failed with error -12
Attached is a trivial patch to set up the video memory, but I still get no picture. Probably other setup problems causing trouble still. With video memory set up I get problems starting with no visual effect on loading lxfb module to a nice kernel oops loop on Xorg start.
Patch itself is probably good, I'm just not sure where the 8MB comes from and I don't know yet what this reserved memory is used for (just framebuffer, or other functions too, etc).
This also reminds me that I didn't notice a way in the current menuconfig to disable the muxed first UART to allow VGA DDC to work. That I believe should be configurable from Kconfig, but I might have overlooked something. Got reminded because i've had trouble without DDC on vm86 based xorg-server with geode driver before.
One difference with our working v2 code regarding video is that the video IRQ isn't shared, as they are given out more separately via Config/Options.lb. Not sure if that could matter, but that's one thing.
dmesg additions on "modprobe lxfb" after video memory patch:
PCI: Guessed IRQ 11 for device 0000:00:01.1 PCI: Sharing IRQ 11 with 0000:00:01.2 PCI: Sharing IRQ 11 with 0000:00:0f.1 lxfb 0000:00:01.1: 8192 KB of video memory at 0xfd000000 fb0: Geode LX frame buffer device
Start of kernel spew I found from my serial console quite some time later on after starting X and sitting in a freeze (there are some 50 pages more, probably got into a loop on pdflush problems - not pasted here - more textual content in the end):
Oops: 0000 [#1] PREEMPT Modules linked in: lxfb fb cfbcopyarea cfbimgblt cfbfillrect geode_aes crypto_blkcipher crypto_algapi via_velocity
Pid: 3162, comm: X Not tainted (2.6.25-gentoo-r1 #4) EIP: 0060:[<c027210a>] EFLAGS: 00010282 CPU: 0 EIP is at do_mpage_readpage+0x15/0x3e1 EAX: 00000000 EBX: 0000013c ECX: 00000001 EDX: c10252c0 ESI: 00000000 EDI: c10252c0 EBP: ce609d6c ESP: ce609d10 DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068 Process X (pid: 3162, ti=ce608000 task=cf02a070 task.ti=ce608000) Stack: ce609d4c 00000000 ce609d30 00000001 c10252c0 00000000 00000001 00000000 ce609d38 c025e210 ce609d4c c025fbcd c03c7a38 cecc1534 cec0b430 ce609d64 c028b8b4 00000000 cecc1534 cecc1534 0000013c 00000000 c10252c0 ce609dc0 Call Trace: [<c025e210>] ? d_rehash+0x16/0x42 [<c025fbcd>] ? d_splice_alias+0xd0/0xd9 [<c028b8b4>] ? ext3_lookup+0x7b/0xa2 [<c027250a>] ? mpage_readpage+0x34/0x48 [<c0288269>] ? ext3_get_block+0x0/0xb8 [<c025654c>] ? path_put+0x0/0x23 [<c0258225>] ? __link_path_walk+0xc68/0xc7f [<c0235d8e>] ? find_lock_page+0x26/0x9c [<c0287a94>] ? ext3_readpage+0xf/0x11 [<c0236567>] ? filemap_fault+0x310/0x351 [<c02582c9>] ? path_walk+0x8d/0x96 [<c023fd2d>] ? __do_fault+0x4f/0x304 [<c02411ec>] ? handle_mm_fault+0x235/0x4f2 [<c020cd7e>] ? do_page_fault+0x238/0x5e2 [<c03911c4>] ? unix_stream_connect+0x362/0x38e [<c0342249>] ? sys_connect+0x54/0x71 [<c03424c9>] ? sock_map_fd+0x45/0x4f [<c03434bb>] ? sys_socketcall+0x6f/0x168 [<c020cb46>] ? do_page_fault+0x0/0x5e2 [<c03bb2ba>] ? error_code+0x6a/0x70 ======================= Code: 58 85 d2 74 0a b8 01 00 00 00 e8 da f9 ff ff 89 d8 8b 5d fc c9 c3 55 89 e5 57 56 53 83 ec 50 89 45 b8 89 55 b4 89 4d b0 8b 42 10 <8b> 0 EIP: [<c027210a>] do_mpage_readpage+0x15/0x3e1 SS:ESP 0068:ce609d10 ---[ end trace c55b15462a99792c ]--- Eeek! page_mapcount(page) went negative! (-1807219968) page pfn = 1280 page->flags = 98393bc4 page->count = 2000000 page->mapping = 00000000 vma->vm_ops = generic_file_vm_ops+0x0/0x18 vma->vm_ops->nopage = 0x0 vma->vm_ops->fault = filemap_fault+0x0/0x351 vma->vm_file->f_op->mmap = generic_file_mmap+0x0/0x3f ------------[ cut here ]------------ kernel BUG at mm/rmap.c:669! invalid opcode: 0000 [#2] PREEMPT
Feels very much like more setup work is necessary. I think getting the other USB ports to give power (e.g light up an optical mouse) might be a good start.
Regards, Mart Raudsepp