Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC fixes from Olof Johansson:
"A few fixes who have come in near or during the merge window:

- Removal of a VLA usage in Marvell mpp platform code

- Enable some IPMI options for ARM64 servers by default, helps
testing

- Enable PREEMPT on 32-bit ARMv7 defconfig

- Minor fix for stm32 DT (removal of an unused DMA property)

- Bugfix for TI OMAP1-based ams-delta (-EINVAL -> IRQ_NOTCONNECTED)"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
ARM: dts: stm32: update HASH1 dmas property on stm32mp157c
ARM: orion: avoid VLA in orion_mpp_conf
ARM: defconfig: Update multi_v7 to use PREEMPT
arm64: defconfig: Enable some IPMI configs
soc: ti: QMSS: Fix usage of irq_set_affinity_hint
ARM: OMAP1: ams-delta: Fix impossible .irq < 0

+35 -22
+1 -1
arch/arm/boot/dts/stm32mp157c.dtsi
··· 923 923 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; 924 924 clocks = <&rcc HASH1>; 925 925 resets = <&rcc HASH1_R>; 926 - dmas = <&mdma1 31 0x10 0x1000A02 0x0 0x0 0x0>; 926 + dmas = <&mdma1 31 0x10 0x1000A02 0x0 0x0>; 927 927 dma-names = "in"; 928 928 dma-maxburst = <2>; 929 929 status = "disabled";
+1
arch/arm/configs/multi_v7_defconfig
··· 1 1 CONFIG_SYSVIPC=y 2 2 CONFIG_NO_HZ=y 3 3 CONFIG_HIGH_RES_TIMERS=y 4 + CONFIG_PREEMPT=y 4 5 CONFIG_CGROUPS=y 5 6 CONFIG_BLK_DEV_INITRD=y 6 7 CONFIG_EMBEDDED=y
+2 -6
arch/arm/mach-omap1/board-ams-delta.c
··· 773 773 { 774 774 .membase = IOMEM(MODEM_VIRT), 775 775 .mapbase = MODEM_PHYS, 776 - .irq = -EINVAL, /* changed later */ 776 + .irq = IRQ_NOTCONNECTED, /* changed later */ 777 777 .flags = UPF_BOOT_AUTOCONF, 778 778 .irqflags = IRQF_TRIGGER_RISING, 779 779 .iotype = UPIO_MEM, ··· 864 864 865 865 866 866 /* 867 - * This function expects MODEM IRQ number already assigned to the port 868 - * and fails if it's not. 867 + * This function expects MODEM IRQ number already assigned to the port. 869 868 * The MODEM device requires its RESET# pin kept high during probe. 870 869 * That requirement can be fulfilled in several ways: 871 870 * - with a descriptor of already functional modem_nreset regulator ··· 886 887 887 888 if (!machine_is_ams_delta()) 888 889 return -ENODEV; 889 - 890 - if (ams_delta_modem_ports[0].irq < 0) 891 - return ams_delta_modem_ports[0].irq; 892 890 893 891 omap_cfg_reg(M14_1510_GPIO2); 894 892
+6 -1
arch/arm/plat-orion/mpp.c
··· 28 28 unsigned int mpp_max, void __iomem *dev_bus) 29 29 { 30 30 unsigned int mpp_nr_regs = (1 + mpp_max/8); 31 - u32 mpp_ctrl[mpp_nr_regs]; 31 + u32 mpp_ctrl[8]; 32 32 int i; 33 33 34 34 printk(KERN_DEBUG "initial MPP regs:"); 35 + if (mpp_nr_regs > ARRAY_SIZE(mpp_ctrl)) { 36 + printk(KERN_ERR "orion_mpp_conf: invalid mpp_max\n"); 37 + return; 38 + } 39 + 35 40 for (i = 0; i < mpp_nr_regs; i++) { 36 41 mpp_ctrl[i] = readl(mpp_ctrl_addr(i, dev_bus)); 37 42 printk(" %08x", mpp_ctrl[i]);
+3
arch/arm64/configs/defconfig
··· 308 308 CONFIG_SERIAL_MVEBU_UART=y 309 309 CONFIG_SERIAL_DEV_BUS=y 310 310 CONFIG_VIRTIO_CONSOLE=y 311 + CONFIG_IPMI_HANDLER=m 312 + CONFIG_IPMI_DEVICE_INTERFACE=m 313 + CONFIG_IPMI_SI=m 311 314 CONFIG_TCG_TPM=y 312 315 CONFIG_TCG_TIS_I2C_INFINEON=y 313 316 CONFIG_I2C_CHARDEV=y
+2 -2
drivers/soc/ti/knav_qmss.h
··· 329 329 }; 330 330 331 331 struct knav_irq_info { 332 - int irq; 333 - u32 cpu_map; 332 + int irq; 333 + struct cpumask *cpu_mask; 334 334 }; 335 335 336 336 struct knav_range_info {
+5 -5
drivers/soc/ti/knav_qmss_acc.c
··· 205 205 { 206 206 struct knav_device *kdev = range->kdev; 207 207 struct knav_acc_channel *acc; 208 - unsigned long cpu_map; 208 + struct cpumask *cpu_mask; 209 209 int ret = 0, irq; 210 210 u32 old, new; 211 211 212 212 if (range->flags & RANGE_MULTI_QUEUE) { 213 213 acc = range->acc; 214 214 irq = range->irqs[0].irq; 215 - cpu_map = range->irqs[0].cpu_map; 215 + cpu_mask = range->irqs[0].cpu_mask; 216 216 } else { 217 217 acc = range->acc + queue; 218 218 irq = range->irqs[queue].irq; 219 - cpu_map = range->irqs[queue].cpu_map; 219 + cpu_mask = range->irqs[queue].cpu_mask; 220 220 } 221 221 222 222 old = acc->open_mask; ··· 239 239 acc->name, acc->name); 240 240 ret = request_irq(irq, knav_acc_int_handler, 0, acc->name, 241 241 range); 242 - if (!ret && cpu_map) { 243 - ret = irq_set_affinity_hint(irq, to_cpumask(&cpu_map)); 242 + if (!ret && cpu_mask) { 243 + ret = irq_set_affinity_hint(irq, cpu_mask); 244 244 if (ret) { 245 245 dev_warn(range->kdev->dev, 246 246 "Failed to set IRQ affinity\n");
+15 -7
drivers/soc/ti/knav_qmss_queue.c
··· 118 118 struct knav_queue_inst *inst) 119 119 { 120 120 unsigned queue = inst->id - range->queue_base; 121 - unsigned long cpu_map; 122 121 int ret = 0, irq; 123 122 124 123 if (range->flags & RANGE_HAS_IRQ) { 125 124 irq = range->irqs[queue].irq; 126 - cpu_map = range->irqs[queue].cpu_map; 127 125 ret = request_irq(irq, knav_queue_int_handler, 0, 128 126 inst->irq_name, inst); 129 127 if (ret) 130 128 return ret; 131 129 disable_irq(irq); 132 - if (cpu_map) { 133 - ret = irq_set_affinity_hint(irq, to_cpumask(&cpu_map)); 130 + if (range->irqs[queue].cpu_mask) { 131 + ret = irq_set_affinity_hint(irq, range->irqs[queue].cpu_mask); 134 132 if (ret) { 135 133 dev_warn(range->kdev->dev, 136 134 "Failed to set IRQ affinity\n"); ··· 1260 1262 1261 1263 range->num_irqs++; 1262 1264 1263 - if (IS_ENABLED(CONFIG_SMP) && oirq.args_count == 3) 1264 - range->irqs[i].cpu_map = 1265 - (oirq.args[2] & 0x0000ff00) >> 8; 1265 + if (IS_ENABLED(CONFIG_SMP) && oirq.args_count == 3) { 1266 + unsigned long mask; 1267 + int bit; 1268 + 1269 + range->irqs[i].cpu_mask = devm_kzalloc(dev, 1270 + cpumask_size(), GFP_KERNEL); 1271 + if (!range->irqs[i].cpu_mask) 1272 + return -ENOMEM; 1273 + 1274 + mask = (oirq.args[2] & 0x0000ff00) >> 8; 1275 + for_each_set_bit(bit, &mask, BITS_PER_LONG) 1276 + cpumask_set_cpu(bit, range->irqs[i].cpu_mask); 1277 + } 1266 1278 } 1267 1279 1268 1280 range->num_irqs = min(range->num_irqs, range->num_queues);