diff options
author | Takashi Iwai <tiwai@suse.de> | 2014-11-17 16:16:03 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-11-17 16:16:03 -0500 |
commit | 39ae97ea4b773be81bae9eec08ed1e5c53606c1a (patch) | |
tree | 4d55635fb46a86b970c1491cc529eb2770bf3076 /arch/arm64 | |
parent | a358a0ef861dae6f8330fb034aaa43adae71ebc1 (diff) | |
parent | cf9a7f7823c67243da44da2ac47ca944a3108282 (diff) |
Merge tag 'asoc-v3.18-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v3.18
As well as the usual driver fixes there's a few other things here:
One is a fix for a race in DPCM which is unfortuantely a rather large
diffstat, this is the result of growing usage of the mainline code and
hence more detailed testing so I'm relatively happy.
The other is a fix for non-DT machine driver matching following some of
the componentization work which is much more focused.
Both have had a while to cook in -next.
Diffstat (limited to 'arch/arm64')
-rw-r--r-- | arch/arm64/boot/dts/apm-storm.dtsi | 10 | ||||
-rw-r--r-- | arch/arm64/configs/defconfig | 26 | ||||
-rw-r--r-- | arch/arm64/include/asm/memory.h | 2 | ||||
-rw-r--r-- | arch/arm64/include/asm/unistd32.h | 2 | ||||
-rw-r--r-- | arch/arm64/kernel/efi-entry.S | 27 | ||||
-rw-r--r-- | arch/arm64/kernel/insn.c | 5 | ||||
-rw-r--r-- | arch/arm64/kernel/psci.c | 2 | ||||
-rw-r--r-- | arch/arm64/lib/clear_user.S | 2 | ||||
-rw-r--r-- | arch/arm64/mm/mmu.c | 2 |
9 files changed, 59 insertions, 19 deletions
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi index 295c72d52a1f..f1ad9c2ab2e9 100644 --- a/arch/arm64/boot/dts/apm-storm.dtsi +++ b/arch/arm64/boot/dts/apm-storm.dtsi | |||
@@ -599,7 +599,7 @@ | |||
599 | compatible = "apm,xgene-enet"; | 599 | compatible = "apm,xgene-enet"; |
600 | status = "disabled"; | 600 | status = "disabled"; |
601 | reg = <0x0 0x17020000 0x0 0xd100>, | 601 | reg = <0x0 0x17020000 0x0 0xd100>, |
602 | <0x0 0X17030000 0x0 0X400>, | 602 | <0x0 0X17030000 0x0 0Xc300>, |
603 | <0x0 0X10000000 0x0 0X200>; | 603 | <0x0 0X10000000 0x0 0X200>; |
604 | reg-names = "enet_csr", "ring_csr", "ring_cmd"; | 604 | reg-names = "enet_csr", "ring_csr", "ring_cmd"; |
605 | interrupts = <0x0 0x3c 0x4>; | 605 | interrupts = <0x0 0x3c 0x4>; |
@@ -624,9 +624,9 @@ | |||
624 | sgenet0: ethernet@1f210000 { | 624 | sgenet0: ethernet@1f210000 { |
625 | compatible = "apm,xgene-enet"; | 625 | compatible = "apm,xgene-enet"; |
626 | status = "disabled"; | 626 | status = "disabled"; |
627 | reg = <0x0 0x1f210000 0x0 0x10000>, | 627 | reg = <0x0 0x1f210000 0x0 0xd100>, |
628 | <0x0 0x1f200000 0x0 0X10000>, | 628 | <0x0 0x1f200000 0x0 0Xc300>, |
629 | <0x0 0x1B000000 0x0 0X20000>; | 629 | <0x0 0x1B000000 0x0 0X200>; |
630 | reg-names = "enet_csr", "ring_csr", "ring_cmd"; | 630 | reg-names = "enet_csr", "ring_csr", "ring_cmd"; |
631 | interrupts = <0x0 0xA0 0x4>; | 631 | interrupts = <0x0 0xA0 0x4>; |
632 | dma-coherent; | 632 | dma-coherent; |
@@ -639,7 +639,7 @@ | |||
639 | compatible = "apm,xgene-enet"; | 639 | compatible = "apm,xgene-enet"; |
640 | status = "disabled"; | 640 | status = "disabled"; |
641 | reg = <0x0 0x1f610000 0x0 0xd100>, | 641 | reg = <0x0 0x1f610000 0x0 0xd100>, |
642 | <0x0 0x1f600000 0x0 0X400>, | 642 | <0x0 0x1f600000 0x0 0Xc300>, |
643 | <0x0 0x18000000 0x0 0X200>; | 643 | <0x0 0x18000000 0x0 0X200>; |
644 | reg-names = "enet_csr", "ring_csr", "ring_cmd"; | 644 | reg-names = "enet_csr", "ring_csr", "ring_cmd"; |
645 | interrupts = <0x0 0x60 0x4>; | 645 | interrupts = <0x0 0x60 0x4>; |
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 4ce602c2c6de..dd301be89ecc 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig | |||
@@ -35,6 +35,9 @@ CONFIG_MODULE_UNLOAD=y | |||
35 | CONFIG_ARCH_THUNDER=y | 35 | CONFIG_ARCH_THUNDER=y |
36 | CONFIG_ARCH_VEXPRESS=y | 36 | CONFIG_ARCH_VEXPRESS=y |
37 | CONFIG_ARCH_XGENE=y | 37 | CONFIG_ARCH_XGENE=y |
38 | CONFIG_PCI=y | ||
39 | CONFIG_PCI_MSI=y | ||
40 | CONFIG_PCI_XGENE=y | ||
38 | CONFIG_SMP=y | 41 | CONFIG_SMP=y |
39 | CONFIG_PREEMPT=y | 42 | CONFIG_PREEMPT=y |
40 | CONFIG_KSM=y | 43 | CONFIG_KSM=y |
@@ -52,6 +55,7 @@ CONFIG_IP_PNP_DHCP=y | |||
52 | CONFIG_IP_PNP_BOOTP=y | 55 | CONFIG_IP_PNP_BOOTP=y |
53 | # CONFIG_INET_LRO is not set | 56 | # CONFIG_INET_LRO is not set |
54 | # CONFIG_IPV6 is not set | 57 | # CONFIG_IPV6 is not set |
58 | CONFIG_BPF_JIT=y | ||
55 | # CONFIG_WIRELESS is not set | 59 | # CONFIG_WIRELESS is not set |
56 | CONFIG_NET_9P=y | 60 | CONFIG_NET_9P=y |
57 | CONFIG_NET_9P_VIRTIO=y | 61 | CONFIG_NET_9P_VIRTIO=y |
@@ -65,16 +69,17 @@ CONFIG_VIRTIO_BLK=y | |||
65 | CONFIG_BLK_DEV_SD=y | 69 | CONFIG_BLK_DEV_SD=y |
66 | # CONFIG_SCSI_LOWLEVEL is not set | 70 | # CONFIG_SCSI_LOWLEVEL is not set |
67 | CONFIG_ATA=y | 71 | CONFIG_ATA=y |
72 | CONFIG_SATA_AHCI=y | ||
73 | CONFIG_SATA_AHCI_PLATFORM=y | ||
68 | CONFIG_AHCI_XGENE=y | 74 | CONFIG_AHCI_XGENE=y |
69 | CONFIG_PHY_XGENE=y | ||
70 | CONFIG_PATA_PLATFORM=y | 75 | CONFIG_PATA_PLATFORM=y |
71 | CONFIG_PATA_OF_PLATFORM=y | 76 | CONFIG_PATA_OF_PLATFORM=y |
72 | CONFIG_NETDEVICES=y | 77 | CONFIG_NETDEVICES=y |
73 | CONFIG_TUN=y | 78 | CONFIG_TUN=y |
74 | CONFIG_VIRTIO_NET=y | 79 | CONFIG_VIRTIO_NET=y |
80 | CONFIG_NET_XGENE=y | ||
75 | CONFIG_SMC91X=y | 81 | CONFIG_SMC91X=y |
76 | CONFIG_SMSC911X=y | 82 | CONFIG_SMSC911X=y |
77 | CONFIG_NET_XGENE=y | ||
78 | # CONFIG_WLAN is not set | 83 | # CONFIG_WLAN is not set |
79 | CONFIG_INPUT_EVDEV=y | 84 | CONFIG_INPUT_EVDEV=y |
80 | # CONFIG_SERIO_SERPORT is not set | 85 | # CONFIG_SERIO_SERPORT is not set |
@@ -87,6 +92,11 @@ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | |||
87 | CONFIG_SERIAL_OF_PLATFORM=y | 92 | CONFIG_SERIAL_OF_PLATFORM=y |
88 | CONFIG_VIRTIO_CONSOLE=y | 93 | CONFIG_VIRTIO_CONSOLE=y |
89 | # CONFIG_HW_RANDOM is not set | 94 | # CONFIG_HW_RANDOM is not set |
95 | # CONFIG_HMC_DRV is not set | ||
96 | CONFIG_SPI=y | ||
97 | CONFIG_SPI_PL022=y | ||
98 | CONFIG_GPIO_PL061=y | ||
99 | CONFIG_GPIO_XGENE=y | ||
90 | # CONFIG_HWMON is not set | 100 | # CONFIG_HWMON is not set |
91 | CONFIG_REGULATOR=y | 101 | CONFIG_REGULATOR=y |
92 | CONFIG_REGULATOR_FIXED_VOLTAGE=y | 102 | CONFIG_REGULATOR_FIXED_VOLTAGE=y |
@@ -97,13 +107,25 @@ CONFIG_LOGO=y | |||
97 | # CONFIG_LOGO_LINUX_MONO is not set | 107 | # CONFIG_LOGO_LINUX_MONO is not set |
98 | # CONFIG_LOGO_LINUX_VGA16 is not set | 108 | # CONFIG_LOGO_LINUX_VGA16 is not set |
99 | CONFIG_USB=y | 109 | CONFIG_USB=y |
110 | CONFIG_USB_EHCI_HCD=y | ||
111 | CONFIG_USB_EHCI_HCD_PLATFORM=y | ||
100 | CONFIG_USB_ISP1760_HCD=y | 112 | CONFIG_USB_ISP1760_HCD=y |
113 | CONFIG_USB_OHCI_HCD=y | ||
114 | CONFIG_USB_OHCI_HCD_PLATFORM=y | ||
101 | CONFIG_USB_STORAGE=y | 115 | CONFIG_USB_STORAGE=y |
116 | CONFIG_USB_ULPI=y | ||
102 | CONFIG_MMC=y | 117 | CONFIG_MMC=y |
103 | CONFIG_MMC_ARMMMCI=y | 118 | CONFIG_MMC_ARMMMCI=y |
119 | CONFIG_MMC_SDHCI=y | ||
120 | CONFIG_MMC_SDHCI_PLTFM=y | ||
121 | CONFIG_MMC_SPI=y | ||
122 | CONFIG_RTC_CLASS=y | ||
123 | CONFIG_RTC_DRV_EFI=y | ||
124 | CONFIG_RTC_DRV_XGENE=y | ||
104 | CONFIG_VIRTIO_BALLOON=y | 125 | CONFIG_VIRTIO_BALLOON=y |
105 | CONFIG_VIRTIO_MMIO=y | 126 | CONFIG_VIRTIO_MMIO=y |
106 | # CONFIG_IOMMU_SUPPORT is not set | 127 | # CONFIG_IOMMU_SUPPORT is not set |
128 | CONFIG_PHY_XGENE=y | ||
107 | CONFIG_EXT2_FS=y | 129 | CONFIG_EXT2_FS=y |
108 | CONFIG_EXT3_FS=y | 130 | CONFIG_EXT3_FS=y |
109 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 131 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h index ccc7087d3c4e..a62cd077457b 100644 --- a/arch/arm64/include/asm/memory.h +++ b/arch/arm64/include/asm/memory.h | |||
@@ -142,7 +142,7 @@ static inline void *phys_to_virt(phys_addr_t x) | |||
142 | * virt_to_page(k) convert a _valid_ virtual address to struct page * | 142 | * virt_to_page(k) convert a _valid_ virtual address to struct page * |
143 | * virt_addr_valid(k) indicates whether a virtual address is valid | 143 | * virt_addr_valid(k) indicates whether a virtual address is valid |
144 | */ | 144 | */ |
145 | #define ARCH_PFN_OFFSET PHYS_PFN_OFFSET | 145 | #define ARCH_PFN_OFFSET ((unsigned long)PHYS_PFN_OFFSET) |
146 | 146 | ||
147 | #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) | 147 | #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) |
148 | #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) | 148 | #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) |
diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index da1f06b535e3..9dfdac4a74a1 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h | |||
@@ -792,3 +792,5 @@ __SYSCALL(__NR_renameat2, sys_renameat2) | |||
792 | __SYSCALL(__NR_getrandom, sys_getrandom) | 792 | __SYSCALL(__NR_getrandom, sys_getrandom) |
793 | #define __NR_memfd_create 385 | 793 | #define __NR_memfd_create 385 |
794 | __SYSCALL(__NR_memfd_create, sys_memfd_create) | 794 | __SYSCALL(__NR_memfd_create, sys_memfd_create) |
795 | #define __NR_bpf 386 | ||
796 | __SYSCALL(__NR_bpf, sys_bpf) | ||
diff --git a/arch/arm64/kernel/efi-entry.S b/arch/arm64/kernel/efi-entry.S index 619b1dd7bcde..d18a44940968 100644 --- a/arch/arm64/kernel/efi-entry.S +++ b/arch/arm64/kernel/efi-entry.S | |||
@@ -54,18 +54,17 @@ ENTRY(efi_stub_entry) | |||
54 | b.eq efi_load_fail | 54 | b.eq efi_load_fail |
55 | 55 | ||
56 | /* | 56 | /* |
57 | * efi_entry() will have relocated the kernel image if necessary | 57 | * efi_entry() will have copied the kernel image if necessary and we |
58 | * and we return here with device tree address in x0 and the kernel | 58 | * return here with device tree address in x0 and the kernel entry |
59 | * entry point stored at *image_addr. Save those values in registers | 59 | * point stored at *image_addr. Save those values in registers which |
60 | * which are callee preserved. | 60 | * are callee preserved. |
61 | */ | 61 | */ |
62 | mov x20, x0 // DTB address | 62 | mov x20, x0 // DTB address |
63 | ldr x0, [sp, #16] // relocated _text address | 63 | ldr x0, [sp, #16] // relocated _text address |
64 | mov x21, x0 | 64 | mov x21, x0 |
65 | 65 | ||
66 | /* | 66 | /* |
67 | * Flush dcache covering current runtime addresses | 67 | * Calculate size of the kernel Image (same for original and copy). |
68 | * of kernel text/data. Then flush all of icache. | ||
69 | */ | 68 | */ |
70 | adrp x1, _text | 69 | adrp x1, _text |
71 | add x1, x1, #:lo12:_text | 70 | add x1, x1, #:lo12:_text |
@@ -73,9 +72,24 @@ ENTRY(efi_stub_entry) | |||
73 | add x2, x2, #:lo12:_edata | 72 | add x2, x2, #:lo12:_edata |
74 | sub x1, x2, x1 | 73 | sub x1, x2, x1 |
75 | 74 | ||
75 | /* | ||
76 | * Flush the copied Image to the PoC, and ensure it is not shadowed by | ||
77 | * stale icache entries from before relocation. | ||
78 | */ | ||
76 | bl __flush_dcache_area | 79 | bl __flush_dcache_area |
77 | ic ialluis | 80 | ic ialluis |
78 | 81 | ||
82 | /* | ||
83 | * Ensure that the rest of this function (in the original Image) is | ||
84 | * visible when the caches are disabled. The I-cache can't have stale | ||
85 | * entries for the VA range of the current image, so no maintenance is | ||
86 | * necessary. | ||
87 | */ | ||
88 | adr x0, efi_stub_entry | ||
89 | adr x1, efi_stub_entry_end | ||
90 | sub x1, x1, x0 | ||
91 | bl __flush_dcache_area | ||
92 | |||
79 | /* Turn off Dcache and MMU */ | 93 | /* Turn off Dcache and MMU */ |
80 | mrs x0, CurrentEL | 94 | mrs x0, CurrentEL |
81 | cmp x0, #CurrentEL_EL2 | 95 | cmp x0, #CurrentEL_EL2 |
@@ -105,4 +119,5 @@ efi_load_fail: | |||
105 | ldp x29, x30, [sp], #32 | 119 | ldp x29, x30, [sp], #32 |
106 | ret | 120 | ret |
107 | 121 | ||
122 | efi_stub_entry_end: | ||
108 | ENDPROC(efi_stub_entry) | 123 | ENDPROC(efi_stub_entry) |
diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c index e007714ded04..8cd27fedc8b6 100644 --- a/arch/arm64/kernel/insn.c +++ b/arch/arm64/kernel/insn.c | |||
@@ -163,9 +163,10 @@ static int __kprobes aarch64_insn_patch_text_cb(void *arg) | |||
163 | * which ends with "dsb; isb" pair guaranteeing global | 163 | * which ends with "dsb; isb" pair guaranteeing global |
164 | * visibility. | 164 | * visibility. |
165 | */ | 165 | */ |
166 | atomic_set(&pp->cpu_count, -1); | 166 | /* Notify other processors with an additional increment. */ |
167 | atomic_inc(&pp->cpu_count); | ||
167 | } else { | 168 | } else { |
168 | while (atomic_read(&pp->cpu_count) != -1) | 169 | while (atomic_read(&pp->cpu_count) <= num_online_cpus()) |
169 | cpu_relax(); | 170 | cpu_relax(); |
170 | isb(); | 171 | isb(); |
171 | } | 172 | } |
diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c index 866c1c821860..663da771580a 100644 --- a/arch/arm64/kernel/psci.c +++ b/arch/arm64/kernel/psci.c | |||
@@ -528,7 +528,7 @@ static int __maybe_unused cpu_psci_cpu_suspend(unsigned long index) | |||
528 | if (WARN_ON_ONCE(!index)) | 528 | if (WARN_ON_ONCE(!index)) |
529 | return -EINVAL; | 529 | return -EINVAL; |
530 | 530 | ||
531 | if (state->type == PSCI_POWER_STATE_TYPE_STANDBY) | 531 | if (state[index - 1].type == PSCI_POWER_STATE_TYPE_STANDBY) |
532 | ret = psci_ops.cpu_suspend(state[index - 1], 0); | 532 | ret = psci_ops.cpu_suspend(state[index - 1], 0); |
533 | else | 533 | else |
534 | ret = __cpu_suspend(index, psci_suspend_finisher); | 534 | ret = __cpu_suspend(index, psci_suspend_finisher); |
diff --git a/arch/arm64/lib/clear_user.S b/arch/arm64/lib/clear_user.S index 6e0ed93d51fe..c17967fdf5f6 100644 --- a/arch/arm64/lib/clear_user.S +++ b/arch/arm64/lib/clear_user.S | |||
@@ -46,7 +46,7 @@ USER(9f, strh wzr, [x0], #2 ) | |||
46 | sub x1, x1, #2 | 46 | sub x1, x1, #2 |
47 | 4: adds x1, x1, #1 | 47 | 4: adds x1, x1, #1 |
48 | b.mi 5f | 48 | b.mi 5f |
49 | strb wzr, [x0] | 49 | USER(9f, strb wzr, [x0] ) |
50 | 5: mov x0, #0 | 50 | 5: mov x0, #0 |
51 | ret | 51 | ret |
52 | ENDPROC(__clear_user) | 52 | ENDPROC(__clear_user) |
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 0bf90d26e745..f4f8b500f74c 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c | |||
@@ -202,7 +202,7 @@ static void __init alloc_init_pmd(pud_t *pud, unsigned long addr, | |||
202 | } | 202 | } |
203 | 203 | ||
204 | static void __init alloc_init_pud(pgd_t *pgd, unsigned long addr, | 204 | static void __init alloc_init_pud(pgd_t *pgd, unsigned long addr, |
205 | unsigned long end, unsigned long phys, | 205 | unsigned long end, phys_addr_t phys, |
206 | int map_io) | 206 | int map_io) |
207 | { | 207 | { |
208 | pud_t *pud; | 208 | pud_t *pud; |