commit
c4f8a5f19f
@ -0,0 +1,9 @@
|
|||||||
|
SOURCES/kernel-abi-stablelists-5.14.0-503.15.1.el9_5.tar.bz2
|
||||||
|
SOURCES/kernel-kabi-dw-5.14.0-503.15.1.el9_5.tar.bz2
|
||||||
|
SOURCES/linux-5.14.0-503.15.1.el9_5.tar.xz
|
||||||
|
SOURCES/nvidiagpuoot001.x509
|
||||||
|
SOURCES/rheldup3.x509
|
||||||
|
SOURCES/rhelima.x509
|
||||||
|
SOURCES/rhelima_centos.x509
|
||||||
|
SOURCES/rhelimaca1.x509
|
||||||
|
SOURCES/rhelkpatch1.x509
|
@ -0,0 +1,9 @@
|
|||||||
|
0745a2f1ce0dbe34af88664c34bc1ba095963134 SOURCES/kernel-abi-stablelists-5.14.0-503.15.1.el9_5.tar.bz2
|
||||||
|
74957b7466e5e0d320bfc3f11c66dc921d0735ef SOURCES/kernel-kabi-dw-5.14.0-503.15.1.el9_5.tar.bz2
|
||||||
|
dfb2a0bb9ddcec0961bb0c4c32c8306761417e26 SOURCES/linux-5.14.0-503.15.1.el9_5.tar.xz
|
||||||
|
4fff8080e88afffc06d8ef5004db8d53bb21237f SOURCES/nvidiagpuoot001.x509
|
||||||
|
95b9b811c7b0a6c98b2eafc4e7d6d24f2cb63289 SOURCES/rheldup3.x509
|
||||||
|
99e571f9de4188f3b5fdf1f84ff73f6cc4bb6a0e SOURCES/rhelima.x509
|
||||||
|
61d5a223ff0c79189505abae77e0087c4b2d2b47 SOURCES/rhelima_centos.x509
|
||||||
|
f882610d2554fef65703e5d3c342f005af0390ad SOURCES/rhelimaca1.x509
|
||||||
|
d90885108d225a234a5a9d054fc80893a5bd54d0 SOURCES/rhelkpatch1.x509
|
@ -0,0 +1,122 @@
|
|||||||
|
From e6b210caa51bc33c46d5acfae198645a9914fa32 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Lukoshko <alukoshko@almalinux.org>
|
||||||
|
Date: Mon, 30 Sep 2024 13:13:37 +0000
|
||||||
|
Subject: [PATCH] Enable all disabled pci devices by moving to unmaintained
|
||||||
|
|
||||||
|
---
|
||||||
|
kernel/rh_messages.h | 94 ++++++++++++++++++++++----------------------
|
||||||
|
1 file changed, 47 insertions(+), 47 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/kernel/rh_messages.h b/kernel/rh_messages.h
|
||||||
|
index b798ad5d4..c59853b47 100644
|
||||||
|
--- a/kernel/rh_messages.h
|
||||||
|
+++ b/kernel/rh_messages.h
|
||||||
|
@@ -141,6 +141,53 @@ static const struct pci_device_id rh_deprecated_pci_devices[] = {
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct pci_device_id rh_disabled_pci_devices[] = {
|
||||||
|
+ {0} /* Terminating entry */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct pci_device_id rh_unmaintained_pci_devices[] = {
|
||||||
|
+ { 0x10df, 0xe220, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x10df, 0x0724, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x10df, 0xe200, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x10df, 0xf011, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x10df, 0xf015, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x10df, 0xf100, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x10df, 0xfc40, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x005b, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0071, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0073, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0079, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x1003, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x1004, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x1005, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x1006, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x1007, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x1008, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x1009, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x100a, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x100b, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x100c, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x100d, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x100e, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x100f, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0x1010, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x15B3, 0xA2DC, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x006E, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0080, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0081, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0082, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0083, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0084, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0085, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0086, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1000, 0x0087, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x177d, 0xa01e, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x177d, 0xa034, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x177d, 0x0011, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1077, 0x2031, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1077, 0x2532, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1077, 0x8031, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1924, 0x0803, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
+ { 0x1924, 0x0813, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
{ 0x1011, 0x0046, 0x103c, 0x10c2 },
|
||||||
|
{ 0x1011, 0x0046, 0x9005, 0x0364 },
|
||||||
|
{ 0x1011, 0x0046, 0x9005, 0x0365 },
|
||||||
|
@@ -293,51 +340,4 @@ static const struct pci_device_id rh_disabled_pci_devices[] = {
|
||||||
|
{0} /* Terminating entry */
|
||||||
|
};
|
||||||
|
|
||||||
|
-static const struct pci_device_id rh_unmaintained_pci_devices[] = {
|
||||||
|
- { 0x10df, 0xe220, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x10df, 0x0724, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x10df, 0xe200, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x10df, 0xf011, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x10df, 0xf015, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x10df, 0xf100, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x10df, 0xfc40, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x005b, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0071, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0073, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0079, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x1003, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x1004, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x1005, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x1006, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x1007, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x1008, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x1009, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x100a, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x100b, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x100c, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x100d, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x100e, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x100f, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0x1010, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x15B3, 0xA2DC, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x006E, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0080, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0081, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0082, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0083, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0084, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0085, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0086, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1000, 0x0087, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x177d, 0xa01e, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x177d, 0xa034, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x177d, 0x0011, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1077, 0x2031, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1077, 0x2532, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1077, 0x8031, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1924, 0x0803, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- { 0x1924, 0x0813, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
- {0} /* Terminating entry */
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
#endif /* __RH_MESSAGES_H */
|
||||||
|
--
|
||||||
|
2.43.5
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
From ac6e3b155d35bfea32b1c3c6015a18b6e5046652 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Lukoshko <alukoshko@almalinux.org>
|
||||||
|
Date: Mon, 8 Apr 2024 13:17:47 +0000
|
||||||
|
Subject: [PATCH 2/4] Bring back deprecated pci ids to mptsas-mptspi driver
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/message/fusion/mptsas.c | 2 +-
|
||||||
|
drivers/message/fusion/mptspi.c | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
|
||||||
|
index 9d2f13f12..b25686049 100644
|
||||||
|
--- a/drivers/message/fusion/mptsas.c
|
||||||
|
+++ b/drivers/message/fusion/mptsas.c
|
||||||
|
@@ -5381,7 +5381,7 @@ static void mptsas_remove(struct pci_dev *pdev)
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct pci_device_id mptsas_pci_table[] = {
|
||||||
|
-#ifdef CONFIG_RHEL_DIFFERENCES
|
||||||
|
+#ifdef CONFIG_ALMALINUX_DIFFERENCES
|
||||||
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068,
|
||||||
|
PCI_VENDOR_ID_VMWARE, PCI_ANY_ID },
|
||||||
|
#else
|
||||||
|
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
|
||||||
|
index fd4a10b78..f9616de2a 100644
|
||||||
|
--- a/drivers/message/fusion/mptspi.c
|
||||||
|
+++ b/drivers/message/fusion/mptspi.c
|
||||||
|
@@ -1238,7 +1238,7 @@ static struct spi_function_template mptspi_transport_functions = {
|
||||||
|
*/
|
||||||
|
|
||||||
|
static struct pci_device_id mptspi_pci_table[] = {
|
||||||
|
-#ifdef CONFIG_RHEL_DIFFERENCES
|
||||||
|
+#ifdef CONFIG_ALMALINUX_DIFFERENCES
|
||||||
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_53C1030,
|
||||||
|
PCI_VENDOR_ID_VMWARE, PCI_ANY_ID },
|
||||||
|
#else
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From f9ab10cebe6411dd26fec2ef354db2e527386b4f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Lukoshko <alukoshko@almalinux.org>
|
||||||
|
Date: Mon, 8 Apr 2024 13:20:29 +0000
|
||||||
|
Subject: [PATCH 3/4] Bring back deprecated pci ids to hpsa driver
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/scsi/hpsa.c | 9 +++++----
|
||||||
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
|
||||||
|
index bd5880cbd..060bd914a 100644
|
||||||
|
--- a/drivers/scsi/hpsa.c
|
||||||
|
+++ b/drivers/scsi/hpsa.c
|
||||||
|
@@ -82,9 +82,7 @@ MODULE_DESCRIPTION("Driver for HP Smart Array Controller version " \
|
||||||
|
HPSA_DRIVER_VERSION);
|
||||||
|
MODULE_VERSION(HPSA_DRIVER_VERSION);
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
MODULE_ALIAS("cciss");
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
static int hpsa_simple_mode;
|
||||||
|
module_param(hpsa_simple_mode, int, S_IRUGO|S_IWUSR);
|
||||||
|
@@ -93,6 +91,11 @@ MODULE_PARM_DESC(hpsa_simple_mode,
|
||||||
|
|
||||||
|
/* define the PCI info for the cards we can control */
|
||||||
|
static const struct pci_device_id hpsa_pci_device_id[] = {
|
||||||
|
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3223},
|
||||||
|
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3234},
|
||||||
|
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3235},
|
||||||
|
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3237},
|
||||||
|
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x323D},
|
||||||
|
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3241},
|
||||||
|
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3243},
|
||||||
|
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3245},
|
||||||
|
@@ -146,12 +149,10 @@ static const struct pci_device_id hpsa_pci_device_id[] = {
|
||||||
|
{PCI_VENDOR_ID_HP_3PAR, 0x0075, 0x1590, 0x007D},
|
||||||
|
{PCI_VENDOR_ID_HP_3PAR, 0x0075, 0x1590, 0x0088},
|
||||||
|
{PCI_VENDOR_ID_HP, 0x333f, 0x103c, 0x333f},
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{PCI_VENDOR_ID_HP, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
||||||
|
PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0},
|
||||||
|
{PCI_VENDOR_ID_COMPAQ, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
||||||
|
PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0},
|
||||||
|
-#endif
|
||||||
|
{0,}
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From 091c13878c5d53a9ca8c78d8d3dc20598ff11c88 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Lukoshko <alukoshko@almalinux.org>
|
||||||
|
Date: Mon, 8 Apr 2024 13:22:27 +0000
|
||||||
|
Subject: [PATCH 4/4] Bring back deprecated pci ids to qla2xxx driver
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/scsi/qla2xxx/qla_os.c | 6 ------
|
||||||
|
1 file changed, 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
|
||||||
|
index 036f26c42..1d7b684dc 100644
|
||||||
|
--- a/drivers/scsi/qla2xxx/qla_os.c
|
||||||
|
+++ b/drivers/scsi/qla2xxx/qla_os.c
|
||||||
|
@@ -8121,7 +8121,6 @@ static const struct pci_error_handlers qla2xxx_err_handler = {
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct pci_device_id qla2xxx_pci_tbl[] = {
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2100) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2200) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2300) },
|
||||||
|
@@ -8134,18 +8133,13 @@ static struct pci_device_id qla2xxx_pci_tbl[] = {
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8432) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP5422) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP5432) },
|
||||||
|
-#endif
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2532) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2031) },
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8001) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8021) },
|
||||||
|
-#endif
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8031) },
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISPF001) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8044) },
|
||||||
|
-#endif
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2071) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2271) },
|
||||||
|
{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2261) },
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -0,0 +1,86 @@
|
|||||||
|
From 0e54f93854865b95b50e8023645e423af634e4ec Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Lukoshko <alukoshko@almalinux.org>
|
||||||
|
Date: Tue, 9 Apr 2024 17:27:35 +0000
|
||||||
|
Subject: [PATCH 1/3] Bring back deprecated pci ids to lpfc driver
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/scsi/lpfc/lpfc_ids.h | 12 ------------
|
||||||
|
1 file changed, 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/scsi/lpfc/lpfc_ids.h b/drivers/scsi/lpfc/lpfc_ids.h
|
||||||
|
index 85fc52038..0b1616e93 100644
|
||||||
|
--- a/drivers/scsi/lpfc/lpfc_ids.h
|
||||||
|
+++ b/drivers/scsi/lpfc/lpfc_ids.h
|
||||||
|
@@ -24,7 +24,6 @@
|
||||||
|
#include <linux/pci.h>
|
||||||
|
|
||||||
|
const struct pci_device_id lpfc_id_table[] = {
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_VIPER,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_FIREFLY,
|
||||||
|
@@ -55,13 +54,10 @@ const struct pci_device_id lpfc_id_table[] = {
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_DCSP,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#endif
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#endif
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_SCSP,
|
||||||
|
@@ -72,7 +68,6 @@ const struct pci_device_id lpfc_id_table[] = {
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_TFLY,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP101,
|
||||||
|
@@ -83,7 +78,6 @@ const struct pci_device_id lpfc_id_table[] = {
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LPE11000S,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#endif
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_SAT,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_SAT_MID,
|
||||||
|
@@ -96,7 +90,6 @@ const struct pci_device_id lpfc_id_table[] = {
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_SAT_S,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PROTEUS_VF,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PROTEUS_PF,
|
||||||
|
@@ -107,23 +100,18 @@ const struct pci_device_id lpfc_id_table[] = {
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_SERVERENGINE, PCI_DEVICE_ID_TOMCAT,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#endif
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_FALCON,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BALIUS,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#endif
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_FC,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_FCOE,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_FC_VF,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_FCOE_VF,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
-#endif
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_G6_FC,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, },
|
||||||
|
{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_G7_FC,
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
From b4fdb240a1102876c03e0dbbef57758550e6e334 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Lukoshko <alukoshko@almalinux.org>
|
||||||
|
Date: Tue, 9 Apr 2024 17:35:14 +0000
|
||||||
|
Subject: [PATCH 2/3] Bring back deprecated pci ids to qla4xxx driver
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/scsi/qla4xxx/ql4_os.c | 2 --
|
||||||
|
1 file changed, 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
|
||||||
|
index c72c44087..2dd7a9b0d 100644
|
||||||
|
--- a/drivers/scsi/qla4xxx/ql4_os.c
|
||||||
|
+++ b/drivers/scsi/qla4xxx/ql4_os.c
|
||||||
|
@@ -9865,7 +9865,6 @@ static struct pci_device_id qla4xxx_pci_tbl[] = {
|
||||||
|
.subvendor = PCI_ANY_ID,
|
||||||
|
.subdevice = PCI_ANY_ID,
|
||||||
|
},
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{
|
||||||
|
.vendor = PCI_VENDOR_ID_QLOGIC,
|
||||||
|
.device = PCI_DEVICE_ID_QLOGIC_ISP8022,
|
||||||
|
@@ -9884,7 +9883,6 @@ static struct pci_device_id qla4xxx_pci_tbl[] = {
|
||||||
|
.subvendor = PCI_ANY_ID,
|
||||||
|
.subdevice = PCI_ANY_ID,
|
||||||
|
},
|
||||||
|
-#endif
|
||||||
|
{0, 0},
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(pci, qla4xxx_pci_tbl);
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From 3c0cc7c69970a50fae40e8f6376fd50eb053db2d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Lukoshko <alukoshko@almalinux.org>
|
||||||
|
Date: Tue, 9 Apr 2024 17:36:30 +0000
|
||||||
|
Subject: [PATCH 3/3] Bring back deprecated pci ids to be2iscsi driver
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/scsi/be2iscsi/be_main.c | 2 --
|
||||||
|
1 file changed, 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
|
||||||
|
index 9079d4d83..3b4778ac4 100644
|
||||||
|
--- a/drivers/scsi/be2iscsi/be_main.c
|
||||||
|
+++ b/drivers/scsi/be2iscsi/be_main.c
|
||||||
|
@@ -384,13 +384,11 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc)
|
||||||
|
|
||||||
|
/*------------------- PCI Driver operations and data ----------------- */
|
||||||
|
static const struct pci_device_id beiscsi_pci_id_table[] = {
|
||||||
|
-#ifndef CONFIG_RHEL_DIFFERENCES
|
||||||
|
{ PCI_DEVICE(BE_VENDOR_ID, BE_DEVICE_ID1) },
|
||||||
|
{ PCI_DEVICE(BE_VENDOR_ID, BE_DEVICE_ID2) },
|
||||||
|
{ PCI_DEVICE(BE_VENDOR_ID, OC_DEVICE_ID1) },
|
||||||
|
{ PCI_DEVICE(BE_VENDOR_ID, OC_DEVICE_ID2) },
|
||||||
|
{ PCI_DEVICE(BE_VENDOR_ID, OC_DEVICE_ID3) },
|
||||||
|
-#endif
|
||||||
|
{ PCI_DEVICE(ELX_VENDOR_ID, OC_SKH_ID1) },
|
||||||
|
{ 0 }
|
||||||
|
};
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
bluetooth: hci_sysfs: Fix attempting to call device_add multiple times
|
||||||
|
|
||||||
|
device_add shall not be called multiple times as stated in its
|
||||||
|
documentation:
|
||||||
|
|
||||||
|
'Do not call this routine or device_register() more than once for
|
||||||
|
any device structure'
|
||||||
|
|
||||||
|
Syzkaller reports a bug as follows [1]:
|
||||||
|
------------[ cut here ]------------
|
||||||
|
kernel BUG at lib/list_debug.c:33!
|
||||||
|
invalid opcode: 0000 [#1] PREEMPT SMP KASAN
|
||||||
|
[...]
|
||||||
|
Call Trace:
|
||||||
|
<TASK>
|
||||||
|
__list_add include/linux/list.h:69 [inline]
|
||||||
|
list_add_tail include/linux/list.h:102 [inline]
|
||||||
|
kobj_kset_join lib/kobject.c:164 [inline]
|
||||||
|
kobject_add_internal+0x18f/0x8f0 lib/kobject.c:214
|
||||||
|
kobject_add_varg lib/kobject.c:358 [inline]
|
||||||
|
kobject_add+0x150/0x1c0 lib/kobject.c:410
|
||||||
|
device_add+0x368/0x1e90 drivers/base/core.c:3452
|
||||||
|
hci_conn_add_sysfs+0x9b/0x1b0 net/bluetooth/hci_sysfs.c:53
|
||||||
|
hci_le_cis_estabilished_evt+0x57c/0xae0 net/bluetooth/hci_event.c:6799
|
||||||
|
hci_le_meta_evt+0x2b8/0x510 net/bluetooth/hci_event.c:7110
|
||||||
|
hci_event_func net/bluetooth/hci_event.c:7440 [inline]
|
||||||
|
hci_event_packet+0x63d/0xfd0 net/bluetooth/hci_event.c:7495
|
||||||
|
hci_rx_work+0xae7/0x1230 net/bluetooth/hci_core.c:4007
|
||||||
|
process_one_work+0x991/0x1610 kernel/workqueue.c:2289
|
||||||
|
worker_thread+0x665/0x1080 kernel/workqueue.c:2436
|
||||||
|
kthread+0x2e4/0x3a0 kernel/kthread.c:376
|
||||||
|
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
|
||||||
|
</TASK>
|
||||||
|
|
||||||
|
Link: https://syzkaller.appspot.com/bug?id=da3246e2d33afdb92d66bc166a0934c5b146404a
|
||||||
|
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
|
||||||
|
Tested-by: Hawkins Jiawei <yin31149@gmail.com>
|
||||||
|
---
|
||||||
|
diff -ruN linux-5.14.0-427.18.orig/net/bluetooth/hci_sysfs.c linux-5.14.0-427.18/net/bluetooth/hci_sysfs.c
|
||||||
|
--- linux-5.14.0-427.18.orig/net/bluetooth/hci_sysfs.c
|
||||||
|
+++ linux-5.14.0-427.18/net/bluetooth/hci_sysfs.c
|
||||||
|
@@ -48,6 +48,9 @@ void hci_conn_add_sysfs(struct hci_conn *conn)
|
||||||
|
|
||||||
|
bt_dev_dbg(hdev, "conn %p", conn);
|
||||||
|
|
||||||
|
+ if (device_is_registered(&conn->dev))
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
if (device_is_registered(&conn->dev))
|
||||||
|
return;
|
||||||
|
|
@ -0,0 +1,24 @@
|
|||||||
|
From 05fe12c0546f92c86ebec7d4432e696486a22a05 Mon Sep 17 00:00:00 2001
|
||||||
|
From: tigro <tigro@msvsphere-os.ru>
|
||||||
|
Date: Wed, 9 Oct 2024 17:47:23 +0300
|
||||||
|
Subject: [PATCH] Added Inferit Compact support
|
||||||
|
|
||||||
|
---
|
||||||
|
sound/pci/hda/patch_conexant.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
|
||||||
|
index e8209178d..995b6312e 100644
|
||||||
|
--- a/sound/pci/hda/patch_conexant.c
|
||||||
|
+++ b/sound/pci/hda/patch_conexant.c
|
||||||
|
@@ -1085,6 +1085,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = {
|
||||||
|
SND_PCI_QUIRK(0x103c, 0x8457, "HP Z2 G4 mini", CXT_FIXUP_HP_MIC_NO_PRESENCE),
|
||||||
|
SND_PCI_QUIRK(0x103c, 0x8458, "HP Z2 G4 mini premium", CXT_FIXUP_HP_MIC_NO_PRESENCE),
|
||||||
|
SND_PCI_QUIRK(0x1043, 0x138d, "Asus", CXT_FIXUP_HEADPHONE_MIC_PIN),
|
||||||
|
+ SND_PCI_QUIRK(0x14f1, 0x0226, "Inferit Compact", CXT_FIXUP_HP_GATE_MIC),
|
||||||
|
SND_PCI_QUIRK(0x14f1, 0x0265, "SWS JS201D", CXT_PINCFG_SWS_JS201D),
|
||||||
|
SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT_FIXUP_OLPC_XO),
|
||||||
|
SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410),
|
||||||
|
--
|
||||||
|
2.46.2
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
RHEL_MAJOR = 9
|
||||||
|
RHEL_MINOR = 5
|
||||||
|
|
||||||
|
#
|
||||||
|
# RHEL_RELEASE
|
||||||
|
# -------------
|
||||||
|
#
|
||||||
|
# Represents build number in 'release' part of RPM's name-version-release.
|
||||||
|
# name is <package_name>, e.g. kernel
|
||||||
|
# version is upstream kernel version this kernel is based on, e.g. 4.18.0
|
||||||
|
# release is <RHEL_RELEASE>.<dist_tag>[<buildid>], e.g. 100.el8
|
||||||
|
#
|
||||||
|
# Use this spot to avoid future merge conflicts.
|
||||||
|
# Do not trim this comment.
|
||||||
|
RHEL_RELEASE = 503.15.1
|
||||||
|
|
||||||
|
#
|
||||||
|
# ZSTREAM
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# This variable controls whether we use zstream numbering or not for the
|
||||||
|
# package release. The zstream release keeps the build number of the last
|
||||||
|
# build done for ystream for the Beta milestone, and increments a second
|
||||||
|
# number for each build. The third number is used for branched builds
|
||||||
|
# (eg.: for builds with security fixes or hot fixes done outside of the
|
||||||
|
# batch release process).
|
||||||
|
#
|
||||||
|
# For example, with ZSTREAM unset or set to "no", all builds will contain
|
||||||
|
# a release with only the build number, eg.: kernel-<kernel version>-X.el*,
|
||||||
|
# where X is the build number. With ZSTREAM set to "yes", we will have
|
||||||
|
# builds with kernel-<kernel version>-X.Y.Z.el*, where X is the last
|
||||||
|
# RHEL_RELEASE number before ZSTREAM flag was set to yes, Y will now be the
|
||||||
|
# build number and Z will always be 1 except if you're doing a branched build
|
||||||
|
# (when you give RHDISTGIT_BRANCH on the command line, in which case the Z
|
||||||
|
# number will be incremented instead of the Y).
|
||||||
|
#
|
||||||
|
ZSTREAM ?= no
|
||||||
|
|
||||||
|
#
|
||||||
|
# Early y+1 numbering
|
||||||
|
# --------------------
|
||||||
|
#
|
||||||
|
# In early y+1 process, RHEL_RELEASE consists of 2 numbers: x.y
|
||||||
|
# First is RHEL_RELEASE inherited/merged from y as-is, second number
|
||||||
|
# is incremented with each build starting from 1. After merge from y,
|
||||||
|
# it resets back to 1. This way y+1 nvr reflects status of last merge.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
#
|
||||||
|
# rhel8.0 rhel-8.1
|
||||||
|
# kernel-4.18.0-58.el8 --> kernel-4.18.0-58.1.el8
|
||||||
|
# kernel-4.18.0-58.2.el8
|
||||||
|
# kernel-4.18.0-59.el8 kernel-4.18.0-59.1.el8
|
||||||
|
# kernel-4.18.0-60.el8
|
||||||
|
# kernel-4.18.0-61.el8 --> kernel-4.18.0-61.1.el8
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Use this spot to avoid future merge conflicts.
|
||||||
|
# Do not trim this comment.
|
||||||
|
EARLY_YSTREAM ?= no
|
||||||
|
EARLY_YBUILD:=
|
||||||
|
EARLY_YRELEASE:=
|
||||||
|
ifneq ("$(ZSTREAM)", "yes")
|
||||||
|
ifeq ("$(EARLY_YSTREAM)","yes")
|
||||||
|
RHEL_RELEASE:=$(RHEL_RELEASE).$(EARLY_YRELEASE)
|
||||||
|
endif
|
||||||
|
endif
|
@ -0,0 +1,25 @@
|
|||||||
|
===================
|
||||||
|
The Kernel dist-git
|
||||||
|
===================
|
||||||
|
|
||||||
|
The kernel is maintained in a `source tree`_ rather than directly in dist-git.
|
||||||
|
The specfile is maintained as a `template`_ in the source tree along with a set
|
||||||
|
of build scripts to generate configurations, (S)RPMs, and to populate the
|
||||||
|
dist-git repository.
|
||||||
|
|
||||||
|
The `documentation`_ for the source tree covers how to contribute and maintain
|
||||||
|
the tree.
|
||||||
|
|
||||||
|
If you're looking for the downstream patch set it's available in the source
|
||||||
|
tree with "git log master..ark-patches" or
|
||||||
|
`online`_.
|
||||||
|
|
||||||
|
Each release in dist-git is tagged in the source repository so you can easily
|
||||||
|
check out the source tree for a build. The tags are in the format
|
||||||
|
name-version-release, but note release doesn't contain the dist tag since the
|
||||||
|
source can be built in different build roots (Fedora, CentOS, etc.)
|
||||||
|
|
||||||
|
.. _source tree: https://gitlab.com/cki-project/kernel-ark.git
|
||||||
|
.. _template: https://gitlab.com/cki-project/kernel-ark/-/blob/os-build/redhat/kernel.spec.template
|
||||||
|
.. _documentation: https://gitlab.com/cki-project/kernel-ark/-/wikis/home
|
||||||
|
.. _online: https://gitlab.com/cki-project/kernel-ark/-/commits/ark-patches
|
@ -0,0 +1,166 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
#
|
||||||
|
# check-kabi - Red Hat kABI reference checking tool
|
||||||
|
#
|
||||||
|
# We use this script to check against reference Module.kabi files.
|
||||||
|
#
|
||||||
|
# Author: Jon Masters <jcm@redhat.com>
|
||||||
|
# Copyright (C) 2007-2009 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# This software may be freely redistributed under the terms of the GNU
|
||||||
|
# General Public License (GPL).
|
||||||
|
|
||||||
|
# Changelog:
|
||||||
|
#
|
||||||
|
# 2018/06/01 - Update for python3 by Petr Oros.
|
||||||
|
# 2009/08/15 - Updated for use in RHEL6.
|
||||||
|
# 2007/06/13 - Initial rewrite in python by Jon Masters.
|
||||||
|
|
||||||
|
__author__ = "Jon Masters <jcm@redhat.com>"
|
||||||
|
__version__ = "2.0"
|
||||||
|
__date__ = "2009/08/15"
|
||||||
|
__copyright__ = "Copyright (C) 2007-2009 Red Hat, Inc"
|
||||||
|
__license__ = "GPL"
|
||||||
|
|
||||||
|
import getopt
|
||||||
|
import string
|
||||||
|
import sys
|
||||||
|
|
||||||
|
true = 1
|
||||||
|
false = 0
|
||||||
|
|
||||||
|
|
||||||
|
def load_symvers(symvers, filename):
|
||||||
|
"""Load a Module.symvers file."""
|
||||||
|
|
||||||
|
symvers_file = open(filename, "r")
|
||||||
|
|
||||||
|
while true:
|
||||||
|
in_line = symvers_file.readline()
|
||||||
|
if in_line == "":
|
||||||
|
break
|
||||||
|
if in_line == "\n":
|
||||||
|
continue
|
||||||
|
checksum, symbol, directory, type, *ns = in_line.split()
|
||||||
|
ns = ns[0] if ns else None
|
||||||
|
|
||||||
|
symvers[symbol] = in_line[0:-1]
|
||||||
|
|
||||||
|
|
||||||
|
def load_kabi(kabi, filename):
|
||||||
|
"""Load a Module.kabi file."""
|
||||||
|
|
||||||
|
kabi_file = open(filename, "r")
|
||||||
|
|
||||||
|
while true:
|
||||||
|
in_line = kabi_file.readline()
|
||||||
|
if in_line == "":
|
||||||
|
break
|
||||||
|
if in_line == "\n":
|
||||||
|
continue
|
||||||
|
checksum, symbol, directory, type, *ns = in_line.split()
|
||||||
|
ns = ns[0] if ns else None
|
||||||
|
|
||||||
|
kabi[symbol] = in_line[0:-1]
|
||||||
|
|
||||||
|
|
||||||
|
def check_kabi(symvers, kabi):
|
||||||
|
"""Check Module.kabi and Module.symvers files."""
|
||||||
|
|
||||||
|
fail = 0
|
||||||
|
warn = 0
|
||||||
|
changed_symbols = []
|
||||||
|
moved_symbols = []
|
||||||
|
ns_symbols = []
|
||||||
|
|
||||||
|
for symbol in kabi:
|
||||||
|
abi_hash, abi_sym, abi_dir, abi_type, *abi_ns = kabi[symbol].split()
|
||||||
|
abi_ns = abi_ns[0] if abi_ns else None
|
||||||
|
if symbol in symvers:
|
||||||
|
sym_hash, sym_sym, sym_dir, sym_type, *sym_ns = symvers[symbol].split()
|
||||||
|
sym_ns = sym_ns[0] if sym_ns else None
|
||||||
|
if abi_hash != sym_hash:
|
||||||
|
fail = 1
|
||||||
|
changed_symbols.append(symbol)
|
||||||
|
|
||||||
|
if abi_dir != sym_dir:
|
||||||
|
warn = 1
|
||||||
|
moved_symbols.append(symbol)
|
||||||
|
|
||||||
|
if abi_ns != sym_ns:
|
||||||
|
warn = 1
|
||||||
|
ns_symbols.append(symbol)
|
||||||
|
else:
|
||||||
|
fail = 1
|
||||||
|
changed_symbols.append(symbol)
|
||||||
|
|
||||||
|
if fail:
|
||||||
|
print("*** ERROR - ABI BREAKAGE WAS DETECTED ***")
|
||||||
|
print("")
|
||||||
|
print("The following symbols have been changed (this will cause an ABI breakage):")
|
||||||
|
print("")
|
||||||
|
for symbol in changed_symbols:
|
||||||
|
print(symbol)
|
||||||
|
print("")
|
||||||
|
|
||||||
|
if warn:
|
||||||
|
print("*** WARNING - ABI SYMBOLS MOVED ***")
|
||||||
|
if moved_symbols:
|
||||||
|
print("")
|
||||||
|
print("The following symbols moved (typically caused by moving a symbol from being")
|
||||||
|
print("provided by the kernel vmlinux out to a loadable module):")
|
||||||
|
print("")
|
||||||
|
for symbol in moved_symbols:
|
||||||
|
print(symbol)
|
||||||
|
print("")
|
||||||
|
if ns_symbols:
|
||||||
|
print("")
|
||||||
|
print("The following symbols changed symbol namespaces:")
|
||||||
|
print("")
|
||||||
|
for symbol in ns_symbols:
|
||||||
|
print(symbol)
|
||||||
|
print("")
|
||||||
|
|
||||||
|
"""Halt the build, if we got errors and/or warnings. In either case,
|
||||||
|
double-checkig is required to avoid introducing / concealing
|
||||||
|
KABI inconsistencies."""
|
||||||
|
if fail or warn:
|
||||||
|
sys.exit(1)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
def usage():
|
||||||
|
print("""
|
||||||
|
check-kabi: check Module.kabi and Module.symvers files.
|
||||||
|
|
||||||
|
check-kabi [ -k Module.kabi ] [ -s Module.symvers ]
|
||||||
|
|
||||||
|
""")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
symvers_file = ""
|
||||||
|
kabi_file = ""
|
||||||
|
|
||||||
|
opts, args = getopt.getopt(sys.argv[1:], 'hk:s:')
|
||||||
|
|
||||||
|
for o, v in opts:
|
||||||
|
if o == "-s":
|
||||||
|
symvers_file = v
|
||||||
|
if o == "-h":
|
||||||
|
usage()
|
||||||
|
sys.exit(0)
|
||||||
|
if o == "-k":
|
||||||
|
kabi_file = v
|
||||||
|
|
||||||
|
if (symvers_file == "") or (kabi_file == ""):
|
||||||
|
usage()
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
symvers = {}
|
||||||
|
kabi = {}
|
||||||
|
|
||||||
|
load_symvers(symvers, symvers_file)
|
||||||
|
load_kabi(kabi, kabi_file)
|
||||||
|
check_kabi(symvers, kabi)
|
@ -0,0 +1,3 @@
|
|||||||
|
# See 'cpupower help' and cpupower(1) for more info
|
||||||
|
CPUPOWER_START_OPTS="frequency-set -g performance"
|
||||||
|
CPUPOWER_STOP_OPTS="frequency-set -g ondemand"
|
@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Configure CPU power related settings
|
||||||
|
After=syslog.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=yes
|
||||||
|
EnvironmentFile=/etc/sysconfig/cpupower
|
||||||
|
ExecStart=/usr/bin/cpupower $CPUPOWER_START_OPTS
|
||||||
|
ExecStop=/usr/bin/cpupower $CPUPOWER_STOP_OPTS
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
@ -0,0 +1,44 @@
|
|||||||
|
# generic + compressed please
|
||||||
|
hostonly="no"
|
||||||
|
compress="xz"
|
||||||
|
|
||||||
|
# VMs can't update microcode anyway
|
||||||
|
early_microcode="no"
|
||||||
|
|
||||||
|
# modules: basics
|
||||||
|
dracutmodules+=" base systemd systemd-initrd dracut-systemd dbus dbus-broker usrmount shutdown "
|
||||||
|
|
||||||
|
# modules: storage support
|
||||||
|
dracutmodules+=" dm lvm rootfs-block fs-lib "
|
||||||
|
|
||||||
|
# modules: tpm and crypto
|
||||||
|
dracutmodules+=" crypt crypt-loop tpm2-tss "
|
||||||
|
|
||||||
|
# WALinuxagent-cvm with CVM specific udev rules
|
||||||
|
dracutmodules+=" walinuxagentcvm "
|
||||||
|
|
||||||
|
# modules: root disk integrity protection
|
||||||
|
dracutmodules+=" systemd-veritysetup "
|
||||||
|
|
||||||
|
# drivers: virtual buses, pci
|
||||||
|
drivers+=" virtio-pci virtio-mmio " # qemu-kvm
|
||||||
|
drivers+=" hv-vmbus pci-hyperv " # hyperv
|
||||||
|
drivers+=" xen-pcifront " # xen
|
||||||
|
|
||||||
|
# drivers: storage
|
||||||
|
drivers+=" ahci nvme sd_mod sr_mod " # generic
|
||||||
|
drivers+=" virtio-blk virtio-scsi " # qemu-kvm
|
||||||
|
drivers+=" hv-storvsc " # hyperv
|
||||||
|
drivers+=" xen-blkfront " # xen
|
||||||
|
|
||||||
|
# root encryption
|
||||||
|
drivers+=" dm_crypt "
|
||||||
|
|
||||||
|
# root disk integrity protection
|
||||||
|
drivers+=" dm_verity overlay "
|
||||||
|
|
||||||
|
# filesystems
|
||||||
|
filesystems+=" vfat ext4 xfs overlay "
|
||||||
|
|
||||||
|
# systemd-pcrphase
|
||||||
|
install_items+=" /lib/systemd/system/systemd-pcrphase-initrd.service /usr/lib/systemd/systemd-pcrphase /usr/lib/systemd/system/initrd.target.wants/systemd-pcrphase-initrd.service "
|
@ -0,0 +1,18 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# This is the aarch64 override file for the core/drivers package split. The
|
||||||
|
# module directories listed here and in the generic list in filter-modules.sh
|
||||||
|
# will be moved to the resulting kernel-modules package for this arch.
|
||||||
|
# Anything not listed in those files will be in the kernel-core package.
|
||||||
|
#
|
||||||
|
# Please review the default list in filter-modules.sh before making
|
||||||
|
# modifications to the overrides below. If something should be removed across
|
||||||
|
# all arches, remove it in the default instead of per-arch.
|
||||||
|
|
||||||
|
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging tty uio uwb w1"
|
||||||
|
|
||||||
|
ethdrvs="3com adaptec arc alteon atheros broadcom cadence calxeda chelsio cisco dec dlink emulex icplus marvell micrel myricom neterion nvidia oki-semi packetengines qlogic rdc renesas sfc silan sis smsc stmicro sun tehuti ti via wiznet xircom"
|
||||||
|
|
||||||
|
drmdrvs="amd arm bridge ast exynos hisilicon i2c imx mgag200 meson msm nouveau panel radeon rockchip tegra sun4i tinydrm vc4"
|
||||||
|
|
||||||
|
singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr chtls"
|
@ -0,0 +1,177 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
#
|
||||||
|
# Called as filter-modules.sh list-of-modules Arch
|
||||||
|
|
||||||
|
# This script filters the modules into the kernel-core and kernel-modules
|
||||||
|
# subpackages. We list out subsystems/subdirs to prune from the installed
|
||||||
|
# module directory. What is left is put into the kernel-core package. What is
|
||||||
|
# pruned is contained in the kernel-modules package.
|
||||||
|
#
|
||||||
|
# This file contains the default subsys/subdirs to prune from all architectures.
|
||||||
|
# If an architecture needs to differ, we source a per-arch filter-<arch>.sh file
|
||||||
|
# that contains the set of override lists to be used instead. If a module or
|
||||||
|
# subsys should be in kernel-modules on all arches, please change the defaults
|
||||||
|
# listed here.
|
||||||
|
|
||||||
|
# Overrides is individual modules which need to remain in kernel-core due to deps.
|
||||||
|
overrides="cec isst_if_common isst_tpmi_core isst_tpmi intel_vsec intel_vsec_tpmi"
|
||||||
|
|
||||||
|
# Set the default dirs/modules to filter out
|
||||||
|
driverdirs="atm auxdisplay bcma bluetooth firewire fmc iio infiniband isdn leds media memstick mfd mmc mtd nfc ntb pcmcia platform power ssb staging tty uio uwb w1"
|
||||||
|
|
||||||
|
chardrvs="mwave pcmcia"
|
||||||
|
|
||||||
|
netdrvs="appletalk can dsa hamradio ieee802154 irda ppp slip usb wireless"
|
||||||
|
|
||||||
|
ethdrvs="3com adaptec alteon amd aquantia atheros broadcom cadence calxeda chelsio cisco dec dlink emulex icplus marvell neterion nvidia oki-semi packetengines qlogic rdc renesas sfc silan sis smsc stmicro sun tehuti ti wiznet xircom"
|
||||||
|
|
||||||
|
cryptdrvs="bcm caam cavium chelsio hisilicon marvell qat"
|
||||||
|
|
||||||
|
inputdrvs="gameport tablet touchscreen"
|
||||||
|
|
||||||
|
scsidrvs="aacraid aic7xxx aic94xx be2iscsi bfa bnx2i bnx2fc csiostor cxgbi esas2r fcoe fnic hisi_sas isci libsas lpfc megaraid mpt2sas mpt3sas mvsas pm8001 qla2xxx qla4xxx sym53c8xx_2 ufs qedf"
|
||||||
|
|
||||||
|
usbdrvs="atm image misc serial wusbcore"
|
||||||
|
|
||||||
|
fsdrvs="affs befs smb coda cramfs ecryptfs hfs hfsplus jfs minix ncpfs nilfs2 ocfs2 reiserfs romfs squashfs sysv ubifs ufs"
|
||||||
|
|
||||||
|
netprots="6lowpan appletalk atm ax25 batman-adv bluetooth can dccp dsa ieee802154 irda l2tp mac80211 mac802154 mpls netrom nfc rds rfkill rose sctp smc wireless"
|
||||||
|
|
||||||
|
drmdrvs="amd ast gma500 i2c i915 mgag200 nouveau radeon via "
|
||||||
|
|
||||||
|
singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr chtls parport_serial ism regmap-sdw regmap-sdw-mbq arizona-micsupp hid-asus nct6775 ntc_thermistor video"
|
||||||
|
|
||||||
|
# Grab the arch-specific filter list overrides
|
||||||
|
source ./filter-$2.sh
|
||||||
|
|
||||||
|
filter_dir() {
|
||||||
|
filelist=$1
|
||||||
|
dir=$2
|
||||||
|
|
||||||
|
grep -v -e "${dir}/" ${filelist} > ${filelist}.tmp
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "Couldn't remove ${dir}. Skipping."
|
||||||
|
else
|
||||||
|
grep -e "${dir}/" ${filelist} >> k-d.list
|
||||||
|
mv ${filelist}.tmp $filelist
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
filter_ko() {
|
||||||
|
filelist=$1
|
||||||
|
mod=$2
|
||||||
|
|
||||||
|
grep -v -e "${mod}.ko" ${filelist} > ${filelist}.tmp
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "Couldn't remove ${mod}.ko Skipping."
|
||||||
|
else
|
||||||
|
grep -e "${mod}.ko" ${filelist} >> k-d.list
|
||||||
|
mv ${filelist}.tmp $filelist
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Filter the drivers/ subsystems
|
||||||
|
for subsys in ${driverdirs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/${subsys}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Filter the networking drivers
|
||||||
|
for netdrv in ${netdrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/net/${netdrv}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Filter the char drivers
|
||||||
|
for char in ${chardrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/char/${char}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Filter the ethernet drivers
|
||||||
|
for eth in ${ethdrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/net/ethernet/${eth}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Filter the crypto drivers
|
||||||
|
for crypt in ${cryptdrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/crypto/${crypt}
|
||||||
|
done
|
||||||
|
|
||||||
|
# SCSI
|
||||||
|
for scsi in ${scsidrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/scsi/${scsi}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Input
|
||||||
|
for input in ${inputdrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/input/${input}
|
||||||
|
done
|
||||||
|
|
||||||
|
# USB
|
||||||
|
for usb in ${usbdrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/usb/${usb}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Filesystems
|
||||||
|
for fs in ${fsdrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 fs/${fs}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Network protocols
|
||||||
|
for prot in ${netprots}
|
||||||
|
do
|
||||||
|
filter_dir $1 kernel/net/${prot}
|
||||||
|
done
|
||||||
|
|
||||||
|
# DRM
|
||||||
|
for drm in ${drmdrvs}
|
||||||
|
do
|
||||||
|
filter_dir $1 drivers/gpu/drm/${drm}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Just kill sound.
|
||||||
|
filter_dir $1 kernel/sound
|
||||||
|
filter_dir $1 kernel/drivers/soundwire
|
||||||
|
|
||||||
|
# Now go through and filter any single .ko files that might have deps on the
|
||||||
|
# things we filtered above
|
||||||
|
for mod in ${singlemods}
|
||||||
|
do
|
||||||
|
filter_ko $1 ${mod}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Now process the override list to bring those modules back into core
|
||||||
|
for mod in ${overrides}
|
||||||
|
do
|
||||||
|
grep -v -e "/${mod}.ko" k-d.list > k-d.list.tmp
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "Couldn't save ${mod}.ko Skipping."
|
||||||
|
else
|
||||||
|
grep -e "/${mod}.ko" k-d.list >> $filelist
|
||||||
|
mv k-d.list.tmp k-d.list
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
# Go through our generated drivers list and remove the .ko files. We'll
|
||||||
|
# restore them later.
|
||||||
|
for mod in `cat k-d.list`
|
||||||
|
do
|
||||||
|
rm -rf $mod
|
||||||
|
done
|
@ -0,0 +1,14 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# This is the ppc64le override file for the core/drivers package split. The
|
||||||
|
# module directories listed here and in the generic list in filter-modules.sh
|
||||||
|
# will be moved to the resulting kernel-modules package for this arch.
|
||||||
|
# Anything not listed in those files will be in the kernel-core package.
|
||||||
|
#
|
||||||
|
# Please review the default list in filter-modules.sh before making
|
||||||
|
# modifications to the overrides below. If something should be removed across
|
||||||
|
# all arches, remove it in the default instead of per-arch.
|
||||||
|
|
||||||
|
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging tty uio uwb w1"
|
||||||
|
|
||||||
|
singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr chtls"
|
@ -0,0 +1,12 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# This is the s390x override file for the core/drivers package split. The
|
||||||
|
# module directories listed here and in the generic list in filter-modules.sh
|
||||||
|
# will be moved to the resulting kernel-modules package for this arch.
|
||||||
|
# Anything not listed in those files will be in the kernel-core package.
|
||||||
|
#
|
||||||
|
# Please review the default list in filter-modules.sh before making
|
||||||
|
# modifications to the overrides below. If something should be removed across
|
||||||
|
# all arches, remove it in the default instead of per-arch.
|
||||||
|
|
||||||
|
# Defaults work so no need to override
|
@ -0,0 +1,12 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# This is the x86_64 override file for the core/drivers package split. The
|
||||||
|
# module directories listed here and in the generic list in filter-modules.sh
|
||||||
|
# will be moved to the resulting kernel-modules package for this arch.
|
||||||
|
# Anything not listed in those files will be in the kernel-core package.
|
||||||
|
#
|
||||||
|
# Please review the default list in filter-modules.sh before making
|
||||||
|
# modifications to the overrides below. If something should be removed across
|
||||||
|
# all arches, remove it in the default instead of per-arch.
|
||||||
|
|
||||||
|
# Defaults work so no need to override
|
@ -0,0 +1,14 @@
|
|||||||
|
--- !Policy
|
||||||
|
product_versions:
|
||||||
|
- rhel-9
|
||||||
|
decision_context: osci_compose_gate
|
||||||
|
rules:
|
||||||
|
- !PassingTestCaseRule {test_case_name: cki.tier1-aarch64.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: cki.tier1-ppc64le.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: cki.tier1-s390x.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: cki.tier1-x86_64.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: s1-aws-ci_x86_64.brew-build.tier1.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: s1-aws-ci_aarch64.brew-build.tier1.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: s1-azure-ci_x86_64.brew-build.tier1.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: s1-azure-ci_aarch64.brew-build.tier1.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: s1-gcp-ci.brew-build.tier1.functional}
|
@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Adjusts the configuration options to build the variants correctly
|
||||||
|
|
||||||
|
test -n "$RHTEST" && exit 0
|
||||||
|
|
||||||
|
DEBUGBUILDSENABLED=$1
|
||||||
|
if [ -z "$DEBUGBUILDSENABLED" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$FLAVOR" ]; then
|
||||||
|
FLAVOR=rhel
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$FLAVOR" = "fedora" ]; then
|
||||||
|
SECONDARY=rhel
|
||||||
|
else
|
||||||
|
SECONDARY=fedora
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in kernel-*-"$FLAVOR".config; do
|
||||||
|
NEW=kernel-"$SPECVERSION"-$(echo "$i" | cut -d - -f2- | sed s/-"$FLAVOR"//)
|
||||||
|
#echo $NEW
|
||||||
|
mv "$i" "$NEW"
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f kernel-*-"$SECONDARY".config
|
||||||
|
|
||||||
|
if [ "$DEBUGBUILDSENABLED" -eq 0 ]; then
|
||||||
|
for i in kernel-*debug*.config; do
|
||||||
|
base=$(echo "$i" | sed -r s/-?debug//g)
|
||||||
|
NEW=kernel-$(echo "$base" | cut -d - -f2-)
|
||||||
|
mv "$i" "$NEW"
|
||||||
|
done
|
||||||
|
fi
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,2 @@
|
|||||||
|
# This file is intentionally left empty in the stock kernel. Its a nicety
|
||||||
|
# added for those wanting to do custom rebuilds with altered config opts.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,11 @@
|
|||||||
|
/var/log/kvm_stat.csv {
|
||||||
|
size 10M
|
||||||
|
missingok
|
||||||
|
compress
|
||||||
|
maxage 30
|
||||||
|
rotate 5
|
||||||
|
nodateext
|
||||||
|
postrotate
|
||||||
|
/usr/bin/systemctl try-restart kvm_stat.service
|
||||||
|
endscript
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
#! /usr/bin/perl
|
||||||
|
|
||||||
|
my @args=@ARGV;
|
||||||
|
my %configvalues;
|
||||||
|
my @configoptions;
|
||||||
|
my $configcounter = 0;
|
||||||
|
|
||||||
|
# optionally print out the architecture as the first line of our output
|
||||||
|
my $arch = $args[2];
|
||||||
|
if (defined $arch) {
|
||||||
|
print "# $arch\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# first, read the override file
|
||||||
|
|
||||||
|
open (FILE,"$args[0]") || die "Could not open $args[0]";
|
||||||
|
while (<FILE>) {
|
||||||
|
my $str = $_;
|
||||||
|
my $configname;
|
||||||
|
|
||||||
|
if (/\# ([\w]+) is not set/) {
|
||||||
|
$configname = $1;
|
||||||
|
} elsif (/^\#/) {
|
||||||
|
# fall through on comments like 'avoid CONFIG_FOO=y'
|
||||||
|
;
|
||||||
|
} elsif (/([\w]+)=/) {
|
||||||
|
$configname = $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined($configname) && !exists($configvalues{$configname})) {
|
||||||
|
$configvalues{$configname} = $str;
|
||||||
|
$configoptions[$configcounter] = $configname;
|
||||||
|
$configcounter ++;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
# now, read and output the entire configfile, except for the overridden
|
||||||
|
# parts... for those the new value is printed.
|
||||||
|
|
||||||
|
open (FILE2,"$args[1]") || die "Could not open $args[1]";
|
||||||
|
while (<FILE2>) {
|
||||||
|
my $configname;
|
||||||
|
|
||||||
|
if (/\# ([\w]+) is not set/) {
|
||||||
|
$configname = $1;
|
||||||
|
} elsif (/^\#/) {
|
||||||
|
# fall through on comments like 'avoid CONFIG_FOO=y'
|
||||||
|
;
|
||||||
|
} elsif (/([\w]+)=/) {
|
||||||
|
$configname = $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined($configname) && exists($configvalues{$configname})) {
|
||||||
|
print "$configvalues{$configname}";
|
||||||
|
delete($configvalues{$configname});
|
||||||
|
} else {
|
||||||
|
print "$_";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# now print the new values from the overridden configfile
|
||||||
|
my $counter = 0;
|
||||||
|
|
||||||
|
while ($counter < $configcounter) {
|
||||||
|
my $configname = $configoptions[$counter];
|
||||||
|
if (exists($configvalues{$configname})) {
|
||||||
|
print "$configvalues{$configname}";
|
||||||
|
}
|
||||||
|
$counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
@ -0,0 +1,164 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
# shellcheck disable=SC2164
|
||||||
|
|
||||||
|
RpmDir=$1
|
||||||
|
ModDir=$2
|
||||||
|
Dir="$1/$2"
|
||||||
|
# Note the list filename must have the format mod-[PACKAGE].list, for example,
|
||||||
|
# mod-internal.list or mod-extra.list. The PACKAGE is used to create a
|
||||||
|
# override directory for the modules.
|
||||||
|
List=$3
|
||||||
|
Dest="$4"
|
||||||
|
|
||||||
|
blacklist()
|
||||||
|
{
|
||||||
|
cat > "$RpmDir/etc/modprobe.d/$1-blacklist.conf" <<-__EOF__
|
||||||
|
# This kernel module can be automatically loaded by non-root users. To
|
||||||
|
# enhance system security, the module is blacklisted by default to ensure
|
||||||
|
# system administrators make the module available for use as needed.
|
||||||
|
# See https://access.redhat.com/articles/3760101 for more details.
|
||||||
|
#
|
||||||
|
# Remove the blacklist by adding a comment # at the start of the line.
|
||||||
|
blacklist $1
|
||||||
|
__EOF__
|
||||||
|
}
|
||||||
|
|
||||||
|
check_blacklist()
|
||||||
|
{
|
||||||
|
mod=$(find "$RpmDir/$ModDir" -name "$1")
|
||||||
|
[ ! "$mod" ] && return 0
|
||||||
|
if modinfo "$mod" | grep -q '^alias:\s\+net-'; then
|
||||||
|
mod="${1##*/}"
|
||||||
|
mod="${mod%.ko*}"
|
||||||
|
echo "$mod has an alias that allows auto-loading. Blacklisting."
|
||||||
|
blacklist "$mod"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
find_depends()
|
||||||
|
{
|
||||||
|
dep=$1
|
||||||
|
depends=$(modinfo "$dep" | sed -n -e "/^depends/ s/^depends:[ \t]*//p")
|
||||||
|
[ -z "$depends" ] && exit
|
||||||
|
for mod in ${depends//,/ }
|
||||||
|
do
|
||||||
|
match=$(grep "^$mod.ko" "$ListName")
|
||||||
|
[ -z "$match" ] && continue
|
||||||
|
# check if the module we are looking at is in mod-* too.
|
||||||
|
# if so we do not need to mark the dep as required.
|
||||||
|
mod2=${dep##*/} # same as $(basename $dep), but faster
|
||||||
|
match2=$(grep "^$mod2" "$ListName")
|
||||||
|
if [ -n "$match2" ]
|
||||||
|
then
|
||||||
|
#echo $mod2 >> notreq.list
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo "$mod".ko >> req.list
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
foreachp()
|
||||||
|
{
|
||||||
|
P=$(nproc)
|
||||||
|
bgcount=0
|
||||||
|
while read -r mod; do
|
||||||
|
$1 "$mod" &
|
||||||
|
|
||||||
|
bgcount=$((bgcount + 1))
|
||||||
|
if [ $bgcount -eq "$P" ]; then
|
||||||
|
wait -n
|
||||||
|
bgcount=$((bgcount - 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
wait
|
||||||
|
}
|
||||||
|
|
||||||
|
# Destination was specified on the command line
|
||||||
|
test -n "$4" && echo "$0: Override Destination $Dest has been specified."
|
||||||
|
|
||||||
|
pushd "$Dir"
|
||||||
|
|
||||||
|
OverrideDir=$(basename "$List")
|
||||||
|
OverrideDir=${OverrideDir%.*}
|
||||||
|
OverrideDir=${OverrideDir#*-}
|
||||||
|
mkdir -p "$OverrideDir"
|
||||||
|
|
||||||
|
rm -rf modnames
|
||||||
|
find . -name "*.ko" -type f > modnames
|
||||||
|
# Look through all of the modules, and throw any that have a dependency in
|
||||||
|
# our list into the list as well.
|
||||||
|
rm -rf dep.list dep2.list
|
||||||
|
rm -rf req.list req2.list
|
||||||
|
touch dep.list req.list
|
||||||
|
cp "$List" .
|
||||||
|
|
||||||
|
# This variable needs to be exported because it is used in sub-script
|
||||||
|
# executed by xargs
|
||||||
|
ListName=$(basename "$List")
|
||||||
|
export ListName
|
||||||
|
|
||||||
|
foreachp find_depends < modnames
|
||||||
|
|
||||||
|
sort -u req.list > req2.list
|
||||||
|
sort -u "$ListName" > modules2.list
|
||||||
|
join -v 1 modules2.list req2.list > modules3.list
|
||||||
|
|
||||||
|
while IFS= read -r mod
|
||||||
|
do
|
||||||
|
# get the path for the module
|
||||||
|
modpath=$(grep /"$mod" modnames)
|
||||||
|
[ -z "$modpath" ] && continue
|
||||||
|
echo "$modpath" >> dep.list
|
||||||
|
done < modules3.list
|
||||||
|
|
||||||
|
sort -u dep.list > dep2.list
|
||||||
|
|
||||||
|
if [ -n "$Dest" ]; then
|
||||||
|
# now move the modules into the $Dest directory
|
||||||
|
while IFS= read -r mod
|
||||||
|
do
|
||||||
|
newpath=$(dirname "$mod" | sed -e "s/kernel\\//$Dest\//")
|
||||||
|
mkdir -p "$newpath"
|
||||||
|
mv "$mod" "$newpath"
|
||||||
|
echo "$mod" | sed -e "s/kernel\\//$Dest\//" | sed -e "s|^.|${ModDir}|g" >> "$RpmDir"/"$ListName"
|
||||||
|
done < dep2.list
|
||||||
|
fi
|
||||||
|
|
||||||
|
popd
|
||||||
|
|
||||||
|
# If we're signing modules, we can't leave the .mod files for the .ko files
|
||||||
|
# we've moved in .tmp_versions/. Remove them so the Kbuild 'modules_sign'
|
||||||
|
# target doesn't try to sign a non-existent file. This is kinda ugly, but
|
||||||
|
# so are the modules-* packages.
|
||||||
|
|
||||||
|
while IFS= read -r mod
|
||||||
|
do
|
||||||
|
modfile=$(basename "$mod" | sed -e 's/.ko/.mod/')
|
||||||
|
rm .tmp_versions/"$modfile"
|
||||||
|
done < "$Dir"/dep2.list
|
||||||
|
|
||||||
|
if [ -z "$Dest" ]; then
|
||||||
|
sed -e "s|^.|${ModDir}|g" "$Dir"/dep2.list > "$RpmDir/$ListName"
|
||||||
|
echo "./$RpmDir/$ListName created."
|
||||||
|
[ -d "$RpmDir/etc/modprobe.d/" ] || mkdir -p "$RpmDir/etc/modprobe.d/"
|
||||||
|
foreachp check_blacklist < "$List"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Many BIOS-es export a PNP-id which causes the floppy driver to autoload
|
||||||
|
# even though most modern systems don't have a 3.5" floppy driver anymore
|
||||||
|
# this replaces the old die_floppy_die.patch which removed the PNP-id from
|
||||||
|
# the module
|
||||||
|
|
||||||
|
floppylist=("$RpmDir"/"$ModDir"/kernel/drivers/block/floppy.ko*)
|
||||||
|
if [[ -n ${floppylist[0]} && -f ${floppylist[0]} ]]; then
|
||||||
|
blacklist "floppy"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# avoid an empty kernel-extra package
|
||||||
|
echo "$ModDir/$OverrideDir" >> "$RpmDir/$ListName"
|
||||||
|
|
||||||
|
pushd "$Dir"
|
||||||
|
rm modnames dep.list dep2.list req.list req2.list
|
||||||
|
rm "$ListName" modules2.list modules3.list
|
||||||
|
popd
|
@ -0,0 +1,193 @@
|
|||||||
|
6pack.ko
|
||||||
|
a3d.ko
|
||||||
|
act200l-sir.ko
|
||||||
|
actisys-sir.ko
|
||||||
|
adi.ko
|
||||||
|
aer_inject.ko
|
||||||
|
af_802154.ko
|
||||||
|
affs.ko
|
||||||
|
ali-ircc.ko
|
||||||
|
analog.ko
|
||||||
|
appletalk.ko
|
||||||
|
atm.ko
|
||||||
|
avma1_cs.ko
|
||||||
|
avm_cs.ko
|
||||||
|
avmfritz.ko
|
||||||
|
ax25.ko
|
||||||
|
b1.ko
|
||||||
|
bas_gigaset.ko
|
||||||
|
batman-adv.ko
|
||||||
|
baycom_par.ko
|
||||||
|
baycom_ser_fdx.ko
|
||||||
|
baycom_ser_hdx.ko
|
||||||
|
befs.ko
|
||||||
|
bpqether.ko
|
||||||
|
br2684.ko
|
||||||
|
capi.ko
|
||||||
|
c_can.ko
|
||||||
|
c_can_platform.ko
|
||||||
|
clip.ko
|
||||||
|
cobra.ko
|
||||||
|
coda.ko
|
||||||
|
cuse.ko
|
||||||
|
db9.ko
|
||||||
|
dccp_diag.ko
|
||||||
|
dccp_ipv4.ko
|
||||||
|
dccp_ipv6.ko
|
||||||
|
dccp.ko
|
||||||
|
dccp_probe.ko
|
||||||
|
diva_idi.ko
|
||||||
|
divas.ko
|
||||||
|
ds1wm.ko
|
||||||
|
ds2482.ko
|
||||||
|
ds2490.ko
|
||||||
|
dss1_divert.ko
|
||||||
|
elsa_cs.ko
|
||||||
|
ems_pci.ko
|
||||||
|
ems_usb.ko
|
||||||
|
esd_usb2.ko
|
||||||
|
esi-sir.ko
|
||||||
|
gamecon.ko
|
||||||
|
gf2k.ko
|
||||||
|
gigaset.ko
|
||||||
|
girbil-sir.ko
|
||||||
|
grip.ko
|
||||||
|
grip_mp.ko
|
||||||
|
guillemot.ko
|
||||||
|
hdlcdrv.ko
|
||||||
|
hfc4s8s_l1.ko
|
||||||
|
hfcmulti.ko
|
||||||
|
hfcpci.ko
|
||||||
|
hisax.ko
|
||||||
|
hwa-rc.ko
|
||||||
|
hysdn.ko
|
||||||
|
i2400m.ko
|
||||||
|
i2400m-sdio.ko
|
||||||
|
i2400m-usb.ko
|
||||||
|
ieee802154.ko
|
||||||
|
iforce.ko
|
||||||
|
interact.ko
|
||||||
|
ipddp.ko
|
||||||
|
ipx.ko
|
||||||
|
isdn.ko
|
||||||
|
joydump.ko
|
||||||
|
kingsun-sir.ko
|
||||||
|
ks959-sir.ko
|
||||||
|
ksdazzle-sir.ko
|
||||||
|
kvaser_pci.ko
|
||||||
|
l2tp_core.ko
|
||||||
|
l2tp_debugfs.ko
|
||||||
|
l2tp_eth.ko
|
||||||
|
l2tp_ip.ko
|
||||||
|
l2tp_ip6.ko
|
||||||
|
l2tp_netlink.ko
|
||||||
|
l2tp_ppp.ko
|
||||||
|
lec.ko
|
||||||
|
ma600-sir.ko
|
||||||
|
magellan.ko
|
||||||
|
mcp2120-sir.ko
|
||||||
|
mISDN_core.ko
|
||||||
|
mISDN_dsp.ko
|
||||||
|
mkiss.ko
|
||||||
|
mptbase.ko
|
||||||
|
mptctl.ko
|
||||||
|
mptfc.ko
|
||||||
|
nci.ko
|
||||||
|
ncpfs.ko
|
||||||
|
netjet.ko
|
||||||
|
netrom.ko
|
||||||
|
nfc.ko
|
||||||
|
nilfs2.ko
|
||||||
|
ocfs2_dlmfs.ko
|
||||||
|
ocfs2_dlm.ko
|
||||||
|
ocfs2.ko
|
||||||
|
ocfs2_nodemanager.ko
|
||||||
|
ocfs2_stackglue.ko
|
||||||
|
ocfs2_stack_o2cb.ko
|
||||||
|
ocfs2_stack_user.ko
|
||||||
|
old_belkin-sir.ko
|
||||||
|
orinoco_cs.ko
|
||||||
|
orinoco.ko
|
||||||
|
orinoco_nortel.ko
|
||||||
|
orinoco_pci.ko
|
||||||
|
orinoco_plx.ko
|
||||||
|
orinoco_usb.ko
|
||||||
|
plx_pci.ko
|
||||||
|
pn_pep.ko
|
||||||
|
pppoatm.ko
|
||||||
|
rds.ko
|
||||||
|
rds_rdma.ko
|
||||||
|
rds_tcp.ko
|
||||||
|
rose.ko
|
||||||
|
sch_atm.ko
|
||||||
|
sch_cbq.ko
|
||||||
|
sch_choke.ko
|
||||||
|
sch_drr.ko
|
||||||
|
sch_dsmark.ko
|
||||||
|
sch_gred.ko
|
||||||
|
sch_mqprio.ko
|
||||||
|
sch_multiq.ko
|
||||||
|
sch_netem.ko
|
||||||
|
sch_qfq.ko
|
||||||
|
sch_red.ko
|
||||||
|
sch_sfb.ko
|
||||||
|
sch_teql.ko
|
||||||
|
sctp.ko
|
||||||
|
sctp_diag.ko
|
||||||
|
sctp_probe.ko
|
||||||
|
sidewinder.ko
|
||||||
|
sja1000.ko
|
||||||
|
sja1000_platform.ko
|
||||||
|
slcan.ko
|
||||||
|
slip.ko
|
||||||
|
softing_cs.ko
|
||||||
|
softing.ko
|
||||||
|
spaceball.ko
|
||||||
|
spaceorb.ko
|
||||||
|
stinger.ko
|
||||||
|
sysv.ko
|
||||||
|
tcp_bic.ko
|
||||||
|
tcp_highspeed.ko
|
||||||
|
tcp_htcp.ko
|
||||||
|
tcp_hybla.ko
|
||||||
|
tcp_illinois.ko
|
||||||
|
tcp_lp.ko
|
||||||
|
tcp_scalable.ko
|
||||||
|
tcp_vegas.ko
|
||||||
|
tcp_veno.ko
|
||||||
|
tcp_westwood.ko
|
||||||
|
tcp_yeah.ko
|
||||||
|
tekram-sir.ko
|
||||||
|
test_lockup.ko
|
||||||
|
tmdc.ko
|
||||||
|
toim3232-sir.ko
|
||||||
|
trancevibrator.ko
|
||||||
|
turbografx.ko
|
||||||
|
twidjoy.ko
|
||||||
|
ubifs.ko
|
||||||
|
ufs.ko
|
||||||
|
umc.ko
|
||||||
|
usbip-core.ko
|
||||||
|
usbip-host.ko
|
||||||
|
uwb.ko
|
||||||
|
vcan.ko
|
||||||
|
vhci-hcd.ko
|
||||||
|
w1_bq27000.ko
|
||||||
|
w1_ds2408.ko
|
||||||
|
w1_ds2423.ko
|
||||||
|
w1_ds2431.ko
|
||||||
|
w1_ds2433.ko
|
||||||
|
w1_ds2760.ko
|
||||||
|
w1_ds2780.ko
|
||||||
|
w1_ds2781.ko
|
||||||
|
w1_ds28e04.ko
|
||||||
|
w1_smem.ko
|
||||||
|
w1_therm.ko
|
||||||
|
w6692.ko
|
||||||
|
walkera0701.ko
|
||||||
|
wanrouter.ko
|
||||||
|
warrior.ko
|
||||||
|
whci.ko
|
||||||
|
wire.ko
|
||||||
|
yam.ko
|
||||||
|
zhenhua.ko
|
@ -0,0 +1,97 @@
|
|||||||
|
dmatest
|
||||||
|
kunit
|
||||||
|
kunit-test
|
||||||
|
ext4-inode-test
|
||||||
|
list-test
|
||||||
|
sysctl-test
|
||||||
|
mptcp_crypto_test
|
||||||
|
mptcp_token_test
|
||||||
|
bitfield_kunit
|
||||||
|
cmdline_kunit
|
||||||
|
property-entry-test
|
||||||
|
qos-test
|
||||||
|
resource_kunit
|
||||||
|
soc-topology-test
|
||||||
|
soc-utils-test
|
||||||
|
string-stream-test
|
||||||
|
test_linear_ranges
|
||||||
|
test_bits
|
||||||
|
kasan_test
|
||||||
|
time_test
|
||||||
|
fat_test
|
||||||
|
lib_test
|
||||||
|
rational-test
|
||||||
|
test_list_sort
|
||||||
|
slub_kunit
|
||||||
|
kfence_test
|
||||||
|
test_hash
|
||||||
|
locktorture
|
||||||
|
mac80211_hwsim
|
||||||
|
netdevsim
|
||||||
|
pktgen
|
||||||
|
rcutorture
|
||||||
|
rocker
|
||||||
|
scftorture
|
||||||
|
test_klp_atomic_replace
|
||||||
|
test_klp_callbacks_demo
|
||||||
|
test_klp_callbacks_demo2
|
||||||
|
test_klp_callbacks_busy
|
||||||
|
test_klp_callbacks_mod
|
||||||
|
test_klp_livepatch
|
||||||
|
test_klp_shadow_vars
|
||||||
|
test_klp_state
|
||||||
|
test_klp_state2
|
||||||
|
test_klp_state3
|
||||||
|
torture
|
||||||
|
refscale
|
||||||
|
rcuscale
|
||||||
|
memcpy_kunit
|
||||||
|
dev_addr_lists_test
|
||||||
|
test_bpf
|
||||||
|
stackinit_kunit
|
||||||
|
overflow_kunit
|
||||||
|
clk-gate_test
|
||||||
|
clk_test
|
||||||
|
mtty
|
||||||
|
test_hmm
|
||||||
|
test_vmalloc
|
||||||
|
test_sort
|
||||||
|
cpumask_kunit
|
||||||
|
iio-test-format
|
||||||
|
iio-test-rescale
|
||||||
|
cros_kunit
|
||||||
|
cpumask_kunit
|
||||||
|
drm_buddy_test
|
||||||
|
drm_cmdline_parser_test
|
||||||
|
drm_damage_helper_test
|
||||||
|
drm_dp_mst_helper_test
|
||||||
|
drm_format_helper_test
|
||||||
|
drm_format_test
|
||||||
|
drm_framebuffer_test
|
||||||
|
drm_gem_shmem_test
|
||||||
|
drm_kunit_helpers
|
||||||
|
drm_mm_test
|
||||||
|
drm_plane_helper_test
|
||||||
|
drm_rect_test
|
||||||
|
gss_krb5_test
|
||||||
|
drm_connector_test
|
||||||
|
drm_managed_test
|
||||||
|
drm_modes_test
|
||||||
|
drm_probe_helper_test
|
||||||
|
input_test
|
||||||
|
hashtable_test
|
||||||
|
hid-uclogic-test
|
||||||
|
strcat_kunit
|
||||||
|
strscpy_kunit
|
||||||
|
siphash_kunit
|
||||||
|
handshake-test
|
||||||
|
drm_exec_test
|
||||||
|
regmap-kunit
|
||||||
|
cfg80211-tests
|
||||||
|
mac80211-tests
|
||||||
|
wwan_hwsim
|
||||||
|
checksum_kunit
|
||||||
|
arm-smmu-v3-test
|
||||||
|
iwlwifi-tests
|
||||||
|
sound_kunit
|
||||||
|
amd-pstate-ut
|
@ -0,0 +1,5 @@
|
|||||||
|
kvm-amd
|
||||||
|
kvm-intel
|
||||||
|
kvm
|
||||||
|
kvmgt
|
||||||
|
ptp_kvm
|
@ -0,0 +1,3 @@
|
|||||||
|
afs
|
||||||
|
rxperf
|
||||||
|
rxrpc
|
@ -0,0 +1,37 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# The modules_sign target checks for corresponding .o files for every .ko that
|
||||||
|
# is signed. This doesn't work for package builds which re-use the same build
|
||||||
|
# directory for every variant, and the .config may change between variants.
|
||||||
|
# So instead of using this script to just sign lib/modules/$KernelVer/extra,
|
||||||
|
# sign all .ko in the buildroot.
|
||||||
|
|
||||||
|
# This essentially duplicates the 'modules_sign' Kbuild target and runs the
|
||||||
|
# same commands for those modules.
|
||||||
|
|
||||||
|
MODSECKEY=$1
|
||||||
|
MODPUBKEY=$2
|
||||||
|
moddir=$3
|
||||||
|
|
||||||
|
modules=$(find "$moddir" -type f -name '*.ko')
|
||||||
|
|
||||||
|
NPROC=$(nproc)
|
||||||
|
[ -z "$NPROC" ] && NPROC=1
|
||||||
|
|
||||||
|
# NB: this loop runs 2000+ iterations. Try to be fast.
|
||||||
|
echo "$modules" | xargs -r -n16 -P "$NPROC" sh -c "
|
||||||
|
for mod; do
|
||||||
|
./scripts/sign-file sha256 $MODSECKEY $MODPUBKEY \$mod
|
||||||
|
rm -f \$mod.sig \$mod.dig
|
||||||
|
done
|
||||||
|
" DUMMYARG0 # xargs appends ARG1 ARG2..., which go into $mod in for loop.
|
||||||
|
|
||||||
|
RANDOMMOD=$(echo "$modules" | sort -R | head -n 1)
|
||||||
|
if [ "~Module signature appended~" != "$(tail -c 28 "$RANDOMMOD")" ]; then
|
||||||
|
echo "*****************************"
|
||||||
|
echo "*** Modules are unsigned! ***"
|
||||||
|
echo "*****************************"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Reads filenames on stdin, xz-compresses each in place.
|
||||||
|
# Not optimal for "compress relatively few, large files" scenario!
|
||||||
|
|
||||||
|
# How many xz's to run in parallel:
|
||||||
|
procgroup=""
|
||||||
|
while test "$#" != 0; do
|
||||||
|
# Get it from -jNUM
|
||||||
|
N="${1#-j}"
|
||||||
|
if test "$N" = "$1"; then
|
||||||
|
# Not -j<something> - warn and ignore
|
||||||
|
echo "parallel_xz: warning: unrecognized argument: '$1'"
|
||||||
|
else
|
||||||
|
procgroup="$N"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# If told to use only one cpu:
|
||||||
|
test "$procgroup" || exec xargs -r xz
|
||||||
|
test "$procgroup" = 1 && exec xargs -r xz
|
||||||
|
|
||||||
|
# xz has some startup cost. If files are really small,
|
||||||
|
# this cost might be significant. To combat this,
|
||||||
|
# process several files (in sequence) by each xz process via -n 16:
|
||||||
|
exec xargs -r -n 16 -P "$procgroup" xz
|
@ -0,0 +1,5 @@
|
|||||||
|
# kgcov
|
||||||
|
CONFIG_GCOV_KERNEL=y
|
||||||
|
CONFIG_GCOV_PROFILE_ALL=y
|
||||||
|
# CONFIG_GCOV_PROFILE_FTRACE is not set
|
||||||
|
# CONFIG_OPEN_DICE is not set
|
@ -0,0 +1,406 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# This script takes the merged config files and processes them through oldconfig
|
||||||
|
# and listnewconfig
|
||||||
|
#
|
||||||
|
# Globally disable suggestion of appending '|| exit' or '|| return' to cd/pushd/popd commands
|
||||||
|
# shellcheck disable=SC2164
|
||||||
|
|
||||||
|
test -n "$RHTEST" && exit 0
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
# alphabetical order please
|
||||||
|
echo "process_configs.sh [ options ] package_name kernel_version"
|
||||||
|
echo " -a: report all errors, equivalent to [-c -n -w -i]"
|
||||||
|
echo " -c: error on mismatched config options"
|
||||||
|
echo " -i: continue on error"
|
||||||
|
echo " -n: error on unset config options"
|
||||||
|
echo " -t: test run, do not overwrite original config"
|
||||||
|
echo " -w: error on misconfigured config options"
|
||||||
|
echo " -z: commit new configs to pending directory"
|
||||||
|
echo ""
|
||||||
|
echo " A special CONFIG file tag, process_configs_known_broken can be added as a"
|
||||||
|
echo " comment to any CONFIG file. This tag indicates that there is no way to "
|
||||||
|
echo " fix a CONFIG's entry. This tag should only be used in extreme cases"
|
||||||
|
echo " and is not to be used as a workaround to solve CONFIG problems."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
die()
|
||||||
|
{
|
||||||
|
echo "$1"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
get_cross_compile()
|
||||||
|
{
|
||||||
|
arch=$1
|
||||||
|
if [[ "$CC_IS_CLANG" -eq 1 ]]; then
|
||||||
|
echo "$arch"
|
||||||
|
else
|
||||||
|
echo "scripts/dummy-tools/"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# stupid function to find top of tree to do kernel make configs
|
||||||
|
switch_to_toplevel()
|
||||||
|
{
|
||||||
|
path="$(pwd)"
|
||||||
|
while test -n "$path"
|
||||||
|
do
|
||||||
|
test -e "$path"/MAINTAINERS && \
|
||||||
|
test -d "$path"/drivers && \
|
||||||
|
break
|
||||||
|
|
||||||
|
path=$(dirname "$path")
|
||||||
|
done
|
||||||
|
|
||||||
|
test -n "$path" || die "Can't find toplevel"
|
||||||
|
echo "$path"
|
||||||
|
}
|
||||||
|
|
||||||
|
checkoptions()
|
||||||
|
{
|
||||||
|
count=$3
|
||||||
|
variant=$4
|
||||||
|
|
||||||
|
/usr/bin/awk '
|
||||||
|
|
||||||
|
/is not set/ {
|
||||||
|
split ($0, a, "#");
|
||||||
|
split(a[2], b);
|
||||||
|
if (NR==FNR) {
|
||||||
|
configs[b[1]]="is not set";
|
||||||
|
} else {
|
||||||
|
if (configs[b[1]] != "" && configs[b[1]] != "is not set")
|
||||||
|
print "Found # "b[1] " is not set, after generation, had " b[1] " " configs[b[1]] " in Source tree";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/=/ {
|
||||||
|
split ($0, a, "=");
|
||||||
|
if (NR==FNR) {
|
||||||
|
configs[a[1]]=a[2];
|
||||||
|
} else {
|
||||||
|
if (configs[a[1]] != "" && configs[a[1]] != a[2])
|
||||||
|
print "Found "a[1]"="a[2]" after generation, had " a[1]"="configs[a[1]]" in Source tree";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' "$1" "$2" > .mismatches"${count}"
|
||||||
|
|
||||||
|
checkoptions_error=false
|
||||||
|
if test -s .mismatches"${count}"
|
||||||
|
then
|
||||||
|
while read -r LINE
|
||||||
|
do
|
||||||
|
if find "${REDHAT}"/configs -name "$(echo "$LINE" | awk -F "=" ' { print $1 } ' | awk ' { print $2 }')" -print0 | xargs -0 grep ^ | grep -q "process_configs_known_broken"; then
|
||||||
|
# This is a known broken config.
|
||||||
|
# See script help warning.
|
||||||
|
checkoptions_error=false
|
||||||
|
else
|
||||||
|
checkoptions_error=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done < .mismatches"${count}"
|
||||||
|
|
||||||
|
! $checkoptions_error && return
|
||||||
|
|
||||||
|
sed -i "1s/^/Error: Mismatches found in configuration files for ${arch} ${variant}\n/" .mismatches"${count}"
|
||||||
|
else
|
||||||
|
rm -f .mismatches"${count}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
parsenewconfigs()
|
||||||
|
{
|
||||||
|
tmpdir=$(mktemp -d)
|
||||||
|
|
||||||
|
# This awk script reads the output of make listnewconfig
|
||||||
|
# and puts it into CONFIG_FOO files. Using the output of
|
||||||
|
# listnewconfig is much easier to ensure we get the default
|
||||||
|
# output.
|
||||||
|
/usr/bin/awk -v BASE="$tmpdir" '
|
||||||
|
/is not set/ {
|
||||||
|
split ($0, a, "#");
|
||||||
|
split(a[2], b);
|
||||||
|
OUT_FILE=BASE"/"b[1];
|
||||||
|
print $0 >> OUT_FILE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/=/ {
|
||||||
|
split ($0, a, "=");
|
||||||
|
OUT_FILE=BASE"/"a[1];
|
||||||
|
if (a[2] == "n")
|
||||||
|
print "# " a[1] " is not set" >> OUT_FILE;
|
||||||
|
else
|
||||||
|
print $0 >> OUT_FILE;
|
||||||
|
}
|
||||||
|
|
||||||
|
' .newoptions
|
||||||
|
|
||||||
|
# This awk script parses the output of helpnewconfig.
|
||||||
|
# Each option is separated between ----- markers
|
||||||
|
# The goal is to put all the help text as a comment in
|
||||||
|
# each CONFIG_FOO file. Because of how awk works
|
||||||
|
# there's a lot of moving files around and catting to
|
||||||
|
# get what we need.
|
||||||
|
/usr/bin/awk -v BASE="$tmpdir" '
|
||||||
|
BEGIN { inpatch=0;
|
||||||
|
outfile="none";
|
||||||
|
symbol="none"; }
|
||||||
|
/^Symbol: .*$/ {
|
||||||
|
split($0, a, " ");
|
||||||
|
symbol="CONFIG_"a[2];
|
||||||
|
outfile=BASE "/fake_"symbol
|
||||||
|
}
|
||||||
|
/-----/ {
|
||||||
|
if (inpatch == 0) {
|
||||||
|
inpatch = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (symbol != "none") {
|
||||||
|
system("cat " outfile " " BASE "/" symbol " > " BASE "/tmpf");
|
||||||
|
system("mv " BASE "/tmpf " BASE "/" symbol);
|
||||||
|
symbol="none"
|
||||||
|
}
|
||||||
|
outfile="none"
|
||||||
|
inpatch = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
!/-----/ {
|
||||||
|
if (inpatch == 1 && outfile != "none") {
|
||||||
|
print "# "$0 >> outfile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
' .helpnewconfig
|
||||||
|
|
||||||
|
pushd "$tmpdir" &> /dev/null
|
||||||
|
rm fake_*
|
||||||
|
popd &> /dev/null
|
||||||
|
for f in "$tmpdir"/*; do
|
||||||
|
[[ -e "$f" ]] || break
|
||||||
|
cp "$f" "$SCRIPT_DIR/pending$FLAVOR/generic/"
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -rf "$tmpdir"
|
||||||
|
}
|
||||||
|
|
||||||
|
function commit_new_configs()
|
||||||
|
{
|
||||||
|
# assume we are in $source_tree/configs, need to get to top level
|
||||||
|
pushd "$(switch_to_toplevel)" &>/dev/null
|
||||||
|
|
||||||
|
for cfg in "$SCRIPT_DIR/${PACKAGE_NAME}${KVERREL}"*.config
|
||||||
|
do
|
||||||
|
arch=$(head -1 "$cfg" | cut -b 3-)
|
||||||
|
cfgtmp="${cfg}.tmp"
|
||||||
|
cfgorig="${cfg}.orig"
|
||||||
|
cat "$cfg" > "$cfgorig"
|
||||||
|
|
||||||
|
if [ "$arch" = "EMPTY" ]
|
||||||
|
then
|
||||||
|
# This arch is intentionally left blank
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo -n "Checking for new configs in $cfg ... "
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
make ${MAKEOPTS} ARCH="$arch" CROSS_COMPILE="$(get_cross_compile "$arch")" KCONFIG_CONFIG="$cfgorig" listnewconfig >& .listnewconfig
|
||||||
|
grep -E 'CONFIG_' .listnewconfig > .newoptions
|
||||||
|
if test -s .newoptions
|
||||||
|
then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
make ${MAKEOPTS} ARCH="$arch" CROSS_COMPILE="$(get_cross_compile "$arch")" KCONFIG_CONFIG="$cfgorig" helpnewconfig >& .helpnewconfig
|
||||||
|
parsenewconfigs
|
||||||
|
fi
|
||||||
|
rm .newoptions
|
||||||
|
echo "done"
|
||||||
|
done
|
||||||
|
|
||||||
|
git add "$SCRIPT_DIR/pending$FLAVOR"
|
||||||
|
git commit -m "[redhat] AUTOMATIC: New configs"
|
||||||
|
}
|
||||||
|
|
||||||
|
function process_config()
|
||||||
|
{
|
||||||
|
local cfg
|
||||||
|
local arch
|
||||||
|
local cfgtmp
|
||||||
|
local cfgorig
|
||||||
|
local count
|
||||||
|
local variant
|
||||||
|
|
||||||
|
cfg=$1
|
||||||
|
count=$2
|
||||||
|
|
||||||
|
arch=$(head -1 "$cfg" | cut -b 3-)
|
||||||
|
|
||||||
|
if [ "$arch" = "EMPTY" ]
|
||||||
|
then
|
||||||
|
# This arch is intentionally left blank
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
variant=$(basename "$cfg" | cut -d"-" -f3- | cut -d"." -f1)
|
||||||
|
|
||||||
|
cfgtmp="${cfg}.tmp"
|
||||||
|
cfgorig="${cfg}.orig"
|
||||||
|
cat "$cfg" > "$cfgorig"
|
||||||
|
|
||||||
|
echo "Processing $cfg ... "
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
make ${MAKEOPTS} ARCH="$arch" CROSS_COMPILE="$(get_cross_compile "$arch")" KCONFIG_CONFIG="$cfgorig" listnewconfig >& .listnewconfig"${count}"
|
||||||
|
grep -E 'CONFIG_' .listnewconfig"${count}" > .newoptions"${count}"
|
||||||
|
if test -n "$NEWOPTIONS" && test -s .newoptions"${count}"
|
||||||
|
then
|
||||||
|
echo "Found unset config items in ${arch} ${variant}, please set them to an appropriate value" >> .errors"${count}"
|
||||||
|
cat .newoptions"${count}" >> .errors"${count}"
|
||||||
|
rm .newoptions"${count}"
|
||||||
|
RETURNCODE=1
|
||||||
|
fi
|
||||||
|
rm -f .newoptions"${count}"
|
||||||
|
|
||||||
|
grep -E 'config.*warning' .listnewconfig"${count}" > .warnings"${count}"
|
||||||
|
if test -n "$CHECKWARNINGS" && test -s .warnings"${count}"
|
||||||
|
then
|
||||||
|
echo "Found misconfigured config items in ${arch} ${variant}, please set them to an appropriate value" >> .errors"${count}"
|
||||||
|
cat .warnings"${count}" >> .errors"${count}"
|
||||||
|
fi
|
||||||
|
rm .warnings"${count}"
|
||||||
|
|
||||||
|
rm .listnewconfig"${count}"
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
make ${MAKEOPTS} ARCH="$arch" CROSS_COMPILE="$(get_cross_compile "$arch")" KCONFIG_CONFIG="$cfgorig" olddefconfig > /dev/null || exit 1
|
||||||
|
echo "# $arch" > "$cfgtmp"
|
||||||
|
cat "$cfgorig" >> "$cfgtmp"
|
||||||
|
if test -n "$CHECKOPTIONS"
|
||||||
|
then
|
||||||
|
checkoptions "$cfg" "$cfgtmp" "$count" "$variant"
|
||||||
|
fi
|
||||||
|
# if test run, don't overwrite original
|
||||||
|
if test -n "$TESTRUN"
|
||||||
|
then
|
||||||
|
rm -f "$cfgtmp"
|
||||||
|
else
|
||||||
|
mv "$cfgtmp" "$cfg"
|
||||||
|
fi
|
||||||
|
rm -f "$cfgorig"
|
||||||
|
echo "Processing $cfg complete"
|
||||||
|
}
|
||||||
|
|
||||||
|
function process_configs()
|
||||||
|
{
|
||||||
|
# assume we are in $source_tree/configs, need to get to top level
|
||||||
|
pushd "$(switch_to_toplevel)" &>/dev/null
|
||||||
|
|
||||||
|
# The next line is throwaway code for transition to parallel
|
||||||
|
# processing. Leaving this line in place is harmless, but it can be
|
||||||
|
# removed the next time anyone updates this function.
|
||||||
|
[ -f .mismatches ] && rm -f .mismatches
|
||||||
|
|
||||||
|
count=0
|
||||||
|
for cfg in "$SCRIPT_DIR/${PACKAGE_NAME}${KVERREL}"*.config
|
||||||
|
do
|
||||||
|
if [ "$count" -eq 0 ]; then
|
||||||
|
# do the first one by itself so that tools are built
|
||||||
|
process_config "$cfg" "$count"
|
||||||
|
fi
|
||||||
|
process_config "$cfg" "$count" &
|
||||||
|
# shellcheck disable=SC2004
|
||||||
|
waitpids[${count}]=$!
|
||||||
|
((count++))
|
||||||
|
while [ "$(jobs | grep -c Running)" -ge "$RHJOBS" ]; do :; done
|
||||||
|
done
|
||||||
|
# shellcheck disable=SC2048
|
||||||
|
for pid in ${waitpids[*]}; do
|
||||||
|
wait "${pid}"
|
||||||
|
done
|
||||||
|
|
||||||
|
rm "$SCRIPT_DIR"/*.config*.old
|
||||||
|
|
||||||
|
if ls .errors* 1> /dev/null 2>&1; then
|
||||||
|
RETURNCODE=1
|
||||||
|
cat .errors*
|
||||||
|
rm .errors* -f
|
||||||
|
fi
|
||||||
|
if ls .mismatches* 1> /dev/null 2>&1; then
|
||||||
|
RETURNCODE=1
|
||||||
|
cat .mismatches*
|
||||||
|
rm .mismatches* -f
|
||||||
|
fi
|
||||||
|
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
[ $RETURNCODE -eq 0 ] && echo "Processed config files are in $SCRIPT_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECKOPTIONS=""
|
||||||
|
NEWOPTIONS=""
|
||||||
|
TESTRUN=""
|
||||||
|
CHECKWARNINGS=""
|
||||||
|
MAKEOPTS=""
|
||||||
|
CC_IS_CLANG=0
|
||||||
|
|
||||||
|
RETURNCODE=0
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]
|
||||||
|
do
|
||||||
|
key="$1"
|
||||||
|
case $key in
|
||||||
|
-a)
|
||||||
|
CHECKOPTIONS="x"
|
||||||
|
NEWOPTIONS="x"
|
||||||
|
CHECKWARNINGS="x"
|
||||||
|
;;
|
||||||
|
-c)
|
||||||
|
CHECKOPTIONS="x"
|
||||||
|
;;
|
||||||
|
-h)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
-n)
|
||||||
|
NEWOPTIONS="x"
|
||||||
|
;;
|
||||||
|
-t)
|
||||||
|
TESTRUN="x"
|
||||||
|
;;
|
||||||
|
-w)
|
||||||
|
CHECKWARNINGS="x"
|
||||||
|
;;
|
||||||
|
-z)
|
||||||
|
COMMITNEWCONFIGS="x"
|
||||||
|
;;
|
||||||
|
-m)
|
||||||
|
shift
|
||||||
|
if [ "$1" = "CC=clang" ] || [ "$1" = "LLVM=1" ]; then
|
||||||
|
CC_IS_CLANG=1
|
||||||
|
fi
|
||||||
|
MAKEOPTS="$MAKEOPTS $1"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
break;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
KVERREL="$(test -n "$1" && echo "-$1" || echo "")"
|
||||||
|
FLAVOR="$(test -n "$2" && echo "-$2" || echo "-rhel")"
|
||||||
|
# shellcheck disable=SC2015
|
||||||
|
SCRIPT=$(readlink -f "$0")
|
||||||
|
SCRIPT_DIR=$(dirname "$SCRIPT")
|
||||||
|
|
||||||
|
# to handle this script being a symlink
|
||||||
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
|
if test -n "$COMMITNEWCONFIGS"; then
|
||||||
|
commit_new_configs
|
||||||
|
else
|
||||||
|
process_configs
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit $RETURNCODE
|
@ -0,0 +1,48 @@
|
|||||||
|
# additional rpminspect configuration for this branch
|
||||||
|
|
||||||
|
---
|
||||||
|
inspections:
|
||||||
|
abidiff: off
|
||||||
|
kmidiff: off
|
||||||
|
upstream: off
|
||||||
|
subpackages: off
|
||||||
|
license: off
|
||||||
|
debuginfo: off
|
||||||
|
removedfiles: off
|
||||||
|
|
||||||
|
badfuncs:
|
||||||
|
ignore:
|
||||||
|
- /usr/libexec/ksamples/*
|
||||||
|
- /usr/libexec/kselftests/*
|
||||||
|
|
||||||
|
emptyrpm:
|
||||||
|
expected_empty:
|
||||||
|
- kernel
|
||||||
|
- kernel-debug
|
||||||
|
- kernel-debug-devel-matched
|
||||||
|
- kernel-devel-matched
|
||||||
|
- kernel-lpae
|
||||||
|
- kernel-zfcpdump
|
||||||
|
- kernel-zfcpdump-devel-matched
|
||||||
|
- kernel-zfcpdump-modules
|
||||||
|
|
||||||
|
patches:
|
||||||
|
ignore_list:
|
||||||
|
- linux-kernel-test.patch
|
||||||
|
- patch-5.14-redhat.patch
|
||||||
|
- patch-%{patchversion}-redhat.patch
|
||||||
|
|
||||||
|
runpath:
|
||||||
|
ignore:
|
||||||
|
- /usr/libexec/kselftests/bpf/urandom_read
|
||||||
|
- /usr/libexec/kselftests/bpf/no_alu32/urandom_read
|
||||||
|
|
||||||
|
debuginfo:
|
||||||
|
ignore:
|
||||||
|
- /usr/libexec/kselftests/bpf/*
|
||||||
|
- /usr/lib/debug/usr/libexec/perf-core/tests/shell/coresight/*
|
||||||
|
|
||||||
|
elf:
|
||||||
|
ignore:
|
||||||
|
- /usr/libexec/perf-core/tests/shell/coresight/*
|
||||||
|
- /usr/lib/debug/usr/libexec/perf-core/tests/shell/coresight/*
|
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"virt": {
|
||||||
|
"common": {
|
||||||
|
"fips-enable.addon": [
|
||||||
|
"fips=1\n"
|
||||||
|
],
|
||||||
|
"fips-disable.addon": [
|
||||||
|
"fips=0\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,151 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# This script inspects a given json proving a list of addons, and
|
||||||
|
# creates an addon for each key/value pair matching the given uki, distro and
|
||||||
|
# arch provided in input.
|
||||||
|
#
|
||||||
|
# Usage: python uki_create_addons.py input_json out_dir uki distro arch
|
||||||
|
#
|
||||||
|
# This tool requires the systemd-ukify and systemd-boot packages.
|
||||||
|
#
|
||||||
|
# Addon file
|
||||||
|
#-----------
|
||||||
|
# Each addon terminates with .addon
|
||||||
|
# Each addon contains only two types of lines:
|
||||||
|
# Lines beginning with '#' are description and thus ignored
|
||||||
|
# All other lines are command line to be added.
|
||||||
|
# The name of the end resulting addon is taken from the json hierarchy.
|
||||||
|
# For example, and addon in json['virt']['rhel']['x86_64']['hello.addon'] will
|
||||||
|
# result in an UKI addon file generated in out_dir called
|
||||||
|
# hello-virt.rhel.x86_64.addon.efi
|
||||||
|
#
|
||||||
|
# The common key, present in any sub-dict in the provided json (except the leaf dict)
|
||||||
|
# is used as place for default addons when the same addon is not defined deep
|
||||||
|
# in the hierarchy. For example, if we define test.addon (text: 'test1\n') in
|
||||||
|
# json['common']['test.addon'] = ['test1\n'] and another test.addon (text: test2) in
|
||||||
|
# json['virt']['common']['test.addon'] = ['test2'], any other uki except virt
|
||||||
|
# will have a test.addon.efi with text "test1", and virt will have a
|
||||||
|
# test.addon.efi with "test2"
|
||||||
|
#
|
||||||
|
# sbat.conf
|
||||||
|
#----------
|
||||||
|
# This dict is containing the sbat string for *all* addons being created.
|
||||||
|
# This dict is optional, but when used has to be put in a sub-dict with
|
||||||
|
# { 'sbat' : { 'sbat.conf' : ['your text here'] }}
|
||||||
|
# It follows the same syntax as the addon files, meaning '#' is comment and
|
||||||
|
# the rest is taken as sbat string and feed to ukify.
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import collections
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
|
UKIFY_PATH = '/usr/lib/systemd/ukify'
|
||||||
|
|
||||||
|
def usage(err):
|
||||||
|
print(f'Usage: {os.path.basename(__file__)} input_json output_dir uki distro arch')
|
||||||
|
print(f'Error:{err}')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def check_clean_arguments(input_json, out_dir):
|
||||||
|
# Remove end '/'
|
||||||
|
if out_dir[-1:] == '/':
|
||||||
|
out_dir = out_dir[:-1]
|
||||||
|
if not os.path.isfile(input_json):
|
||||||
|
usage(f'input_json {input_json} is not a file, or does not exist!')
|
||||||
|
if not os.path.isdir(out_dir):
|
||||||
|
usage(f'out_dir_dir {out_dir} is not a dir, or does not exist!')
|
||||||
|
return out_dir
|
||||||
|
|
||||||
|
UKICmdlineAddon = collections.namedtuple('UKICmdlineAddon', ['name', 'cmdline'])
|
||||||
|
uki_addons_list = []
|
||||||
|
uki_addons = {}
|
||||||
|
addon_sbat_string = None
|
||||||
|
|
||||||
|
def parse_lines(lines, rstrip=True):
|
||||||
|
cmdline = ''
|
||||||
|
for l in lines:
|
||||||
|
l = l.lstrip()
|
||||||
|
if not l:
|
||||||
|
continue
|
||||||
|
if l[0] == '#':
|
||||||
|
continue
|
||||||
|
# rstrip is used only for addons cmdline, not sbat.conf, as it replaces
|
||||||
|
# return lines with spaces.
|
||||||
|
if rstrip:
|
||||||
|
l = l.rstrip() + ' '
|
||||||
|
cmdline += l
|
||||||
|
if cmdline == '':
|
||||||
|
return ''
|
||||||
|
return cmdline
|
||||||
|
|
||||||
|
def parse_all_addons(in_obj):
|
||||||
|
global addon_sbat_string
|
||||||
|
|
||||||
|
for el in in_obj.keys():
|
||||||
|
# addon found: copy it in our global dict uki_addons
|
||||||
|
if el.endswith('.addon'):
|
||||||
|
uki_addons[el] = in_obj[el]
|
||||||
|
|
||||||
|
if 'sbat' in in_obj and 'sbat.conf' in in_obj['sbat']:
|
||||||
|
# sbat.conf found: override sbat with the most specific one found
|
||||||
|
addon_sbat_string = parse_lines(in_obj['sbat']['sbat.conf'], rstrip=False)
|
||||||
|
|
||||||
|
def recursively_find_addons(in_obj, folder_list):
|
||||||
|
# end of recursion, leaf directory. Search all addons here
|
||||||
|
if len(folder_list) == 0:
|
||||||
|
parse_all_addons(in_obj)
|
||||||
|
return
|
||||||
|
|
||||||
|
# first, check for common folder
|
||||||
|
if 'common' in in_obj:
|
||||||
|
parse_all_addons(in_obj['common'])
|
||||||
|
|
||||||
|
# second, check if there is a match with the searched folder
|
||||||
|
if folder_list[0] in in_obj:
|
||||||
|
folder_next = in_obj[folder_list[0]]
|
||||||
|
folder_list = folder_list[1:]
|
||||||
|
recursively_find_addons(folder_next, folder_list)
|
||||||
|
|
||||||
|
def parse_in_json(in_json, uki_name, distro, arch):
|
||||||
|
with open(in_json, 'r') as f:
|
||||||
|
in_obj = json.load(f)
|
||||||
|
recursively_find_addons(in_obj, [uki_name, distro, arch])
|
||||||
|
|
||||||
|
for addon_name, cmdline in uki_addons.items():
|
||||||
|
addon_name = addon_name.replace(".addon","")
|
||||||
|
addon_full_name = f'{addon_name}-{uki_name}.{distro}.{arch}.addon.efi'
|
||||||
|
cmdline = parse_lines(cmdline).rstrip()
|
||||||
|
if cmdline:
|
||||||
|
uki_addons_list.append(UKICmdlineAddon(addon_full_name, cmdline))
|
||||||
|
|
||||||
|
def create_addons(out_dir):
|
||||||
|
for uki_addon in uki_addons_list:
|
||||||
|
out_path = os.path.join(out_dir, uki_addon.name)
|
||||||
|
cmd = [
|
||||||
|
f'{UKIFY_PATH}', 'build',
|
||||||
|
f'--cmdline="{uki_addon.cmdline}"',
|
||||||
|
f'--output={out_path}']
|
||||||
|
if addon_sbat_string:
|
||||||
|
cmd.append('--sbat="' + addon_sbat_string.rstrip() +'"')
|
||||||
|
|
||||||
|
subprocess.check_call(cmd, text=True)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
argc = len(sys.argv) - 1
|
||||||
|
if argc != 5:
|
||||||
|
usage('too few or too many parameters!')
|
||||||
|
|
||||||
|
input_json = sys.argv[1]
|
||||||
|
out_dir = sys.argv[2]
|
||||||
|
uki_name = sys.argv[3]
|
||||||
|
distro = sys.argv[4]
|
||||||
|
arch = sys.argv[5]
|
||||||
|
|
||||||
|
out_dir = check_clean_arguments(input_json, out_dir)
|
||||||
|
parse_in_json(input_json, uki_name, distro, arch)
|
||||||
|
create_addons(out_dir)
|
||||||
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
TARGET="$1"
|
||||||
|
|
||||||
|
for i in "$RPM_SOURCE_DIR"/*."$TARGET"; do
|
||||||
|
NEW=${i%."$TARGET"}
|
||||||
|
cp "$i" "$(basename "$NEW")"
|
||||||
|
done
|
@ -0,0 +1,16 @@
|
|||||||
|
[ req ]
|
||||||
|
default_bits = 3072
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
prompt = no
|
||||||
|
x509_extensions = myexts
|
||||||
|
|
||||||
|
[ req_distinguished_name ]
|
||||||
|
O = NCSD LLC
|
||||||
|
CN = MSVSphere kernel signing key
|
||||||
|
emailAddress = security@msvsphere.ru
|
||||||
|
|
||||||
|
[ myexts ]
|
||||||
|
basicConstraints=critical,CA:FALSE
|
||||||
|
keyUsage=digitalSignature
|
||||||
|
subjectKeyIdentifier=hash
|
||||||
|
authorityKeyIdentifier=keyid
|
@ -0,0 +1,16 @@
|
|||||||
|
[ req ]
|
||||||
|
default_bits = 3072
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
prompt = no
|
||||||
|
x509_extensions = myexts
|
||||||
|
|
||||||
|
[ req_distinguished_name ]
|
||||||
|
O = NCSD LLC
|
||||||
|
CN = MSVSphere kernel signing key
|
||||||
|
emailAddress = security@msvsphere.ru
|
||||||
|
|
||||||
|
[ myexts ]
|
||||||
|
basicConstraints=critical,CA:FALSE
|
||||||
|
keyUsage=digitalSignature
|
||||||
|
subjectKeyIdentifier=hash
|
||||||
|
authorityKeyIdentifier=keyid
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue