Skip to content

Commit 4ee9d0f

Browse files
committed
Merge remote-tracking branch 'stable/linux-5.15.y' into rpi-5.15.y
2 parents b761f6d + 18a33c8 commit 4ee9d0f

File tree

12 files changed

+155
-79
lines changed

12 files changed

+155
-79
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 5
33
PATCHLEVEL = 15
4-
SUBLEVEL = 49
4+
SUBLEVEL = 50
55
EXTRAVERSION =
66
NAME = Trick or Treat
77

arch/arm64/mm/cache.S

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,6 @@ SYM_FUNC_END_PI(__dma_flush_area)
231231
*/
232232
SYM_FUNC_START_PI(__dma_map_area)
233233
add x1, x0, x1
234-
cmp w2, #DMA_FROM_DEVICE
235-
b.eq __dma_inv_area
236234
b __dma_clean_area
237235
SYM_FUNC_END_PI(__dma_map_area)
238236

arch/s390/mm/pgtable.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ void ptep_zap_key(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
748748
pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT;
749749
ptev = pte_val(*ptep);
750750
if (!(ptev & _PAGE_INVALID) && (ptev & _PAGE_WRITE))
751-
page_set_storage_key(ptev & PAGE_MASK, PAGE_DEFAULT_KEY, 1);
751+
page_set_storage_key(ptev & PAGE_MASK, PAGE_DEFAULT_KEY, 0);
752752
pgste_set_unlock(ptep, pgste);
753753
preempt_enable();
754754
}

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,32 @@ static int dm_dmub_hw_init(struct amdgpu_device *adev)
989989
return 0;
990990
}
991991

992+
static void dm_dmub_hw_resume(struct amdgpu_device *adev)
993+
{
994+
struct dmub_srv *dmub_srv = adev->dm.dmub_srv;
995+
enum dmub_status status;
996+
bool init;
997+
998+
if (!dmub_srv) {
999+
/* DMUB isn't supported on the ASIC. */
1000+
return;
1001+
}
1002+
1003+
status = dmub_srv_is_hw_init(dmub_srv, &init);
1004+
if (status != DMUB_STATUS_OK)
1005+
DRM_WARN("DMUB hardware init check failed: %d\n", status);
1006+
1007+
if (status == DMUB_STATUS_OK && init) {
1008+
/* Wait for firmware load to finish. */
1009+
status = dmub_srv_wait_for_auto_load(dmub_srv, 100000);
1010+
if (status != DMUB_STATUS_OK)
1011+
DRM_WARN("Wait for DMUB auto-load failed: %d\n", status);
1012+
} else {
1013+
/* Perform the full hardware initialization. */
1014+
dm_dmub_hw_init(adev);
1015+
}
1016+
}
1017+
9921018
#if defined(CONFIG_DRM_AMD_DC_DCN)
9931019
static void mmhub_read_system_context(struct amdgpu_device *adev, struct dc_phy_addr_space_config *pa_config)
9941020
{
@@ -2268,9 +2294,7 @@ static int dm_resume(void *handle)
22682294
amdgpu_dm_outbox_init(adev);
22692295

22702296
/* Before powering on DC we need to re-initialize DMUB. */
2271-
r = dm_dmub_hw_init(adev);
2272-
if (r)
2273-
DRM_ERROR("DMUB interface failed to initialize: status=%d\n", r);
2297+
dm_dmub_hw_resume(adev);
22742298

22752299
/* power on hardware */
22762300
dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D0);

drivers/net/ethernet/microsoft/mana/mana_en.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -980,8 +980,10 @@ static void mana_process_rx_cqe(struct mana_rxq *rxq, struct mana_cq *cq,
980980
break;
981981

982982
case CQE_RX_TRUNCATED:
983-
netdev_err(ndev, "Dropped a truncated packet\n");
984-
return;
983+
++ndev->stats.rx_dropped;
984+
rxbuf_oob = &rxq->rx_oobs[rxq->buf_index];
985+
netdev_warn_once(ndev, "Dropped a truncated packet\n");
986+
goto drop;
985987

986988
case CQE_RX_COALESCED_4:
987989
netdev_err(ndev, "RX coalescing is unsupported\n");
@@ -1043,6 +1045,7 @@ static void mana_process_rx_cqe(struct mana_rxq *rxq, struct mana_cq *cq,
10431045

10441046
mana_rx_skb(old_buf, oob, rxq);
10451047

1048+
drop:
10461049
mana_move_wq_tail(rxq->gdma_rq, rxbuf_oob->wqe_inf.wqe_size_in_bu);
10471050

10481051
mana_post_pkt_rxq(rxq);

drivers/tty/serial/amba-pl011.c

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,13 +1651,6 @@ static void pl011_set_mctrl(struct uart_port *port, unsigned int mctrl)
16511651
container_of(port, struct uart_amba_port, port);
16521652
unsigned int cr;
16531653

1654-
if (port->rs485.flags & SER_RS485_ENABLED) {
1655-
if (port->rs485.flags & SER_RS485_RTS_AFTER_SEND)
1656-
mctrl &= ~TIOCM_RTS;
1657-
else
1658-
mctrl |= TIOCM_RTS;
1659-
}
1660-
16611654
cr = pl011_read(uap, REG_CR);
16621655

16631656
#define TIOCMBIT(tiocmbit, uartbit) \
@@ -1898,14 +1891,8 @@ static int pl011_startup(struct uart_port *port)
18981891
cr = uap->old_cr & (UART011_CR_RTS | UART011_CR_DTR);
18991892
cr |= UART01x_CR_UARTEN | UART011_CR_RXE;
19001893

1901-
if (port->rs485.flags & SER_RS485_ENABLED) {
1902-
if (port->rs485.flags & SER_RS485_RTS_AFTER_SEND)
1903-
cr &= ~UART011_CR_RTS;
1904-
else
1905-
cr |= UART011_CR_RTS;
1906-
} else {
1894+
if (!(port->rs485.flags & SER_RS485_ENABLED))
19071895
cr |= UART011_CR_TXE;
1908-
}
19091896

19101897
pl011_write(cr, uap, REG_CR);
19111898

drivers/tty/serial/serial_core.c

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@ uart_update_mctrl(struct uart_port *port, unsigned int set, unsigned int clear)
144144
unsigned long flags;
145145
unsigned int old;
146146

147+
if (port->rs485.flags & SER_RS485_ENABLED) {
148+
set &= ~TIOCM_RTS;
149+
clear &= ~TIOCM_RTS;
150+
}
151+
147152
spin_lock_irqsave(&port->lock, flags);
148153
old = port->mctrl;
149154
port->mctrl = (old & ~clear) | set;
@@ -157,23 +162,10 @@ uart_update_mctrl(struct uart_port *port, unsigned int set, unsigned int clear)
157162

158163
static void uart_port_dtr_rts(struct uart_port *uport, int raise)
159164
{
160-
int rs485_on = uport->rs485_config &&
161-
(uport->rs485.flags & SER_RS485_ENABLED);
162-
int RTS_after_send = !!(uport->rs485.flags & SER_RS485_RTS_AFTER_SEND);
163-
164-
if (raise) {
165-
if (rs485_on && RTS_after_send) {
166-
uart_set_mctrl(uport, TIOCM_DTR);
167-
uart_clear_mctrl(uport, TIOCM_RTS);
168-
} else {
169-
uart_set_mctrl(uport, TIOCM_DTR | TIOCM_RTS);
170-
}
171-
} else {
172-
unsigned int clear = TIOCM_DTR;
173-
174-
clear |= (!rs485_on || RTS_after_send) ? TIOCM_RTS : 0;
175-
uart_clear_mctrl(uport, clear);
176-
}
165+
if (raise)
166+
uart_set_mctrl(uport, TIOCM_DTR | TIOCM_RTS);
167+
else
168+
uart_clear_mctrl(uport, TIOCM_DTR | TIOCM_RTS);
177169
}
178170

179171
/*
@@ -1089,11 +1081,6 @@ uart_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear)
10891081
goto out;
10901082

10911083
if (!tty_io_error(tty)) {
1092-
if (uport->rs485.flags & SER_RS485_ENABLED) {
1093-
set &= ~TIOCM_RTS;
1094-
clear &= ~TIOCM_RTS;
1095-
}
1096-
10971084
uart_update_mctrl(uport, set, clear);
10981085
ret = 0;
10991086
}
@@ -2408,6 +2395,9 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,
24082395
*/
24092396
spin_lock_irqsave(&port->lock, flags);
24102397
port->mctrl &= TIOCM_DTR;
2398+
if (port->rs485.flags & SER_RS485_ENABLED &&
2399+
!(port->rs485.flags & SER_RS485_RTS_AFTER_SEND))
2400+
port->mctrl |= TIOCM_RTS;
24112401
port->ops->set_mctrl(port, port->mctrl);
24122402
spin_unlock_irqrestore(&port->lock, flags);
24132403

drivers/usb/gadget/function/u_ether.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -774,9 +774,13 @@ struct eth_dev *gether_setup_name(struct usb_gadget *g,
774774
dev->qmult = qmult;
775775
snprintf(net->name, sizeof(net->name), "%s%%d", netname);
776776

777-
if (get_ether_addr(dev_addr, net->dev_addr))
777+
if (get_ether_addr(dev_addr, net->dev_addr)) {
778+
net->addr_assign_type = NET_ADDR_RANDOM;
778779
dev_warn(&g->dev,
779780
"using random %s ethernet address\n", "self");
781+
} else {
782+
net->addr_assign_type = NET_ADDR_SET;
783+
}
780784
if (get_ether_addr(host_addr, dev->host_mac))
781785
dev_warn(&g->dev,
782786
"using random %s ethernet address\n", "host");
@@ -833,6 +837,9 @@ struct net_device *gether_setup_name_default(const char *netname)
833837
INIT_LIST_HEAD(&dev->tx_reqs);
834838
INIT_LIST_HEAD(&dev->rx_reqs);
835839

840+
/* by default we always have a random MAC address */
841+
net->addr_assign_type = NET_ADDR_RANDOM;
842+
836843
skb_queue_head_init(&dev->rx_frames);
837844

838845
/* network device setup */
@@ -869,7 +876,6 @@ int gether_register_netdev(struct net_device *net)
869876
dev = netdev_priv(net);
870877
g = dev->gadget;
871878

872-
net->addr_assign_type = NET_ADDR_RANDOM;
873879
eth_hw_addr_set(net, dev->dev_mac);
874880

875881
status = register_netdev(net);
@@ -910,6 +916,7 @@ int gether_set_dev_addr(struct net_device *net, const char *dev_addr)
910916
if (get_ether_addr(dev_addr, new_addr))
911917
return -EINVAL;
912918
memcpy(dev->dev_mac, new_addr, ETH_ALEN);
919+
net->addr_assign_type = NET_ADDR_SET;
913920
return 0;
914921
}
915922
EXPORT_SYMBOL_GPL(gether_set_dev_addr);

0 commit comments

Comments
 (0)