diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/boot/dts/atlas6.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/prima2.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/memory.h | 6 | ||||
-rw-r--r-- | arch/arm/mach-iop13xx/setup.c | 3 | ||||
-rw-r--r-- | arch/arm/mm/init.c | 58 | ||||
-rw-r--r-- | arch/arm/plat-iop/adma.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-orion/common.c | 10 |
7 files changed, 9 insertions, 74 deletions
diff --git a/arch/arm/boot/dts/atlas6.dtsi b/arch/arm/boot/dts/atlas6.dtsi index 7d1a27949c13..9866cd736dee 100644 --- a/arch/arm/boot/dts/atlas6.dtsi +++ b/arch/arm/boot/dts/atlas6.dtsi | |||
@@ -613,7 +613,7 @@ | |||
613 | }; | 613 | }; |
614 | 614 | ||
615 | rtc-iobg { | 615 | rtc-iobg { |
616 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus"; | 616 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus", "simple-bus"; |
617 | #address-cells = <1>; | 617 | #address-cells = <1>; |
618 | #size-cells = <1>; | 618 | #size-cells = <1>; |
619 | reg = <0x80030000 0x10000>; | 619 | reg = <0x80030000 0x10000>; |
diff --git a/arch/arm/boot/dts/prima2.dtsi b/arch/arm/boot/dts/prima2.dtsi index 02edd8965f8a..05e9489cf95c 100644 --- a/arch/arm/boot/dts/prima2.dtsi +++ b/arch/arm/boot/dts/prima2.dtsi | |||
@@ -610,7 +610,7 @@ | |||
610 | }; | 610 | }; |
611 | 611 | ||
612 | rtc-iobg { | 612 | rtc-iobg { |
613 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus"; | 613 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus", "simple-bus"; |
614 | #address-cells = <1>; | 614 | #address-cells = <1>; |
615 | #size-cells = <1>; | 615 | #size-cells = <1>; |
616 | reg = <0x80030000 0x10000>; | 616 | reg = <0x80030000 0x10000>; |
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h index 584786f740f9..e750a938fd3c 100644 --- a/arch/arm/include/asm/memory.h +++ b/arch/arm/include/asm/memory.h | |||
@@ -276,12 +276,6 @@ static inline __deprecated void *bus_to_virt(unsigned long x) | |||
276 | /* | 276 | /* |
277 | * Conversion between a struct page and a physical address. | 277 | * Conversion between a struct page and a physical address. |
278 | * | 278 | * |
279 | * Note: when converting an unknown physical address to a | ||
280 | * struct page, the resulting pointer must be validated | ||
281 | * using VALID_PAGE(). It must return an invalid struct page | ||
282 | * for any physical address not corresponding to a system | ||
283 | * RAM address. | ||
284 | * | ||
285 | * page_to_pfn(page) convert a struct page * to a PFN number | 279 | * page_to_pfn(page) convert a struct page * to a PFN number |
286 | * pfn_to_page(pfn) convert a _valid_ PFN number to struct page * | 280 | * pfn_to_page(pfn) convert a _valid_ PFN number to struct page * |
287 | * | 281 | * |
diff --git a/arch/arm/mach-iop13xx/setup.c b/arch/arm/mach-iop13xx/setup.c index 3181f61ea63e..1c5bd7637b05 100644 --- a/arch/arm/mach-iop13xx/setup.c +++ b/arch/arm/mach-iop13xx/setup.c | |||
@@ -469,7 +469,6 @@ void __init iop13xx_platform_init(void) | |||
469 | dma_cap_set(DMA_MEMCPY, plat_data->cap_mask); | 469 | dma_cap_set(DMA_MEMCPY, plat_data->cap_mask); |
470 | dma_cap_set(DMA_XOR, plat_data->cap_mask); | 470 | dma_cap_set(DMA_XOR, plat_data->cap_mask); |
471 | dma_cap_set(DMA_XOR_VAL, plat_data->cap_mask); | 471 | dma_cap_set(DMA_XOR_VAL, plat_data->cap_mask); |
472 | dma_cap_set(DMA_MEMSET, plat_data->cap_mask); | ||
473 | dma_cap_set(DMA_INTERRUPT, plat_data->cap_mask); | 472 | dma_cap_set(DMA_INTERRUPT, plat_data->cap_mask); |
474 | break; | 473 | break; |
475 | case IOP13XX_INIT_ADMA_1: | 474 | case IOP13XX_INIT_ADMA_1: |
@@ -479,7 +478,6 @@ void __init iop13xx_platform_init(void) | |||
479 | dma_cap_set(DMA_MEMCPY, plat_data->cap_mask); | 478 | dma_cap_set(DMA_MEMCPY, plat_data->cap_mask); |
480 | dma_cap_set(DMA_XOR, plat_data->cap_mask); | 479 | dma_cap_set(DMA_XOR, plat_data->cap_mask); |
481 | dma_cap_set(DMA_XOR_VAL, plat_data->cap_mask); | 480 | dma_cap_set(DMA_XOR_VAL, plat_data->cap_mask); |
482 | dma_cap_set(DMA_MEMSET, plat_data->cap_mask); | ||
483 | dma_cap_set(DMA_INTERRUPT, plat_data->cap_mask); | 481 | dma_cap_set(DMA_INTERRUPT, plat_data->cap_mask); |
484 | break; | 482 | break; |
485 | case IOP13XX_INIT_ADMA_2: | 483 | case IOP13XX_INIT_ADMA_2: |
@@ -489,7 +487,6 @@ void __init iop13xx_platform_init(void) | |||
489 | dma_cap_set(DMA_MEMCPY, plat_data->cap_mask); | 487 | dma_cap_set(DMA_MEMCPY, plat_data->cap_mask); |
490 | dma_cap_set(DMA_XOR, plat_data->cap_mask); | 488 | dma_cap_set(DMA_XOR, plat_data->cap_mask); |
491 | dma_cap_set(DMA_XOR_VAL, plat_data->cap_mask); | 489 | dma_cap_set(DMA_XOR_VAL, plat_data->cap_mask); |
492 | dma_cap_set(DMA_MEMSET, plat_data->cap_mask); | ||
493 | dma_cap_set(DMA_INTERRUPT, plat_data->cap_mask); | 490 | dma_cap_set(DMA_INTERRUPT, plat_data->cap_mask); |
494 | dma_cap_set(DMA_PQ, plat_data->cap_mask); | 491 | dma_cap_set(DMA_PQ, plat_data->cap_mask); |
495 | dma_cap_set(DMA_PQ_VAL, plat_data->cap_mask); | 492 | dma_cap_set(DMA_PQ_VAL, plat_data->cap_mask); |
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 2ffee02d1d5c..6833cbead6cc 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -583,9 +583,6 @@ static void __init free_highpages(void) | |||
583 | */ | 583 | */ |
584 | void __init mem_init(void) | 584 | void __init mem_init(void) |
585 | { | 585 | { |
586 | unsigned long reserved_pages, free_pages; | ||
587 | struct memblock_region *reg; | ||
588 | int i; | ||
589 | #ifdef CONFIG_HAVE_TCM | 586 | #ifdef CONFIG_HAVE_TCM |
590 | /* These pointers are filled in on TCM detection */ | 587 | /* These pointers are filled in on TCM detection */ |
591 | extern u32 dtcm_end; | 588 | extern u32 dtcm_end; |
@@ -596,57 +593,16 @@ void __init mem_init(void) | |||
596 | 593 | ||
597 | /* this will put all unused low memory onto the freelists */ | 594 | /* this will put all unused low memory onto the freelists */ |
598 | free_unused_memmap(&meminfo); | 595 | free_unused_memmap(&meminfo); |
599 | 596 | free_all_bootmem(); | |
600 | totalram_pages += free_all_bootmem(); | ||
601 | 597 | ||
602 | #ifdef CONFIG_SA1111 | 598 | #ifdef CONFIG_SA1111 |
603 | /* now that our DMA memory is actually so designated, we can free it */ | 599 | /* now that our DMA memory is actually so designated, we can free it */ |
604 | free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL); | 600 | free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, -1, NULL); |
605 | #endif | 601 | #endif |
606 | 602 | ||
607 | free_highpages(); | 603 | free_highpages(); |
608 | 604 | ||
609 | reserved_pages = free_pages = 0; | 605 | mem_init_print_info(NULL); |
610 | |||
611 | for_each_bank(i, &meminfo) { | ||
612 | struct membank *bank = &meminfo.bank[i]; | ||
613 | unsigned int pfn1, pfn2; | ||
614 | struct page *page, *end; | ||
615 | |||
616 | pfn1 = bank_pfn_start(bank); | ||
617 | pfn2 = bank_pfn_end(bank); | ||
618 | |||
619 | page = pfn_to_page(pfn1); | ||
620 | end = pfn_to_page(pfn2 - 1) + 1; | ||
621 | |||
622 | do { | ||
623 | if (PageReserved(page)) | ||
624 | reserved_pages++; | ||
625 | else if (!page_count(page)) | ||
626 | free_pages++; | ||
627 | page++; | ||
628 | } while (page < end); | ||
629 | } | ||
630 | |||
631 | /* | ||
632 | * Since our memory may not be contiguous, calculate the | ||
633 | * real number of pages we have in this system | ||
634 | */ | ||
635 | printk(KERN_INFO "Memory:"); | ||
636 | num_physpages = 0; | ||
637 | for_each_memblock(memory, reg) { | ||
638 | unsigned long pages = memblock_region_memory_end_pfn(reg) - | ||
639 | memblock_region_memory_base_pfn(reg); | ||
640 | num_physpages += pages; | ||
641 | printk(" %ldMB", pages >> (20 - PAGE_SHIFT)); | ||
642 | } | ||
643 | printk(" = %luMB total\n", num_physpages >> (20 - PAGE_SHIFT)); | ||
644 | |||
645 | printk(KERN_NOTICE "Memory: %luk/%luk available, %luk reserved, %luK highmem\n", | ||
646 | nr_free_pages() << (PAGE_SHIFT-10), | ||
647 | free_pages << (PAGE_SHIFT-10), | ||
648 | reserved_pages << (PAGE_SHIFT-10), | ||
649 | totalhigh_pages << (PAGE_SHIFT-10)); | ||
650 | 606 | ||
651 | #define MLK(b, t) b, t, ((t) - (b)) >> 10 | 607 | #define MLK(b, t) b, t, ((t) - (b)) >> 10 |
652 | #define MLM(b, t) b, t, ((t) - (b)) >> 20 | 608 | #define MLM(b, t) b, t, ((t) - (b)) >> 20 |
@@ -712,7 +668,7 @@ void __init mem_init(void) | |||
712 | BUG_ON(PKMAP_BASE + LAST_PKMAP * PAGE_SIZE > PAGE_OFFSET); | 668 | BUG_ON(PKMAP_BASE + LAST_PKMAP * PAGE_SIZE > PAGE_OFFSET); |
713 | #endif | 669 | #endif |
714 | 670 | ||
715 | if (PAGE_SIZE >= 16384 && num_physpages <= 128) { | 671 | if (PAGE_SIZE >= 16384 && get_num_physpages() <= 128) { |
716 | extern int sysctl_overcommit_memory; | 672 | extern int sysctl_overcommit_memory; |
717 | /* | 673 | /* |
718 | * On a machine this small we won't get | 674 | * On a machine this small we won't get |
@@ -729,12 +685,12 @@ void free_initmem(void) | |||
729 | extern char __tcm_start, __tcm_end; | 685 | extern char __tcm_start, __tcm_end; |
730 | 686 | ||
731 | poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start); | 687 | poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start); |
732 | free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link"); | 688 | free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link"); |
733 | #endif | 689 | #endif |
734 | 690 | ||
735 | poison_init_mem(__init_begin, __init_end - __init_begin); | 691 | poison_init_mem(__init_begin, __init_end - __init_begin); |
736 | if (!machine_is_integrator() && !machine_is_cintegrator()) | 692 | if (!machine_is_integrator() && !machine_is_cintegrator()) |
737 | free_initmem_default(0); | 693 | free_initmem_default(-1); |
738 | } | 694 | } |
739 | 695 | ||
740 | #ifdef CONFIG_BLK_DEV_INITRD | 696 | #ifdef CONFIG_BLK_DEV_INITRD |
@@ -745,7 +701,7 @@ void free_initrd_mem(unsigned long start, unsigned long end) | |||
745 | { | 701 | { |
746 | if (!keep_initrd) { | 702 | if (!keep_initrd) { |
747 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); | 703 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); |
748 | free_reserved_area(start, end, 0, "initrd"); | 704 | free_reserved_area((void *)start, (void *)end, -1, "initrd"); |
749 | } | 705 | } |
750 | } | 706 | } |
751 | 707 | ||
diff --git a/arch/arm/plat-iop/adma.c b/arch/arm/plat-iop/adma.c index 1ff6a37e893c..a4d1f8de3b5b 100644 --- a/arch/arm/plat-iop/adma.c +++ b/arch/arm/plat-iop/adma.c | |||
@@ -192,12 +192,10 @@ static int __init iop3xx_adma_cap_init(void) | |||
192 | 192 | ||
193 | #ifdef CONFIG_ARCH_IOP32X /* the 32x AAU does not perform zero sum */ | 193 | #ifdef CONFIG_ARCH_IOP32X /* the 32x AAU does not perform zero sum */ |
194 | dma_cap_set(DMA_XOR, iop3xx_aau_data.cap_mask); | 194 | dma_cap_set(DMA_XOR, iop3xx_aau_data.cap_mask); |
195 | dma_cap_set(DMA_MEMSET, iop3xx_aau_data.cap_mask); | ||
196 | dma_cap_set(DMA_INTERRUPT, iop3xx_aau_data.cap_mask); | 195 | dma_cap_set(DMA_INTERRUPT, iop3xx_aau_data.cap_mask); |
197 | #else | 196 | #else |
198 | dma_cap_set(DMA_XOR, iop3xx_aau_data.cap_mask); | 197 | dma_cap_set(DMA_XOR, iop3xx_aau_data.cap_mask); |
199 | dma_cap_set(DMA_XOR_VAL, iop3xx_aau_data.cap_mask); | 198 | dma_cap_set(DMA_XOR_VAL, iop3xx_aau_data.cap_mask); |
200 | dma_cap_set(DMA_MEMSET, iop3xx_aau_data.cap_mask); | ||
201 | dma_cap_set(DMA_INTERRUPT, iop3xx_aau_data.cap_mask); | 199 | dma_cap_set(DMA_INTERRUPT, iop3xx_aau_data.cap_mask); |
202 | #endif | 200 | #endif |
203 | 201 | ||
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c index c019b7aaf776..c66d163d7a2a 100644 --- a/arch/arm/plat-orion/common.c +++ b/arch/arm/plat-orion/common.c | |||
@@ -666,14 +666,9 @@ void __init orion_xor0_init(unsigned long mapbase_low, | |||
666 | orion_xor0_shared_resources[3].start = irq_1; | 666 | orion_xor0_shared_resources[3].start = irq_1; |
667 | orion_xor0_shared_resources[3].end = irq_1; | 667 | orion_xor0_shared_resources[3].end = irq_1; |
668 | 668 | ||
669 | /* | ||
670 | * two engines can't do memset simultaneously, this limitation | ||
671 | * satisfied by removing memset support from one of the engines. | ||
672 | */ | ||
673 | dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[0].cap_mask); | 669 | dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[0].cap_mask); |
674 | dma_cap_set(DMA_XOR, orion_xor0_channels_data[0].cap_mask); | 670 | dma_cap_set(DMA_XOR, orion_xor0_channels_data[0].cap_mask); |
675 | 671 | ||
676 | dma_cap_set(DMA_MEMSET, orion_xor0_channels_data[1].cap_mask); | ||
677 | dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[1].cap_mask); | 672 | dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[1].cap_mask); |
678 | dma_cap_set(DMA_XOR, orion_xor0_channels_data[1].cap_mask); | 673 | dma_cap_set(DMA_XOR, orion_xor0_channels_data[1].cap_mask); |
679 | 674 | ||
@@ -732,14 +727,9 @@ void __init orion_xor1_init(unsigned long mapbase_low, | |||
732 | orion_xor1_shared_resources[3].start = irq_1; | 727 | orion_xor1_shared_resources[3].start = irq_1; |
733 | orion_xor1_shared_resources[3].end = irq_1; | 728 | orion_xor1_shared_resources[3].end = irq_1; |
734 | 729 | ||
735 | /* | ||
736 | * two engines can't do memset simultaneously, this limitation | ||
737 | * satisfied by removing memset support from one of the engines. | ||
738 | */ | ||
739 | dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[0].cap_mask); | 730 | dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[0].cap_mask); |
740 | dma_cap_set(DMA_XOR, orion_xor1_channels_data[0].cap_mask); | 731 | dma_cap_set(DMA_XOR, orion_xor1_channels_data[0].cap_mask); |
741 | 732 | ||
742 | dma_cap_set(DMA_MEMSET, orion_xor1_channels_data[1].cap_mask); | ||
743 | dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[1].cap_mask); | 733 | dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[1].cap_mask); |
744 | dma_cap_set(DMA_XOR, orion_xor1_channels_data[1].cap_mask); | 734 | dma_cap_set(DMA_XOR, orion_xor1_channels_data[1].cap_mask); |
745 | 735 | ||