Is anyone running my 4311 rev 02 patches? If so, I need some help.

It appears that I have found either a hardware error with my copy of that card, 
or there is an error
in the ucode13 firmware. Between 2.6.24-rc2 and -rc3, code that resulted in the 
Descriptor Address
Rings having low addresses was removed. At that point, my card failed with a 
DMA error. When the
ring buffer is forced to a low address by requesting it with the GFP_DMA flag, 
then the card works.
Note that the data buffers for DMA are still at high addresses - only the ring 
buffer is low.

If you are using my patch, the card is working,  and 'uname -r' results in 
2.6.24-rc3, please let me
know. If you kernel version is 2.6.24-rc2 or earlier, please apply the attached 
patch and report
your findings.

Thanks,

Larry
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index da69d83..12376ae 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -749,23 +749,6 @@ int move_freepages_block(struct zone *zone, struct page 
*page, int migratetype)
        return move_freepages(zone, start_page, end_page, migratetype);
 }
 
-/* Return the page with the lowest PFN in the list */
-static struct page *min_page(struct list_head *list)
-{
-       unsigned long min_pfn = -1UL;
-       struct page *min_page = NULL, *page;;
-
-       list_for_each_entry(page, list, lru) {
-               unsigned long pfn = page_to_pfn(page);
-               if (pfn < min_pfn) {
-                       min_pfn = pfn;
-                       min_page = page;
-               }
-       }
-
-       return min_page;
-}
-
 /* Remove an element from the buddy allocator from the fallback list */
 static struct page *__rmqueue_fallback(struct zone *zone, int order,
                                                int start_migratetype)
@@ -789,11 +772,8 @@ static struct page *__rmqueue_fallback(struct zone *zone, 
int order,
                        if (list_empty(&area->free_list[migratetype]))
                                continue;
 
-                       /* Bias kernel allocations towards low pfns */
                        page = list_entry(area->free_list[migratetype].next,
                                        struct page, lru);
-                       if (unlikely(start_migratetype != MIGRATE_MOVABLE))
-                               page = min_page(&area->free_list[migratetype]);
                        area->nr_free--;
 
                        /*
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to