OSDN Git Service

Merge remote-tracking branch 'common/android-4.4' into android-4.4.y
authorDmitry Shmidt <dimitrysh@google.com>
Mon, 26 Sep 2016 19:54:41 +0000 (12:54 -0700)
committerDmitry Shmidt <dimitrysh@google.com>
Mon, 26 Sep 2016 21:58:53 +0000 (14:58 -0700)
Change-Id: I6c4e7f9f47392d4b334f71e2b20f2ccf33827632

17 files changed:
1  2 
Documentation/kernel-parameters.txt
arch/arm/kvm/arm.c
arch/arm64/Kconfig
arch/arm64/Makefile
arch/arm64/include/asm/cpufeature.h
arch/arm64/include/asm/elf.h
arch/arm64/include/asm/pgtable.h
arch/arm64/include/asm/spinlock.h
arch/arm64/kernel/cpu_errata.c
arch/arm64/kernel/cpuinfo.c
arch/arm64/kernel/smp.c
arch/arm64/mm/fault.c
arch/arm64/mm/mmu.c
arch/x86/Kconfig
arch/x86/mm/pageattr.c
include/asm-generic/vmlinux.lds.h
include/linux/efi.h

Simple merge
Simple merge
Simple merge
Simple merge
  #define ARM64_HAS_LSE_ATOMICS                 5
  #define ARM64_WORKAROUND_CAVIUM_23154         6
  #define ARM64_WORKAROUND_834220                       7
- #define ARM64_WORKAROUND_CAVIUM_27456         8
+ #define ARM64_HAS_NO_HW_PREFETCH              8
+ #define ARM64_HAS_UAO                         9
+ #define ARM64_ALT_PAN_NOT_UAO                 10
++#define ARM64_WORKAROUND_CAVIUM_27456         11
  
- #define ARM64_NCAPS                           9
 -#define ARM64_NCAPS                           11
++#define ARM64_NCAPS                           12
  
  #ifndef __ASSEMBLY__
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -697,21 -768,73 +771,73 @@@ void *__init __fixmap_remap_fdt(phys_ad
        dt_virt = (void *)dt_virt_base + offset;
  
        /* map the first chunk so we can read the size from the header */
-       create_mapping(round_down(dt_phys, SWAPPER_BLOCK_SIZE), dt_virt_base,
-                      SWAPPER_BLOCK_SIZE, prot);
+       create_mapping_noalloc(round_down(dt_phys, SWAPPER_BLOCK_SIZE),
+                       dt_virt_base, SWAPPER_BLOCK_SIZE, prot);
  
 -      if (fdt_check_header(dt_virt) != 0)
 +      if (fdt_magic(dt_virt) != FDT_MAGIC)
                return NULL;
  
-       size = fdt_totalsize(dt_virt);
-       if (size > MAX_FDT_SIZE)
+       *size = fdt_totalsize(dt_virt);
+       if (*size > MAX_FDT_SIZE)
                return NULL;
  
-       if (offset + size > SWAPPER_BLOCK_SIZE)
-               create_mapping(round_down(dt_phys, SWAPPER_BLOCK_SIZE), dt_virt_base,
-                              round_up(offset + size, SWAPPER_BLOCK_SIZE), prot);
+       if (offset + *size > SWAPPER_BLOCK_SIZE)
+               create_mapping_noalloc(round_down(dt_phys, SWAPPER_BLOCK_SIZE), dt_virt_base,
+                              round_up(offset + *size, SWAPPER_BLOCK_SIZE), prot);
  
-       memblock_reserve(dt_phys, size);
+       return dt_virt;
+ }
+ void *__init fixmap_remap_fdt(phys_addr_t dt_phys)
+ {
+       void *dt_virt;
+       int size;
  
+       dt_virt = __fixmap_remap_fdt(dt_phys, &size, PAGE_KERNEL_RO);
+       if (!dt_virt)
+               return NULL;
+       memblock_reserve(dt_phys, size);
        return dt_virt;
  }
+ int __init arch_ioremap_pud_supported(void)
+ {
+       /* only 4k granule supports level 1 block mappings */
+       return IS_ENABLED(CONFIG_ARM64_4K_PAGES);
+ }
+ int __init arch_ioremap_pmd_supported(void)
+ {
+       return 1;
+ }
+ int pud_set_huge(pud_t *pud, phys_addr_t phys, pgprot_t prot)
+ {
+       BUG_ON(phys & ~PUD_MASK);
+       set_pud(pud, __pud(phys | PUD_TYPE_SECT | pgprot_val(mk_sect_prot(prot))));
+       return 1;
+ }
+ int pmd_set_huge(pmd_t *pmd, phys_addr_t phys, pgprot_t prot)
+ {
+       BUG_ON(phys & ~PMD_MASK);
+       set_pmd(pmd, __pmd(phys | PMD_TYPE_SECT | pgprot_val(mk_sect_prot(prot))));
+       return 1;
+ }
+ int pud_clear_huge(pud_t *pud)
+ {
+       if (!pud_sect(*pud))
+               return 0;
+       pud_clear(pud);
+       return 1;
+ }
+ int pmd_clear_huge(pmd_t *pmd)
+ {
+       if (!pmd_sect(*pmd))
+               return 0;
+       pmd_clear(pmd);
+       return 1;
+ }
Simple merge
Simple merge
Simple merge
Simple merge