Skip to content

Commit b090062

Browse files
committed
Rebuild rocky9_6 with kernel-5.14.0-570.33.2.el9_6
Rebuild_History BUILDABLE Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50% Number of commits in upstream range v5.14~1..kernel-mainline: 322937 Number of commits in rpm: 24 Number of commits matched with upstream: 21 (87.50%) Number of commits in upstream but not in rpm: 322922 Number of commits NOT found in upstream: 3 (12.50%) Rebuilding Kernel on Branch rocky9_6_rebuild_kernel-5.14.0-570.33.2.el9_6 for kernel-5.14.0-570.33.2.el9_6 Clean Cherry Picks: 14 (66.67%) Empty Cherry Picks: 0 (0.00%) _______________________________ Full Details Located here: ciq/ciq_backports/kernel-5.14.0-570.33.2.el9_6/rebuild.details.txt Includes: * git commit header above * Empty Commits with upstream SHA * RPM ChangeLog Entries that could not be matched Individual Empty Commit failures contained in the same containing directory. The git message for empty commits will have the path for the failed commit. File names are the first 8 characters of the upstream SHA
1 parent 47ec3f8 commit b090062

22 files changed

+117
-71
lines changed
File renamed without changes.

Makefile.rhelver

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ RHEL_MINOR = 6
1212
#
1313
# Use this spot to avoid future merge conflicts.
1414
# Do not trim this comment.
15-
RHEL_RELEASE = 570.32.1
15+
RHEL_RELEASE = 570.33.2
1616

1717
#
1818
# ZSTREAM
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
Rebuild_History BUILDABLE
2+
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
3+
Number of commits in upstream range v5.14~1..kernel-mainline: 322937
4+
Number of commits in rpm: 24
5+
Number of commits matched with upstream: 21 (87.50%)
6+
Number of commits in upstream but not in rpm: 322922
7+
Number of commits NOT found in upstream: 3 (12.50%)
8+
9+
Rebuilding Kernel on Branch rocky9_6_rebuild_kernel-5.14.0-570.33.2.el9_6 for kernel-5.14.0-570.33.2.el9_6
10+
Clean Cherry Picks: 14 (66.67%)
11+
Empty Cherry Picks: 0 (0.00%)
12+
_______________________________
13+
14+
__EMPTY COMMITS__________________________
15+
16+
__CHANGES NOT IN UPSTREAM________________
17+
Porting to Rocky Linux 9, debranding and Rocky branding'
18+
Ensure aarch64 kernel is not compressed'
19+
redhat: update BUILD_TARGET to rhel-9.6.0-z-test-pesign
20+
Revert "sch_htb: make htb_qlen_notify() idempotent" (Patrick Talbert) [RHEL-108138]
21+
Revert "sch_drr: make drr_qlen_notify() idempotent" (Patrick Talbert) [RHEL-108138]
22+
Revert "sch_qfq: make qfq_qlen_notify() idempotent" (Patrick Talbert) [RHEL-108138]
23+
Revert "codel: remove sch->q.qlen check before qdisc_tree_reduce_backlog()" (Patrick Talbert) [RHEL-108138]
24+
Revert "sch_htb: make htb_deactivate() idempotent" (Patrick Talbert) [RHEL-108138]
25+
Revert "net/sched: Always pass notifications when child class becomes empty" (Patrick Talbert) [RHEL-108138]
26+

drivers/pci/pci.c

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,9 +1295,7 @@ static int pci_dev_wait(struct pci_dev *dev, char *reset_type, int timeout)
12951295
{
12961296
int delay = 1;
12971297
bool retrain = false;
1298-
struct pci_dev *root, *bridge;
1299-
1300-
root = pcie_find_root_port(dev);
1298+
struct pci_dev *bridge;
13011299

13021300
if (pci_is_pcie(dev)) {
13031301
bridge = pci_upstream_bridge(dev);
@@ -1306,23 +1304,16 @@ static int pci_dev_wait(struct pci_dev *dev, char *reset_type, int timeout)
13061304
}
13071305

13081306
/*
1309-
* The caller has already waited long enough after a reset that the
1310-
* device should respond to config requests, but it may respond
1311-
* with Request Retry Status (RRS) if it needs more time to
1312-
* initialize.
1313-
*
1314-
* If the device is below a Root Port with Configuration RRS
1315-
* Software Visibility enabled, reading the Vendor ID returns a
1316-
* special data value if the device responded with RRS. Read the
1317-
* Vendor ID until we get non-RRS status.
1307+
* After reset, the device should not silently discard config
1308+
* requests, but it may still indicate that it needs more time by
1309+
* responding to them with CRS completions. The Root Port will
1310+
* generally synthesize ~0 (PCI_ERROR_RESPONSE) data to complete
1311+
* the read (except when CRS SV is enabled and the read was for the
1312+
* Vendor ID; in that case it synthesizes 0x0001 data).
13181313
*
1319-
* If there's no Root Port or Configuration RRS Software Visibility
1320-
* is not enabled, the device may still respond with RRS, but
1321-
* hardware may retry the config request. If no retries receive
1322-
* Successful Completion, hardware generally synthesizes ~0
1323-
* (PCI_ERROR_RESPONSE) data to complete the read. Reading Vendor
1324-
* ID for VFs and non-existent devices also returns ~0, so read the
1325-
* Command register until it returns something other than ~0.
1314+
* Wait for the device to return a non-CRS completion. Read the
1315+
* Command register instead of Vendor ID so we don't have to
1316+
* contend with the CRS SV value.
13261317
*/
13271318
for (;;) {
13281319
u32 id;
@@ -1332,15 +1323,9 @@ static int pci_dev_wait(struct pci_dev *dev, char *reset_type, int timeout)
13321323
return -ENOTTY;
13331324
}
13341325

1335-
if (root && root->config_crs_sv) {
1336-
pci_read_config_dword(dev, PCI_VENDOR_ID, &id);
1337-
if (!pci_bus_crs_vendor_id(id))
1338-
break;
1339-
} else {
1340-
pci_read_config_dword(dev, PCI_COMMAND, &id);
1341-
if (!PCI_POSSIBLE_ERROR(id))
1342-
break;
1343-
}
1326+
pci_read_config_dword(dev, PCI_COMMAND, &id);
1327+
if (!PCI_POSSIBLE_ERROR(id))
1328+
break;
13441329

13451330
if (delay > timeout) {
13461331
pci_warn(dev, "not ready %dms after %s; giving up\n",

drivers/pci/pci.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,6 @@ bool pci_bridge_d3_possible(struct pci_dev *dev);
124124
void pci_bridge_d3_update(struct pci_dev *dev);
125125
int pci_bridge_wait_for_secondary_bus(struct pci_dev *dev, char *reset_type);
126126

127-
static inline bool pci_bus_crs_vendor_id(u32 l)
128-
{
129-
return (l & 0xffff) == PCI_VENDOR_ID_PCI_SIG;
130-
}
131-
132127
static inline void pci_wakeup_event(struct pci_dev *dev)
133128
{
134129
/* Wait 100 ms before the system can be put into a sleep state. */

drivers/pci/probe.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,11 +1252,9 @@ static void pci_enable_crs(struct pci_dev *pdev)
12521252

12531253
/* Enable CRS Software Visibility if supported */
12541254
pcie_capability_read_word(pdev, PCI_EXP_RTCAP, &root_cap);
1255-
if (root_cap & PCI_EXP_RTCAP_CRSVIS) {
1255+
if (root_cap & PCI_EXP_RTCAP_CRSVIS)
12561256
pcie_capability_set_word(pdev, PCI_EXP_RTCTL,
12571257
PCI_EXP_RTCTL_CRSSVE);
1258-
pdev->config_crs_sv = 1;
1259-
}
12601258
}
12611259

12621260
static unsigned int pci_scan_child_bus_extend(struct pci_bus *bus,
@@ -2388,6 +2386,11 @@ struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
23882386
}
23892387
EXPORT_SYMBOL(pci_alloc_dev);
23902388

2389+
static bool pci_bus_crs_vendor_id(u32 l)
2390+
{
2391+
return (l & 0xffff) == PCI_VENDOR_ID_PCI_SIG;
2392+
}
2393+
23912394
static bool pci_bus_wait_crs(struct pci_bus *bus, int devfn, u32 *l,
23922395
int timeout)
23932396
{

net/sched/sch_api.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -779,12 +779,15 @@ static u32 qdisc_alloc_handle(struct net_device *dev)
779779

780780
void qdisc_tree_reduce_backlog(struct Qdisc *sch, int n, int len)
781781
{
782+
bool qdisc_is_offloaded = sch->flags & TCQ_F_OFFLOADED;
782783
const struct Qdisc_class_ops *cops;
783784
unsigned long cl;
784785
u32 parentid;
785786
bool notify;
786787
int drops;
787788

789+
if (n == 0 && len == 0)
790+
return;
788791
drops = max_t(int, n, 0);
789792
rcu_read_lock();
790793
while ((parentid = sch->parent)) {
@@ -793,8 +796,17 @@ void qdisc_tree_reduce_backlog(struct Qdisc *sch, int n, int len)
793796

794797
if (sch->flags & TCQ_F_NOPARENT)
795798
break;
796-
/* Notify parent qdisc only if child qdisc becomes empty. */
797-
notify = !sch->q.qlen;
799+
/* Notify parent qdisc only if child qdisc becomes empty.
800+
*
801+
* If child was empty even before update then backlog
802+
* counter is screwed and we skip notification because
803+
* parent class is already passive.
804+
*
805+
* If the original child was offloaded then it is allowed
806+
* to be seem as empty, so the parent is notified anyway.
807+
*/
808+
notify = !sch->q.qlen && !WARN_ON_ONCE(!n &&
809+
!qdisc_is_offloaded);
798810
/* TODO: perform the search on a per txq basis */
799811
sch = qdisc_lookup_rcu(qdisc_dev(sch), TC_H_MAJ(parentid));
800812
if (sch == NULL) {
@@ -803,9 +815,6 @@ void qdisc_tree_reduce_backlog(struct Qdisc *sch, int n, int len)
803815
}
804816
cops = sch->ops->cl_ops;
805817
if (notify && cops->qlen_notify) {
806-
/* Note that qlen_notify must be idempotent as it may get called
807-
* multiple times.
808-
*/
809818
cl = cops->find(sch, parentid);
810819
cops->qlen_notify(sch, cl);
811820
}

net/sched/sch_codel.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,10 @@ static struct sk_buff *codel_qdisc_dequeue(struct Qdisc *sch)
6565
&q->stats, qdisc_pkt_len, codel_get_enqueue_time,
6666
drop_func, dequeue_func);
6767

68-
if (q->stats.drop_count) {
68+
/* We cant call qdisc_tree_reduce_backlog() if our qlen is 0,
69+
* or HTB crashes. Defer it for next round.
70+
*/
71+
if (q->stats.drop_count && sch->q.qlen) {
6972
qdisc_tree_reduce_backlog(sch, q->stats.drop_count, q->stats.drop_len);
7073
q->stats.drop_count = 0;
7174
q->stats.drop_len = 0;

net/sched/sch_drr.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ static int drr_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
105105
return -ENOBUFS;
106106

107107
gnet_stats_basic_sync_init(&cl->bstats);
108-
INIT_LIST_HEAD(&cl->alist);
109108
cl->common.classid = classid;
110109
cl->quantum = quantum;
111110
cl->qdisc = qdisc_create_dflt(sch->dev_queue,
@@ -230,7 +229,7 @@ static void drr_qlen_notify(struct Qdisc *csh, unsigned long arg)
230229
{
231230
struct drr_class *cl = (struct drr_class *)arg;
232231

233-
list_del_init(&cl->alist);
232+
list_del(&cl->alist);
234233
}
235234

236235
static int drr_dump_class(struct Qdisc *sch, unsigned long arg,
@@ -391,7 +390,7 @@ static struct sk_buff *drr_dequeue(struct Qdisc *sch)
391390
if (unlikely(skb == NULL))
392391
goto out;
393392
if (cl->qdisc->q.qlen == 0)
394-
list_del_init(&cl->alist);
393+
list_del(&cl->alist);
395394

396395
bstats_update(&cl->bstats, skb);
397396
qdisc_bstats_update(sch, skb);
@@ -432,7 +431,7 @@ static void drr_reset_qdisc(struct Qdisc *sch)
432431
for (i = 0; i < q->clhash.hashsize; i++) {
433432
hlist_for_each_entry(cl, &q->clhash.hash[i], common.hnode) {
434433
if (cl->qdisc->q.qlen)
435-
list_del_init(&cl->alist);
434+
list_del(&cl->alist);
436435
qdisc_reset(cl->qdisc);
437436
}
438437
}

net/sched/sch_fq_codel.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,10 @@ static struct sk_buff *fq_codel_dequeue(struct Qdisc *sch)
314314
}
315315
qdisc_bstats_update(sch, skb);
316316
flow->deficit -= qdisc_pkt_len(skb);
317-
318-
if (q->cstats.drop_count) {
317+
/* We cant call qdisc_tree_reduce_backlog() if our qlen is 0,
318+
* or HTB crashes. Defer it for next round.
319+
*/
320+
if (q->cstats.drop_count && sch->q.qlen) {
319321
qdisc_tree_reduce_backlog(sch, q->cstats.drop_count,
320322
q->cstats.drop_len);
321323
q->cstats.drop_count = 0;

0 commit comments

Comments
 (0)