Merge branch 'master' into for-next
Conflicts: MAINTAINERS arch/arm/mach-omap2/pm24xx.c drivers/scsi/bfa/bfa_fcpim.c Needed to update to apply fixes for which the old branch was too outdated.
This commit is contained in:
@@ -79,7 +79,7 @@ config 29BIT
|
||||
|
||||
config 32BIT
|
||||
bool
|
||||
default y if CPU_SH5
|
||||
default y if CPU_SH5 || !MMU
|
||||
|
||||
config PMB
|
||||
bool "Support 32-bit physical addressing through PMB"
|
||||
|
@@ -114,7 +114,7 @@ static void sh4_flush_dcache_page(void *arg)
|
||||
struct address_space *mapping = page_mapping(page);
|
||||
|
||||
if (mapping && !mapping_mapped(mapping))
|
||||
set_bit(PG_dcache_dirty, &page->flags);
|
||||
clear_bit(PG_dcache_clean, &page->flags);
|
||||
else
|
||||
#endif
|
||||
flush_cache_one(CACHE_OC_ADDRESS_ARRAY |
|
||||
@@ -239,7 +239,7 @@ static void sh4_flush_cache_page(void *args)
|
||||
* another ASID than the current one.
|
||||
*/
|
||||
map_coherent = (current_cpu_data.dcache.n_aliases &&
|
||||
!test_bit(PG_dcache_dirty, &page->flags) &&
|
||||
test_bit(PG_dcache_clean, &page->flags) &&
|
||||
page_mapped(page));
|
||||
if (map_coherent)
|
||||
vaddr = kmap_coherent(page, address);
|
||||
|
@@ -139,7 +139,7 @@ static void sh7705_flush_dcache_page(void *arg)
|
||||
struct address_space *mapping = page_mapping(page);
|
||||
|
||||
if (mapping && !mapping_mapped(mapping))
|
||||
set_bit(PG_dcache_dirty, &page->flags);
|
||||
clear_bit(PG_dcache_clean, &page->flags);
|
||||
else
|
||||
__flush_dcache_page(__pa(page_address(page)));
|
||||
}
|
||||
|
@@ -60,14 +60,14 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
|
||||
unsigned long len)
|
||||
{
|
||||
if (boot_cpu_data.dcache.n_aliases && page_mapped(page) &&
|
||||
!test_bit(PG_dcache_dirty, &page->flags)) {
|
||||
test_bit(PG_dcache_clean, &page->flags)) {
|
||||
void *vto = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);
|
||||
memcpy(vto, src, len);
|
||||
kunmap_coherent(vto);
|
||||
} else {
|
||||
memcpy(dst, src, len);
|
||||
if (boot_cpu_data.dcache.n_aliases)
|
||||
set_bit(PG_dcache_dirty, &page->flags);
|
||||
clear_bit(PG_dcache_clean, &page->flags);
|
||||
}
|
||||
|
||||
if (vma->vm_flags & VM_EXEC)
|
||||
@@ -79,14 +79,14 @@ void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
|
||||
unsigned long len)
|
||||
{
|
||||
if (boot_cpu_data.dcache.n_aliases && page_mapped(page) &&
|
||||
!test_bit(PG_dcache_dirty, &page->flags)) {
|
||||
test_bit(PG_dcache_clean, &page->flags)) {
|
||||
void *vfrom = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);
|
||||
memcpy(dst, vfrom, len);
|
||||
kunmap_coherent(vfrom);
|
||||
} else {
|
||||
memcpy(dst, src, len);
|
||||
if (boot_cpu_data.dcache.n_aliases)
|
||||
set_bit(PG_dcache_dirty, &page->flags);
|
||||
clear_bit(PG_dcache_clean, &page->flags);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ void copy_user_highpage(struct page *to, struct page *from,
|
||||
vto = kmap_atomic(to, KM_USER1);
|
||||
|
||||
if (boot_cpu_data.dcache.n_aliases && page_mapped(from) &&
|
||||
!test_bit(PG_dcache_dirty, &from->flags)) {
|
||||
test_bit(PG_dcache_clean, &from->flags)) {
|
||||
vfrom = kmap_coherent(from, vaddr);
|
||||
copy_page(vto, vfrom);
|
||||
kunmap_coherent(vfrom);
|
||||
@@ -141,7 +141,7 @@ void __update_cache(struct vm_area_struct *vma,
|
||||
|
||||
page = pfn_to_page(pfn);
|
||||
if (pfn_valid(pfn)) {
|
||||
int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags);
|
||||
int dirty = !test_and_set_bit(PG_dcache_clean, &page->flags);
|
||||
if (dirty)
|
||||
__flush_purge_region(page_address(page), PAGE_SIZE);
|
||||
}
|
||||
@@ -153,7 +153,7 @@ void __flush_anon_page(struct page *page, unsigned long vmaddr)
|
||||
|
||||
if (pages_do_alias(addr, vmaddr)) {
|
||||
if (boot_cpu_data.dcache.n_aliases && page_mapped(page) &&
|
||||
!test_bit(PG_dcache_dirty, &page->flags)) {
|
||||
test_bit(PG_dcache_clean, &page->flags)) {
|
||||
void *kaddr;
|
||||
|
||||
kaddr = kmap_coherent(page, vmaddr);
|
||||
|
@@ -79,21 +79,20 @@ void dma_generic_free_coherent(struct device *dev, size_t size,
|
||||
void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
|
||||
enum dma_data_direction direction)
|
||||
{
|
||||
#if defined(CONFIG_CPU_SH5) || defined(CONFIG_PMB)
|
||||
void *p1addr = vaddr;
|
||||
#else
|
||||
void *p1addr = (void*) P1SEGADDR((unsigned long)vaddr);
|
||||
#endif
|
||||
void *addr;
|
||||
|
||||
addr = __in_29bit_mode() ?
|
||||
(void *)P1SEGADDR((unsigned long)vaddr) : vaddr;
|
||||
|
||||
switch (direction) {
|
||||
case DMA_FROM_DEVICE: /* invalidate only */
|
||||
__flush_invalidate_region(p1addr, size);
|
||||
__flush_invalidate_region(addr, size);
|
||||
break;
|
||||
case DMA_TO_DEVICE: /* writeback only */
|
||||
__flush_wback_region(p1addr, size);
|
||||
__flush_wback_region(addr, size);
|
||||
break;
|
||||
case DMA_BIDIRECTIONAL: /* writeback and invalidate */
|
||||
__flush_purge_region(p1addr, size);
|
||||
__flush_purge_region(addr, size);
|
||||
break;
|
||||
default:
|
||||
BUG();
|
||||
|
@@ -34,7 +34,7 @@ void *kmap_coherent(struct page *page, unsigned long addr)
|
||||
enum fixed_addresses idx;
|
||||
unsigned long vaddr;
|
||||
|
||||
BUG_ON(test_bit(PG_dcache_dirty, &page->flags));
|
||||
BUG_ON(!test_bit(PG_dcache_clean, &page->flags));
|
||||
|
||||
pagefault_disable();
|
||||
|
||||
|
@@ -28,7 +28,7 @@ EXPORT_SYMBOL(virt_addr_uncached);
|
||||
|
||||
void __init uncached_init(void)
|
||||
{
|
||||
#ifdef CONFIG_29BIT
|
||||
#if defined(CONFIG_29BIT) || !defined(CONFIG_MMU)
|
||||
uncached_start = P2SEG;
|
||||
#else
|
||||
uncached_start = memory_end;
|
||||
|
Reference in New Issue
Block a user