------------------------------------------------------------------------------
Supported Distro list and supported package list
------------------------------------------------------------------------------

################################################################################
SuSE:
################################################################################

x86_64
	SLES 12 SP5
		Gold (4.12.14-120)		(default)

	SLES 15 SP4
		Gold (5.14.21-150400.22)	(default)
	SLES 15 SP4
		Gold (5.14.21-150400.13-rt)	(rt)
	SLES 15 SP5
		Gold (5.14.21-150500.53)	(default)
	SLES 15 SP5
		Gold (5.14.21-150500.11-rt)	(rt)
	SLES 15 SP6
		Gold (6.4.0-150600.21)		(default)
	SLES 15 SP6
		Gold (6.4.0-150600.6-rt)	(rt)


################################################################################
Red Hat:
################################################################################


x86_64

	RHEL8
		Update8 	(4.18.0-477.10.1.el8_8.x86_64)		(el8)
		Update8 RT	(4.18.0-477.10.1.rt7.274.el8_8.x86_64)	(el8)
		Update9 	(4.18.0-513.5.1.el8_9.x86_64)		(el8)
		Update9 RT	(4.18.0-513.5.1.rt7.307.el8_9.x86_64)	(el8)
		Update10 	(4.18.0-553.el8_10.x86_64)		(el8)
		Update10 RT	(4.18.0-553.rt7.342.el8_10.x86_64)	(el8)
	
	RHEL9
		Update2 	(5.14.0-284.11.1.el9_2.x86_64)		(el9)
		Update2 RT 	(5.14.0-284.11.1.rt14.296.el9_2.x86_64)	(el9)
		Update3 	(5.14.0-362.8.1.el9_3.x86_64)		(el9)
		Update3 RT 	(5.14.0-362.8.1.el9_3.x86_64+rt)	(el9)
		Update4 	(5.14.0-427.13.1.el9_4.x86_64)		(el9)
		Update4 RT 	(5.14.0-427.13.1.el9_4.x86_64+rt)	(el9)


################################################################################
Ubuntu:
################################################################################


x86_64
	Ubuntu 22.04 LTS (5.15)
	Ubuntu 24.04 LTS (6.8)


NOTE:
	1. Single source DKMS Deb driver package will work for above mentioned
	   Ubuntu OS releases. Please refer driver README for how to use DKMS
	   deb driver package.

	2. In case of a kernel upgrade, if megaraid_sas driver DMKS module
	   installation fails in the upgraded kernel and if it is due to broken
	   DKMS then inbox driver will be installed in the upgraded kernel.

	
################################################################################
Citrix:
################################################################################


x86_64
	Citrix8.2
		Base (4.19.0+1)


NOTE:
	Only RPM support is provided for Citrix's XenServer/Hypervisor OSes.
	Citrix has changed the DUD (Driver Update Disk) process in XenServer/
	Hypervisor and made it mandatory for ISO images to be signed with GPG
	keys and the GPG public key must be present in the base OS installation
	media.Due to this DUD support is dropped for XenServer/Hypervisor. Also,
	XenServer/Hypervisor OS by default installs out-of-box megaraid_sas driver
	rpm while installing the OS. After installing the OS, user can upgrade to
	the latest Citrix XenServer/Hypervisor megaraid_sas driver rpm provided as
	below,

        # rpm -Uvh avago-megaraid-sas-07.730.00.00_CitrixXen8.2-1.x86_64.rpm


################################################################################
Debian:
################################################################################


x86_64
	Debian 12.6 (6.1.0-23)


NOTE:
	1. source DKMS Deb driver package will work for above-mentioned debian OS
	   release. Please refer to the driver README for instructions on how to
	   use the DKMS deb driver package.

	2. Users should have complete root privileges before installing the driver
	   DKMS package to avoid warnings about "ldconfig" and "start-stop-daemon"
	   not being found in the PATH.

	3. In case of a kernel upgrade, if the megaraid_sas driver DMKS module
	   installation fails in the upgraded kernel due to a broken DKMS, the
	   inbox driver will be installed in the upgraded kernel.

################################################################################
FusionOs:
################################################################################

x86_64
	fos22 (4.19.90-2112.8.0.0131.u32.fos22.x86_64)


################################################################################
Anolis:
################################################################################

x86_64
	anolis8.9  : (5.10.134-16.2.an8.x86_64)
	anolis23.0 : (5.10.134-14.1.an23.x86_64)

aarch64
	anolis8.9  : (5.10.134-16.2.an8.aarch64)
	anolis23.0 : (5.10.134-14.1.an23.aarch64)


################################################################################
OpenCloudOS:
################################################################################

x86_64
	opencloudos8.8 : (5.4.119-20.0009.31)
	opencloudos9.0 : (6.6.6-2401.0.1.oc9.x86_64)

aarch64
	opencloudos8.8 : (5.4.119-20.0009.29)
	opencloudos9.0 : (6.6.6-2401.0.1.oc9.aarch64)


################################################################################
OpenEuler:
################################################################################

x86_64
	openeuler20.03  : (4.19.90-2312.1.0.0255.oe2003sp4.x86_64)
	openeuler22.03  : (5.10.0-182.0.0.95.oe2203sp3.x86_64)

aarch64
	openeuler20.03  : 4.19.90-2312.1.0.0255.oe2003sp4.aarch64
	openeuler22.03  : (5.10.0-182.0.0.95.oe2203sp3.aarch64)



Note the following regarding Anolis, OpenCloudOS and OpenEuler OS:

1. Only source RPM is supported, binary RPM and DUD are not supported.
2. The kmod source RPM, located in the 'kmod_srpm' folder in the release
   tarball should be used.
3. Installation steps for the kmod source RPM remain unchanged.



Few additional notes:
=====================

1. For few distros(e.g.fedora23), while building binary RPM from source RPM, debuginfo package building is mandatory
   but MR build scripts do not have debugfiles.list required to build MR driver's debuginfo RPM. Not having debugfiles.list
   can cause failure to build binary RPM from source RPM. On such distros, while creating binary RPM from source RPM(using rpmbuild)
   use below options-
   #rpmbuild -ba --define "debug_package %{nil}"  file_name.spec

2. Many Linux kernel distribution fails >4MB contiguous memory allocation request on x86 platform. Most of the linux distribution on x86 platform supports
   PAGE_SIZE=4K and max possible physical contiguous memory supported is 4MB (2^10 * PAGE_SIZE). This upper limit (4MB) depends upon architecture and kernel
   configuration (like PAGE_SIZE etc.).
 
   In MegaRaid JBOD personality which supports adapter QD  = ~9k, memory required for IO request frame pool is >4 MB.
   <megaraid_sas> driver will work in reduced QD mode (QD set to 8172) so that corresponding memory requirement for IO request frames is  <= 4MB.
   Below is git commit id of upstream patch which makes driver is reduced QD mode due to >4MB memory can not be allocated-
  
   e97e673 scsi: megaraid_sas: Retry with reduced queue depth when alloc fails for higher QD 
  
 
   In newer kernels, CMA (contiguous memory allocator) feature can be used to allocate large physical contiguous memory. 
   CMA can be enabled by adding cma=xxxx in grub entry of kernel. This will reserve some memory reserved for larger memory allocations on boot time. 
   Once grub file is edited, reboot the system and check for CmaTotal in output of cat /proc/meminfo it should reflect memory reserved
   in grub config file.
   e.g. If cma=16M is set in grub config file(menu.lst/grub.cfg), then CmaTotal should be set as below- 
  # cat /proc/meminfo 
  --
  --
  CmaTotal:          16384 kB
  CmaFree:               0 kB
  --
 
  For more details on CMA refer to this link- https://lwn.net/Articles/486301/

3. List of megaraid_sas driver binaries with retpoline support

   Driver binaries for below OS versions have retpoline support built using "thunk-extern" GCC option
   as the GA kernels itself have retpoline support enabled:
       - RHEL8.x and RHEL9.x releases that are supported
       - SLES15.x releases that are supported
       - SLES12 SP5 GA and any future SLES12 Service Pack releases that are supported
       - Ubuntu 22.04 LTS and any future Ubuntu LTS releases that are supported
       - Debian 12.6 and any future Debian releases that are supported

   In output of "modinfo megaraid_sas.ko", "retpoline:   Y" indicates compiled driver module is retpoline compliant.

4. Some information on driver binaries built for OS GA kernels which does not have retpoline support:
    1. For those OS where GA kernel does not have retpoline support, if OSV has released updated GCC
       package, in that case driver binaries will be built using "thunk-inline" GCC option.
       Refer above list for OS GA versions where retpoline support is currently available.
    2. In this case, both driver RPMs and DUDs are compiled with GCC option:
       "-mindirect-branch=thunk-inline -mindirect-branch-register"
       They are safe from Spectre v2 vulnerabilities.
    3. "modinfo megaraid_sas.ko" will show "retpoline :Y" for driver module built with retpoline support. 
    4. Retpoline kernels have "CONFIG_RETPOLINE=y" in kernel config file.
    5. Driver binaries (both DUD and RPM) will work for both OS GA as well as retpoline kernels.

5. Only RPM will be provided in the release package for all the supported RT kernels.

6. Ubuntu 24.04 LTS triggers a UBSAN warning for an out-of-bounds array index upon megaraid_sas driver load.
   However, this warning has no functional impact and can be safely ignored as a false positive.

   UBSAN warning message snippet:

	UBSAN: array-index-out-of-bounds in ./arch/x86/include/asm/topology.h
	index -1 is out of range for type 'cpumask *[1024]'
	
   Stack trace snippet:

	dump_stack+0x10/0x20
	__ubsan_handle_out_of_bounds+0xc6/0x110
	megasas_alloc_irq_vectors+0x223/0x230 [megaraid_sas]
	? srso_return_thunk+0x5/0x5f
	megasas_probe_one+0x94e/0x2050 [megaraid_sas]

   The UBSAN warning will only occur if the system lacks support for NUMA architecture or if the device is not
   associated with any NUMA node.
