Richard Cochran says:
====================
phyter bug fixes
While working on a project using the phyter, I noticed some bugs that
have crept in over time. This series fixes those bugs. These patches
are also meant for stable.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
A pair of nested spin locks was introduced in commit 63502b8d0
"dp83640: Fix receive timestamp race condition".
Unfortunately the 'flags' parameter was reused for the inner lock,
clobbering the originally saved IRQ state. This patch fixes the issue
by changing the inner lock to plain spin_lock without irqsave.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Callers of the ext_write function are supposed to hold a mutex that
protects the state of the dialed page, but one caller was missing the
lock from the very start, and over time the code has been changed
without following the rule. This patch cleans up the call sites in
violation of the rule.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Currently, the calibration function that corrects the initial offsets
among multiple devices only works the first time. If the function is
called more than once, the calibration fails and bogus offsets will be
programmed into the devices.
In a well hidden spot, the device documentation tells that trigger indexes
0 and 1 are special in allowing the TRIG_IF_LATE flag to actually work.
This patch fixes the issue by using one of the special triggers during the
recalibration method.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
- IRQ trigger fix for the Intel Cherryview.
- GPIO-to-pin mapping fix for the Cygnus driver.
- GPIO-to-pin mapping fix for the Meson8b driver.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJVYs9QAAoJEEEQszewGV1z/OwP/17/rSeIWVOPdbhCDFE2ziaU
QoXFrA33P3JlPhsrhjIjeAQRRkmUHnhlM51EQZYRfQeccRTPItVq3QXBSdw2+Eze
L8o3wrp/bZ75zxVf2ckr9GXC007K+uHZpY/QdWYdS7dJPx2T569AyWtBTzN8+hXt
Pp9BNLWr+5JCcu9tJV2KevPWlTpYTjn3SChqVWcgSTXlDxlbq/MbKm8JD6Njk15E
+Ei+5O7Cs6+Xm/qHJgYhc4hBnMq18pp/q9GOFFEULi0QUovpj9+dy7gJf8MPxJ5v
yH/2lDBq4scY90afchtBDmSvxcOzJ5eGkI56DTFuEolOZU4e/qV5DqYWxJMpq0Vf
S8uGzN7tmGXits5L2UMk7BG/yS0BlzBLaUoZf5UiqPs/mlKXWCrgvQmpqG3nUHJG
0DoOMSe1qrVWEKRSCspnoNH8UgG4ZKzGhivGnHuNs3mtGzVpKDEebfjceNRpwdOd
asFjLvSR7VYlRRz2+VrIthysR9fTpSepEI5o5OTwijihEQRD2BgOLk9ZL0p9Lv5+
QA+27xxzRIaZukszrjjyy/nQrUbtIZKu5oC+bo5AKqs3/P7Sf3E29JhO2kfGB96H
bfcf3BCUoe3Ve8a8wsnWAWHyg0EKLG1QZ0zx8pcuGtN3DtaJIoschexoF5zWdkjk
BDNBELE1NRV95uhp1yZZ
=xK3z
-----END PGP SIGNATURE-----
Merge tag 'pinctrl-v4.1-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control fixes from Linus Walleij:
"Here are some three pin control fixes for the v4.1 cycle, all
driver-specific. Business as usual and calm as it should be in this
portion of the merge window.
- IRQ trigger fix for the Intel Cherryview
- GPIO-to-pin mapping fix for the Cygnus driver
- GPIO-to-pin mapping fix for the Meson8b driver"
* tag 'pinctrl-v4.1-4' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
pinctrl: Fix gpio/pin mapping for Meson8b
pinctrl: cygnus: fixed incorrect GPIO-pin mapping
pinctrl: cherryview: Read triggering type from HW if not set when requested
- A leak in gpiochip_add path destined for stable.
- A kempld driver bug destined for stable.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJVYs3lAAoJEEEQszewGV1zRl8P/0oTLGgfBNqFp7/TJ8KlfmjO
FhIMpxL8XpKKvGNTfqw4mTWJ5sNntPPmOc9ohRQuavbZXgr25asbpeh72MpLAjcg
Yb4LY46UeHr9bJdvYnmPag/D3hUPYWJS4LdleF8IhKm5oqfAhuyj6fOWIkpYQNOC
IItVjej7hT/qsWxo3z1kjIWhTMhsT8PmOSygNPlCCOyMw2lAHlo2/hUHP12K2DYR
mQ3MpVuJ4QZPdUo9GUWZSww5G7qSLppTZwsUHXvjUQKMB36p/ICTu7QzkzBMaaK4
sCIOQHg4ppSeHZ2srZckwH0pXmNwyj6NxNUgUefQKcGZOqeQaImKHsZlcERm2Mh3
vn7xOzjCa2IAUD2sMFoMz9Eb8r96TZANtrjStkEruiO/++F+xeOF9IY8zl9oYSC6
q3HvUpMrM4fkWJYwfyvzSlAgdG5F3hdQ0Y9EJuHFVIlGTv3OQmUtVayTHLMk/6Bg
sk5XM33SKGP3Lrb63zN8/sDCyG7jNtpMtAqy3B3Chm5CVA6kotdLV02fpycF5H+/
Iec4seBRnvdYqeltW13hCy9gNA7ZuL4UmsmsvgADEdmfVsj61gMbFMRTz2nUQr06
zwHjsr8PGIsFJmLXRfF236YM0w2oGTbsiIRQgr4yii4ffO7vnlne/jUE/wX1z50O
Q0xXb4wZS3kVPTRoCbLz
=6IvA
-----END PGP SIGNATURE-----
Merge tag 'gpio-v4.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio
Pull GPIO fixes from Linus Walleij:
"Here are two GPIO fixes targeted for stable:
- a leak in gpiochip_add path destined for stable
- a kempld driver bug destined for stable"
* tag 'gpio-v4.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
gpio: gpio-kempld: Fix get_direction return value
gpio: fix gpio leak in gpiochip_add error path
stmmac DebugFS entries are currently global to the driver. As a result,
having more than one stmmac device in the system creates the following
error:
* ERROR stmmaceth, debugfs create directory failed
* stmmac_hw_setup: failed debugFS registration
This also results in being able to access the debugfs information for
the first registered device only.
This patch changes the debugfs structure to have one sub-directory per
net-device. Files under "/sys/kernel/debug/stmmaceth" will now show-up
under /sys/kernel/debug/stmmaceth/ethN/.
Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Fix in send of emac regs dump to ethtool which
causing in wrong data interpretation on ethtool
layer for MII and EMAC.
Signed-off-by: Ivan Mikhaylov <ivan@ru.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
* fix firmware name and other things to enable 3165
* fix bad APMG configuration for 8000 (no AMPG on these devices)
* fix MAC address assignment for 8000
* fix firmware debugging triggers (MLME)
* fix several bugs in low power states code (net-detect, d0i3)
ssb:
* fix reboot after device reset for WRT350N v1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQEcBAABAgAGBQJVYwxHAAoJEG4XJFUm622bBTwH/RH0Yx5MBK+sD4d16i70d5nh
dbE0wSBy9ZOT6cMVkAqViZg9T+EQ61+Lre7hwNNM6l/NLkTyjyEXB0Not9ERfLc/
E1g4BBHUfg9LUrbufIgWcTZRLewMk7lOBDN22hIcaVYAM6m9QFNwK+qnkFSXNkCq
Pc0aRDWEYHrVvx8A/XYjInrb/oJqT6z7t83lWHbgtJGmCAVsEaqSvdn2badpecHi
xar7PrdvYkXzFyd7xxmXPcvwkiAzKdIDdF3WR+SuS/V7Tk+2Cw5yrBWrIKc3QqtA
+DfIY3Xa9zHHr1SLvoOQ0VooWTsY+RhSdmEbilG0KFOgNnJz3Zm5Abr2mzkvqvA=
=05aZ
-----END PGP SIGNATURE-----
Merge tag 'wireless-drivers-for-davem-2015-05-25' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers
Kalle Valo says:
====================
iwlwifi:
* fix firmware name and other things to enable 3165
* fix bad APMG configuration for 8000 (no AMPG on these devices)
* fix MAC address assignment for 8000
* fix firmware debugging triggers (MLME)
* fix several bugs in low power states code (net-detect, d0i3)
ssb:
* fix reboot after device reset for WRT350N v1
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
x86 has variable length encoding. x86 JIT compiler is trying
to pick the shortest encoding for given bpf instruction.
While doing so the jump targets are changing, so JIT is doing
multiple passes over the program. Typical program needs 3 passes.
Some very short programs converge with 2 passes. Large programs
may need 4 or 5. But specially crafted bpf programs may hit the
pass limit and if the program converges on the last iteration
the JIT compiler will be producing an image full of 'int 3' insns.
Fix this corner case by doing final iteration over bpf program.
Fixes: 0a14842f5a ("net: filter: Just In Time compiler for x86-64")
Reported-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Tested-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
While adding support for 7425 PHY in the 7xxx PHY driver, the ID that
was used was actually coming from an external PHY: a BCM5461x. Fix this
by using the proper ID for the internal 7425 PHY and set the
PHY_IS_INTERNAL flag, otherwise consumers of this PHY driver would not
be able to properly identify it as such.
Fixes: d068b02cfd ("net: phy: add BCM7425 and BCM7429 PHYs")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Petri Gynther <pgynther@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Add the necessary driver boilerplate to let the driver be used when
the respective ACPI table is discovered by the ACPI subsystem.
[Andre: change table name, add MODULE_DEVICE_TABLE entry and improve
commit message]
Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The ARM Server Base System Architecture[1] document describes a
generic UART which is a subset of the PL011 UART.
It lacks DMA support, baud rate control and modem status line
control, among other things.
The idea is to move the UART initialization and setup into the
firmware (which does this job today already) and let the kernel just
use the UART for sending and receiving characters.
We use the recent refactoring to build a new struct uart_ops
variable which points to some new functions avoiding access to the
missing registers. We reuse as much existing PL011 code as possible.
In contrast to the PL011 the SBSA UART does not define any AMBA or
PrimeCell relations, so we go with a pretty generic probe function
which only uses platform device functions.
A DT binding is provided with this patch, ACPI support is added in a
separate one.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The SBSA UART has a fixed baud rate and flow control setting, which
cannot be changed or queried by software.
Add a vendor specific property to always return fixed values when
trying to read the console options.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The SBSA UART should not be enabled or disabled (it is always on),
and consequently the spec lacks the UART_CR register.
Add a vendor specific property to skip disabling or enabling of the
UART. This will be used later by the SBSA UART support.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To avoid lines with more than 80 characters and to make the
pl011_int() function more readable, move the workaround out into a
separate function.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The PL011 register UART_MIS is actually a bitwise AND of the
UART_RIS and the UART_MISC register.
Since the SBSA UART does not include the _MIS register, use the
two separate registers to get the same behaviour. Since we are
inside the spinlock and we read the _IMSC register only once, there
should be no race issue.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Currently the pl011_probe() function is relying on some AMBA IDs
and a device tree node to initialize the driver and a port.
Both features are not necessarily required for the driver:
- we lack AMBA IDs in the ARM SBSA generic UART and
- we lack a DT node in ACPI systems.
So lets refactor the function to ease later reuse.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Split the pl011_set_termios() function into smaller chunks to allow
easier reuse later when adding SBSA support.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Split the pl011_shutdown() function into smaller chunks to allow
easier reuse later when adding SBSA support.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Split the pl011_startup() function into smaller chunks to allow
easier reuse later when adding SBSA support.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Although we care about not unregistering the driver if there are
still ports connected during the .remove callback, we do miss this
check in the pl011_probe function. So if the current port allocation
fails, but there are other ports already registered, we will kill
those.
So factor out the port removal into a separate function and use that
in the probe function, too.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Tested-by: Naresh Bhat <nbhat@cavium.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
If the mediatek serial port driver is built-in, but serial
console is disabled in Kconfig (e.g. when the serial driver
itself is a loadable module), we get this build error:
drivers/built-in.o: In function `early_mtk8250_setup':
undefined reference to `early_serial8250_setup'
To avoid that problem, this patch encloses the early_mtk8250_setup
function in #ifdef CONFIG_SERIAL_8250_CONSOLE, the same symbol
that guards the early_serial8250_setup function.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Eddie Huang <eddie.huang@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
A configuration that enables earlycon but not the core console
code causes a link error:
drivers/built-in.o: In function `setup_earlycon':
drivers/tty/serial/earlycon.c:70: undefined reference to `uart_parse_earlycon'
That error can be triggered by the newly added samsung earlycon support,
which is missing a 'select' statement.
As suggested by Peter Hurley, solves the problem by moving the
'select SERIAL_EARLYCON' statement to the samsung console driver
option, as it is done by all other console drivers.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: b94ba0328d ("serial: samsung: Add support for early console")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The platform_sysrq_reset_seq code was intended as a way for an embedded
platform to provide its own sysrq sequence at compile time. After over
two years, nobody has started using it in an upstream kernel, and
the platforms that were interested in it have moved on to devicetree,
which can be used to configure the sequence without requiring kernel
changes. The method is also incompatible with the way that most
architectures build support for multiple platforms into a single
kernel.
Now the code is producing warnings when built with gcc-5.1:
drivers/tty/sysrq.c: In function 'sysrq_init':
drivers/tty/sysrq.c:959:33: warning: array subscript is above array bounds [-Warray-bounds]
key = platform_sysrq_reset_seq[i];
We could fix this, but it seems unlikely that it will ever be used,
so let's just remove the code instead. We still have the option to
pass the sequence either in DT, using the kernel command line,
or using the /sys/module/sysrq/parameters/reset_seq file.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 154b7a489a ("Input: sysrq - allow specifying alternate reset sequence")
----
v2: moved sysrq_reset_downtime_ms variable to avoid introducing a compile
warning when CONFIG_INPUT is disabled
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The function mctrl_gpio_init returns failure if the assignment to any
member of the gpio array results in an error pointer. So there is no
need to check for such error values in the other functions.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The currently in-use port->startup and port->shutdown are "okay". The
startup part for instance does the tiny omap extra part and invokes
serial8250_do_startup() for the remaining pieces. The workflow in
serial8250_do_startup() is okay except for the part where UART_RX is
read without a check if there is something to read. I tried to
workaround it in commit 0aa525d118 ("tty: serial: 8250_core: read only
RX if there is something in the FIFO") but then reverted it later in
commit ca8bb4aefb ("serial: 8250: Revert "tty: serial: 8250_core: read
only RX if there is something in the FIFO"").
This is the second attempt to get it to work on older OMAPs without
breaking other chips this time
Peter Hurley suggested to pull in the few needed lines from
serial8250_do_startup() and drop everything else that is not required
including making it simpler like using just request_irq() instead the
chain handler like it is doing now.
So lets try that.
Fixes: ca8bb4aefb ("serial: 8250: Revert "tty: serial: 8250_core:
read only RX if there is something in the FIFO"")
Tested-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
If the call to dmaengine_slave_config() fails, then the DMA buffer will
not be freed/unmapped. Fix this by moving the code that stores the
address of the buffer in the tegra_uart_port structure to before the
call to dmaengine_slave_config().
Reported-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
it seems this is a more typical behaviour from reviewing other console
drivers.
Signed-off-by: Qipan Li <Qipan.Li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Qipan Li <Qipan.Li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
add overrun error's flag mark and parity's counter, we can show the
statistic from procfs node.
BTW, let the indentation of stick bits configuration look better.
Signed-off-by: Qipan Li <Qipan.Li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
In special condition, when cpu schedule into rx_tmo_process_tl or
rx_dma_complete_tl and all the receive dma tasks have done, it will
go into endless loop because no dma task cookie status be changed.
Signed-off-by: Qipan Li <Qipan.Li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>From HW spec, when rxfifo's data is less than AFC_RX_THD(RX threshhold), RTS
signal is active. otherwise, RTS signal is inactive.
Crrently the RX threshhold is set as zero, so RTS has no chance to be
active. This patch replaces the default 0 by a positive number.
Signed-off-by: Qipan Li <Qipan.Li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
differentiate difference port types by re-defining the status MARCO
or putting HW differences into private data of the related ports.
Signed-off-by: Qipan Li <Qipan.Li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This comment does not reflect the actual code. It should be 57600,
not 56000.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This comment does not reflect the actual code. It should be 57600,
not 56000.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
In RS485 mode, we may want to set the delay_rts_after_send value to 0.
In the datasheet, the 0 value is said to "disable" the Transmitter Timeguard but
this is exactly the expected behavior if we want no delay...
Moreover, if the value was set to non-zero value by device-tree or earlier
ioctl command, it was impossible to change it back to zero.
Reported-by: Sami Pietikäinen <Sami.Pietikainen@wapice.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: stable@vger.kernel.org # 3.2+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
There was a hardcoded value of 4096 which should have been N_TTY_BUF_SIZE.
This caused reads from tty to fail with EFAULT when they shouldn't have
done if N_TTY_BUF_SIZE was declared to be something other than 4096.
Signed-off-by: Mark Tomlinson <mark.tomlinson@alliedtelesis.co.nz>
Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The driver configures the IDLE condition to interrupt the SDMA engine.
Since the SDMA UART ROM script doesn't clear the IDLE bit itself, this
caused repeated 1-byte DMA transfers, regardless of available data in the
RX FIFO. Also, when returning due to the IDLE condition, the UART ROM
script already increased its counter, causing residue to be off by one.
This patch clears the IDLE condition to avoid repeated 1-byte DMA transfers
and decreases count by when the DMA transfer was aborted due to the IDLE
condition, fixing serial transfers using DMA on i.MX6Q.
Reported-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Tested-by: Fabio Estevam <fabio.estevam@freescale.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Commit 734745caeb serial/amba-pl011:
(Activate TX IRQ passively) introduces a race which causes the driver
sometimes to attempt to write a character to the TX FIFO when the FIFO
is already full.
The PL011 does not guarantee its behaviour when the FIFO is overfilled.
In practice, this can cause duplicate and/or dropped characters to be
output on the wire. The problem is common enough to be readily
observable on the ARM Juno platform when the PL011 UART is used as
the console and DMA is not in use.
This patch fixes this problem by always polling for space before each
character is written to the FIFO.
This will be amended to a less brute-force approach in a later commit,
but this patch should help ensure correct behaviour for now.
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* twl6030-gpadc - Drop a bonus space from the modalias.
* adis16400 - Report pressure channel scale (not much use without it)
- Use different channel indices for the two voltage channels (ABI)
- Compute the san mask from the channel indices instead of using
~0UL as we now care about extra bits being set.
- Fix burst mode due to rx buffer not being intialized and wrong
tx buffer type being set. Also had the wrong transfer length.
All in all it didn't work, now it does ;)
- adis16448 has additional registers in burst mode so we skip
over them to make it work.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJVYfffAAoJEFSFNJnE9BaIW0IP/2m5Fc23zUk1n7elvoSkxiHQ
oB65wr5qEbvGMAuUC3EF406ZmR6olJMD0ENUEROt+kkL0Vvl3h8wHyga6C23uVXf
j4gnfe0ZENKSarmtHLPtxcVogpVq7tcBbyInYhFxKtGJbbtdFxuj4MWTG7o/XowG
OQL9plUOhO2/Njs4UTcqI8v0Lc687+v9WdZDh68fzSZKo9EYaliucDOnsD/7iXW8
E4jOnlIL31xE1NYYVUyn1det+Q/CALXOanbiSnPXZ1JUuJVtvQ8iUkGXLgu/IKf+
t70Wwn4mVctTj51Na6C2HS/zamehvVEvdhCRsXIikChH43IA6Ohg3+3dZsMmogOj
MKpLcafDFO5yhp6c3vmaNEvThYuXum3tcu7/N2/iNRMWy2tLB4cLcBuIIw+Sh7Mt
RawiyoeOPSjrMHef6y0WdUfG10xEm+rthLDzHqH5LryQX+U/fJ82pr8ckWM7UkL5
eLz1Tvd3X4GclGM6DV/kfav+13bl6hchm1lulUk7JEVjNwAg+IdtI5wZdao5mRSG
D3fNaSpsk9C6KBqnoVYxfzsKrChg2BVtXh0i2qOKjrxyRo8Uf9u7Qqv+DUT2jZdL
K72D51p4SuwWRFxUkLkRlPODuD6UoiHX3HnqkwYVtfZJvTlGqWvHCETwWkuETuHj
YWQdJiRIvQSU4EkUW6JB
=nM+v
-----END PGP SIGNATURE-----
Merge tag 'iio-fixes-for-4.1b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus
Jonathan writes:
Second round of fixes for IIO in the 4.1 cycle.
* twl6030-gpadc - Drop a bonus space from the modalias.
* adis16400 - Report pressure channel scale (not much use without it)
- Use different channel indices for the two voltage channels (ABI)
- Compute the san mask from the channel indices instead of using
~0UL as we now care about extra bits being set.
- Fix burst mode due to rx buffer not being intialized and wrong
tx buffer type being set. Also had the wrong transfer length.
All in all it didn't work, now it does ;)
- adis16448 has additional registers in burst mode so we skip
over them to make it work.
This is a set of five fixes: Two MAINTAINER email updates (urgent because the
non-avagotech emails will start bouncing) an lpfc big endian oops fix, a 256
byte sector hang fix (to eliminate 256 byte sectors) and a storvsc fix which
could cause test unit ready failures on bringup.
Signed-off-by: James Bottomley <JBottomley@Odin.com>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQEcBAABAgAGBQJVYPemAAoJEDeqqVYsXL0MK8UIAJJ8ViLPTfhweb8QgHsUjc4S
5x2jPUD69XT93G81NWKvFhYBnlAvktBZuy6uON7SkLWkbwgiu3pB1Iowqie+Z/h8
1C5VwC8oaT6GZPuakRRxnYmoAaCX7kbdMsibSvc5ouTgvM5FdailhJpkDKcFQlkn
t1GqmRQyH1P54O73af2d+z3AfNfivjoFFXz1YHcUOouiKBVyXzqk1c3CIwTQMelg
B547Rz2cqgdDtgQzZzPkfust/GOYs0ZQMU3rhjeNyIvw/5xa0/Ta2m/v16lckV2I
AvjK2Ht5XSr/Hc9m4yvr5vYCT5+mVrebYMghnUqpHjx1OGTBSU9lPT0exbCCJ/o=
=lXOs
-----END PGP SIGNATURE-----
Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI fixes from James Bottomley:
"This is a set of five fixes: Two MAINTAINER email updates (urgent
because the non-avagotech emails will start bouncing) an lpfc big
endian oops fix, a 256 byte sector hang fix (to eliminate 256 byte
sectors) and a storvsc fix which could cause test unit ready failures
on bringup"
* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
MAINTAINERS: Revise lpfc maintainers for Avago Technologies ownership of Emulex
MAINTAINERS, be2iscsi: change email domain
sd: Disable support for 256 byte/sector disks
lpfc: Fix breakage on big endian kernels
storvsc: Set the SRB flags correctly when no data transfer is needed
includes a fix in phy core w.r.t error checking, couple of fixes
in kconfig one which fixes randconfig error and the other
to fix dependency in QCOM PHY, driver fix in omap-usb2 in the
error path and a driver fix in rcar-gen2 to fix bit location.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAABAgAGBQJVUiAZAAoJEA5ceFyATYLZvLwP/AoADhchCa6SBJ8V4s/huKOn
75Wl4ZdlvGO/s5aIF6Q0rBCpNhhM6p4cPpGHY6vuj8TeKl+opitkE1fu1uIpGv0j
j4XgrUAPvTXExJJsn5KvOIqSB62qtAzYugiWS82ok84vLzg3NZZazvVML2zFMioL
Ih8Kj7mTN7N47IdRuARZK+losIT2BAl6L+DpcLIjmy6+d/+4YTy/IAV4DL8QHVXh
4SR80lSJsidghtM3t5/47YN7eGzn6pgOEftb9hbpuuMa4yI8orDqQg7Xs2vG9NWe
mzfIQtERxi/b4Aci5oG9CM7A1gLBuMe2M8ae8GnM3/goJo/HmwMoIeZZ0yf0E/Da
D/zuSvC/Cd34OkmooW5ZNdcIDOGskJFNVPPvBgDuG+aGDNkyakqB9U21X22cRrBC
JaUmmXYIFtM+Ce4GiexAopMQvQ06sD+Bd7/rb274O+oyxH9lFAPyiJEocEXzGtpk
aND3/ZdHiy44iNycGj8fECNc0SNlybVQml7QUrLOXW0upf8yLr7J4q0l9mVVaZm6
LzwztmAXYOx7d7W5W35LWCmwj55pVitDN3DMNlgpf0B4ryFX51ZVUf3iU6p3UPxu
NH0CYkJvtz7Pcgo/vHHUNy+Plxpwuuq2b/pHg8Pwj7TmZL/9ltuHujkInxe+ypCR
7GlYrUGvB4GniBfYUSUL
=HohU
-----END PGP SIGNATURE-----
Merge tag 'for-4.1-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy into usb-linus
Kishon writes:
phy: fixes for v4.1-rc
includes a fix in phy core w.r.t error checking, couple of fixes
in kconfig one which fixes randconfig error and the other
to fix dependency in QCOM PHY, driver fix in omap-usb2 in the
error path and a driver fix in rcar-gen2 to fix bit location.
Regression in commit 638139eb95 ("usb: hub: allow to process more usb
hub events in parallel")
The regression resulted in intermittent failure to initialise a 10-port
hub (with three internal VL812 4-port hub controllers) on boot, with a
failure rate of around 8%, due to multiple race conditions when
accessing addr_dev and slot_id in struct xhci_hcd.
This regression also exposed a problem with xhci_setup_device, which
"should be protected by the usb_address0_mutex" but no longer is due to
commit 6fecd4f2a5 ("USB: separate usb_address0 mutexes for each bus")
With separate buses (and locks) it is no longer the case that a single
lock will protect xhci_setup_device from accesses by two parallel
threads processing events on the two buses.
Fix this by adding a mutex to protect addr_dev and slot_id in struct
xhci_hcd, and by making the assignment of slot_id atomic.
Fixes multiple boot errors:
[ 0.583008] xhci_hcd 0000:00:14.0: Bad Slot ID 2
[ 0.583009] xhci_hcd 0000:00:14.0: Could not allocate xHCI USB device data structures
[ 0.583012] usb usb1-port3: couldn't allocate usb_device
And:
[ 0.637409] xhci_hcd 0000:00:14.0: Error while assigning device slot ID
[ 0.637417] xhci_hcd 0000:00:14.0: Max number of devices this xHCI host supports is 32.
[ 0.637421] usb usb1-port1: couldn't allocate usb_device
And:
[ 0.753372] xhci_hcd 0000:00:14.0: ERROR: unexpected setup context command completion code 0x0.
[ 0.753373] usb 1-3: hub failed to enable device, error -22
[ 0.753400] xhci_hcd 0000:00:14.0: Error while assigning device slot ID
[ 0.753402] xhci_hcd 0000:00:14.0: Max number of devices this xHCI host supports is 32.
[ 0.753403] usb usb1-port3: couldn't allocate usb_device
And:
[ 11.018386] usb 1-3: device descriptor read/all, error -110
And:
[ 5.753838] xhci_hcd 0000:00:14.0: Timeout while waiting for setup device command
Tested with 200 reboots, resulting in no USB hub init related errors.
Fixes: 638139eb95 ("usb: hub: allow to process more usb hub events in parallel")
Link: https://lkml.kernel.org/g/CAP-bSRb=A0iEYobdGCLpwynS7pkxpt_9ZnwyZTPVAoy0Y=Zo3Q@mail.gmail.com
Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
Cc: <stable@vger.kernel.org> # 3.18+
[changed git commit description style for checkpatch -Mathias]
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>