mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-05 13:25:20 +02:00
Merge branch 'v5.13/standard/base' into v5.13/standard/preempt-rt/base
This commit is contained in:
commit
eaf308f87d
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 13
|
PATCHLEVEL = 13
|
||||||
SUBLEVEL = 14
|
SUBLEVEL = 15
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Opossums on Parade
|
NAME = Opossums on Parade
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,10 @@
|
||||||
model = "Microchip PolarFire-SoC Icicle Kit";
|
model = "Microchip PolarFire-SoC Icicle Kit";
|
||||||
compatible = "microchip,mpfs-icicle-kit";
|
compatible = "microchip,mpfs-icicle-kit";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
ethernet0 = &emac1;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = &serial0;
|
stdout-path = &serial0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -317,7 +317,7 @@
|
||||||
reg = <0x0 0x20112000 0x0 0x2000>;
|
reg = <0x0 0x20112000 0x0 0x2000>;
|
||||||
interrupt-parent = <&plic>;
|
interrupt-parent = <&plic>;
|
||||||
interrupts = <70 71 72 73>;
|
interrupts = <70 71 72 73>;
|
||||||
mac-address = [00 00 00 00 00 00];
|
local-mac-address = [00 00 00 00 00 00];
|
||||||
clocks = <&clkcfg 5>, <&clkcfg 2>;
|
clocks = <&clkcfg 5>, <&clkcfg 2>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
clock-names = "pclk", "hclk";
|
clock-names = "pclk", "hclk";
|
||||||
|
|
|
@ -90,6 +90,7 @@ struct perf_ibs {
|
||||||
unsigned long offset_mask[1];
|
unsigned long offset_mask[1];
|
||||||
int offset_max;
|
int offset_max;
|
||||||
unsigned int fetch_count_reset_broken : 1;
|
unsigned int fetch_count_reset_broken : 1;
|
||||||
|
unsigned int fetch_ignore_if_zero_rip : 1;
|
||||||
struct cpu_perf_ibs __percpu *pcpu;
|
struct cpu_perf_ibs __percpu *pcpu;
|
||||||
|
|
||||||
struct attribute **format_attrs;
|
struct attribute **format_attrs;
|
||||||
|
@ -672,6 +673,10 @@ fail:
|
||||||
if (check_rip && (ibs_data.regs[2] & IBS_RIP_INVALID)) {
|
if (check_rip && (ibs_data.regs[2] & IBS_RIP_INVALID)) {
|
||||||
regs.flags &= ~PERF_EFLAGS_EXACT;
|
regs.flags &= ~PERF_EFLAGS_EXACT;
|
||||||
} else {
|
} else {
|
||||||
|
/* Workaround for erratum #1197 */
|
||||||
|
if (perf_ibs->fetch_ignore_if_zero_rip && !(ibs_data.regs[1]))
|
||||||
|
goto out;
|
||||||
|
|
||||||
set_linear_ip(®s, ibs_data.regs[1]);
|
set_linear_ip(®s, ibs_data.regs[1]);
|
||||||
regs.flags |= PERF_EFLAGS_EXACT;
|
regs.flags |= PERF_EFLAGS_EXACT;
|
||||||
}
|
}
|
||||||
|
@ -769,6 +774,9 @@ static __init void perf_event_ibs_init(void)
|
||||||
if (boot_cpu_data.x86 >= 0x16 && boot_cpu_data.x86 <= 0x18)
|
if (boot_cpu_data.x86 >= 0x16 && boot_cpu_data.x86 <= 0x18)
|
||||||
perf_ibs_fetch.fetch_count_reset_broken = 1;
|
perf_ibs_fetch.fetch_count_reset_broken = 1;
|
||||||
|
|
||||||
|
if (boot_cpu_data.x86 == 0x19 && boot_cpu_data.x86_model < 0x10)
|
||||||
|
perf_ibs_fetch.fetch_ignore_if_zero_rip = 1;
|
||||||
|
|
||||||
perf_ibs_pmu_init(&perf_ibs_fetch, "ibs_fetch");
|
perf_ibs_pmu_init(&perf_ibs_fetch, "ibs_fetch");
|
||||||
|
|
||||||
if (ibs_caps & IBS_CAPS_OPCNT) {
|
if (ibs_caps & IBS_CAPS_OPCNT) {
|
||||||
|
|
|
@ -213,6 +213,7 @@ static struct pmu pmu_class = {
|
||||||
.stop = pmu_event_stop,
|
.stop = pmu_event_stop,
|
||||||
.read = pmu_event_read,
|
.read = pmu_event_read,
|
||||||
.capabilities = PERF_PMU_CAP_NO_EXCLUDE,
|
.capabilities = PERF_PMU_CAP_NO_EXCLUDE,
|
||||||
|
.module = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int power_cpu_exit(unsigned int cpu)
|
static int power_cpu_exit(unsigned int cpu)
|
||||||
|
|
|
@ -62,7 +62,7 @@ static struct pt_cap_desc {
|
||||||
PT_CAP(single_range_output, 0, CPUID_ECX, BIT(2)),
|
PT_CAP(single_range_output, 0, CPUID_ECX, BIT(2)),
|
||||||
PT_CAP(output_subsys, 0, CPUID_ECX, BIT(3)),
|
PT_CAP(output_subsys, 0, CPUID_ECX, BIT(3)),
|
||||||
PT_CAP(payloads_lip, 0, CPUID_ECX, BIT(31)),
|
PT_CAP(payloads_lip, 0, CPUID_ECX, BIT(31)),
|
||||||
PT_CAP(num_address_ranges, 1, CPUID_EAX, 0x3),
|
PT_CAP(num_address_ranges, 1, CPUID_EAX, 0x7),
|
||||||
PT_CAP(mtc_periods, 1, CPUID_EAX, 0xffff0000),
|
PT_CAP(mtc_periods, 1, CPUID_EAX, 0xffff0000),
|
||||||
PT_CAP(cycle_thresholds, 1, CPUID_EBX, 0xffff),
|
PT_CAP(cycle_thresholds, 1, CPUID_EBX, 0xffff),
|
||||||
PT_CAP(psb_periods, 1, CPUID_EBX, 0xffff0000),
|
PT_CAP(psb_periods, 1, CPUID_EBX, 0xffff0000),
|
||||||
|
|
|
@ -30,7 +30,7 @@ config XTENSA
|
||||||
select HAVE_DMA_CONTIGUOUS
|
select HAVE_DMA_CONTIGUOUS
|
||||||
select HAVE_EXIT_THREAD
|
select HAVE_EXIT_THREAD
|
||||||
select HAVE_FUNCTION_TRACER
|
select HAVE_FUNCTION_TRACER
|
||||||
select HAVE_FUTEX_CMPXCHG if !MMU
|
select HAVE_FUTEX_CMPXCHG if !MMU && FUTEX
|
||||||
select HAVE_HW_BREAKPOINT if PERF_EVENTS
|
select HAVE_HW_BREAKPOINT if PERF_EVENTS
|
||||||
select HAVE_IRQ_TIME_ACCOUNTING
|
select HAVE_IRQ_TIME_ACCOUNTING
|
||||||
select HAVE_PCI
|
select HAVE_PCI
|
||||||
|
|
|
@ -213,7 +213,7 @@ config BLK_DEV_LOOP_MIN_COUNT
|
||||||
dynamically allocated with the /dev/loop-control interface.
|
dynamically allocated with the /dev/loop-control interface.
|
||||||
|
|
||||||
config BLK_DEV_CRYPTOLOOP
|
config BLK_DEV_CRYPTOLOOP
|
||||||
tristate "Cryptoloop Support"
|
tristate "Cryptoloop Support (DEPRECATED)"
|
||||||
select CRYPTO
|
select CRYPTO
|
||||||
select CRYPTO_CBC
|
select CRYPTO_CBC
|
||||||
depends on BLK_DEV_LOOP
|
depends on BLK_DEV_LOOP
|
||||||
|
@ -225,7 +225,7 @@ config BLK_DEV_CRYPTOLOOP
|
||||||
WARNING: This device is not safe for journaled file systems like
|
WARNING: This device is not safe for journaled file systems like
|
||||||
ext3 or Reiserfs. Please use the Device Mapper crypto module
|
ext3 or Reiserfs. Please use the Device Mapper crypto module
|
||||||
instead, which can be configured to be on-disk compatible with the
|
instead, which can be configured to be on-disk compatible with the
|
||||||
cryptoloop device.
|
cryptoloop device. cryptoloop support will be removed in Linux 5.16.
|
||||||
|
|
||||||
source "drivers/block/drbd/Kconfig"
|
source "drivers/block/drbd/Kconfig"
|
||||||
|
|
||||||
|
|
|
@ -189,6 +189,8 @@ init_cryptoloop(void)
|
||||||
|
|
||||||
if (rc)
|
if (rc)
|
||||||
printk(KERN_ERR "cryptoloop: loop_register_transfer failed\n");
|
printk(KERN_ERR "cryptoloop: loop_register_transfer failed\n");
|
||||||
|
else
|
||||||
|
pr_warn("the cryptoloop driver has been deprecated and will be removed in in Linux 5.16\n");
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -585,21 +585,21 @@ static const struct ipu_rgb def_bgra_16 = {
|
||||||
.bits_per_pixel = 16,
|
.bits_per_pixel = 16,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define Y_OFFSET(pix, x, y) ((x) + pix->width * (y))
|
#define Y_OFFSET(pix, x, y) ((x) + pix->bytesperline * (y))
|
||||||
#define U_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define U_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
|
||||||
(pix->width * ((y) / 2) / 2) + (x) / 2)
|
(pix->bytesperline * ((y) / 2) / 2) + (x) / 2)
|
||||||
#define V_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define V_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
|
||||||
(pix->width * pix->height / 4) + \
|
(pix->bytesperline * pix->height / 4) + \
|
||||||
(pix->width * ((y) / 2) / 2) + (x) / 2)
|
(pix->bytesperline * ((y) / 2) / 2) + (x) / 2)
|
||||||
#define U2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define U2_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
|
||||||
(pix->width * (y) / 2) + (x) / 2)
|
(pix->bytesperline * (y) / 2) + (x) / 2)
|
||||||
#define V2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define V2_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
|
||||||
(pix->width * pix->height / 2) + \
|
(pix->bytesperline * pix->height / 2) + \
|
||||||
(pix->width * (y) / 2) + (x) / 2)
|
(pix->bytesperline * (y) / 2) + (x) / 2)
|
||||||
#define UV_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define UV_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
|
||||||
(pix->width * ((y) / 2)) + (x))
|
(pix->bytesperline * ((y) / 2)) + (x))
|
||||||
#define UV2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
|
#define UV2_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
|
||||||
(pix->width * y) + (x))
|
(pix->bytesperline * y) + (x))
|
||||||
|
|
||||||
#define NUM_ALPHA_CHANNELS 7
|
#define NUM_ALPHA_CHANNELS 7
|
||||||
|
|
||||||
|
|
|
@ -1346,7 +1346,7 @@ static int stk_camera_probe(struct usb_interface *interface,
|
||||||
if (!dev->isoc_ep) {
|
if (!dev->isoc_ep) {
|
||||||
pr_err("Could not find isoc-in endpoint\n");
|
pr_err("Could not find isoc-in endpoint\n");
|
||||||
err = -ENODEV;
|
err = -ENODEV;
|
||||||
goto error;
|
goto error_put;
|
||||||
}
|
}
|
||||||
dev->vsettings.palette = V4L2_PIX_FMT_RGB565;
|
dev->vsettings.palette = V4L2_PIX_FMT_RGB565;
|
||||||
dev->vsettings.mode = MODE_VGA;
|
dev->vsettings.mode = MODE_VGA;
|
||||||
|
@ -1359,10 +1359,12 @@ static int stk_camera_probe(struct usb_interface *interface,
|
||||||
|
|
||||||
err = stk_register_video_device(dev);
|
err = stk_register_video_device(dev);
|
||||||
if (err)
|
if (err)
|
||||||
goto error;
|
goto error_put;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
error_put:
|
||||||
|
usb_put_intf(interface);
|
||||||
error:
|
error:
|
||||||
v4l2_ctrl_handler_free(hdl);
|
v4l2_ctrl_handler_free(hdl);
|
||||||
v4l2_device_unregister(&dev->v4l2_dev);
|
v4l2_device_unregister(&dev->v4l2_dev);
|
||||||
|
|
|
@ -1277,15 +1277,16 @@ static int mv88e6393x_serdes_port_errata(struct mv88e6xxx_chip *chip, int lane)
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/* mv88e6393x family errata 4.6:
|
/* mv88e6393x family errata 4.6:
|
||||||
* Cannot clear PwrDn bit on SERDES on port 0 if device is configured
|
* Cannot clear PwrDn bit on SERDES if device is configured CPU_MGD
|
||||||
* CPU_MGD mode or P0_mode is configured for [x]MII.
|
* mode or P0_mode is configured for [x]MII.
|
||||||
* Workaround: Set Port0 SERDES register 4.F002 bit 5=0 and bit 15=1.
|
* Workaround: Set SERDES register 4.F002 bit 5=0 and bit 15=1.
|
||||||
*
|
*
|
||||||
* It seems that after this workaround the SERDES is automatically
|
* It seems that after this workaround the SERDES is automatically
|
||||||
* powered up (the bit is cleared), so power it down.
|
* powered up (the bit is cleared), so power it down.
|
||||||
*/
|
*/
|
||||||
if (lane == MV88E6393X_PORT0_LANE) {
|
if (lane == MV88E6393X_PORT0_LANE || lane == MV88E6393X_PORT9_LANE ||
|
||||||
err = mv88e6390_serdes_read(chip, MV88E6393X_PORT0_LANE,
|
lane == MV88E6393X_PORT10_LANE) {
|
||||||
|
err = mv88e6390_serdes_read(chip, lane,
|
||||||
MDIO_MMD_PHYXS,
|
MDIO_MMD_PHYXS,
|
||||||
MV88E6393X_SERDES_POC, ®);
|
MV88E6393X_SERDES_POC, ®);
|
||||||
if (err)
|
if (err)
|
||||||
|
|
|
@ -275,6 +275,12 @@ void gem_ptp_rxstamp(struct macb *bp, struct sk_buff *skb,
|
||||||
|
|
||||||
if (GEM_BFEXT(DMA_RXVALID, desc->addr)) {
|
if (GEM_BFEXT(DMA_RXVALID, desc->addr)) {
|
||||||
desc_ptp = macb_ptp_desc(bp, desc);
|
desc_ptp = macb_ptp_desc(bp, desc);
|
||||||
|
/* Unlikely but check */
|
||||||
|
if (!desc_ptp) {
|
||||||
|
dev_warn_ratelimited(&bp->pdev->dev,
|
||||||
|
"Timestamp not supported in BD\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
gem_hw_timestamp(bp, desc_ptp->ts_1, desc_ptp->ts_2, &ts);
|
gem_hw_timestamp(bp, desc_ptp->ts_1, desc_ptp->ts_2, &ts);
|
||||||
memset(shhwtstamps, 0, sizeof(struct skb_shared_hwtstamps));
|
memset(shhwtstamps, 0, sizeof(struct skb_shared_hwtstamps));
|
||||||
shhwtstamps->hwtstamp = ktime_set(ts.tv_sec, ts.tv_nsec);
|
shhwtstamps->hwtstamp = ktime_set(ts.tv_sec, ts.tv_nsec);
|
||||||
|
@ -307,8 +313,11 @@ int gem_ptp_txstamp(struct macb_queue *queue, struct sk_buff *skb,
|
||||||
if (CIRC_SPACE(head, tail, PTP_TS_BUFFER_SIZE) == 0)
|
if (CIRC_SPACE(head, tail, PTP_TS_BUFFER_SIZE) == 0)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
|
|
||||||
desc_ptp = macb_ptp_desc(queue->bp, desc);
|
desc_ptp = macb_ptp_desc(queue->bp, desc);
|
||||||
|
/* Unlikely but check */
|
||||||
|
if (!desc_ptp)
|
||||||
|
return -EINVAL;
|
||||||
|
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
|
||||||
tx_timestamp = &queue->tx_timestamps[head];
|
tx_timestamp = &queue->tx_timestamps[head];
|
||||||
tx_timestamp->skb = skb;
|
tx_timestamp->skb = skb;
|
||||||
/* ensure ts_1/ts_2 is loaded after ctrl (TX_USED check) */
|
/* ensure ts_1/ts_2 is loaded after ctrl (TX_USED check) */
|
||||||
|
|
|
@ -616,7 +616,12 @@ static int qed_enable_msix(struct qed_dev *cdev,
|
||||||
rc = cnt;
|
rc = cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rc > 0) {
|
/* For VFs, we should return with an error in case we didn't get the
|
||||||
|
* exact number of msix vectors as we requested.
|
||||||
|
* Not doing that will lead to a crash when starting queues for
|
||||||
|
* this VF.
|
||||||
|
*/
|
||||||
|
if ((IS_PF(cdev) && rc > 0) || (IS_VF(cdev) && rc == cnt)) {
|
||||||
/* MSI-x configuration was achieved */
|
/* MSI-x configuration was achieved */
|
||||||
int_params->out.int_mode = QED_INT_MODE_MSIX;
|
int_params->out.int_mode = QED_INT_MODE_MSIX;
|
||||||
int_params->out.num_vectors = rc;
|
int_params->out.num_vectors = rc;
|
||||||
|
|
|
@ -1874,6 +1874,7 @@ static void qede_sync_free_irqs(struct qede_dev *edev)
|
||||||
}
|
}
|
||||||
|
|
||||||
edev->int_info.used_cnt = 0;
|
edev->int_info.used_cnt = 0;
|
||||||
|
edev->int_info.msix_cnt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qede_req_msix_irqs(struct qede_dev *edev)
|
static int qede_req_msix_irqs(struct qede_dev *edev)
|
||||||
|
@ -2427,7 +2428,6 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode,
|
||||||
goto out;
|
goto out;
|
||||||
err4:
|
err4:
|
||||||
qede_sync_free_irqs(edev);
|
qede_sync_free_irqs(edev);
|
||||||
memset(&edev->int_info.msix_cnt, 0, sizeof(struct qed_int_info));
|
|
||||||
err3:
|
err3:
|
||||||
qede_napi_disable_remove(edev);
|
qede_napi_disable_remove(edev);
|
||||||
err2:
|
err2:
|
||||||
|
|
|
@ -53,7 +53,8 @@ static int zynqmp_reset_status(struct reset_controller_dev *rcdev,
|
||||||
unsigned long id)
|
unsigned long id)
|
||||||
{
|
{
|
||||||
struct zynqmp_reset_data *priv = to_zynqmp_reset_data(rcdev);
|
struct zynqmp_reset_data *priv = to_zynqmp_reset_data(rcdev);
|
||||||
int val, err;
|
int err;
|
||||||
|
u32 val;
|
||||||
|
|
||||||
err = zynqmp_pm_reset_get_status(priv->data->reset_id + id, &val);
|
err = zynqmp_pm_reset_get_status(priv->data->reset_id + id, &val);
|
||||||
if (err)
|
if (err)
|
||||||
|
|
|
@ -1110,10 +1110,8 @@ static int cp210x_set_chars(struct usb_serial_port *port,
|
||||||
|
|
||||||
kfree(dmabuf);
|
kfree(dmabuf);
|
||||||
|
|
||||||
if (result < 0) {
|
if (result < 0)
|
||||||
dev_err(&port->dev, "failed to set special chars: %d\n", result);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1138,6 +1136,7 @@ static void cp210x_set_flow_control(struct tty_struct *tty,
|
||||||
struct cp210x_flow_ctl flow_ctl;
|
struct cp210x_flow_ctl flow_ctl;
|
||||||
u32 flow_repl;
|
u32 flow_repl;
|
||||||
u32 ctl_hs;
|
u32 ctl_hs;
|
||||||
|
bool crtscts;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1165,8 +1164,10 @@ static void cp210x_set_flow_control(struct tty_struct *tty,
|
||||||
chars.bXoffChar = STOP_CHAR(tty);
|
chars.bXoffChar = STOP_CHAR(tty);
|
||||||
|
|
||||||
ret = cp210x_set_chars(port, &chars);
|
ret = cp210x_set_chars(port, &chars);
|
||||||
if (ret)
|
if (ret) {
|
||||||
return;
|
dev_err(&port->dev, "failed to set special chars: %d\n",
|
||||||
|
ret);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&port_priv->mutex);
|
mutex_lock(&port_priv->mutex);
|
||||||
|
@ -1195,14 +1196,14 @@ static void cp210x_set_flow_control(struct tty_struct *tty,
|
||||||
flow_repl |= CP210X_SERIAL_RTS_FLOW_CTL;
|
flow_repl |= CP210X_SERIAL_RTS_FLOW_CTL;
|
||||||
else
|
else
|
||||||
flow_repl |= CP210X_SERIAL_RTS_INACTIVE;
|
flow_repl |= CP210X_SERIAL_RTS_INACTIVE;
|
||||||
port_priv->crtscts = true;
|
crtscts = true;
|
||||||
} else {
|
} else {
|
||||||
ctl_hs &= ~CP210X_SERIAL_CTS_HANDSHAKE;
|
ctl_hs &= ~CP210X_SERIAL_CTS_HANDSHAKE;
|
||||||
if (port_priv->rts)
|
if (port_priv->rts)
|
||||||
flow_repl |= CP210X_SERIAL_RTS_ACTIVE;
|
flow_repl |= CP210X_SERIAL_RTS_ACTIVE;
|
||||||
else
|
else
|
||||||
flow_repl |= CP210X_SERIAL_RTS_INACTIVE;
|
flow_repl |= CP210X_SERIAL_RTS_INACTIVE;
|
||||||
port_priv->crtscts = false;
|
crtscts = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (I_IXOFF(tty)) {
|
if (I_IXOFF(tty)) {
|
||||||
|
@ -1225,8 +1226,12 @@ static void cp210x_set_flow_control(struct tty_struct *tty,
|
||||||
flow_ctl.ulControlHandshake = cpu_to_le32(ctl_hs);
|
flow_ctl.ulControlHandshake = cpu_to_le32(ctl_hs);
|
||||||
flow_ctl.ulFlowReplace = cpu_to_le32(flow_repl);
|
flow_ctl.ulFlowReplace = cpu_to_le32(flow_repl);
|
||||||
|
|
||||||
cp210x_write_reg_block(port, CP210X_SET_FLOW, &flow_ctl,
|
ret = cp210x_write_reg_block(port, CP210X_SET_FLOW, &flow_ctl,
|
||||||
sizeof(flow_ctl));
|
sizeof(flow_ctl));
|
||||||
|
if (ret)
|
||||||
|
goto out_unlock;
|
||||||
|
|
||||||
|
port_priv->crtscts = crtscts;
|
||||||
out_unlock:
|
out_unlock:
|
||||||
mutex_unlock(&port_priv->mutex);
|
mutex_unlock(&port_priv->mutex);
|
||||||
}
|
}
|
||||||
|
|
|
@ -433,6 +433,7 @@ static int pl2303_detect_type(struct usb_serial *serial)
|
||||||
switch (bcdDevice) {
|
switch (bcdDevice) {
|
||||||
case 0x100:
|
case 0x100:
|
||||||
case 0x305:
|
case 0x305:
|
||||||
|
case 0x405:
|
||||||
/*
|
/*
|
||||||
* Assume it's an HXN-type if the device doesn't
|
* Assume it's an HXN-type if the device doesn't
|
||||||
* support the old read request value.
|
* support the old read request value.
|
||||||
|
|
|
@ -394,9 +394,11 @@ void ceph_mdsmap_destroy(struct ceph_mdsmap *m)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < m->possible_max_rank; i++)
|
if (m->m_info) {
|
||||||
kfree(m->m_info[i].export_targets);
|
for (i = 0; i < m->possible_max_rank; i++)
|
||||||
kfree(m->m_info);
|
kfree(m->m_info[i].export_targets);
|
||||||
|
kfree(m->m_info);
|
||||||
|
}
|
||||||
kfree(m->m_data_pg_pools);
|
kfree(m->m_data_pg_pools);
|
||||||
kfree(m);
|
kfree(m);
|
||||||
}
|
}
|
||||||
|
|
|
@ -750,6 +750,12 @@ int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,
|
||||||
ext4_write_lock_xattr(inode, &no_expand);
|
ext4_write_lock_xattr(inode, &no_expand);
|
||||||
BUG_ON(!ext4_has_inline_data(inode));
|
BUG_ON(!ext4_has_inline_data(inode));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ei->i_inline_off may have changed since ext4_write_begin()
|
||||||
|
* called ext4_try_to_write_inline_data()
|
||||||
|
*/
|
||||||
|
(void) ext4_find_inline_data_nolock(inode);
|
||||||
|
|
||||||
kaddr = kmap_atomic(page);
|
kaddr = kmap_atomic(page);
|
||||||
ext4_write_inline_data(inode, &iloc, kaddr, pos, len);
|
ext4_write_inline_data(inode, &iloc, kaddr, pos, len);
|
||||||
kunmap_atomic(kaddr);
|
kunmap_atomic(kaddr);
|
||||||
|
|
|
@ -5051,6 +5051,14 @@ no_journal:
|
||||||
err = percpu_counter_init(&sbi->s_freeinodes_counter, freei,
|
err = percpu_counter_init(&sbi->s_freeinodes_counter, freei,
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Update the checksum after updating free space/inode
|
||||||
|
* counters. Otherwise the superblock can have an incorrect
|
||||||
|
* checksum in the buffer cache until it is written out and
|
||||||
|
* e2fsprogs programs trying to open a file system immediately
|
||||||
|
* after it is mounted can fail.
|
||||||
|
*/
|
||||||
|
ext4_superblock_csum_set(sb);
|
||||||
if (!err)
|
if (!err)
|
||||||
err = percpu_counter_init(&sbi->s_dirs_counter,
|
err = percpu_counter_init(&sbi->s_dirs_counter,
|
||||||
ext4_count_dirs(sb), GFP_KERNEL);
|
ext4_count_dirs(sb), GFP_KERNEL);
|
||||||
|
|
|
@ -1746,7 +1746,7 @@ static int snd_pcm_lib_ioctl_fifo_size(struct snd_pcm_substream *substream,
|
||||||
channels = params_channels(params);
|
channels = params_channels(params);
|
||||||
frame_size = snd_pcm_format_size(format, channels);
|
frame_size = snd_pcm_format_size(format, channels);
|
||||||
if (frame_size > 0)
|
if (frame_size > 0)
|
||||||
params->fifo_size /= (unsigned)frame_size;
|
params->fifo_size /= frame_size;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8378,6 +8378,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||||
SND_PCI_QUIRK(0x103c, 0x87f2, "HP ProBook 640 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
|
SND_PCI_QUIRK(0x103c, 0x87f2, "HP ProBook 640 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
|
||||||
SND_PCI_QUIRK(0x103c, 0x87f4, "HP", ALC287_FIXUP_HP_GPIO_LED),
|
SND_PCI_QUIRK(0x103c, 0x87f4, "HP", ALC287_FIXUP_HP_GPIO_LED),
|
||||||
SND_PCI_QUIRK(0x103c, 0x87f5, "HP", ALC287_FIXUP_HP_GPIO_LED),
|
SND_PCI_QUIRK(0x103c, 0x87f5, "HP", ALC287_FIXUP_HP_GPIO_LED),
|
||||||
|
SND_PCI_QUIRK(0x103c, 0x87f6, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP),
|
||||||
SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP),
|
SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP),
|
||||||
SND_PCI_QUIRK(0x103c, 0x8805, "HP ProBook 650 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
|
SND_PCI_QUIRK(0x103c, 0x8805, "HP ProBook 650 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
|
||||||
SND_PCI_QUIRK(0x103c, 0x880d, "HP EliteBook 830 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED),
|
SND_PCI_QUIRK(0x103c, 0x880d, "HP EliteBook 830 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED),
|
||||||
|
@ -9456,6 +9457,16 @@ static int patch_alc269(struct hda_codec *codec)
|
||||||
|
|
||||||
snd_hda_pick_fixup(codec, alc269_fixup_models,
|
snd_hda_pick_fixup(codec, alc269_fixup_models,
|
||||||
alc269_fixup_tbl, alc269_fixups);
|
alc269_fixup_tbl, alc269_fixups);
|
||||||
|
/* FIXME: both TX300 and ROG Strix G17 have the same SSID, and
|
||||||
|
* the quirk breaks the latter (bko#214101).
|
||||||
|
* Clear the wrong entry.
|
||||||
|
*/
|
||||||
|
if (codec->fixup_id == ALC282_FIXUP_ASUS_TX300 &&
|
||||||
|
codec->core.vendor_id == 0x10ec0294) {
|
||||||
|
codec_dbg(codec, "Clear wrong fixup for ASUS ROG Strix G17\n");
|
||||||
|
codec->fixup_id = HDA_FIXUP_ID_NOT_SET;
|
||||||
|
}
|
||||||
|
|
||||||
snd_hda_pick_pin_fixup(codec, alc269_pin_fixup_tbl, alc269_fixups, true);
|
snd_hda_pick_pin_fixup(codec, alc269_pin_fixup_tbl, alc269_fixups, true);
|
||||||
snd_hda_pick_pin_fixup(codec, alc269_fallback_pin_fixup_tbl, alc269_fixups, false);
|
snd_hda_pick_pin_fixup(codec, alc269_fallback_pin_fixup_tbl, alc269_fixups, false);
|
||||||
snd_hda_pick_fixup(codec, NULL, alc269_fixup_vendor_tbl,
|
snd_hda_pick_fixup(codec, NULL, alc269_fixup_vendor_tbl,
|
||||||
|
|
|
@ -1286,6 +1286,11 @@ int snd_usb_endpoint_configure(struct snd_usb_audio *chip,
|
||||||
* to be set up before parameter setups
|
* to be set up before parameter setups
|
||||||
*/
|
*/
|
||||||
iface_first = ep->cur_audiofmt->protocol == UAC_VERSION_1;
|
iface_first = ep->cur_audiofmt->protocol == UAC_VERSION_1;
|
||||||
|
/* Workaround for Sony WALKMAN NW-A45 DAC;
|
||||||
|
* it requires the interface setup at first like UAC1
|
||||||
|
*/
|
||||||
|
if (chip->usb_id == USB_ID(0x054c, 0x0b8c))
|
||||||
|
iface_first = true;
|
||||||
if (iface_first) {
|
if (iface_first) {
|
||||||
err = endpoint_set_interface(chip, ep, true);
|
err = endpoint_set_interface(chip, ep, true);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user