Skip to content

Commit 2d407ef

Browse files
committed
Rebuild rocky9_7 with kernel-5.14.0-611.13.1.el9_7
Rebuild_History BUILDABLE Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50% Number of commits in upstream range v5.14~1..kernel-mainline: 337791 Number of commits in rpm: 38 Number of commits matched with upstream: 32 (84.21%) Number of commits in upstream but not in rpm: 337759 Number of commits NOT found in upstream: 6 (15.79%) Rebuilding Kernel on Branch rocky9_7_rebuild_kernel-5.14.0-611.13.1.el9_7 for kernel-5.14.0-611.13.1.el9_7 Clean Cherry Picks: 7 (21.88%) Empty Cherry Picks: 25 (78.12%) _______________________________ Full Details Located here: ciq/ciq_backports/kernel-5.14.0-611.13.1.el9_7/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 768e3f0 commit 2d407ef

File tree

70 files changed

+136980
-9
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+136980
-9
lines changed

Documentation/networking/devlink/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,4 @@ parameters, info versions, and other features it supports.
9696
prestera
9797
iosm
9898
sfc
99+
zl3073x
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
.. SPDX-License-Identifier: GPL-2.0
2+
3+
=======================
4+
zl3073x devlink support
5+
=======================
6+
7+
This document describes the devlink features implemented by the ``zl3073x``
8+
device driver.
9+
10+
Parameters
11+
==========
12+
13+
.. list-table:: Generic parameters implemented
14+
:widths: 5 5 90
15+
16+
* - Name
17+
- Mode
18+
- Notes
19+
* - ``clock_id``
20+
- driverinit
21+
- Set the clock ID that is used by the driver for registering DPLL devices
22+
and pins.
23+
24+
Info versions
25+
=============
26+
27+
The ``zl3073x`` driver reports the following versions
28+
29+
.. list-table:: devlink info versions implemented
30+
:widths: 5 5 5 90
31+
32+
* - Name
33+
- Type
34+
- Example
35+
- Description
36+
* - ``asic.id``
37+
- fixed
38+
- 1E94
39+
- Chip identification number
40+
* - ``asic.rev``
41+
- fixed
42+
- 300
43+
- Chip revision number
44+
* - ``fw``
45+
- running
46+
- 7006
47+
- Firmware version number
48+
* - ``custom_cfg``
49+
- running
50+
- 1.3.0.1
51+
- Device configuration version customized by OEM
52+
53+
Flash Update
54+
============
55+
56+
The ``zl3073x`` driver implements support for flash update using the
57+
``devlink-flash`` interface. It supports updating the device flash using a
58+
combined flash image ("bundle") that contains multiple components (firmware
59+
parts and configurations).
60+
61+
During the flash procedure, the standard firmware interface is not available,
62+
so the driver unregisters all DPLLs and associated pins, and re-registers them
63+
once the flash procedure is complete.
64+
65+
The driver does not support any overwrite mask flags.

MAINTAINERS

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12926,6 +12926,14 @@ L: linux-wireless@vger.kernel.org
1292612926
S: Supported
1292712927
F: drivers/net/wireless/microchip/wilc1000/
1292812928

12929+
MICROCHIP ZL3073X DRIVER
12930+
M: Ivan Vecera <ivecera@redhat.com>
12931+
M: Prathosh Satish <Prathosh.Satish@microchip.com>
12932+
L: netdev@vger.kernel.org
12933+
S: Supported
12934+
F: Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml
12935+
F: drivers/dpll/zl3073x/
12936+
1292912937
MICROSEMI MIPS SOCS
1293012938
M: Alexandre Belloni <alexandre.belloni@bootlin.com>
1293112939
M: UNGLinuxDriver@microchip.com

Makefile.rhelver

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

1717
#
1818
# ZSTREAM

arch/x86/hyperv/ivm.c

Lines changed: 210 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,195 @@ void hv_ivm_msr_read(u64 msr, u64 *value)
462462
hv_ghcb_msr_read(msr, value);
463463
}
464464

465+
/*
466+
* Keep track of the PFN regions which were shared with the host. The access
467+
* must be revoked upon kexec/kdump (see hv_ivm_clear_host_access()).
468+
*/
469+
struct hv_enc_pfn_region {
470+
struct list_head list;
471+
u64 pfn;
472+
int count;
473+
};
474+
475+
static LIST_HEAD(hv_list_enc);
476+
static DEFINE_RAW_SPINLOCK(hv_list_enc_lock);
477+
478+
static int hv_list_enc_add(const u64 *pfn_list, int count)
479+
{
480+
struct hv_enc_pfn_region *ent;
481+
unsigned long flags;
482+
u64 pfn;
483+
int i;
484+
485+
for (i = 0; i < count; i++) {
486+
pfn = pfn_list[i];
487+
488+
raw_spin_lock_irqsave(&hv_list_enc_lock, flags);
489+
/* Check if the PFN already exists in some region first */
490+
list_for_each_entry(ent, &hv_list_enc, list) {
491+
if ((ent->pfn <= pfn) && (ent->pfn + ent->count - 1 >= pfn))
492+
/* Nothing to do - pfn is already in the list */
493+
goto unlock_done;
494+
}
495+
496+
/*
497+
* Check if the PFN is adjacent to an existing region. Growing
498+
* a region can make it adjacent to another one but merging is
499+
* not (yet) implemented for simplicity. A PFN cannot be added
500+
* to two regions to keep the logic in hv_list_enc_remove()
501+
* correct.
502+
*/
503+
list_for_each_entry(ent, &hv_list_enc, list) {
504+
if (ent->pfn + ent->count == pfn) {
505+
/* Grow existing region up */
506+
ent->count++;
507+
goto unlock_done;
508+
} else if (pfn + 1 == ent->pfn) {
509+
/* Grow existing region down */
510+
ent->pfn--;
511+
ent->count++;
512+
goto unlock_done;
513+
}
514+
}
515+
raw_spin_unlock_irqrestore(&hv_list_enc_lock, flags);
516+
517+
/* No adjacent region found -- create a new one */
518+
ent = kzalloc(sizeof(struct hv_enc_pfn_region), GFP_KERNEL);
519+
if (!ent)
520+
return -ENOMEM;
521+
522+
ent->pfn = pfn;
523+
ent->count = 1;
524+
525+
raw_spin_lock_irqsave(&hv_list_enc_lock, flags);
526+
list_add(&ent->list, &hv_list_enc);
527+
528+
unlock_done:
529+
raw_spin_unlock_irqrestore(&hv_list_enc_lock, flags);
530+
}
531+
532+
return 0;
533+
}
534+
535+
static int hv_list_enc_remove(const u64 *pfn_list, int count)
536+
{
537+
struct hv_enc_pfn_region *ent, *t;
538+
struct hv_enc_pfn_region new_region;
539+
unsigned long flags;
540+
u64 pfn;
541+
int i;
542+
543+
for (i = 0; i < count; i++) {
544+
pfn = pfn_list[i];
545+
546+
raw_spin_lock_irqsave(&hv_list_enc_lock, flags);
547+
list_for_each_entry_safe(ent, t, &hv_list_enc, list) {
548+
if (pfn == ent->pfn + ent->count - 1) {
549+
/* Removing tail pfn */
550+
ent->count--;
551+
if (!ent->count) {
552+
list_del(&ent->list);
553+
kfree(ent);
554+
}
555+
goto unlock_done;
556+
} else if (pfn == ent->pfn) {
557+
/* Removing head pfn */
558+
ent->count--;
559+
ent->pfn++;
560+
if (!ent->count) {
561+
list_del(&ent->list);
562+
kfree(ent);
563+
}
564+
goto unlock_done;
565+
} else if (pfn > ent->pfn && pfn < ent->pfn + ent->count - 1) {
566+
/*
567+
* Removing a pfn in the middle. Cut off the tail
568+
* of the existing region and create a template for
569+
* the new one.
570+
*/
571+
new_region.pfn = pfn + 1;
572+
new_region.count = ent->count - (pfn - ent->pfn + 1);
573+
ent->count = pfn - ent->pfn;
574+
goto unlock_split;
575+
}
576+
577+
}
578+
unlock_done:
579+
raw_spin_unlock_irqrestore(&hv_list_enc_lock, flags);
580+
continue;
581+
582+
unlock_split:
583+
raw_spin_unlock_irqrestore(&hv_list_enc_lock, flags);
584+
585+
ent = kzalloc(sizeof(struct hv_enc_pfn_region), GFP_KERNEL);
586+
if (!ent)
587+
return -ENOMEM;
588+
589+
ent->pfn = new_region.pfn;
590+
ent->count = new_region.count;
591+
592+
raw_spin_lock_irqsave(&hv_list_enc_lock, flags);
593+
list_add(&ent->list, &hv_list_enc);
594+
raw_spin_unlock_irqrestore(&hv_list_enc_lock, flags);
595+
}
596+
597+
return 0;
598+
}
599+
600+
/* Stop new private<->shared conversions */
601+
static void hv_vtom_kexec_begin(void)
602+
{
603+
if (!IS_ENABLED(CONFIG_KEXEC_CORE))
604+
return;
605+
606+
/*
607+
* Crash kernel reaches here with interrupts disabled: can't wait for
608+
* conversions to finish.
609+
*
610+
* If race happened, just report and proceed.
611+
*/
612+
if (!set_memory_enc_stop_conversion())
613+
pr_warn("Failed to stop shared<->private conversions\n");
614+
}
615+
616+
static void hv_vtom_kexec_finish(void)
617+
{
618+
struct hv_gpa_range_for_visibility *input;
619+
struct hv_enc_pfn_region *ent;
620+
unsigned long flags;
621+
u64 hv_status;
622+
int cur, i;
623+
624+
local_irq_save(flags);
625+
input = *this_cpu_ptr(hyperv_pcpu_input_arg);
626+
627+
if (unlikely(!input))
628+
goto out;
629+
630+
list_for_each_entry(ent, &hv_list_enc, list) {
631+
for (i = 0, cur = 0; i < ent->count; i++) {
632+
input->gpa_page_list[cur] = ent->pfn + i;
633+
cur++;
634+
635+
if (cur == HV_MAX_MODIFY_GPA_REP_COUNT || i == ent->count - 1) {
636+
input->partition_id = HV_PARTITION_ID_SELF;
637+
input->host_visibility = VMBUS_PAGE_NOT_VISIBLE;
638+
input->reserved0 = 0;
639+
input->reserved1 = 0;
640+
hv_status = hv_do_rep_hypercall(
641+
HVCALL_MODIFY_SPARSE_GPA_PAGE_HOST_VISIBILITY,
642+
cur, 0, input, NULL);
643+
WARN_ON_ONCE(!hv_result_success(hv_status));
644+
cur = 0;
645+
}
646+
}
647+
648+
}
649+
650+
out:
651+
local_irq_restore(flags);
652+
}
653+
465654
/*
466655
* hv_mark_gpa_visibility - Set pages visible to host via hvcall.
467656
*
@@ -475,6 +664,7 @@ static int hv_mark_gpa_visibility(u16 count, const u64 pfn[],
475664
struct hv_gpa_range_for_visibility *input;
476665
u64 hv_status;
477666
unsigned long flags;
667+
int ret;
478668

479669
/* no-op if partition isolation is not enabled */
480670
if (!hv_is_isolation_supported())
@@ -486,6 +676,13 @@ static int hv_mark_gpa_visibility(u16 count, const u64 pfn[],
486676
return -EINVAL;
487677
}
488678

679+
if (visibility == VMBUS_PAGE_NOT_VISIBLE)
680+
ret = hv_list_enc_remove(pfn, count);
681+
else
682+
ret = hv_list_enc_add(pfn, count);
683+
if (ret)
684+
return ret;
685+
489686
local_irq_save(flags);
490687
input = *this_cpu_ptr(hyperv_pcpu_input_arg);
491688

@@ -506,8 +703,18 @@ static int hv_mark_gpa_visibility(u16 count, const u64 pfn[],
506703

507704
if (hv_result_success(hv_status))
508705
return 0;
706+
707+
if (visibility == VMBUS_PAGE_NOT_VISIBLE)
708+
ret = hv_list_enc_add(pfn, count);
509709
else
510-
return -EFAULT;
710+
ret = hv_list_enc_remove(pfn, count);
711+
/*
712+
* There's no good way to recover from -ENOMEM here, the accounting is
713+
* wrong either way.
714+
*/
715+
WARN_ON_ONCE(ret);
716+
717+
return -EFAULT;
511718
}
512719

513720
/*
@@ -669,6 +876,8 @@ void __init hv_vtom_init(void)
669876
x86_platform.guest.enc_tlb_flush_required = hv_vtom_tlb_flush_required;
670877
x86_platform.guest.enc_status_change_prepare = hv_vtom_clear_present;
671878
x86_platform.guest.enc_status_change_finish = hv_vtom_set_host_visibility;
879+
x86_platform.guest.enc_kexec_begin = hv_vtom_kexec_begin;
880+
x86_platform.guest.enc_kexec_finish = hv_vtom_kexec_finish;
672881

673882
/* Set WB as the default cache mode. */
674883
mtrr_overwrite_state(NULL, 0, MTRR_TYPE_WRBACK);
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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: 337791
4+
Number of commits in rpm: 38
5+
Number of commits matched with upstream: 32 (84.21%)
6+
Number of commits in upstream but not in rpm: 337759
7+
Number of commits NOT found in upstream: 6 (15.79%)
8+
9+
Rebuilding Kernel on Branch rocky9_7_rebuild_kernel-5.14.0-611.13.1.el9_7 for kernel-5.14.0-611.13.1.el9_7
10+
Clean Cherry Picks: 7 (21.88%)
11+
Empty Cherry Picks: 25 (78.12%)
12+
_______________________________
13+
14+
__EMPTY COMMITS__________________________
15+
2df8e64e01c10a4b75ea7797629f9e764a840eb0 dpll: Add basic Microchip ZL3073x support
16+
b7d907d1f84a3c51d7fcc83e30a0227cfea77172 dpll: zl3073x: Fetch invariants during probe
17+
a99a9f0ebdaaae14fe1d69d046633bce6110d0c2 dpll: zl3073x: Read DPLL types and pin properties from system firmware
18+
75a71ecc24125f92eaed45f0b9bd90373f73ec6f dpll: zl3073x: Register DPLL devices and pins
19+
9686c8b0167605232fc777a14907089e092a23e6 dpll: zl3073x: Implement input pin selection in manual mode
20+
12ba92f0a6defd60cb0c518c69fce19d7d27660d dpll: zl3073x: Add support to get/set priority on input pins
21+
bf33c93c1a160301a577d098c700411545e9a0c2 dpll: zl3073x: Implement input pin state setting in automatic mode
22+
ce26d7ca50a5298e025a92190b697de4903cea77 dpll: zl3073x: Add support to get/set frequency on pins
23+
634ca2cb06d2117020908cdf7ca8556a92801fee dpll: zl3073x: Add support to get/set esync on pins
24+
86ed4cd5fc0d4388cc083bee7ded8d9894a56b69 dpll: zl3073x: Add support to get phase offset on connected input pin
25+
b7dbde2b82cc9523227c4f8ae5aa79b70ba36e22 dpll: zl3073x: Implement phase offset monitor feature
26+
6287262f761e5a75c6316a7fd101abafd7a1d033 dpll: zl3073x: Add support to adjust phase
27+
904c99ea36bb7d0333b4e0cc5e9e835c51e99316 dpll: zl3073x: Add support to get fractional frequency offset
28+
fa582ca7e187a15e772e6a72fe035f649b387a60 dpll: zl3073x: Fix build failure
29+
a4f0866e3dbbf3fee4078bce0b78d65a0875c0bc dpll: Make ZL3073X invisible
30+
4eabe4cc0958e28ceaf592bbb62c234339642e41 dpll: zl3073x: ZL3073X_I2C and ZL3073X_SPI should depend on NET
31+
ebb1031c51377829b21e1c58e8eccc479e4921b7 dpll: zl3073x: Refactor DPLL initialization
32+
fcb8b32a68fd40b0440cb9468cf6f6ab9de9f3c5 dpll: zl3073x: Handle missing or corrupted flash configuration
33+
259ede9da4ec8159c312aa60015a3aecbb67f348 dpll: zl3073x: Add functions to access hardware registers
34+
3639bd087679f77c3fdedc6922f2cb01bb6ecbaf dpll: zl3073x: Add low-level flash functions
35+
ca017409da6944310d2a9d8744f5ebc81179ce19 dpll: zl3073x: Add firmware loading functionality
36+
a1e891fe4ae8df3ba17d75c270f1877e282c9d2c dpll: zl3073x: Implement devlink flash callback
37+
347afa39042728267550fa7a5ab5e9af52671add dpll: zl3073x: Fix double free in zl3073x_devlink_flash_update()
38+
f3426ac54c42c3260096ddc50b5470eb179fb06a dpll: zl3073x: Increase maximum size of flash utility
39+
40c17a02de41f12dd713309c7d2546117c577d29 dpll: zl3073x: Fix output pin registration
40+
41+
__CHANGES NOT IN UPSTREAM________________
42+
Porting to Rocky Linux 9, debranding and Rocky branding'
43+
Ensure aarch64 kernel is not compressed'
44+
x86/hyperv: Fix kdump on Azure CVMs
45+
dpll: zl3073x: fix kernel-doc name and missing parameter in fw.c
46+
redhat/configs: enable CONFIG_ZL3073X*
47+
redhat/configs: enable CONFIG_I2C_MUX_PCA954x on x86

0 commit comments

Comments
 (0)