linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Sergio Paracuellos <sergio.paracuellos@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Sasha Levin <sashal@kernel.org>,
	devel@driverdev.osuosl.org, linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org
Subject: [PATCH AUTOSEL 5.6 62/68] staging: mt7621-pci: avoid to poweroff the phy for slot one
Date: Thu,  9 Apr 2020 23:46:27 -0400	[thread overview]
Message-ID: <20200410034634.7731-62-sashal@kernel.org> (raw)
In-Reply-To: <20200410034634.7731-1-sashal@kernel.org>

From: Sergio Paracuellos <sergio.paracuellos@gmail.com>

[ Upstream commit 5737cfe87a9c242ad0f60b34b5ac1688770a9236 ]

Phy for slot 0 and 1 is shared and handled properly in slot 0.
If there is only one port in use,(slot 0) we shall not call the
'phy_power_off' function with an invalid slot because kernel
will crash with an unaligned access fault like the following:

mt7621-pci 1e140000.pcie: Error applying setting, reverse things back
mt7621-pci-phy 1e149000.pcie-phy: PHY for 0xbe149000 (dual port = 1)
mt7621-pci-phy 1e14a000.pcie-phy: PHY for 0xbe14a000 (dual port = 0)
mt7621-pci-phy 1e149000.pcie-phy: Xtal is 40MHz
mt7621-pci-phy 1e14a000.pcie-phy: Xtal is 40MHz
mt7621-pci 1e140000.pcie: pcie1 no card, disable it (RST & CLK)
Unhandled kernel unaligned access[#1]:
CPU: 3 PID: 111 Comm: kworker/3:2 Not tainted 5.6.0-rc3-00347-g825c6f470c62-dirty #9
Workqueue: events deferred_probe_work_func
$ 0   : 00000000 00000001 5f60d043 8fe1ba80
$ 4   : 0000010d 01eb9000 00000000 00000000
$ 8   : 294b4c00 80940000 00000008 000000ce
$12   : 2e303030 00000000 00000000 65696370
$16   : ffffffed 0000010d 8e373cd0 8214c1e0
$20   : 00000000 82144c80 82144680 8214c250
$24   : 00000018 803ef8f4
$28   : 8e372000 8e373c60 8214c080 803940e8
Hi    : 00000125
Lo    : 122f2000
epc   : 807b3328 mutex_lock+0x8/0x44
ra    : 803940e8 phy_power_off+0x28/0xb0
Status: 1100fc03        KERNEL EXL IE
Cause : 00800010 (ExcCode 04)
BadVA : 0000010d
PrId  : 0001992f (MIPS 1004Kc)
Modules linked in:
Process kworker/3:2 (pid: 111, threadinfo=(ptrval), task=(ptrval), tls=00000000)
Stack : 8e373cd0 803fe4f4 8e372000 8e373c90 8214c080 804fde1c 8e373c98 808d62f4
         8e373c78 00000000 8214c254 804fe648 1e160000 804f27b8 00000001 808d62f4
         00000000 00000001 8214c228 808d62f4 80930000 809a0000 8fd47e10 808d63d4
         808d62d4 8fd47e10 808d0000 808d0000 8e373cd0 8e373cd0 809e2a74 809db510
         809db510 00000006 00000001 00000000 00000000 00000000 01000000 1e1440ff
         ...
Call Trace:
[<807b3328>] mutex_lock+0x8/0x44
[<803940e8>] phy_power_off+0x28/0xb0
[<804fe648>] mt7621_pci_probe+0xc20/0xd18
[<80402ab8>] platform_drv_probe+0x40/0x94
[<80400a74>] really_probe+0x104/0x364
[<803feb74>] bus_for_each_drv+0x84/0xdc
[<80400924>] __device_attach+0xdc/0x120
[<803ffb5c>] bus_probe_device+0xa0/0xbc
[<80400124>] deferred_probe_work_func+0x7c/0xbc
[<800420e8>] process_one_work+0x230/0x450
[<80042638>] worker_thread+0x330/0x5fc
[<80048eb0>] kthread+0x12c/0x134
[<80007438>] ret_from_kernel_thread+0x14/0x1c
Code: 24050002  27bdfff8  8f830000 <c0850000> 14a00005  00000000  00600825  e0810000  1020fffa

Fixes: bf516f413f4e ("staging: mt7621-pci: use only two phys from device tree")
Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Link: https://lore.kernel.org/r/20200320153837.20415-1-sergio.paracuellos@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/staging/mt7621-pci/pci-mt7621.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/mt7621-pci/pci-mt7621.c b/drivers/staging/mt7621-pci/pci-mt7621.c
index 3633c924848ec..a1dafec0890a9 100644
--- a/drivers/staging/mt7621-pci/pci-mt7621.c
+++ b/drivers/staging/mt7621-pci/pci-mt7621.c
@@ -485,7 +485,8 @@ static void mt7621_pcie_init_ports(struct mt7621_pcie *pcie)
 		if (!mt7621_pcie_port_is_linkup(port)) {
 			dev_err(dev, "pcie%d no card, disable it (RST & CLK)\n",
 				slot);
-			phy_power_off(port->phy);
+			if (slot != 1)
+				phy_power_off(port->phy);
 			mt7621_control_assert(port);
 			mt7621_pcie_port_clk_disable(port);
 			port->enabled = false;
-- 
2.20.1


  parent reply	other threads:[~2020-04-10  4:00 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-10  3:45 [PATCH AUTOSEL 5.6 01/68] cpufreq: imx6q: Fixes unwanted cpu overclocking on i.MX6ULL Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 02/68] EDAC/mc: Report "unknown memory" on too many DIMM labels found Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 03/68] usb: ucsi: ccg: disable runtime pm during fw flashing Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 04/68] staging: wilc1000: avoid double unlocking of 'wilc->hif_cs' mutex Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 05/68] media: vimc: streamer: fix memory leak in vimc subdevs if kthread_run fails Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 06/68] media: hantro: fix extra MV/MC sync space calculation Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 07/68] media: staging: rkisp1: use consistent bus_info string for media_dev Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 08/68] media: staging: rkisp1: isp: do not set invalid mbus code for pad Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 09/68] media: venus: hfi_parser: Ignore HEVC encoding for V1 Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 10/68] firmware: arm_sdei: fix double-lock on hibernate with shared events Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 11/68] media: arm64: dts: amlogic: add rc-videostrong-kii-pro keymap Sasha Levin
2020-04-10  6:07   ` Sean Young
2020-04-13 17:19     ` Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 12/68] usb: phy: tegra: Include proper GPIO consumer header to fix compile testing Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 13/68] arm64/mm: Hold memory hotplug lock while walking for kernel page table dump Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 14/68] driver core: Reevaluate dev->links.need_for_probe as suppliers are added Sasha Levin
2020-04-10  6:29   ` Greg Kroah-Hartman
2020-04-10  6:39     ` Saravana Kannan
2020-04-10  6:52       ` Greg Kroah-Hartman
2020-04-10 16:25         ` Saravana Kannan
2020-04-11 11:40           ` Greg Kroah-Hartman
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 15/68] sched/vtime: Prevent unstable evaluation of WARN(vtime->state) Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 16/68] iio: imu: st_lsm6dsx: check return value from st_lsm6dsx_sensor_set_enable Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 17/68] null_blk: Fix the null_add_dev() error path Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 18/68] blk-mq: Fix a recently introduced regression in blk_mq_realloc_hw_ctxs() Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 19/68] null_blk: Handle null_add_dev() failures properly Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 20/68] null_blk: Suppress an UBSAN complaint triggered when setting 'memory_backed' Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 21/68] null_blk: fix spurious IO errors after failed past-wp access Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 22/68] media: imx: imx7_mipi_csis: Power off the source when stopping streaming Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 23/68] media: imx: imx7-media-csi: Fix video field handling Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 24/68] xhci: bail out early if driver can't accress host in resume Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 25/68] ACPI: EC: Do not clear boot_ec_is_ecdt in acpi_ec_add() Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 26/68] clocksource/drivers/timer-microchip-pit64b: Fix rate for gck Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 27/68] x86: Don't let pgprot_modify() change the page encryption bit Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 28/68] dma-mapping: Fix dma_pgprot() for unencrypted coherent pages Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 29/68] block: keep bdi->io_pages in sync with max_sectors_kb for stacked devices Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 30/68] debugfs: Check module state before warning in {full/open}_proxy_open() Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 31/68] spi: spi-fsl-dspi: Avoid NULL pointer in dspi_slave_abort for non-DMA mode Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 32/68] irqchip/versatile-fpga: Handle chained IRQs properly Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 33/68] time/sched_clock: Expire timer in hardirq context Sasha Levin
2020-04-10  3:45 ` [PATCH AUTOSEL 5.6 34/68] irqchip/gic-v4.1: Skip absent CPUs while iterating over redistributors Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 35/68] media: allegro: fix type of gop_length in channel_create message Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 36/68] sched: Avoid scale real weight down to zero Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 37/68] sched/fair: Fix condition of avg_load calculation Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 38/68] selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 39/68] PCI/switchtec: Fix init_completion race condition with poll_wait() Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 40/68] block, bfq: move forward the getting of an extra ref in bfq_bfqq_move Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 41/68] io-uring: drop completion when removing file Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 42/68] media: i2c: video-i2c: fix build errors due to 'imply hwmon' Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 43/68] libata: Remove extra scsi_host_put() in ata_scsi_add_hosts() Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 44/68] pstore/platform: fix potential mem leak if pstore_init_fs failed Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 45/68] gfs2: Do log_flush in gfs2_ail_empty_gl even if ail list is empty Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 46/68] gfs2: Don't demote a glock until its revokes are written Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 47/68] cpufreq: imx6q: fix error handling Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 48/68] x86/boot: Use unsigned comparison for addresses Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 49/68] efi/x86: Ignore the memory attributes table on i386 Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 50/68] genirq/irqdomain: Check pointer in irq_domain_alloc_irqs_hierarchy() Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 51/68] blk-mq: Keep set->nr_hw_queues and set->map[].nr_queues in sync Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 52/68] block: Fix use-after-free issue accessing struct io_cq Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 53/68] block, zoned: fix integer overflow with BLKRESETZONE et al Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 54/68] media: mtk-vpu: avoid unaligned access to DTCM buffer Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 55/68] media: i2c: ov5695: Fix power on and off sequences Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 56/68] usb: dwc3: core: add support for disabling SS instances in park mode Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 57/68] irqchip/gic-v4: Provide irq_retrigger to avoid circular locking dependency Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 58/68] md: check arrays is suspended in mddev_detach before call quiesce operations Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 59/68] firmware: fix a double abort case with fw_load_sysfs_fallback Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 60/68] spi: spi-fsl-dspi: Replace interruptible wait queue with a simple completion Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 61/68] locking/lockdep: Avoid recursion in lockdep_count_{for,back}ward_deps() Sasha Levin
2020-04-10  3:46 ` Sasha Levin [this message]
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 63/68] block, bfq: fix use-after-free in bfq_idle_slice_timer_body Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 64/68] btrfs: hold a ref on the root in btrfs_recover_relocation Sasha Levin
2020-04-10 10:09   ` David Sterba
2020-04-13 17:19     ` Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 65/68] btrfs: qgroup: ensure qgroup_rescan_running is only set when the worker is at least queued Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 66/68] btrfs: remove a BUG_ON() from merge_reloc_roots() Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 67/68] btrfs: restart relocate_tree_blocks properly Sasha Levin
2020-04-10  3:46 ` [PATCH AUTOSEL 5.6 68/68] btrfs: track reloc roots based on their commit root bytenr Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200410034634.7731-62-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=sergio.paracuellos@gmail.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).