History

Merge tag 'mips_fixes_5.0_4' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux

Pull MIPS fixes from Paul Burton: "A few more MIPS fixes: - Fix 16b cmpxchg() operations which could erroneously fail if bits 15:8 of the old value are non-zero. In practice I'm not aware of any actual users of 16b cmpxchg() on MIPS, but this fixes the support for it was was introduced in v4.13. - Provide a struct device to dma_alloc_coherent for Lantiq XWAY systems with a "Voice MIPS Macro Core" (VMMC) device. - Provide DMA masks for BCM63xx ethernet devices, fixing a regression introduced in v4.19. - Fix memblock reservation for the kernel when the system has a non-zero PHYS_OFFSET, correcting the memblock conversion performed in v4.20" * tag 'mips_fixes_5.0_4' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: MIPS: fix memory setup for platforms with PHYS_OFFSET != 0 MIPS: BCM63XX: provide DMA masks for ethernet devices MIPS: lantiq: pass struct device to DMA API functions MIPS: fix truncation in __cmpxchg_small for short values

Linus Torvalds committed 7 years ago

Commit bf23aba2 parents 3eb07d2 e0bf3044 files · +13 −5Browse files

Unified · Split

4 files
  1. arch/mips/bcm63xx/dev-enet.c +8 −0
  2. arch/mips/kernel/cmpxchg.c +1 −2
  3. arch/mips/kernel/setup.c +2 −1
  4. arch/mips/lantiq/xway/vmmc.c +2 −2
arch/mips/bcm63xx/dev-enet.c+8−0
@@ -70,6 +70,8 @@ static struct platform_device bcm63xx_enet_shared_device = { · 69 unmodified lines
70 70
71static int shared_device_registered;71static int shared_device_registered;
72 72
73static u64 enet_dmamask = DMA_BIT_MASK(32);
74
73static struct resource enet0_res[] = {75static struct resource enet0_res[] = {
74 {76 {
75 .start = -1, /* filled at runtime */77 .start = -1, /* filled at runtime */
@@ -99,6 +101,8 @@ static struct platform_device bcm63xx_enet0_device = { · 23 unmodified lines
99 .resource = enet0_res,101 .resource = enet0_res,
100 .dev = {102 .dev = {
101 .platform_data = &enet0_pd,103 .platform_data = &enet0_pd,
104 .dma_mask = &enet_dmamask,
105 .coherent_dma_mask = DMA_BIT_MASK(32),
102 },106 },
103};107};
104 108
@@ -131,6 +135,8 @@ static struct platform_device bcm63xx_enet1_device = { · 26 unmodified lines
131 .resource = enet1_res,135 .resource = enet1_res,
132 .dev = {136 .dev = {
133 .platform_data = &enet1_pd,137 .platform_data = &enet1_pd,
138 .dma_mask = &enet_dmamask,
139 .coherent_dma_mask = DMA_BIT_MASK(32),
134 },140 },
135};141};
136 142
@@ -157,6 +163,8 @@ static struct platform_device bcm63xx_enetsw_device = { · 20 unmodified lines
157 .resource = enetsw_res,163 .resource = enetsw_res,
158 .dev = {164 .dev = {
159 .platform_data = &enetsw_pd,165 .platform_data = &enetsw_pd,
166 .dma_mask = &enet_dmamask,
167 .coherent_dma_mask = DMA_BIT_MASK(32),
160 },168 },
161};169};
162 170
arch/mips/kernel/cmpxchg.c+1−2
@@ -54,10 +54,9 @@ unsigned long __xchg_small(volatile void *ptr, unsigned long val, unsigned int s · 53 unmodified lines
54unsigned long __cmpxchg_small(volatile void *ptr, unsigned long old,54unsigned long __cmpxchg_small(volatile void *ptr, unsigned long old,
55 unsigned long new, unsigned int size)55 unsigned long new, unsigned int size)
56{56{
57 u32 mask, old32, new32, load32;57 u32 mask, old32, new32, load32, load;
58 volatile u32 *ptr32;58 volatile u32 *ptr32;
59 unsigned int shift;59 unsigned int shift;
60 u8 load;
61 60
62 /* Check that ptr is naturally aligned */61 /* Check that ptr is naturally aligned */
63 WARN_ON((unsigned long)ptr & (size - 1));62 WARN_ON((unsigned long)ptr & (size - 1));
arch/mips/kernel/setup.c+2−1
@@ -384,7 +384,8 @@ static void __init bootmem_init(void) · 383 unmodified lines
384 init_initrd();384 init_initrd();
385 reserved_end = (unsigned long) PFN_UP(__pa_symbol(&_end));385 reserved_end = (unsigned long) PFN_UP(__pa_symbol(&_end));
386 386
387 memblock_reserve(PHYS_OFFSET, reserved_end << PAGE_SHIFT);387 memblock_reserve(PHYS_OFFSET,
388 (reserved_end << PAGE_SHIFT) - PHYS_OFFSET);
388 389
389 /*390 /*
390 * max_low_pfn is not a number of pages. The number of pages391 * max_low_pfn is not a number of pages. The number of pages
arch/mips/lantiq/xway/vmmc.c+2−2
@@ -31,8 +31,8 @@ static int vmmc_probe(struct platform_device *pdev) · 30 unmodified lines
31 dma_addr_t dma;31 dma_addr_t dma;
32 32
33 cp1_base =33 cp1_base =
34 (void *) CPHYSADDR(dma_alloc_coherent(NULL, CP1_SIZE,34 (void *) CPHYSADDR(dma_alloc_coherent(&pdev->dev, CP1_SIZE,
35 &dma, GFP_ATOMIC));35 &dma, GFP_KERNEL));
36 36
37 gpio_count = of_gpio_count(pdev->dev.of_node);37 gpio_count = of_gpio_count(pdev->dev.of_node);
38 while (gpio_count > 0) {38 while (gpio_count > 0) {