Russell King
db2eabff57
phy: armada-38x: fix NETA lockup when repeatedly switching speeds
...
[ Upstream commit 1dea06cd643da38931382ebdc151efced201ffad ]
The mvneta hardware appears to lock up in various random ways when
repeatedly switching speeds between 1G and 2.5G, which involves
reprogramming the COMPHY. It is not entirely clear why this happens,
but best guess is that reprogramming the COMPHY glitches mvneta clocks
causing the hardware to fail. It seems that rebooting resolves the
failure, but not down/up cycling the interface alone.
Various other approaches have been tried, such as trying to cleanly
power down the COMPHY and then take it back through the power up
initialisation, but this does not seem to help.
It was finally noticed that u-boot's last step when configuring a
COMPHY for "SGMII" mode was to poke at a register described as
"GBE_CONFIGURATION_REG", which is undocumented in any external
documentation. All that we have is the fact that u-boot sets a bit
corresponding to the "SGMII" lane at the end of COMPHY initialisation.
Experimentation shows that if we clear this bit prior to changing the
speed, and then set it afterwards, mvneta does not suffer this problem
on the SolidRun Clearfog when switching speeds between 1G and 2.5G.
This problem was found while script-testing phylink.
This fix also requires the corresponding change to DT to be effective.
See "ARM: dts: armada-38x: fix NETA lockup when repeatedly switching
speeds".
Fixes: 14dc100b44 ("phy: armada38x: add common phy support")
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/E1jxtRj-0003Tz-CG@rmk-PC.armlinux.org.uk
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-19 08:16:14 +02:00
..
accessibility
acpi
ACPICA: Do not increment operation_region reference counts for field units
2020-08-19 08:16:05 +02:00
amba
android
binder: Prevent context manager from incrementing ref 0
2020-08-11 15:33:35 +02:00
ata
ata/libata: Fix usage of page address by page_address in ata_scsi_mode_select_xlat function
2020-06-30 15:37:03 -04:00
atm
atm: fix atm_dev refcnt leaks in atmtcp_remove_persistent
2020-08-11 15:33:38 +02:00
auxdisplay
base
PM: wakeup: Show statistics for deleted wakeup sources again
2020-07-31 18:39:32 +02:00
bcma
block
loop: be paranoid on exit and prevent new additions / removals
2020-08-19 08:15:59 +02:00
bluetooth
Bluetooth: btmtksdio: fix up firmware download sequence
2020-08-19 08:16:07 +02:00
bus
bus: ti-sysc: Add missing quirk flags for usb_host_hs
2020-08-19 08:16:00 +02:00
cdrom
char
agp/intel: Fix a memory leak on module initialisation failure
2020-08-19 08:16:05 +02:00
clk
clk: bcm63xx-gate: fix last clock availability
2020-08-19 08:16:07 +02:00
clocksource
arm64: arch_timer: Disable the compat vdso for cores affected by ARM64_WORKAROUND_1418040
2020-07-22 09:32:51 +02:00
connector
counter
cpufreq
cpufreq: Fix up cpufreq_boost_set_sw()
2020-06-17 16:40:33 +02:00
cpuidle
cpuidle: Fix three reference count leaks
2020-06-22 09:31:10 +02:00
crypto
crypto: ccree - fix resource leak on error path
2020-08-19 08:15:55 +02:00
dax
device-dax: don't leak kernel memory to user space after unloading kmem
2020-05-27 17:46:48 +02:00
dca
devfreq
dio
dma
dmaengine: ioat setting ioat timeout as module parameter
2020-07-29 10:18:37 +02:00
dma-buf
dmabuf: use spinlock to access dmabuf->name
2020-07-29 10:18:29 +02:00
edac
EDAC: Fix reference count leaks
2020-08-19 08:15:54 +02:00
eisa
extcon
extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()'
2020-06-24 17:50:36 +02:00
firewire
firmware
firmware: arm_scmi: Fix SCMI genpd domain probing
2020-08-19 08:15:55 +02:00
fpga
fpga: dfl: fix bug in port reset handshake
2020-07-29 10:18:31 +02:00
fsi
gnss
gnss: sirf: fix error return code in sirf_probe()
2020-06-22 09:31:20 +02:00
gpio
gpio: arizona: put pm_runtime in case of failure
2020-07-29 10:18:26 +02:00
gpu
gpu: ipu-v3: Restore RGB32, BGR32
2020-08-19 08:16:13 +02:00
greybus
hid
HID: input: Fix devices that return multiple bytes in battery report
2020-08-19 08:15:53 +02:00
hsi
hv
Drivers: hv: vmbus: Ignore CHANNELMSG_TL_CONNECT_RESULT(23)
2020-08-11 15:33:38 +02:00
hwmon
hwmon: (scmi) Fix potential buffer overflow in scmi_hwmon_probe()
2020-07-29 10:18:39 +02:00
hwspinlock
hwtracing
coresight: tmc: Fix TMC mode read in tmc_read_unprepare_etb()
2020-08-19 08:16:14 +02:00
i2c
i2c: slave: add sanity check when unregistering
2020-08-11 15:33:37 +02:00
i3c
ide
idle
iio
iio: adc: ad7780: Fix a resource handling path in 'ad7780_probe()'
2020-07-22 09:33:02 +02:00
infiniband
RDMA/rxe: Prevent access to wr->next ptr afrer wr is posted to send queue
2020-08-19 08:16:12 +02:00
input
Input: elan_i2c - only increment wakeup count on touch
2020-07-29 10:18:38 +02:00
interconnect
iommu
irqdomain/treewide: Keep firmware node unconditionally allocated
2020-07-29 10:18:28 +02:00
ipack
ipack: tpci200: fix error return code in tpci200_register()
2020-05-27 17:46:47 +02:00
irqchip
irqchip/irq-mtk-sysirq: Replace spinlock with raw_spinlock
2020-08-19 08:16:02 +02:00
isdn
leds
leds: core: Flush scheduled work for system suspend
2020-08-19 08:16:11 +02:00
lightnvm
macintosh
drivers/macintosh: Fix memleak in windfarm_pm112 driver
2020-06-22 09:31:22 +02:00
mailbox
mailbox: zynqmp-ipi: Fix NULL vs IS_ERR() check in zynqmp_ipi_mbox_probe()
2020-06-24 17:50:36 +02:00
mcb
md
bcache: fix super block seq numbers comparision in register_cache_set()
2020-08-19 08:16:05 +02:00
media
media: cros-ec-cec: do not bail on device_init_wakeup failure
2020-08-19 08:16:10 +02:00
memory
memstick
message
scsi: mptscsih: Fix read sense data size
2020-07-16 08:16:36 +02:00
mfd
mfd: stmfx: Disable IRQ in suspend to avoid spurious interrupt
2020-06-24 17:50:33 +02:00
misc
cxl: Fix kobject memleak
2020-08-19 08:16:08 +02:00
mmc
mmc: sdhci-pci-o2micro: Bug fix for O2 host controller Seabird1
2020-08-19 08:16:04 +02:00
mtd
mtd: properly check all write ioctls for permissions
2020-08-11 15:33:35 +02:00
mux
net
mt76: mt7615: fix potential memory leak in mcu message handler
2020-08-19 08:16:14 +02:00
nfc
nfc: s3fwrn5: add missing release on skb in s3fwrn5_recv_frame
2020-08-05 09:59:50 +02:00
ntb
NTB: perf: Fix race condition when run with ntb_test
2020-06-24 17:50:41 +02:00
nubus
nvdimm
nvme
nvme-multipath: do not fall back to __nvme_find_path() for non-optimized paths
2020-08-19 08:15:59 +02:00
nvmem
nvmem: qfprom: remove incorrect write support
2020-06-10 20:24:57 +02:00
of
of: of_mdio: Correct loop scanning logic
2020-07-22 09:32:55 +02:00
opp
oprofile
parisc
parport
pci
PCI/ASPM: Add missing newline in sysfs 'policy'
2020-08-19 08:16:13 +02:00
pcmcia
perf
drivers/perf: Prevent forced unbinding of PMU drivers
2020-07-29 10:18:40 +02:00
phy
phy: armada-38x: fix NETA lockup when repeatedly switching speeds
2020-08-19 08:16:14 +02:00
pinctrl
pinctrl: amd: fix npins for uart0 in kerncz_groups
2020-07-29 10:18:26 +02:00
platform
platform/x86: asus-nb-wmi: add support for ASUS ROG Zephyrus G14 and G15
2020-08-19 08:16:03 +02:00
pnp
power
power: supply: smb347-charger: IRQSTAT_D is volatile
2020-06-24 17:50:25 +02:00
powercap
pps
ps3
ptp
pwm
pwm: jz4740: Fix build failure
2020-07-16 08:16:48 +02:00
rapidio
rapidio: fix an error in get_user_pages_fast() error handling
2020-05-27 17:46:48 +02:00
ras
regulator
regulator: fix memory leak on error path of regulator_register()
2020-08-19 08:15:57 +02:00
remoteproc
remoteproc: qcom_q6v5_mss: map/unmap mpss segments before/after use
2020-06-24 17:50:13 +02:00
reset
rpmsg
rtc
rtc: rv3028: Add missed check for devm_regmap_init_i2c()
2020-06-24 17:50:36 +02:00
s390
s390/qeth: fix error handling for isolation mode cmds
2020-06-30 15:36:57 -04:00
sbus
scsi
scsi: scsi_debug: Add check for sdebug_max_queue during module init
2020-08-19 08:16:11 +02:00
sfi
sh
siox
slimbus
slimbus: core: Fix mismatch in of_node_get/put
2020-07-22 09:33:08 +02:00
soc
soc: qcom: rpmh-rsc: Set suppress_bind_attrs flag
2020-08-19 08:15:59 +02:00
soundwire
soundwire: intel: fix memory leak with devm_kasprintf
2020-07-22 09:33:00 +02:00
spi
spi: lantiq-ssc: Fix warning by using WQ_MEM_RECLAIM
2020-08-19 08:16:14 +02:00
spmi
ssb
staging
staging: rtl8192u: fix a dubious looking mask before a shift
2020-08-19 08:16:13 +02:00
target
scsi: target: tcmu: Fix a use after free in tcmu_check_expired_queue_cmd()
2020-06-24 17:50:34 +02:00
tc
tee
thermal
thermal: ti-soc-thermal: Fix reversed condition in ti_thermal_expose_sensor()
2020-08-19 08:16:14 +02:00
thunderbolt
tty
vt: Reject zero-sized screen buffer size.
2020-07-29 10:18:43 +02:00
uio
uio_pdrv_genirq: fix use without device tree and no interrupt
2020-07-22 09:33:13 +02:00
usb
usb: core: fix quirks_param_set() writing to a const pointer
2020-08-19 08:16:14 +02:00
vfio
vfio/mdev: Fix reference count leak in add_mdev_supported_type
2020-06-24 17:50:36 +02:00
vhost
vhost/scsi: fix up req type endian-ness
2020-08-05 09:59:42 +02:00
video
video: pxafb: Fix the function used to balance a 'dma_alloc_coherent()' call
2020-08-19 08:16:06 +02:00
virt
virt: vbox: Fix guest capabilities mask check
2020-07-22 09:33:11 +02:00
virtio
virtio_balloon: fix up endian-ness for free cmd id
2020-08-05 09:59:43 +02:00
visorbus
vlynq
vme
w1
w1: omap-hdq: cleanup to add missing newline for some dev_dbg
2020-06-22 09:31:26 +02:00
watchdog
watchdog: da9062: No need to ping manually before setting timeout
2020-06-24 17:50:32 +02:00
xen
xen/pvcalls-back: test for errors when calling backend_connect()
2020-06-17 16:40:38 +02:00
zorro
Kconfig
Makefile