forked from rpms/kernel
		
	kernel-6.5.0-0.rc6.20230815git91aa6c412d7f.44
* Tue Aug 15 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.5.0-0.rc6.91aa6c412d7f.44.el130] - CI: rawhide_release: switch to using script to push (Don Zickus) - redhat/self-test: Update self-test data (Prarit Bhargava) - redhat/scripts/cross-compile: Update download_cross.sh (Prarit Bhargava) - redhat/Makefile.cross: Remove ARCH selection code (Prarit Bhargava) - redhat/Makefile.cross: Update script (Prarit Bhargava) - Fix interruptible non MR jobs (Michael Hofmann) - Linux v6.5.0-0.rc6.91aa6c412d7f Resolves: Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
		
							parent
							
								
									5c30685a34
								
							
						
					
					
						commit
						b9b372011a
					
				| @ -12,7 +12,7 @@ RHEL_MINOR = 99 | |||||||
| #
 | #
 | ||||||
| # Use this spot to avoid future merge conflicts.
 | # Use this spot to avoid future merge conflicts.
 | ||||||
| # Do not trim this comment.
 | # Do not trim this comment.
 | ||||||
| RHEL_RELEASE = 43 | RHEL_RELEASE = 44 | ||||||
| 
 | 
 | ||||||
| #
 | #
 | ||||||
| # RHEL_REBASE_NUM
 | # RHEL_REBASE_NUM
 | ||||||
|  | |||||||
| @ -1,3 +1,21 @@ | |||||||
|  | "https://gitlab.com/cki-project/kernel-ark/-/commit"/31a8a6b4003446a250fa9f7ee97de71720331c1f | ||||||
|  |  31a8a6b4003446a250fa9f7ee97de71720331c1f [redhat] kernel/rh_messages.c: move hardware tables to rh_messages.h | ||||||
|  | 
 | ||||||
|  | "https://gitlab.com/cki-project/kernel-ark/-/commit"/0f6fbe653a0a7943a1c36ee4f47395ea30b79c75 | ||||||
|  |  0f6fbe653a0a7943a1c36ee4f47395ea30b79c75 [redhat] kernel/rh_messages.c: Wire up new calls | ||||||
|  | 
 | ||||||
|  | "https://gitlab.com/cki-project/kernel-ark/-/commit"/b73e031eb85ee3e0755203421a1b6ad153216568 | ||||||
|  |  b73e031eb85ee3e0755203421a1b6ad153216568 [redhat] drivers/pci: Update rh_messages.c | ||||||
|  | 
 | ||||||
|  | "https://gitlab.com/cki-project/kernel-ark/-/commit"/edb8831394cd8eddf069a09842f464bfc8a957a7 | ||||||
|  |  edb8831394cd8eddf069a09842f464bfc8a957a7 [redhat] drivers/message/fusion/mptspi.c: Remove extra disabled warning | ||||||
|  | 
 | ||||||
|  | "https://gitlab.com/cki-project/kernel-ark/-/commit"/635b364c987e7559bc20d3f22822a514b56ac33d | ||||||
|  |  635b364c987e7559bc20d3f22822a514b56ac33d [redhat] mptsas: Remove add_taint() | ||||||
|  | 
 | ||||||
|  | "https://gitlab.com/cki-project/kernel-ark/-/commit"/b8cb66e488122646b260a080f683d8746a145ebb | ||||||
|  |  b8cb66e488122646b260a080f683d8746a145ebb [redhat] drivers/pci: Remove RHEL-only pci_hw_*() functions | ||||||
|  | 
 | ||||||
| "https://gitlab.com/cki-project/kernel-ark/-/commit"/7ba2fc7e001181fe630e92a4633e76a6c71689e1 | "https://gitlab.com/cki-project/kernel-ark/-/commit"/7ba2fc7e001181fe630e92a4633e76a6c71689e1 | ||||||
|  7ba2fc7e001181fe630e92a4633e76a6c71689e1 scsi: sd: Add "probe_type" module parameter to allow synchronous probing |  7ba2fc7e001181fe630e92a4633e76a6c71689e1 scsi: sd: Add "probe_type" module parameter to allow synchronous probing | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								kernel.spec
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								kernel.spec
									
									
									
									
									
								
							| @ -162,13 +162,13 @@ Summary: The Linux kernel | |||||||
| %define specrpmversion 6.5.0 | %define specrpmversion 6.5.0 | ||||||
| %define specversion 6.5.0 | %define specversion 6.5.0 | ||||||
| %define patchversion 6.5 | %define patchversion 6.5 | ||||||
| %define pkgrelease 0.rc6.43 | %define pkgrelease 0.rc6.20230815git91aa6c412d7f.44 | ||||||
| %define kversion 6 | %define kversion 6 | ||||||
| %define tarfile_release 6.5-rc6 | %define tarfile_release 6.5-rc6-27-g91aa6c412d7f | ||||||
| # This is needed to do merge window version magic | # This is needed to do merge window version magic | ||||||
| %define patchlevel 5 | %define patchlevel 5 | ||||||
| # This allows pkg_release to have configurable %%{?dist} tag | # This allows pkg_release to have configurable %%{?dist} tag | ||||||
| %define specrelease 0.rc6.43%{?buildid}%{?dist} | %define specrelease 0.rc6.20230815git91aa6c412d7f.44%{?buildid}%{?dist} | ||||||
| # This defines the kabi tarball version | # This defines the kabi tarball version | ||||||
| %define kabiversion 6.5.0 | %define kabiversion 6.5.0 | ||||||
| 
 | 
 | ||||||
| @ -3713,6 +3713,15 @@ fi\ | |||||||
| # | # | ||||||
| # | # | ||||||
| %changelog | %changelog | ||||||
|  | * Tue Aug 15 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.5.0-0.rc6.91aa6c412d7f.44.el130] | ||||||
|  | - CI: rawhide_release: switch to using script to push (Don Zickus) | ||||||
|  | - redhat/self-test: Update self-test data (Prarit Bhargava) | ||||||
|  | - redhat/scripts/cross-compile: Update download_cross.sh (Prarit Bhargava) | ||||||
|  | - redhat/Makefile.cross: Remove ARCH selection code (Prarit Bhargava) | ||||||
|  | - redhat/Makefile.cross: Update script (Prarit Bhargava) | ||||||
|  | - Fix interruptible non MR jobs (Michael Hofmann) | ||||||
|  | - Linux v6.5.0-0.rc6.91aa6c412d7f | ||||||
|  | 
 | ||||||
| * Mon Aug 14 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.5.0-0.rc6.43.el127] | * Mon Aug 14 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.5.0-0.rc6.43.el127] | ||||||
| - Linux v6.5.0-0.rc6 | - Linux v6.5.0-0.rc6 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -22,13 +22,13 @@ | |||||||
|  drivers/hwtracing/coresight/coresight-etm4x-core.c |  19 + |  drivers/hwtracing/coresight/coresight-etm4x-core.c |  19 + | ||||||
|  drivers/input/rmi4/rmi_driver.c                    | 124 +++-- |  drivers/input/rmi4/rmi_driver.c                    | 124 +++-- | ||||||
|  drivers/iommu/iommu.c                              |  22 + |  drivers/iommu/iommu.c                              |  22 + | ||||||
|  drivers/message/fusion/mptsas.c                    |  10 + |  drivers/message/fusion/mptsas.c                    |   5 + | ||||||
|  drivers/message/fusion/mptspi.c                    |  11 + |  drivers/message/fusion/mptspi.c                    |   6 + | ||||||
|  drivers/net/wireguard/main.c                       |   6 + |  drivers/net/wireguard/main.c                       |   6 + | ||||||
|  drivers/nvme/host/core.c                           |  22 +- |  drivers/nvme/host/core.c                           |  22 +- | ||||||
|  drivers/nvme/host/multipath.c                      |  19 +- |  drivers/nvme/host/multipath.c                      |  19 +- | ||||||
|  drivers/nvme/host/nvme.h                           |   4 + |  drivers/nvme/host/nvme.h                           |   4 + | ||||||
|  drivers/pci/pci-driver.c                           |  78 ++++ |  drivers/pci/pci-driver.c                           |   7 + | ||||||
|  drivers/pci/quirks.c                               |  24 + |  drivers/pci/quirks.c                               |  24 + | ||||||
|  drivers/scsi/aacraid/linit.c                       |   2 + |  drivers/scsi/aacraid/linit.c                       |   2 + | ||||||
|  drivers/scsi/be2iscsi/be_main.c                    |   2 + |  drivers/scsi/be2iscsi/be_main.c                    |   2 + | ||||||
| @ -42,27 +42,29 @@ | |||||||
|  drivers/usb/core/hub.c                             |   7 + |  drivers/usb/core/hub.c                             |   7 + | ||||||
|  fs/afs/main.c                                      |   3 + |  fs/afs/main.c                                      |   3 + | ||||||
|  include/linux/efi.h                                |  22 +- |  include/linux/efi.h                                |  22 +- | ||||||
|  include/linux/kernel.h                             |  21 + |  include/linux/kernel.h                             |  14 + | ||||||
|  include/linux/lsm_hook_defs.h                      |   2 + |  include/linux/lsm_hook_defs.h                      |   2 + | ||||||
|  include/linux/module.h                             |   1 + |  include/linux/module.h                             |   5 + | ||||||
|  include/linux/panic.h                              |  18 +- |  include/linux/panic.h                              |  18 +- | ||||||
|  include/linux/pci.h                                |  16 + |  include/linux/pci.h                                |   5 + | ||||||
|  include/linux/rh_kabi.h                            | 515 +++++++++++++++++++++ |  include/linux/rh_kabi.h                            | 515 +++++++++++++++++++++ | ||||||
|  include/linux/rmi.h                                |   1 + |  include/linux/rmi.h                                |   1 + | ||||||
|  include/linux/security.h                           |   5 + |  include/linux/security.h                           |   5 + | ||||||
|  |  init/main.c                                        |   3 + | ||||||
|  kernel/Makefile                                    |   1 + |  kernel/Makefile                                    |   1 + | ||||||
|  kernel/bpf/syscall.c                               |  23 + |  kernel/bpf/syscall.c                               |  23 + | ||||||
|  kernel/module/main.c                               |   2 + |  kernel/module/main.c                               |   7 + | ||||||
|  kernel/module/signing.c                            |   9 +- |  kernel/module/signing.c                            |   9 +- | ||||||
|  kernel/panic.c                                     |  13 + |  kernel/panic.c                                     |  13 + | ||||||
|  kernel/rh_messages.c                               | 209 +++++++++ |  kernel/rh_messages.c                               | 414 +++++++++++++++++ | ||||||
|  |  kernel/rh_messages.h                               | 109 +++++ | ||||||
|  scripts/mod/modpost.c                              |   8 + |  scripts/mod/modpost.c                              |   8 + | ||||||
|  scripts/tags.sh                                    |   2 + |  scripts/tags.sh                                    |   2 + | ||||||
|  security/integrity/platform_certs/load_uefi.c      |   6 +- |  security/integrity/platform_certs/load_uefi.c      |   6 +- | ||||||
|  security/lockdown/Kconfig                          |  13 + |  security/lockdown/Kconfig                          |  13 + | ||||||
|  security/lockdown/lockdown.c                       |   1 + |  security/lockdown/lockdown.c                       |   1 + | ||||||
|  security/security.c                                |  12 + |  security/security.c                                |  12 + | ||||||
|  64 files changed, 1552 insertions(+), 188 deletions(-) |  66 files changed, 1779 insertions(+), 188 deletions(-) | ||||||
| 
 | 
 | ||||||
| diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
 | diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
 | ||||||
| index 722b6eca2e93..59a26ed5aa96 100644
 | index 722b6eca2e93..59a26ed5aa96 100644
 | ||||||
| @ -1116,22 +1118,10 @@ index caaf563d38ae..d9c4d039c4e7 100644 | |||||||
|   * iommu_setup_default_domain - Set the default_domain for the group |   * iommu_setup_default_domain - Set the default_domain for the group | ||||||
|   * @group: Group to change |   * @group: Group to change | ||||||
| diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
 | diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
 | ||||||
| index 86f16f3ea478..0ad9759ab0c1 100644
 | index 86f16f3ea478..499dc34a5e66 100644
 | ||||||
| --- a/drivers/message/fusion/mptsas.c
 | --- a/drivers/message/fusion/mptsas.c
 | ||||||
| +++ b/drivers/message/fusion/mptsas.c
 | +++ b/drivers/message/fusion/mptsas.c
 | ||||||
| @@ -5320,6 +5320,11 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 | @@ -5383,6 +5383,10 @@ static void mptsas_remove(struct pci_dev *pdev)
 | ||||||
|  		    ioc, MPI_SAS_OP_CLEAR_ALL_PERSISTENT); |  | ||||||
|  	} |  | ||||||
| 
 |  | ||||||
| +#ifdef CONFIG_RHEL_DIFFERENCES
 |  | ||||||
| +	add_taint(TAINT_SUPPORT_REMOVED, LOCKDEP_STILL_OK);
 |  | ||||||
| +	pr_warn("MPTSAS MODULE IS NOT SUPPORTED\n");
 |  | ||||||
| +#endif
 |  | ||||||
| +
 |  | ||||||
|  	error = scsi_add_host(sh, &ioc->pcidev->dev); |  | ||||||
|  	if (error) { |  | ||||||
|  		dprintk(ioc, printk(MYIOC_s_ERR_FMT |  | ||||||
| @@ -5383,6 +5388,10 @@ static void mptsas_remove(struct pci_dev *pdev)
 |  | ||||||
|  } |  } | ||||||
| 
 | 
 | ||||||
|  static struct pci_device_id mptsas_pci_table[] = { |  static struct pci_device_id mptsas_pci_table[] = { | ||||||
| @ -1142,7 +1132,7 @@ index 86f16f3ea478..0ad9759ab0c1 100644 | |||||||
|  	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1064, |  	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1064, | ||||||
|  		PCI_ANY_ID, PCI_ANY_ID }, |  		PCI_ANY_ID, PCI_ANY_ID }, | ||||||
|  	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068, |  	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068, | ||||||
| @@ -5395,6 +5404,7 @@ static struct pci_device_id mptsas_pci_table[] = {
 | @@ -5395,6 +5399,7 @@ static struct pci_device_id mptsas_pci_table[] = {
 | ||||||
|  		PCI_ANY_ID, PCI_ANY_ID }, |  		PCI_ANY_ID, PCI_ANY_ID }, | ||||||
|  	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068_820XELP, |  	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068_820XELP, | ||||||
|  		PCI_ANY_ID, PCI_ANY_ID }, |  		PCI_ANY_ID, PCI_ANY_ID }, | ||||||
| @ -1151,7 +1141,7 @@ index 86f16f3ea478..0ad9759ab0c1 100644 | |||||||
|  }; |  }; | ||||||
|  MODULE_DEVICE_TABLE(pci, mptsas_pci_table); |  MODULE_DEVICE_TABLE(pci, mptsas_pci_table); | ||||||
| diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
 | diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
 | ||||||
| index 6c5920db1e9d..c20e21e3d70a 100644
 | index 6c5920db1e9d..dfbc97b68e6a 100644
 | ||||||
| --- a/drivers/message/fusion/mptspi.c
 | --- a/drivers/message/fusion/mptspi.c
 | ||||||
| +++ b/drivers/message/fusion/mptspi.c
 | +++ b/drivers/message/fusion/mptspi.c
 | ||||||
| @@ -1238,12 +1238,17 @@ static struct spi_function_template mptspi_transport_functions = {
 | @@ -1238,12 +1238,17 @@ static struct spi_function_template mptspi_transport_functions = {
 | ||||||
| @ -1172,15 +1162,10 @@ index 6c5920db1e9d..c20e21e3d70a 100644 | |||||||
|  	{0}	/* Terminating entry */ |  	{0}	/* Terminating entry */ | ||||||
|  }; |  }; | ||||||
|  MODULE_DEVICE_TABLE(pci, mptspi_pci_table); |  MODULE_DEVICE_TABLE(pci, mptspi_pci_table); | ||||||
| @@ -1534,6 +1539,12 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 | @@ -1534,6 +1539,7 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 | ||||||
|  		    0, 0, 0, 0, 5); |  		    0, 0, 0, 0, 5); | ||||||
| 
 | 
 | ||||||
|  	scsi_scan_host(sh); |  	scsi_scan_host(sh); | ||||||
| +
 |  | ||||||
| +#ifdef CONFIG_RHEL_DIFFERENCES
 |  | ||||||
| +	add_taint(TAINT_SUPPORT_REMOVED, LOCKDEP_STILL_OK);
 |  | ||||||
| +	pr_warn("MPTSPI MODULE IS NOT SUPPORTED\n");
 |  | ||||||
| +#endif
 |  | ||||||
| +
 | +
 | ||||||
|  	return 0; |  	return 0; | ||||||
| 
 | 
 | ||||||
| @ -1346,7 +1331,7 @@ index f35647c470af..e57357f23306 100644 | |||||||
|  { |  { | ||||||
|  } |  } | ||||||
| diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
 | diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
 | ||||||
| index ae9baf801681..4e01e6192f16 100644
 | index ae9baf801681..55648c5fe49e 100644
 | ||||||
| --- a/drivers/pci/pci-driver.c
 | --- a/drivers/pci/pci-driver.c
 | ||||||
| +++ b/drivers/pci/pci-driver.c
 | +++ b/drivers/pci/pci-driver.c
 | ||||||
| @@ -19,6 +19,7 @@
 | @@ -19,6 +19,7 @@
 | ||||||
| @ -1357,90 +1342,19 @@ index ae9baf801681..4e01e6192f16 100644 | |||||||
|  #include <linux/dma-map-ops.h> |  #include <linux/dma-map-ops.h> | ||||||
|  #include <linux/iommu.h> |  #include <linux/iommu.h> | ||||||
|  #include "pci.h" |  #include "pci.h" | ||||||
| @@ -296,6 +297,83 @@ static struct attribute *pci_drv_attrs[] = {
 | @@ -321,6 +322,12 @@ static long local_pci_probe(void *_ddi)
 | ||||||
|  }; |  	 */ | ||||||
|  ATTRIBUTE_GROUPS(pci_drv); |  	pm_runtime_get_sync(dev); | ||||||
| 
 |  	pci_dev->driver = pci_drv; | ||||||
|  | +
 | ||||||
| +#ifdef CONFIG_RHEL_DIFFERENCES
 | +#ifdef CONFIG_RHEL_DIFFERENCES
 | ||||||
| +/**
 | +	if (pci_rh_check_status(pci_dev))
 | ||||||
| + * pci_hw_deprecated - Tell if a PCI device is deprecated
 | +		return -EACCES;
 | ||||||
| + * @ids: array of PCI device id structures to search in
 |  | ||||||
| + * @dev: the PCI device structure to match against
 |  | ||||||
| + *
 |  | ||||||
| + * Used by a driver to check whether this device is in its list of deprecated
 |  | ||||||
| + * devices.  Returns the matching pci_device_id structure or %NULL if there is
 |  | ||||||
| + * no match.
 |  | ||||||
| + *
 |  | ||||||
| + * Reserved for Internal Red Hat use only.
 |  | ||||||
| + */
 |  | ||||||
| +const struct pci_device_id *pci_hw_deprecated(const struct pci_device_id *ids,
 |  | ||||||
| +					      struct pci_dev *dev)
 |  | ||||||
| +{
 |  | ||||||
| +	const struct pci_device_id *ret = pci_match_id(ids, dev);
 |  | ||||||
| +
 |  | ||||||
| +	if (!ret)
 |  | ||||||
| +		return NULL;
 |  | ||||||
| +
 |  | ||||||
| +	mark_hardware_deprecated(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
 |  | ||||||
| +				 dev->device, dev->vendor, pci_name(dev));
 |  | ||||||
| +	return ret;
 |  | ||||||
| +}
 |  | ||||||
| +EXPORT_SYMBOL(pci_hw_deprecated);
 |  | ||||||
| +
 |  | ||||||
| +/**
 |  | ||||||
| + * pci_hw_unmaintained - Tell if a PCI device is unmaintained
 |  | ||||||
| + * @ids: array of PCI device id structures to search in
 |  | ||||||
| + * @dev: the PCI device structure to match against
 |  | ||||||
| + *
 |  | ||||||
| + * Used by a driver to check whether this device is in its list of unmaintained
 |  | ||||||
| + * devices.  Returns the matching pci_device_id structure or %NULL if there is
 |  | ||||||
| + * no match.
 |  | ||||||
| + *
 |  | ||||||
| + * Reserved for Internal Red Hat use only.
 |  | ||||||
| + */
 |  | ||||||
| +const struct pci_device_id *pci_hw_unmaintained(const struct pci_device_id *ids,
 |  | ||||||
| +						struct pci_dev *dev)
 |  | ||||||
| +{
 |  | ||||||
| +	const struct pci_device_id *ret = pci_match_id(ids, dev);
 |  | ||||||
| +
 |  | ||||||
| +	if (!ret)
 |  | ||||||
| +		return NULL;
 |  | ||||||
| +
 |  | ||||||
| +	mark_hardware_unmaintained(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
 |  | ||||||
| +				   dev->device, dev->vendor, pci_name(dev));
 |  | ||||||
| +	return ret;
 |  | ||||||
| +}
 |  | ||||||
| +EXPORT_SYMBOL(pci_hw_unmaintained);
 |  | ||||||
| +
 |  | ||||||
| +/**
 |  | ||||||
| + * pci_hw_disabled - Tell if a PCI device is disabled
 |  | ||||||
| + * @ids: array of PCI device id structures to search in
 |  | ||||||
| + * @dev: the PCI device structure to match against
 |  | ||||||
| + *
 |  | ||||||
| + * Used by a driver to check whether this device is in its list of disabled
 |  | ||||||
| + * devices.  Returns the matching pci_device_id structure or %NULL if there is
 |  | ||||||
| + * no match.
 |  | ||||||
| + *
 |  | ||||||
| + * Reserved for Internal Red Hat use only.
 |  | ||||||
| + */
 |  | ||||||
| +const struct pci_device_id *pci_hw_disabled(const struct pci_device_id *ids,
 |  | ||||||
| +					    struct pci_dev *dev)
 |  | ||||||
| +{
 |  | ||||||
| +	const struct pci_device_id *ret = pci_match_id(ids, dev);
 |  | ||||||
| +
 |  | ||||||
| +	if (!ret)
 |  | ||||||
| +		return NULL;
 |  | ||||||
| +
 |  | ||||||
| +	mark_hardware_disabled(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
 |  | ||||||
| +				   dev->device, dev->vendor, pci_name(dev));
 |  | ||||||
| +	return ret;
 |  | ||||||
| +}
 |  | ||||||
| +EXPORT_SYMBOL(pci_hw_disabled);
 |  | ||||||
| +#endif
 | +#endif
 | ||||||
| +
 | +
 | ||||||
|  struct drv_dev_and_id { |  	rc = pci_drv->probe(pci_dev, ddi->id); | ||||||
|  	struct pci_driver *drv; |  	if (!rc) | ||||||
|  	struct pci_dev *dev; |  		return rc; | ||||||
| diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
 | diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
 | ||||||
| index 321156ca273d..fc399e56ec8f 100644
 | index 321156ca273d..fc399e56ec8f 100644
 | ||||||
| --- a/drivers/pci/quirks.c
 | --- a/drivers/pci/quirks.c
 | ||||||
| @ -1859,10 +1773,10 @@ index ab088c662e88..f974f9d9a7c5 100644 | |||||||
|  enum efi_secureboot_mode efi_get_secureboot_mode(efi_get_variable_t *get_var) |  enum efi_secureboot_mode efi_get_secureboot_mode(efi_get_variable_t *get_var) | ||||||
|  { |  { | ||||||
| diff --git a/include/linux/kernel.h b/include/linux/kernel.h
 | diff --git a/include/linux/kernel.h b/include/linux/kernel.h
 | ||||||
| index 0d91e0af0125..d83e42ef8dd5 100644
 | index 0d91e0af0125..9fbf61a303bc 100644
 | ||||||
| --- a/include/linux/kernel.h
 | --- a/include/linux/kernel.h
 | ||||||
| +++ b/include/linux/kernel.h
 | +++ b/include/linux/kernel.h
 | ||||||
| @@ -481,4 +481,25 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
 | @@ -481,4 +481,18 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
 | ||||||
|  	 /* OTHER_WRITABLE?  Generally considered a bad idea. */		\ |  	 /* OTHER_WRITABLE?  Generally considered a bad idea. */		\ | ||||||
|  	 BUILD_BUG_ON_ZERO((perms) & 2) +					\ |  	 BUILD_BUG_ON_ZERO((perms) & 2) +					\ | ||||||
|  	 (perms)) |  	 (perms)) | ||||||
| @ -1871,18 +1785,11 @@ index 0d91e0af0125..d83e42ef8dd5 100644 | |||||||
| +
 | +
 | ||||||
| +#ifdef CONFIG_RHEL_DIFFERENCES
 | +#ifdef CONFIG_RHEL_DIFFERENCES
 | ||||||
| +void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...);
 | +void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...);
 | ||||||
| +void mark_driver_unmaintained(const char *driver_name);
 |  | ||||||
| +void mark_hardware_deprecated(const char *driver_name, char *fmt, ...);
 |  | ||||||
| +void mark_driver_deprecated(const char *driver_name);
 |  | ||||||
| +void mark_hardware_disabled(const char *driver_name, char *fmt, ...);
 |  | ||||||
| +void mark_tech_preview(const char *msg, struct module *mod);
 | +void mark_tech_preview(const char *msg, struct module *mod);
 | ||||||
| +void mark_partner_supported(const char *msg, struct module *mod);
 | +void mark_partner_supported(const char *msg, struct module *mod);
 | ||||||
|  | +void init_rh_check_status(char *fn_name);
 | ||||||
| +#else
 | +#else
 | ||||||
| +static inline void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...) { }
 | +static inline void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...) { }
 | ||||||
| +static inline void mark_driver_unmaintained(const char *driver_name) { }
 |  | ||||||
| +static inline void mark_hardware_deprecated(const char *driver_name, char *fmt, ...) { }
 |  | ||||||
| +static inline void mark_driver_deprecated(const char *driver_name) { }
 |  | ||||||
| +static inline void mark_hardware_disabled(const char *driver_name, char *fmt, ...) { }
 |  | ||||||
| +static inline void mark_tech_preview(const char *msg, struct module *mod) { }
 | +static inline void mark_tech_preview(const char *msg, struct module *mod) { }
 | ||||||
| +static inline void mark_partner_supported(const char *msg, struct module *mod) { }
 | +static inline void mark_partner_supported(const char *msg, struct module *mod) { }
 | ||||||
| +#endif
 | +#endif
 | ||||||
| @ -1902,7 +1809,7 @@ index 7308a1a7599b..a3aa26339b43 100644 | |||||||
|  #ifdef CONFIG_PERF_EVENTS |  #ifdef CONFIG_PERF_EVENTS | ||||||
|  LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type) |  LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type) | ||||||
| diff --git a/include/linux/module.h b/include/linux/module.h
 | diff --git a/include/linux/module.h b/include/linux/module.h
 | ||||||
| index a98e188cf37b..2eef4246c2c9 100644
 | index a98e188cf37b..059c2f633ef6 100644
 | ||||||
| --- a/include/linux/module.h
 | --- a/include/linux/module.h
 | ||||||
| +++ b/include/linux/module.h
 | +++ b/include/linux/module.h
 | ||||||
| @@ -418,6 +418,7 @@ struct module {
 | @@ -418,6 +418,7 @@ struct module {
 | ||||||
| @ -1913,6 +1820,15 @@ index a98e188cf37b..2eef4246c2c9 100644 | |||||||
|  	struct kobject *holders_dir; |  	struct kobject *holders_dir; | ||||||
| 
 | 
 | ||||||
|  	/* Exported symbols */ |  	/* Exported symbols */ | ||||||
|  | @@ -988,4 +989,8 @@ static inline unsigned long find_kallsyms_symbol_value(struct module *mod,
 | ||||||
|  | 
 | ||||||
|  |  #endif  /* CONFIG_MODULES && CONFIG_KALLSYMS */ | ||||||
|  | 
 | ||||||
|  | +#ifdef CONFIG_RHEL_DIFFERENCES
 | ||||||
|  | +void module_rh_check_status(const char * module_name);
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  |  #endif /* _LINUX_MODULE_H */ | ||||||
| diff --git a/include/linux/panic.h b/include/linux/panic.h
 | diff --git a/include/linux/panic.h b/include/linux/panic.h
 | ||||||
| index 6717b15e798c..8e1d3eae1686 100644
 | index 6717b15e798c..8e1d3eae1686 100644
 | ||||||
| --- a/include/linux/panic.h
 | --- a/include/linux/panic.h
 | ||||||
| @ -1943,32 +1859,28 @@ index 6717b15e798c..8e1d3eae1686 100644 | |||||||
| 
 | 
 | ||||||
|  struct taint_flag { |  struct taint_flag { | ||||||
| diff --git a/include/linux/pci.h b/include/linux/pci.h
 | diff --git a/include/linux/pci.h b/include/linux/pci.h
 | ||||||
| index c69a2cc1f412..27da72fdff38 100644
 | index c69a2cc1f412..b9ae5eb4c66d 100644
 | ||||||
| --- a/include/linux/pci.h
 | --- a/include/linux/pci.h
 | ||||||
| +++ b/include/linux/pci.h
 | +++ b/include/linux/pci.h
 | ||||||
| @@ -1560,6 +1560,22 @@ int pci_add_dynid(struct pci_driver *drv,
 | @@ -1560,6 +1560,7 @@ int pci_add_dynid(struct pci_driver *drv,
 | ||||||
|  		  unsigned long driver_data); |  		  unsigned long driver_data); | ||||||
|  const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, |  const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, | ||||||
|  					 struct pci_dev *dev); |  					 struct pci_dev *dev); | ||||||
| +
 | +
 | ||||||
| +#ifdef CONFIG_RHEL_DIFFERENCES
 |  | ||||||
| +const struct pci_device_id *pci_hw_deprecated(const struct pci_device_id *ids,
 |  | ||||||
| +					      struct pci_dev *dev);
 |  | ||||||
| +const struct pci_device_id *pci_hw_unmaintained(const struct pci_device_id *ids,
 |  | ||||||
| +						struct pci_dev *dev);
 |  | ||||||
| +const struct pci_device_id *pci_hw_disabled(const struct pci_device_id *ids,
 |  | ||||||
| +					    struct pci_dev *dev);
 |  | ||||||
| +#else
 |  | ||||||
| +static inline const struct pci_device_id *pci_hw_deprecated(const struct pci_device_id *ids,
 |  | ||||||
| +							    struct pci_dev *dev) { return NULL; }
 |  | ||||||
| +static inline const struct pci_device_id *pci_hw_unmaintained(const struct pci_device_id *ids,
 |  | ||||||
| +							      struct pci_dev *dev) { return NULL; }
 |  | ||||||
| +static inline const struct pci_device_id *pci_hw_disabled(const struct pci_device_id *ids,
 |  | ||||||
| +							  struct pci_dev *dev) {return NULL; }
 |  | ||||||
| +#endif
 |  | ||||||
|  int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, |  int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, | ||||||
|  		    int pass); |  		    int pass); | ||||||
| 
 | 
 | ||||||
|  | @@ -2578,6 +2579,10 @@ static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev)
 | ||||||
|  |  	return false; | ||||||
|  |  } | ||||||
|  | 
 | ||||||
|  | +#ifdef CONFIG_RHEL_DIFFERENCES
 | ||||||
|  | +bool pci_rh_check_status(struct pci_dev *pci_dev);
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  |  #if defined(CONFIG_PCIEPORTBUS) || defined(CONFIG_EEH) | ||||||
|  |  void pci_uevent_ers(struct pci_dev *pdev, enum  pci_ers_result err_type); | ||||||
|  |  #endif | ||||||
| diff --git a/include/linux/rh_kabi.h b/include/linux/rh_kabi.h
 | diff --git a/include/linux/rh_kabi.h b/include/linux/rh_kabi.h
 | ||||||
| new file mode 100644 | new file mode 100644 | ||||||
| index 000000000000..c7b42c1f1681
 | index 000000000000..c7b42c1f1681
 | ||||||
| @ -2525,6 +2437,20 @@ index 32828502f09e..b5c27505fa16 100644 | |||||||
|  #endif	/* CONFIG_SECURITY */ |  #endif	/* CONFIG_SECURITY */ | ||||||
| 
 | 
 | ||||||
|  #if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE) |  #if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE) | ||||||
|  | diff --git a/init/main.c b/init/main.c
 | ||||||
|  | index ad920fac325c..5ff72cc9c7e3 100644
 | ||||||
|  | --- a/init/main.c
 | ||||||
|  | +++ b/init/main.c
 | ||||||
|  | @@ -1147,6 +1147,9 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn)
 | ||||||
|  |  	 */ | ||||||
|  |  	strreplace(fn_name, ' ', '\0'); | ||||||
|  | 
 | ||||||
|  | +#ifdef CONFIG_RHEL_DIFFERENCES
 | ||||||
|  | +	init_rh_check_status(fn_name);
 | ||||||
|  | +#endif
 | ||||||
|  |  	list_for_each_entry(entry, &blacklisted_initcalls, next) { | ||||||
|  |  		if (!strcmp(fn_name, entry->buf)) { | ||||||
|  |  			pr_debug("initcall %s blacklisted\n", fn_name); | ||||||
| diff --git a/kernel/Makefile b/kernel/Makefile
 | diff --git a/kernel/Makefile b/kernel/Makefile
 | ||||||
| index 3947122d618b..5b9462a450a1 100644
 | index 3947122d618b..5b9462a450a1 100644
 | ||||||
| --- a/kernel/Makefile
 | --- a/kernel/Makefile
 | ||||||
| @ -2586,7 +2512,7 @@ index a2aef900519c..b872a64be8fd 100644 | |||||||
|  	} |  	} | ||||||
| 
 | 
 | ||||||
| diff --git a/kernel/module/main.c b/kernel/module/main.c
 | diff --git a/kernel/module/main.c b/kernel/module/main.c
 | ||||||
| index 59b1d067e528..b49c20c89bed 100644
 | index 59b1d067e528..0b1c207dcd4f 100644
 | ||||||
| --- a/kernel/module/main.c
 | --- a/kernel/module/main.c
 | ||||||
| +++ b/kernel/module/main.c
 | +++ b/kernel/module/main.c
 | ||||||
| @@ -528,6 +528,7 @@ static struct module_attribute modinfo_##field = {                    \
 | @@ -528,6 +528,7 @@ static struct module_attribute modinfo_##field = {                    \
 | ||||||
| @ -2605,6 +2531,18 @@ index 59b1d067e528..b49c20c89bed 100644 | |||||||
|  	&modinfo_initstate, |  	&modinfo_initstate, | ||||||
|  	&modinfo_coresize, |  	&modinfo_coresize, | ||||||
|  #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC |  #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC | ||||||
|  | @@ -2794,6 +2796,11 @@ static int early_mod_check(struct load_info *info, int flags)
 | ||||||
|  |  		return -EPERM; | ||||||
|  |  	} | ||||||
|  | 
 | ||||||
|  | +#ifdef CONFIG_RHEL_DIFFERENCES
 | ||||||
|  | +	if (get_modinfo(info, "intree"))
 | ||||||
|  | +		module_rh_check_status(info->name);
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  |  	err = rewrite_section_headers(info, flags); | ||||||
|  |  	if (err) | ||||||
|  |  		return err; | ||||||
| diff --git a/kernel/module/signing.c b/kernel/module/signing.c
 | diff --git a/kernel/module/signing.c b/kernel/module/signing.c
 | ||||||
| index a2ff4242e623..f0d2be1ee4f1 100644
 | index a2ff4242e623..f0d2be1ee4f1 100644
 | ||||||
| --- a/kernel/module/signing.c
 | --- a/kernel/module/signing.c
 | ||||||
| @ -2654,14 +2592,10 @@ index 10effe40a3fa..f49ce6660929 100644 | |||||||
|  /** |  /** | ||||||
| diff --git a/kernel/rh_messages.c b/kernel/rh_messages.c
 | diff --git a/kernel/rh_messages.c b/kernel/rh_messages.c
 | ||||||
| new file mode 100644 | new file mode 100644 | ||||||
| index 000000000000..018800f35ff2
 | index 000000000000..48a6bb6c9b38
 | ||||||
| --- /dev/null
 | --- /dev/null
 | ||||||
| +++ b/kernel/rh_messages.c
 | +++ b/kernel/rh_messages.c
 | ||||||
| @@ -0,0 +1,209 @@
 | @@ -0,0 +1,414 @@
 | ||||||
| +#include <linux/kernel.h>
 |  | ||||||
| +#include <linux/module.h>
 |  | ||||||
| +
 |  | ||||||
| +#define DEV_DESC_LEN 256
 |  | ||||||
| +/*
 | +/*
 | ||||||
| + * The following functions are used by Red Hat to indicate to users that
 | + * The following functions are used by Red Hat to indicate to users that
 | ||||||
| + * hardware and drivers are unsupported, or have limited support in RHEL major
 | + * hardware and drivers are unsupported, or have limited support in RHEL major
 | ||||||
| @ -2679,6 +2613,11 @@ index 000000000000..018800f35ff2 | |||||||
| + * related fixes until they are disabled.
 | + * related fixes until they are disabled.
 | ||||||
| + */
 | + */
 | ||||||
| +
 | +
 | ||||||
|  | +#include <linux/kernel.h>
 | ||||||
|  | +#include <linux/module.h>
 | ||||||
|  | +#include <linux/pci.h>
 | ||||||
|  | +#include "rh_messages.h"
 | ||||||
|  | +
 | ||||||
| +/**
 | +/**
 | ||||||
| + * mark_hardware_unmaintained() - Mark hardware as unmaintained.
 | + * mark_hardware_unmaintained() - Mark hardware as unmaintained.
 | ||||||
| + * @driver_name: driver name
 | + * @driver_name: driver name
 | ||||||
| @ -2687,13 +2626,16 @@ index 000000000000..018800f35ff2 | |||||||
| + *
 | + *
 | ||||||
| + * Called to notify users that the device will no longer be tested on a routine
 | + * Called to notify users that the device will no longer be tested on a routine
 | ||||||
| + * basis and driver code associated with this device is no longer being updated.
 | + * basis and driver code associated with this device is no longer being updated.
 | ||||||
| + * Red Hat may fix security-related and critical issues.  Support for this device
 | + * Red Hat may, at their own discretion, fix security-related and critical
 | ||||||
| + * will be disabled in a future major release and users deploying this device
 | + * issues.  Support for this device will be disabled in a future major release
 | ||||||
| + * should plan to replace the device in production systems.
 | + * and users deploying this device should plan to replace the device in
 | ||||||
|  | + * production systems.
 | ||||||
| + *
 | + *
 | ||||||
| + * This function should be used when the driver's usage can be tied to a
 | + * This function should be used when the driver's usage can be tied to a
 | ||||||
| + * specific hardware device.  For example, a network device driver loading on a
 | + * specific hardware device.  For example, a network device driver loading on a
 | ||||||
| + * specific device that is no longer maintained by the manufacturer.
 | + * specific device that is no longer maintained by the manufacturer.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
| + */
 | + */
 | ||||||
| +void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...)
 | +void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...)
 | ||||||
| +{
 | +{
 | ||||||
| @ -2702,33 +2644,13 @@ index 000000000000..018800f35ff2 | |||||||
| +
 | +
 | ||||||
| +	va_start(args, fmt);
 | +	va_start(args, fmt);
 | ||||||
| +	vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
 | +	vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
 | ||||||
| +	pr_crit("Warning: Unmaintained hardware is detected:  %s:%s\n", driver_name,
 | +	pr_crit(RH_UNMAINT_HW,
 | ||||||
| +		device_description);
 | +		driver_name, device_description);
 | ||||||
| +	va_end(args);
 | +	va_end(args);
 | ||||||
| +}
 | +}
 | ||||||
| +EXPORT_SYMBOL(mark_hardware_unmaintained);
 | +EXPORT_SYMBOL(mark_hardware_unmaintained);
 | ||||||
| +
 | +
 | ||||||
| +/**
 | +/**
 | ||||||
| + * mark_driver_unmaintained() - Mark a driver as unmaintained.
 |  | ||||||
| + * @driver_name: driver name
 |  | ||||||
| + *
 |  | ||||||
| + * Called to notify users that a driver will no longer be tested on a routine
 |  | ||||||
| + * basis and the driver code is no longer being updated.  Red Hat may fix
 |  | ||||||
| + * security-related and critical issues.  Support for this driver will be
 |  | ||||||
| + * disabled in a future major release, and users should replace any affected
 |  | ||||||
| + * devices in production systems.
 |  | ||||||
| + *
 |  | ||||||
| + * This function should be used when a driver's usage cannot be tied to a
 |  | ||||||
| + * specific hardware device.  For example, a network bonding driver or a higher
 |  | ||||||
| + * level storage layer driver that is no longer maintained upstream.
 |  | ||||||
| + */
 |  | ||||||
| +void mark_driver_unmaintained(const char *driver_name)
 |  | ||||||
| +{
 |  | ||||||
| +	pr_crit("Warning: Unmaintained driver is detected:  %s\n", driver_name);
 |  | ||||||
| +}
 |  | ||||||
| +EXPORT_SYMBOL(mark_driver_unmaintained);
 |  | ||||||
| +
 |  | ||||||
| +/**
 |  | ||||||
| + * mark_hardware_deprecated() - Mark hardware as deprecated.
 | + * mark_hardware_deprecated() - Mark hardware as deprecated.
 | ||||||
| + * @driver_name: driver name
 | + * @driver_name: driver name
 | ||||||
| + * @fmt: format for device description
 | + * @fmt: format for device description
 | ||||||
| @ -2742,6 +2664,8 @@ index 000000000000..018800f35ff2 | |||||||
| + * This function should be used when the driver's usage can be tied to a
 | + * This function should be used when the driver's usage can be tied to a
 | ||||||
| + * specific hardware device.  For example, a network device driver loading on a
 | + * specific hardware device.  For example, a network device driver loading on a
 | ||||||
| + * specific device that is no longer maintained by the manufacturer.
 | + * specific device that is no longer maintained by the manufacturer.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
| + */
 | + */
 | ||||||
| +void mark_hardware_deprecated(const char *driver_name, char *fmt, ...)
 | +void mark_hardware_deprecated(const char *driver_name, char *fmt, ...)
 | ||||||
| +{
 | +{
 | ||||||
| @ -2750,32 +2674,10 @@ index 000000000000..018800f35ff2 | |||||||
| +
 | +
 | ||||||
| +	va_start(args, fmt);
 | +	va_start(args, fmt);
 | ||||||
| +	vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
 | +	vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
 | ||||||
| +	pr_crit("Warning: Deprecated Hardware is detected: %s:%s will not be maintained in a future major release and may be disabled\n",
 | +	pr_crit(RH_DEPRECATED_HW,
 | ||||||
| +		driver_name, device_description);
 | +		driver_name, device_description);
 | ||||||
| +	va_end(args);
 | +	va_end(args);
 | ||||||
| +}
 | +}
 | ||||||
| +EXPORT_SYMBOL(mark_hardware_deprecated);
 |  | ||||||
| +
 |  | ||||||
| +/**
 |  | ||||||
| + * mark_driver_deprecated() - Mark a driver as deprecated.
 |  | ||||||
| + * @driver_name: driver name
 |  | ||||||
| + *
 |  | ||||||
| + * Called to notify users that support for this driver is planned to be
 |  | ||||||
| + * unmaintained in a future major release, and will eventually be disabled in a
 |  | ||||||
| + * future major release.  This driver should not be used in new production
 |  | ||||||
| + * environments and users should replace any affected devices in production
 |  | ||||||
| + * systems.
 |  | ||||||
| + *
 |  | ||||||
| + * This function should be used when a driver's usage cannot be tied to a
 |  | ||||||
| + * specific hardware device.  For example, a network bonding driver or a higher
 |  | ||||||
| + * level storage layer driver that is no longer maintained upstream.
 |  | ||||||
| + */
 |  | ||||||
| +void mark_driver_deprecated(const char *driver_name)
 |  | ||||||
| +{
 |  | ||||||
| +	pr_crit("Warning: Deprecated Driver is detected: %s will not be maintained in a future major release and may be disabled\n",
 |  | ||||||
| +		driver_name);
 |  | ||||||
| +}
 |  | ||||||
| +EXPORT_SYMBOL(mark_driver_deprecated);
 |  | ||||||
| +
 | +
 | ||||||
| +/**
 | +/**
 | ||||||
| + * mark_hardware_disabled() - Mark a driver as removed.
 | + * mark_hardware_disabled() - Mark a driver as removed.
 | ||||||
| @ -2791,19 +2693,199 @@ index 000000000000..018800f35ff2 | |||||||
| + * This function should be used when the driver's usage can be tied to a
 | + * This function should be used when the driver's usage can be tied to a
 | ||||||
| + * specific hardware device.  For example, a network device driver loading on a
 | + * specific hardware device.  For example, a network device driver loading on a
 | ||||||
| + * specific device that is no longer maintained by the manufacturer.
 | + * specific device that is no longer maintained by the manufacturer.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
| + */
 | + */
 | ||||||
| +void mark_hardware_disabled(const char *driver_name, char *fmt, ...)
 | +static void mark_hardware_disabled(const char *driver_name, char *fmt, ...)
 | ||||||
| +{
 | +{
 | ||||||
| +	char device_description[DEV_DESC_LEN];
 | +	char device_description[DEV_DESC_LEN];
 | ||||||
| +	va_list args;
 | +	va_list args;
 | ||||||
| +
 | +
 | ||||||
| +	va_start(args, fmt);
 | +	va_start(args, fmt);
 | ||||||
| +	vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
 | +	vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
 | ||||||
| +	pr_crit("Warning: Disabled Hardware is detected: %s:%s is no longer enabled in this release.\n",
 | +	pr_crit(RH_DISABLED_HW,
 | ||||||
| +		driver_name, device_description);
 | +		driver_name, device_description);
 | ||||||
| +	va_end(args);
 | +	va_end(args);
 | ||||||
| +}
 | +}
 | ||||||
| +EXPORT_SYMBOL(mark_hardware_disabled);
 | +
 | ||||||
|  | +#ifdef CONFIG_PCI
 | ||||||
|  | +/**
 | ||||||
|  | + * pci_hw_deprecated() - Mark a PCI device deprecated.
 | ||||||
|  | + * @dev: the PCI device structure to match against
 | ||||||
|  | + *
 | ||||||
|  | + * Called to check if this @dev is in the list of deprecated devices.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +static void pci_hw_deprecated(struct pci_dev *dev)
 | ||||||
|  | +{
 | ||||||
|  | +	const struct pci_device_id *ret = pci_match_id(rh_deprecated_pci_devices, dev);
 | ||||||
|  | +
 | ||||||
|  | +	if (!ret)
 | ||||||
|  | +		return;
 | ||||||
|  | +
 | ||||||
|  | +	mark_hardware_deprecated(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
 | ||||||
|  | +				 dev->device, dev->vendor, pci_name(dev));
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +/**
 | ||||||
|  | + * pci_hw_unmaintained() - Mark a PCI device unmaintained.
 | ||||||
|  | + * @dev: the PCI device structure to match against
 | ||||||
|  | + *
 | ||||||
|  | + * Called to check if this @dev is in the list of unmaintained devices.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +static void pci_hw_unmaintained(struct pci_dev *dev)
 | ||||||
|  | +{
 | ||||||
|  | +	const struct pci_device_id *ret = pci_match_id(rh_unmaintained_pci_devices, dev);
 | ||||||
|  | +
 | ||||||
|  | +	if (!ret)
 | ||||||
|  | +		return;
 | ||||||
|  | +
 | ||||||
|  | +	mark_hardware_unmaintained(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
 | ||||||
|  | +				   dev->device, dev->vendor, pci_name(dev));
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +/**
 | ||||||
|  | + * pci_hw_disabled() - Mark a PCI device disabled.
 | ||||||
|  | + * @dev: the PCI device structure to match against
 | ||||||
|  | + *
 | ||||||
|  | + * Called to check if this @dev is in the list of disabled devices.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +static bool pci_hw_disabled(struct pci_dev *dev)
 | ||||||
|  | +{
 | ||||||
|  | +	const struct pci_device_id *ret = pci_match_id(rh_disabled_pci_devices, dev);
 | ||||||
|  | +
 | ||||||
|  | +	if (!ret)
 | ||||||
|  | +		return false;
 | ||||||
|  | +
 | ||||||
|  | +	mark_hardware_disabled(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
 | ||||||
|  | +				   dev->device, dev->vendor, pci_name(dev));
 | ||||||
|  | +	return true;
 | ||||||
|  | +}
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  | +/**
 | ||||||
|  | + * driver_unmaintained() - check to see if a driver is unmaintained
 | ||||||
|  | + * @module_name: module name
 | ||||||
|  | + *
 | ||||||
|  | + * Called to notify users that a driver will no longer be tested on a routine
 | ||||||
|  | + * basis and the driver code is no longer being updated.  Red Hat may fix
 | ||||||
|  | + * security-related and critical issues.  Support for this driver will be
 | ||||||
|  | + * disabled in a future major release, and users should replace any affected
 | ||||||
|  | + * devices in production systems.
 | ||||||
|  | + *
 | ||||||
|  | + * This function should be used when a driver's usage cannot be tied to a
 | ||||||
|  | + * specific hardware device.  For example, a network bonding driver or a higher
 | ||||||
|  | + * level storage layer driver that is no longer maintained upstream.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +static void driver_unmaintained(const char* module_name)
 | ||||||
|  | +{
 | ||||||
|  | +	int i = 0;
 | ||||||
|  | +
 | ||||||
|  | +	while (rh_unmaintained_drivers[i]) {
 | ||||||
|  | +		if (strcmp(rh_unmaintained_drivers[i], module_name) == 0) {
 | ||||||
|  | +			pr_crit(RH_UNMAINT_DR, module_name);
 | ||||||
|  | +			return;
 | ||||||
|  | +		}
 | ||||||
|  | +		i++;
 | ||||||
|  | +	}
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +/**
 | ||||||
|  | + * driver_deprecated() - check to see if a driver is deprecated
 | ||||||
|  | + * @driver_name: module name
 | ||||||
|  | + *
 | ||||||
|  | + * Called to notify users that support for this driver is planned to be
 | ||||||
|  | + * unmaintained in a future major release, and will eventually be disabled in a
 | ||||||
|  | + * future major release.  This driver should not be used in new production
 | ||||||
|  | + * environments and users should replace any affected devices in production
 | ||||||
|  | + * systems.
 | ||||||
|  | + *
 | ||||||
|  | + * This function should be used when a driver's usage cannot be tied to a
 | ||||||
|  | + * specific hardware device.  For example, a network bonding driver or a higher
 | ||||||
|  | + * level storage layer driver that is no longer maintained upstream.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +static void driver_deprecated(const char* module_name)
 | ||||||
|  | +{
 | ||||||
|  | +	int i = 0;
 | ||||||
|  | +
 | ||||||
|  | +	while (rh_deprecated_drivers[i]) {
 | ||||||
|  | +		if (strcmp(rh_deprecated_drivers[i], module_name) == 0) {
 | ||||||
|  | +			pr_crit(RH_DEPRECATED_DR, module_name);
 | ||||||
|  | +			return;
 | ||||||
|  | +		}
 | ||||||
|  | +		i++;
 | ||||||
|  | +	}
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +/* There is no driver_disabled() function.  Disabled drivers are configured off ;). */
 | ||||||
|  | +
 | ||||||
|  | +/**
 | ||||||
|  | + * init_fn_unmaintained - check to see if a built-in driver is unmaintained.
 | ||||||
|  | + * @fn_name: module's module_init function name
 | ||||||
|  | + *
 | ||||||
|  | + * Called to notify users that a built-in driver will no longer be tested on a routine
 | ||||||
|  | + * basis and the built-in driver code is no longer being updated.  Red Hat may fix
 | ||||||
|  | + * security-related and critical issues.  Support for this built-in driver will be
 | ||||||
|  | + * disabled in a future major release, and users should replace any affected
 | ||||||
|  | + * devices in production systems.
 | ||||||
|  | + *
 | ||||||
|  | + * This function should be used when a built-in driver's usage cannot be tied to a
 | ||||||
|  | + * specific hardware device.  For example, a network bonding driver or a higher
 | ||||||
|  | + * level storage layer driver that is no longer maintained upstream.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +
 | ||||||
|  | +static void init_fn_unmaintained(char* fn_name)
 | ||||||
|  | +{
 | ||||||
|  | +	int i = 0;
 | ||||||
|  | +
 | ||||||
|  | +	while (rh_unmaintained_init_fns[i]) {
 | ||||||
|  | +		if (strcmp(rh_unmaintained_init_fns[i], fn_name) == 0) {
 | ||||||
|  | +			pr_crit(RH_UNMAINT_DR, fn_name);
 | ||||||
|  | +			return;
 | ||||||
|  | +		}
 | ||||||
|  | +		i++;
 | ||||||
|  | +	}
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +/**
 | ||||||
|  | + * init_fn_deprecated() - check to see if a built-in driver is deprecated
 | ||||||
|  | + * @fn_name: module's module_init function name
 | ||||||
|  | + *
 | ||||||
|  | + * Called to notify users that support for this built-in driver is planned to be
 | ||||||
|  | + * unmaintained in a future major release, and will eventually be disabled in a
 | ||||||
|  | + * future major release.  This driver should not be used in new production
 | ||||||
|  | + * environments and users should replace any affected devices in production
 | ||||||
|  | + * systems.
 | ||||||
|  | + *
 | ||||||
|  | + * This function should be used when a built-in driver's usage cannot be tied to a
 | ||||||
|  | + * specific hardware device.  For example, a network bonding driver or a higher
 | ||||||
|  | + * level storage layer driver that is no longer maintained upstream.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +static void init_fn_deprecated(char* fn_name)
 | ||||||
|  | +{
 | ||||||
|  | +	int i = 0;
 | ||||||
|  | +
 | ||||||
|  | +	while (rh_deprecated_init_fns[i]) {
 | ||||||
|  | +		if (strcmp(rh_deprecated_init_fns[i], fn_name) == 0) {
 | ||||||
|  | +			pr_crit(RH_DEPRECATED_DR, fn_name);
 | ||||||
|  | +			return;
 | ||||||
|  | +		}
 | ||||||
|  | +		i++;
 | ||||||
|  | +	}
 | ||||||
|  | +}
 | ||||||
| +
 | +
 | ||||||
| +/**
 | +/**
 | ||||||
| + * mark_tech_preview() - Mark driver or kernel subsystem as 'Tech Preview'
 | + * mark_tech_preview() - Mark driver or kernel subsystem as 'Tech Preview'
 | ||||||
| @ -2815,6 +2897,8 @@ index 000000000000..018800f35ff2 | |||||||
| + * minor release.  The next RHEL minor release may contain full support for
 | + * minor release.  The next RHEL minor release may contain full support for
 | ||||||
| + * this driver.  Red Hat does not guarantee that bugs reported against this
 | + * this driver.  Red Hat does not guarantee that bugs reported against this
 | ||||||
| + * driver or subsystem will be resolved.
 | + * driver or subsystem will be resolved.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
| + */
 | + */
 | ||||||
| +void mark_tech_preview(const char *msg, struct module *mod)
 | +void mark_tech_preview(const char *msg, struct module *mod)
 | ||||||
| +{
 | +{
 | ||||||
| @ -2827,9 +2911,7 @@ index 000000000000..018800f35ff2 | |||||||
| +		str = mod->name;
 | +		str = mod->name;
 | ||||||
| +#endif
 | +#endif
 | ||||||
| +
 | +
 | ||||||
| +	pr_warn("TECH PREVIEW: %s may not be fully supported.\n"
 | +	pr_warn(RH_TECH_PREVIEW, (str ? str : "kernel"));
 | ||||||
| +		"Please review provided documentation for limitations.\n",
 |  | ||||||
| +		(str ? str : "kernel"));
 |  | ||||||
| +	add_taint(TAINT_AUX, LOCKDEP_STILL_OK);
 | +	add_taint(TAINT_AUX, LOCKDEP_STILL_OK);
 | ||||||
| +#ifdef CONFIG_MODULES
 | +#ifdef CONFIG_MODULES
 | ||||||
| +	if (mod)
 | +	if (mod)
 | ||||||
| @ -2842,9 +2924,11 @@ index 000000000000..018800f35ff2 | |||||||
| + * mark_partner_supported() - Mark driver or kernel subsystem as 'Partner Supported'
 | + * mark_partner_supported() - Mark driver or kernel subsystem as 'Partner Supported'
 | ||||||
| + * @msg: Driver or kernel subsystem name
 | + * @msg: Driver or kernel subsystem name
 | ||||||
| + *
 | + *
 | ||||||
| + * Called to clarify the support status of a driver.  This does TAINT the
 | + * Called to minimize the support status of a new driver.  This does TAINT the
 | ||||||
| + * kernel.  Calling this function indicates that the driver or subsystem is
 | + * kernel.  Calling this function indicates that the driver or subsystem
 | ||||||
| + * supported by one of our partners and not by Red Hat directly.
 | + * is not supported directly by Red Hat but by a partner engineer.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
| + */
 | + */
 | ||||||
| +void mark_partner_supported(const char *msg, struct module *mod)
 | +void mark_partner_supported(const char *msg, struct module *mod)
 | ||||||
| +{
 | +{
 | ||||||
| @ -2857,9 +2941,7 @@ index 000000000000..018800f35ff2 | |||||||
| +		str = mod->name;
 | +		str = mod->name;
 | ||||||
| +#endif
 | +#endif
 | ||||||
| +
 | +
 | ||||||
| +	pr_warn("Notice: %s is a Partner Supported GPL module and not supported directly by Red Hat.\n"
 | +        pr_warn(RH_PARTNER_SUPPORTED, (str ? str : "kernel"));
 | ||||||
| +		"Please contact your provider for support.\n",
 |  | ||||||
| +		(str ? str : "kernel"));
 |  | ||||||
| +        add_taint(TAINT_PARTNER_SUPPORTED, LOCKDEP_STILL_OK);
 | +        add_taint(TAINT_PARTNER_SUPPORTED, LOCKDEP_STILL_OK);
 | ||||||
| +#ifdef CONFIG_MODULES
 | +#ifdef CONFIG_MODULES
 | ||||||
| +        if (mod)
 | +        if (mod)
 | ||||||
| @ -2867,6 +2949,182 @@ index 000000000000..018800f35ff2 | |||||||
| +#endif
 | +#endif
 | ||||||
| +}
 | +}
 | ||||||
| +EXPORT_SYMBOL(mark_partner_supported);
 | +EXPORT_SYMBOL(mark_partner_supported);
 | ||||||
|  | +
 | ||||||
|  | +/*
 | ||||||
|  | + *
 | ||||||
|  | + * Functions called by 'main' kernel code.
 | ||||||
|  | + *
 | ||||||
|  | + */
 | ||||||
|  | +
 | ||||||
|  | +#ifdef CONFIG_PCI
 | ||||||
|  | +/**
 | ||||||
|  | + * pci_rh_check_status - checks the status of a PCI device.
 | ||||||
|  | + * @pci_dev: PCI device to be examined
 | ||||||
|  | + *
 | ||||||
|  | + * This function is called by the PCI driver subsystem to check the status of a
 | ||||||
|  | + * PCI device.
 | ||||||
|  | + *
 | ||||||
|  | + * This function returns true if the PCI device is disabled, and false otherwise.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +bool pci_rh_check_status(struct pci_dev *pci_dev)
 | ||||||
|  | +{
 | ||||||
|  | +	if (pci_dev->driver->driver.owner != NULL) {
 | ||||||
|  | +		if (!test_bit(TAINT_OOT_MODULE, &pci_dev->driver->driver.owner->taints)) {
 | ||||||
|  | +			pci_hw_unmaintained(pci_dev);
 | ||||||
|  | +			pci_hw_deprecated(pci_dev);
 | ||||||
|  | +			return pci_hw_disabled(pci_dev);
 | ||||||
|  | +		}
 | ||||||
|  | +	}
 | ||||||
|  | +	return false;
 | ||||||
|  | +}
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  | +/** module_rh_check_status - checks the status of a module.
 | ||||||
|  | + * @module_name: Name of module to be examined
 | ||||||
|  | + *
 | ||||||
|  | + * This function is called by the module loading code to check the status of a
 | ||||||
|  | + * module.
 | ||||||
|  | + *
 | ||||||
|  | + * Reserved for Internal Red Hat use only.
 | ||||||
|  | + */
 | ||||||
|  | +void module_rh_check_status(const char * module_name)
 | ||||||
|  | +{
 | ||||||
|  | +	driver_unmaintained(module_name);
 | ||||||
|  | +	driver_deprecated(module_name);
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +/**
 | ||||||
|  | +  * init_rh_check_status - checks the status of a built-in module.
 | ||||||
|  | +  * @fn_name: init function of module to be examined
 | ||||||
|  | +  *
 | ||||||
|  | +  * This function is called by the init code to check the status of a built-in module.
 | ||||||
|  | +  * When a module is built-in, the module_init() function is converted into an initcall.
 | ||||||
|  | +  * The initcall is the called during boot with the other system initcalls.
 | ||||||
|  | +  *
 | ||||||
|  | +  * Reserved for Internal Red Hat use only.
 | ||||||
|  | +  */
 | ||||||
|  | +void init_rh_check_status(char *fn_name)
 | ||||||
|  | +{
 | ||||||
|  | +	init_fn_deprecated(fn_name);
 | ||||||
|  | +	init_fn_unmaintained(fn_name);
 | ||||||
|  | +}
 | ||||||
|  | diff --git a/kernel/rh_messages.h b/kernel/rh_messages.h
 | ||||||
|  | new file mode 100644 | ||||||
|  | index 000000000000..616692b1ac11
 | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/kernel/rh_messages.h
 | ||||||
|  | @@ -0,0 +1,109 @@
 | ||||||
|  | +/*
 | ||||||
|  | + * WARNING: This file is auto-generated by an internal Red Hat script and,
 | ||||||
|  | + * in general, should not be modified by hand.
 | ||||||
|  | + */
 | ||||||
|  | +
 | ||||||
|  | +/*
 | ||||||
|  | + * The following tables are used by Red Hat to define what hardware and drivers
 | ||||||
|  | + * are unsupported, or have limited support in RHEL major and minor releases.
 | ||||||
|  | + *
 | ||||||
|  | + * Generally, the process of disabling a driver or device in RHEL requires the
 | ||||||
|  | + * driver or device to be marked as 'deprecated' in all existing releases, and
 | ||||||
|  | + * then either 'unmaintained' or 'disabled' in a future release.
 | ||||||
|  | + *
 | ||||||
|  | + * In general, deprecated and unmaintained drivers continue to receive security
 | ||||||
|  | + * related fixes until they are disabled.
 | ||||||
|  | + */
 | ||||||
|  | + 
 | ||||||
|  | +#ifndef __RH_MESSAGES_H
 | ||||||
|  | +#define __RH_MESSAGES_H
 | ||||||
|  | +
 | ||||||
|  | +#include <linux/version.h>
 | ||||||
|  | +#include <linux/pci.h>
 | ||||||
|  | +
 | ||||||
|  | +#define DEV_DESC_LEN 256
 | ||||||
|  | +
 | ||||||
|  | +#define RH_UNMAINT_HW "Warning: Unmaintained Hardware is detected: %s:%s\n"
 | ||||||
|  | +
 | ||||||
|  | +#define RH_UNMAINT_DR "Warning: Unmaintained driver is detected: %s\n"
 | ||||||
|  | +
 | ||||||
|  | +#define RH_DEPRECATED_HW "Warning: Deprecated Hardware is detected: %s:%s " \
 | ||||||
|  | +			 "will not be maintained in a future major release " \
 | ||||||
|  | +			 "and may be disabled\n"
 | ||||||
|  | +
 | ||||||
|  | +#define RH_DEPRECATED_DR "Warning: Deprecated Driver is detected: %s will " \
 | ||||||
|  | +			 "not be maintained in a future major release and " \
 | ||||||
|  | +			 "may be disabled\n"
 | ||||||
|  | +
 | ||||||
|  | +#define RH_DISABLED_HW "Warning: Disabled Hardware is detected: %s:%s is " \
 | ||||||
|  | +		       "no longer enabled in this release.\n"
 | ||||||
|  | +
 | ||||||
|  | +#define RH_TECH_PREVIEW "TECH PREVIEW: %s may not be fully supported.\n" \
 | ||||||
|  | +			"Please review provided documentation for " \
 | ||||||
|  | +			"limitations.\n"
 | ||||||
|  | +
 | ||||||
|  | +#define RH_PARTNER_SUPPORTED "Warning: %s is a Partner supported GPL " \
 | ||||||
|  | +			     "module and not supported directly by Red Hat.\n"
 | ||||||
|  | +
 | ||||||
|  | +#if RHEL_MAJOR == 9
 | ||||||
|  | +
 | ||||||
|  | +static const char *rh_deprecated_drivers[] = {
 | ||||||
|  | +	0     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const char *rh_deprecated_init_fns[] = {
 | ||||||
|  | +	0     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const char *rh_unmaintained_drivers[] = {
 | ||||||
|  | +	0     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const char *rh_unmaintained_init_fns[] = {
 | ||||||
|  | +	0     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const struct pci_device_id rh_deprecated_pci_devices[] = {
 | ||||||
|  | +	{0}     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const struct pci_device_id rh_disabled_pci_devices[] = {
 | ||||||
|  | +	{0}     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const struct pci_device_id rh_unmaintained_pci_devices[] = {
 | ||||||
|  | +	{0}     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +#else /* RHEL-10 */
 | ||||||
|  | +
 | ||||||
|  | +static const char *rh_deprecated_drivers[] = {
 | ||||||
|  | +	0     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const char *rh_deprecated_init_fns[] = {
 | ||||||
|  | +	0     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const char *rh_unmaintained_drivers[] = {
 | ||||||
|  | +	0     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const char *rh_unmaintained_init_fns[] = {
 | ||||||
|  | +	0     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const struct pci_device_id rh_deprecated_pci_devices[] = {
 | ||||||
|  | +	{0}     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const struct pci_device_id rh_disabled_pci_devices[] = {
 | ||||||
|  | +	{0}     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static const struct pci_device_id rh_unmaintained_pci_devices[] = {
 | ||||||
|  | +	{0}     /* Terminating entry */
 | ||||||
|  | +};
 | ||||||
|  | +#endif /* RHEL_MAJOR */
 | ||||||
|  | +
 | ||||||
|  | +#endif /* __RH_MESSAGES_H */
 | ||||||
| diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
 | diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
 | ||||||
| index b29b29707f10..e176487ebf1f 100644
 | index b29b29707f10..e176487ebf1f 100644
 | ||||||
| --- a/scripts/mod/modpost.c
 | --- a/scripts/mod/modpost.c
 | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								sources
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								sources
									
									
									
									
									
								
							| @ -1,3 +1,3 @@ | |||||||
| SHA512 (linux-6.5-rc6.tar.xz) = e5ac3513eb366e10cbf27c1b7994fa830626aa20c5fd6ec261b6aee7267c22000ecc31b0ec94d154c864bc361eca5539cad08006f96d6312fd3038dd9727323a | SHA512 (linux-6.5-rc6-27-g91aa6c412d7f.tar.xz) = 0b12eafe62eac159bad74bebcf3e9201bf6a6a3376a69bf508a293c622ac9f5cb1a9bc32430a7fb551d4f9a2bb0b96f0ae0923856b1f919b1021c22b5a95d212 | ||||||
| SHA512 (kernel-abi-stablelists-6.5.0.tar.bz2) = 6107f982f8ee7bb003c3338f39f7be48ea12e7d14fcc99fc193b4ca7e100409de12320451fab7b806b24d661a1937dd53e6a36093563bd3b8405b0834d627add | SHA512 (kernel-abi-stablelists-6.5.0.tar.bz2) = 4237bd59883c06ceb29d3f119260ceff32a22402da3e0e90b181584bbee56af585cd8a1ae9f27937dbb51afd895b507cbe2bf4887812fe64fb1823b5b3ea6d4f | ||||||
| SHA512 (kernel-kabi-dw-6.5.0.tar.bz2) = 2705fa93054d143dce4ee74cfe2e3906c19b97ec7118ad1a95dd18c999929dd66aab267dbdfcf5be71988de0eb5073ce52169d62dd30e491475fab6bddc48a5a | SHA512 (kernel-kabi-dw-6.5.0.tar.bz2) = 3c9b4444bf1fe89cb4a08cfc05999e2b6c4233c254caad3f737e93b7dcfb0b5e6634a284ac368f5c0155564865d36f06d55575c419c03745fbe221ab6a942b3b | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user