diff options
| -rw-r--r-- | Documentation/devicetree/bindings/ata/apm-xgene.txt | 3 | ||||
| -rw-r--r-- | arch/arm64/boot/dts/apm-storm.dtsi | 3 | ||||
| -rw-r--r-- | arch/arm64/kernel/early_printk.c | 6 | ||||
| -rw-r--r-- | arch/arm64/kernel/setup.c | 2 | ||||
| -rw-r--r-- | arch/arm64/mm/dma-mapping.c | 35 | ||||
| -rw-r--r-- | arch/arm64/mm/mmu.c | 3 | ||||
| -rw-r--r-- | drivers/clk/versatile/clk-vexpress-osc.c | 2 | ||||
| -rw-r--r-- | include/asm-generic/fixmap.h | 3 |
8 files changed, 50 insertions, 7 deletions
diff --git a/Documentation/devicetree/bindings/ata/apm-xgene.txt b/Documentation/devicetree/bindings/ata/apm-xgene.txt index 7bcfbf59810e..a668f0e7d001 100644 --- a/Documentation/devicetree/bindings/ata/apm-xgene.txt +++ b/Documentation/devicetree/bindings/ata/apm-xgene.txt | |||
| @@ -24,6 +24,7 @@ Required properties: | |||
| 24 | * "sata-phy" for the SATA 6.0Gbps PHY | 24 | * "sata-phy" for the SATA 6.0Gbps PHY |
| 25 | 25 | ||
| 26 | Optional properties: | 26 | Optional properties: |
| 27 | - dma-coherent : Present if dma operations are coherent | ||
| 27 | - status : Shall be "ok" if enabled or "disabled" if disabled. | 28 | - status : Shall be "ok" if enabled or "disabled" if disabled. |
| 28 | Default is "ok". | 29 | Default is "ok". |
| 29 | 30 | ||
| @@ -55,6 +56,7 @@ Example: | |||
| 55 | <0x0 0x1f22e000 0x0 0x1000>, | 56 | <0x0 0x1f22e000 0x0 0x1000>, |
| 56 | <0x0 0x1f227000 0x0 0x1000>; | 57 | <0x0 0x1f227000 0x0 0x1000>; |
| 57 | interrupts = <0x0 0x87 0x4>; | 58 | interrupts = <0x0 0x87 0x4>; |
| 59 | dma-coherent; | ||
| 58 | status = "ok"; | 60 | status = "ok"; |
| 59 | clocks = <&sataclk 0>; | 61 | clocks = <&sataclk 0>; |
| 60 | phys = <&phy2 0>; | 62 | phys = <&phy2 0>; |
| @@ -69,6 +71,7 @@ Example: | |||
| 69 | <0x0 0x1f23e000 0x0 0x1000>, | 71 | <0x0 0x1f23e000 0x0 0x1000>, |
| 70 | <0x0 0x1f237000 0x0 0x1000>; | 72 | <0x0 0x1f237000 0x0 0x1000>; |
| 71 | interrupts = <0x0 0x88 0x4>; | 73 | interrupts = <0x0 0x88 0x4>; |
| 74 | dma-coherent; | ||
| 72 | status = "ok"; | 75 | status = "ok"; |
| 73 | clocks = <&sataclk 0>; | 76 | clocks = <&sataclk 0>; |
| 74 | phys = <&phy3 0>; | 77 | phys = <&phy3 0>; |
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi index 93f4b2dd9248..f8c40a66e65d 100644 --- a/arch/arm64/boot/dts/apm-storm.dtsi +++ b/arch/arm64/boot/dts/apm-storm.dtsi | |||
| @@ -307,6 +307,7 @@ | |||
| 307 | <0x0 0x1f21e000 0x0 0x1000>, | 307 | <0x0 0x1f21e000 0x0 0x1000>, |
| 308 | <0x0 0x1f217000 0x0 0x1000>; | 308 | <0x0 0x1f217000 0x0 0x1000>; |
| 309 | interrupts = <0x0 0x86 0x4>; | 309 | interrupts = <0x0 0x86 0x4>; |
| 310 | dma-coherent; | ||
| 310 | status = "disabled"; | 311 | status = "disabled"; |
| 311 | clocks = <&sata01clk 0>; | 312 | clocks = <&sata01clk 0>; |
| 312 | phys = <&phy1 0>; | 313 | phys = <&phy1 0>; |
| @@ -321,6 +322,7 @@ | |||
| 321 | <0x0 0x1f22e000 0x0 0x1000>, | 322 | <0x0 0x1f22e000 0x0 0x1000>, |
| 322 | <0x0 0x1f227000 0x0 0x1000>; | 323 | <0x0 0x1f227000 0x0 0x1000>; |
| 323 | interrupts = <0x0 0x87 0x4>; | 324 | interrupts = <0x0 0x87 0x4>; |
| 325 | dma-coherent; | ||
| 324 | status = "ok"; | 326 | status = "ok"; |
| 325 | clocks = <&sata23clk 0>; | 327 | clocks = <&sata23clk 0>; |
| 326 | phys = <&phy2 0>; | 328 | phys = <&phy2 0>; |
| @@ -334,6 +336,7 @@ | |||
| 334 | <0x0 0x1f23d000 0x0 0x1000>, | 336 | <0x0 0x1f23d000 0x0 0x1000>, |
| 335 | <0x0 0x1f23e000 0x0 0x1000>; | 337 | <0x0 0x1f23e000 0x0 0x1000>; |
| 336 | interrupts = <0x0 0x88 0x4>; | 338 | interrupts = <0x0 0x88 0x4>; |
| 339 | dma-coherent; | ||
| 337 | status = "ok"; | 340 | status = "ok"; |
| 338 | clocks = <&sata45clk 0>; | 341 | clocks = <&sata45clk 0>; |
| 339 | phys = <&phy3 0>; | 342 | phys = <&phy3 0>; |
diff --git a/arch/arm64/kernel/early_printk.c b/arch/arm64/kernel/early_printk.c index ffbbdde7aba1..2dc36d00addf 100644 --- a/arch/arm64/kernel/early_printk.c +++ b/arch/arm64/kernel/early_printk.c | |||
| @@ -143,10 +143,8 @@ static int __init setup_early_printk(char *buf) | |||
| 143 | } | 143 | } |
| 144 | /* no options parsing yet */ | 144 | /* no options parsing yet */ |
| 145 | 145 | ||
| 146 | if (paddr) { | 146 | if (paddr) |
| 147 | set_fixmap_io(FIX_EARLYCON_MEM_BASE, paddr); | 147 | early_base = (void __iomem *)set_fixmap_offset_io(FIX_EARLYCON_MEM_BASE, paddr); |
| 148 | early_base = (void __iomem *)fix_to_virt(FIX_EARLYCON_MEM_BASE); | ||
| 149 | } | ||
| 150 | 148 | ||
| 151 | printch = match->printch; | 149 | printch = match->printch; |
| 152 | early_console = &early_console_dev; | 150 | early_console = &early_console_dev; |
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 93e7df8968fe..7ec784653b29 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c | |||
| @@ -396,7 +396,7 @@ static int __init arm64_device_init(void) | |||
| 396 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | 396 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
| 397 | return 0; | 397 | return 0; |
| 398 | } | 398 | } |
| 399 | arch_initcall(arm64_device_init); | 399 | arch_initcall_sync(arm64_device_init); |
| 400 | 400 | ||
| 401 | static DEFINE_PER_CPU(struct cpu, cpu_data); | 401 | static DEFINE_PER_CPU(struct cpu, cpu_data); |
| 402 | 402 | ||
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index 0ba347e59f06..c851eb44dc50 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c | |||
| @@ -22,8 +22,11 @@ | |||
| 22 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
| 23 | #include <linux/dma-mapping.h> | 23 | #include <linux/dma-mapping.h> |
| 24 | #include <linux/dma-contiguous.h> | 24 | #include <linux/dma-contiguous.h> |
| 25 | #include <linux/of.h> | ||
| 26 | #include <linux/platform_device.h> | ||
| 25 | #include <linux/vmalloc.h> | 27 | #include <linux/vmalloc.h> |
| 26 | #include <linux/swiotlb.h> | 28 | #include <linux/swiotlb.h> |
| 29 | #include <linux/amba/bus.h> | ||
| 27 | 30 | ||
| 28 | #include <asm/cacheflush.h> | 31 | #include <asm/cacheflush.h> |
| 29 | 32 | ||
| @@ -305,17 +308,45 @@ struct dma_map_ops coherent_swiotlb_dma_ops = { | |||
| 305 | }; | 308 | }; |
| 306 | EXPORT_SYMBOL(coherent_swiotlb_dma_ops); | 309 | EXPORT_SYMBOL(coherent_swiotlb_dma_ops); |
| 307 | 310 | ||
| 311 | static int dma_bus_notifier(struct notifier_block *nb, | ||
| 312 | unsigned long event, void *_dev) | ||
| 313 | { | ||
| 314 | struct device *dev = _dev; | ||
| 315 | |||
| 316 | if (event != BUS_NOTIFY_ADD_DEVICE) | ||
| 317 | return NOTIFY_DONE; | ||
| 318 | |||
| 319 | if (of_property_read_bool(dev->of_node, "dma-coherent")) | ||
| 320 | set_dma_ops(dev, &coherent_swiotlb_dma_ops); | ||
| 321 | |||
| 322 | return NOTIFY_OK; | ||
| 323 | } | ||
| 324 | |||
| 325 | static struct notifier_block platform_bus_nb = { | ||
| 326 | .notifier_call = dma_bus_notifier, | ||
| 327 | }; | ||
| 328 | |||
| 329 | static struct notifier_block amba_bus_nb = { | ||
| 330 | .notifier_call = dma_bus_notifier, | ||
| 331 | }; | ||
| 332 | |||
| 308 | extern int swiotlb_late_init_with_default_size(size_t default_size); | 333 | extern int swiotlb_late_init_with_default_size(size_t default_size); |
| 309 | 334 | ||
| 310 | static int __init swiotlb_late_init(void) | 335 | static int __init swiotlb_late_init(void) |
| 311 | { | 336 | { |
| 312 | size_t swiotlb_size = min(SZ_64M, MAX_ORDER_NR_PAGES << PAGE_SHIFT); | 337 | size_t swiotlb_size = min(SZ_64M, MAX_ORDER_NR_PAGES << PAGE_SHIFT); |
| 313 | 338 | ||
| 314 | dma_ops = &coherent_swiotlb_dma_ops; | 339 | /* |
| 340 | * These must be registered before of_platform_populate(). | ||
| 341 | */ | ||
| 342 | bus_register_notifier(&platform_bus_type, &platform_bus_nb); | ||
| 343 | bus_register_notifier(&amba_bustype, &amba_bus_nb); | ||
| 344 | |||
| 345 | dma_ops = &noncoherent_swiotlb_dma_ops; | ||
| 315 | 346 | ||
| 316 | return swiotlb_late_init_with_default_size(swiotlb_size); | 347 | return swiotlb_late_init_with_default_size(swiotlb_size); |
| 317 | } | 348 | } |
| 318 | subsys_initcall(swiotlb_late_init); | 349 | arch_initcall(swiotlb_late_init); |
| 319 | 350 | ||
| 320 | #define PREALLOC_DMA_DEBUG_ENTRIES 4096 | 351 | #define PREALLOC_DMA_DEBUG_ENTRIES 4096 |
| 321 | 352 | ||
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 6b7e89569a3a..0a472c41a67f 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c | |||
| @@ -374,6 +374,9 @@ int kern_addr_valid(unsigned long addr) | |||
| 374 | if (pmd_none(*pmd)) | 374 | if (pmd_none(*pmd)) |
| 375 | return 0; | 375 | return 0; |
| 376 | 376 | ||
| 377 | if (pmd_sect(*pmd)) | ||
| 378 | return pfn_valid(pmd_pfn(*pmd)); | ||
| 379 | |||
| 377 | pte = pte_offset_kernel(pmd, addr); | 380 | pte = pte_offset_kernel(pmd, addr); |
| 378 | if (pte_none(*pte)) | 381 | if (pte_none(*pte)) |
| 379 | return 0; | 382 | return 0; |
diff --git a/drivers/clk/versatile/clk-vexpress-osc.c b/drivers/clk/versatile/clk-vexpress-osc.c index a535c7bf8574..422391242b39 100644 --- a/drivers/clk/versatile/clk-vexpress-osc.c +++ b/drivers/clk/versatile/clk-vexpress-osc.c | |||
| @@ -100,6 +100,8 @@ void __init vexpress_osc_of_setup(struct device_node *node) | |||
| 100 | struct clk *clk; | 100 | struct clk *clk; |
| 101 | u32 range[2]; | 101 | u32 range[2]; |
| 102 | 102 | ||
| 103 | vexpress_sysreg_of_early_init(); | ||
| 104 | |||
| 103 | osc = kzalloc(sizeof(*osc), GFP_KERNEL); | 105 | osc = kzalloc(sizeof(*osc), GFP_KERNEL); |
| 104 | if (!osc) | 106 | if (!osc) |
| 105 | return; | 107 | return; |
diff --git a/include/asm-generic/fixmap.h b/include/asm-generic/fixmap.h index 5a64ca4621f3..f23174fb9ec4 100644 --- a/include/asm-generic/fixmap.h +++ b/include/asm-generic/fixmap.h | |||
| @@ -93,5 +93,8 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr) | |||
| 93 | #define set_fixmap_io(idx, phys) \ | 93 | #define set_fixmap_io(idx, phys) \ |
| 94 | __set_fixmap(idx, phys, FIXMAP_PAGE_IO) | 94 | __set_fixmap(idx, phys, FIXMAP_PAGE_IO) |
| 95 | 95 | ||
| 96 | #define set_fixmap_offset_io(idx, phys) \ | ||
| 97 | __set_fixmap_offset(idx, phys, FIXMAP_PAGE_IO) | ||
| 98 | |||
| 96 | #endif /* __ASSEMBLY__ */ | 99 | #endif /* __ASSEMBLY__ */ |
| 97 | #endif /* __ASM_GENERIC_FIXMAP_H */ | 100 | #endif /* __ASM_GENERIC_FIXMAP_H */ |
