Problem with starting ORe

Alexander Valitov valitov79 at mail.ru
Mon Mar 2 17:16:45 CET 2009


Hi,


Björn Döbel wrote:
> 
> bad news: it works for me on my e1000 test machine and on Qemu.
> 

I'm sure it does as my binary ORe module works with another e1000 series
network card. It don't work with only one particular NIC type 8086:1076
(VendorID:DeviceID).

good news: I manage to get it running. It looks like problem was due to bug
in DDE library.

let's look at function ioremap() in file
/l4/pkg/dde/linux26/lib/src/arch/l4/res.c (revision 433):

void __iomem * ioremap(unsigned long phys_addr, unsigned long size)
{
	struct list_head *pos, *head;
	head = &dde_mem_regions;

	list_for_each(pos, head) {
		struct dde_mem_region *mreg = list_entry(pos, struct dde_mem_region,
		                                         list);
		if (mreg->pa >= phys_addr && mreg->pa + mreg->size > phys_addr)
			return (void *)(mreg->va + (phys_addr - mreg->pa));
	}

	return NULL;
}

I think that the following condition is wrong:
  if (mreg->pa >= phys_addr && mreg->pa + mreg->size > phys_addr)

I guess the right one is (so phys region is fully covered by DDE memory
region):
  if (mreg->pa <= phys_addr && mreg->pa + mreg->size > phys_addr)

When I fixed it, PF disappeared.
Here is a patch:
===================================================================
--- res.c       (revision 433)
+++ res.c       (working copy)
@@ -131,7 +131,7 @@
        list_for_each(pos, head) {
                struct dde_mem_region *mreg = list_entry(pos, struct
dde_mem_region,
                                                         list);
-               if (mreg->pa >= phys_addr && mreg->pa + mreg->size >
phys_addr)
+               if (mreg->pa <= phys_addr && mreg->pa + mreg->size >
phys_addr)
                        return (void *)(mreg->va + (phys_addr - mreg->pa));
        }

Did I miss something?
  Best Regards, Alexander Valitov

-- 
View this message in context: http://www.nabble.com/Problem-with-starting-ORe-tp22181637p22291127.html
Sent from the L4 mailing list archive at Nabble.com.





More information about the l4-hackers mailing list