From 0a550b37ff291a969db0f5ca3e8ac133f78be396 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 13 Feb 2019 14:56:54 +0100 Subject: [PATCH] 3.18-stable patches added patches: arm-iop32x-n2100-fix-pci-irq-mapping.patch drm-modes-prevent-division-by-zero-htotal.patch mips-octeon-don-t-set-octeon_dma_bar_type-if-pci-is-disabled.patch --- ...arm-iop32x-n2100-fix-pci-irq-mapping.patch | 33 ++++++ ...odes-prevent-division-by-zero-htotal.patch | 102 ++++++++++++++++++ ...teon_dma_bar_type-if-pci-is-disabled.patch | 49 +++++++++ queue-3.18/series | 3 + 4 files changed, 187 insertions(+) create mode 100644 queue-3.18/arm-iop32x-n2100-fix-pci-irq-mapping.patch create mode 100644 queue-3.18/drm-modes-prevent-division-by-zero-htotal.patch create mode 100644 queue-3.18/mips-octeon-don-t-set-octeon_dma_bar_type-if-pci-is-disabled.patch diff --git a/queue-3.18/arm-iop32x-n2100-fix-pci-irq-mapping.patch b/queue-3.18/arm-iop32x-n2100-fix-pci-irq-mapping.patch new file mode 100644 index 00000000000..3bd6c4a3282 --- /dev/null +++ b/queue-3.18/arm-iop32x-n2100-fix-pci-irq-mapping.patch @@ -0,0 +1,33 @@ +From db4090920ba2d61a5827a23e441447926a02ffee Mon Sep 17 00:00:00 2001 +From: Russell King +Date: Fri, 25 Jan 2019 20:10:15 +0000 +Subject: ARM: iop32x/n2100: fix PCI IRQ mapping + +From: Russell King + +commit db4090920ba2d61a5827a23e441447926a02ffee upstream. + +Booting 4.20 on a TheCUS N2100 results in a kernel oops while probing +PCI, due to n2100_pci_map_irq() having been discarded during boot. + +Signed-off-by: Russell King +Cc: stable@vger.kernel.org # 2.6.18+ +Signed-off-by: Arnd Bergmann +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-iop32x/n2100.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/arch/arm/mach-iop32x/n2100.c ++++ b/arch/arm/mach-iop32x/n2100.c +@@ -75,8 +75,7 @@ void __init n2100_map_io(void) + /* + * N2100 PCI. + */ +-static int __init +-n2100_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) ++static int n2100_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) + { + int irq; + diff --git a/queue-3.18/drm-modes-prevent-division-by-zero-htotal.patch b/queue-3.18/drm-modes-prevent-division-by-zero-htotal.patch new file mode 100644 index 00000000000..22d62babaec --- /dev/null +++ b/queue-3.18/drm-modes-prevent-division-by-zero-htotal.patch @@ -0,0 +1,102 @@ +From a2fcd5c84f7a7825e028381b10182439067aa90d Mon Sep 17 00:00:00 2001 +From: Tina Zhang +Date: Wed, 23 Jan 2019 15:28:59 +0800 +Subject: drm/modes: Prevent division by zero htotal + +From: Tina Zhang + +commit a2fcd5c84f7a7825e028381b10182439067aa90d upstream. + +This patch prevents division by zero htotal. + +In a follow-up mail Tina writes: + +> > How did you manage to get here with htotal == 0? This needs backtraces (or if +> > this is just about static checkers, a mention of that). +> > -Daniel +> +> In GVT-g, we are trying to enable a virtual display w/o setting timings for a pipe +> (a.k.a htotal=0), then we met the following kernel panic: +> +> [ 32.832048] divide error: 0000 [#1] SMP PTI +> [ 32.833614] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0-rc4-sriov+ #33 +> [ 32.834438] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.10.1-0-g8891697-dirty-20180511_165818-tinazhang-linux-1 04/01/2014 +> [ 32.835901] RIP: 0010:drm_mode_hsync+0x1e/0x40 +> [ 32.836004] Code: 31 c0 c3 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 8b 87 d8 00 00 00 85 c0 75 22 8b 4f 68 85 c9 78 1b 69 47 58 e8 03 00 00 99 f9 b9 d3 4d 62 10 05 f4 01 00 00 f7 e1 89 d0 c1 e8 06 f3 c3 66 +> [ 32.836004] RSP: 0000:ffffc900000ebb90 EFLAGS: 00010206 +> [ 32.836004] RAX: 0000000000000000 RBX: ffff88001c67c8a0 RCX: 0000000000000000 +> [ 32.836004] RDX: 0000000000000000 RSI: ffff88001c67c000 RDI: ffff88001c67c8a0 +> [ 32.836004] RBP: ffff88001c7d03a0 R08: ffff88001c67c8a0 R09: ffff88001c7d0330 +> [ 32.836004] R10: ffffffff822c3a98 R11: 0000000000000001 R12: ffff88001c67c000 +> [ 32.836004] R13: ffff88001c7d0370 R14: ffffffff8207eb78 R15: ffff88001c67c800 +> [ 32.836004] FS: 0000000000000000(0000) GS:ffff88001da00000(0000) knlGS:0000000000000000 +> [ 32.836004] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +> [ 32.836004] CR2: 0000000000000000 CR3: 000000000220a000 CR4: 00000000000006f0 +> [ 32.836004] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +> [ 32.836004] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +> [ 32.836004] Call Trace: +> [ 32.836004] intel_mode_from_pipe_config+0x72/0x90 +> [ 32.836004] intel_modeset_setup_hw_state+0x569/0xf90 +> [ 32.836004] intel_modeset_init+0x905/0x1db0 +> [ 32.836004] i915_driver_load+0xb8c/0x1120 +> [ 32.836004] i915_pci_probe+0x4d/0xb0 +> [ 32.836004] local_pci_probe+0x44/0xa0 +> [ 32.836004] ? pci_assign_irq+0x27/0x130 +> [ 32.836004] pci_device_probe+0x102/0x1c0 +> [ 32.836004] driver_probe_device+0x2b8/0x480 +> [ 32.836004] __driver_attach+0x109/0x110 +> [ 32.836004] ? driver_probe_device+0x480/0x480 +> [ 32.836004] bus_for_each_dev+0x67/0xc0 +> [ 32.836004] ? klist_add_tail+0x3b/0x70 +> [ 32.836004] bus_add_driver+0x1e8/0x260 +> [ 32.836004] driver_register+0x5b/0xe0 +> [ 32.836004] ? mipi_dsi_bus_init+0x11/0x11 +> [ 32.836004] do_one_initcall+0x4d/0x1eb +> [ 32.836004] kernel_init_freeable+0x197/0x237 +> [ 32.836004] ? rest_init+0xd0/0xd0 +> [ 32.836004] kernel_init+0xa/0x110 +> [ 32.836004] ret_from_fork+0x35/0x40 +> [ 32.836004] Modules linked in: +> [ 32.859183] ---[ end trace 525608b0ed0e8665 ]--- +> [ 32.859722] RIP: 0010:drm_mode_hsync+0x1e/0x40 +> [ 32.860287] Code: 31 c0 c3 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 8b 87 d8 00 00 00 85 c0 75 22 8b 4f 68 85 c9 78 1b 69 47 58 e8 03 00 00 99 f9 b9 d3 4d 62 10 05 f4 01 00 00 f7 e1 89 d0 c1 e8 06 f3 c3 66 +> [ 32.862680] RSP: 0000:ffffc900000ebb90 EFLAGS: 00010206 +> [ 32.863309] RAX: 0000000000000000 RBX: ffff88001c67c8a0 RCX: 0000000000000000 +> [ 32.864182] RDX: 0000000000000000 RSI: ffff88001c67c000 RDI: ffff88001c67c8a0 +> [ 32.865206] RBP: ffff88001c7d03a0 R08: ffff88001c67c8a0 R09: ffff88001c7d0330 +> [ 32.866359] R10: ffffffff822c3a98 R11: 0000000000000001 R12: ffff88001c67c000 +> [ 32.867213] R13: ffff88001c7d0370 R14: ffffffff8207eb78 R15: ffff88001c67c800 +> [ 32.868075] FS: 0000000000000000(0000) GS:ffff88001da00000(0000) knlGS:0000000000000000 +> [ 32.868983] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +> [ 32.869659] CR2: 0000000000000000 CR3: 000000000220a000 CR4: 00000000000006f0 +> [ 32.870599] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +> [ 32.871598] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +> [ 32.872549] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b +> +> Since drm_mode_hsync() has the logic to check mode->htotal, I just extend it to cover the case htotal==0. + +Signed-off-by: Tina Zhang +Cc: Adam Jackson +Cc: Dave Airlie +Cc: Daniel Vetter +[danvet: Add additional explanations + cc: stable.] +Cc: stable@vger.kernel.org +Signed-off-by: Daniel Vetter +Link: https://patchwork.freedesktop.org/patch/msgid/1548228539-3061-1-git-send-email-tina.zhang@intel.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/drm_modes.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/drm_modes.c ++++ b/drivers/gpu/drm/drm_modes.c +@@ -682,7 +682,7 @@ int drm_mode_hsync(const struct drm_disp + if (mode->hsync) + return mode->hsync; + +- if (mode->htotal < 0) ++ if (mode->htotal <= 0) + return 0; + + calc_val = (mode->clock * 1000) / mode->htotal; /* hsync in Hz */ diff --git a/queue-3.18/mips-octeon-don-t-set-octeon_dma_bar_type-if-pci-is-disabled.patch b/queue-3.18/mips-octeon-don-t-set-octeon_dma_bar_type-if-pci-is-disabled.patch new file mode 100644 index 00000000000..e08670aceb5 --- /dev/null +++ b/queue-3.18/mips-octeon-don-t-set-octeon_dma_bar_type-if-pci-is-disabled.patch @@ -0,0 +1,49 @@ +From dcf300a69ac307053dfb35c2e33972e754a98bce Mon Sep 17 00:00:00 2001 +From: Aaro Koskinen +Date: Sun, 27 Jan 2019 23:28:33 +0200 +Subject: MIPS: OCTEON: don't set octeon_dma_bar_type if PCI is disabled + +From: Aaro Koskinen + +commit dcf300a69ac307053dfb35c2e33972e754a98bce upstream. + +Don't set octeon_dma_bar_type if PCI is disabled. This avoids creation +of the MSI irqchip later on, and saves a bit of memory. + +Signed-off-by: Aaro Koskinen +Signed-off-by: Paul Burton +Fixes: a214720cbf50 ("Disable MSI also when pcie-octeon.pcie_disable on") +Cc: stable@vger.kernel.org # v3.3+ +Cc: linux-mips@vger.kernel.org +Signed-off-by: Greg Kroah-Hartman + +--- + arch/mips/pci/pci-octeon.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/arch/mips/pci/pci-octeon.c ++++ b/arch/mips/pci/pci-octeon.c +@@ -571,6 +571,11 @@ static int __init octeon_pci_setup(void) + if (octeon_has_feature(OCTEON_FEATURE_PCIE)) + return 0; + ++ if (!octeon_is_pci_host()) { ++ pr_notice("Not in host mode, PCI Controller not initialized\n"); ++ return 0; ++ } ++ + /* Point pcibios_map_irq() to the PCI version of it */ + octeon_pcibios_map_irq = octeon_pci_pcibios_map_irq; + +@@ -582,11 +587,6 @@ static int __init octeon_pci_setup(void) + else + octeon_dma_bar_type = OCTEON_DMA_BAR_TYPE_BIG; + +- if (!octeon_is_pci_host()) { +- pr_notice("Not in host mode, PCI Controller not initialized\n"); +- return 0; +- } +- + /* PCI I/O and PCI MEM values */ + set_io_port_base(OCTEON_PCI_IOSPACE_BASE); + ioport_resource.start = 0; diff --git a/queue-3.18/series b/queue-3.18/series index 5bba5d78209..a256c882d1e 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -77,3 +77,6 @@ signal-always-notice-exiting-tasks.patch signal-better-detection-of-synchronous-signals.patch misc-vexpress-off-by-one-in-vexpress_syscfg_exec.patch debugfs-fix-debugfs_rename-parameter-checking.patch +mips-octeon-don-t-set-octeon_dma_bar_type-if-pci-is-disabled.patch +arm-iop32x-n2100-fix-pci-irq-mapping.patch +drm-modes-prevent-division-by-zero-htotal.patch -- 2.47.2