Commit a33f2e49 authored by PvsNarasimha's avatar PvsNarasimha
Browse files

genirq/msi: Fix KABI breakage in struct msi_msg and struct apic

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IAU6ZD


CVE: NA

--------------------------------

Fixes KABI breakage caused by replacing struct members with
union fields in msi_msg and also Replace/cleanup struct members
"irq_delivery_mode" with "enum apic_delivery_modes delivery_mode".
in struct apic.Uses _KABI_DEPRECATE and KABI_EXTEND
to resolve issues from commits 4cd15b73 and 15259e4a.

Fixes: 15259e4a ("x86/apic: Cleanup delivery mode defines")
a5e00407 ("x86/apic: Get rid of apic:: Dest_logical")
3d7181f6 ("x86/apic: Cleanup destination mode")
4cd15b73 ("genirq/msi: Allow shadow declarations of msi_msg:: $member")

Signed-off-by: default avatarPvsNarasimha <PVS.NarasimhaRao@amd.com>
parent 1e87de50
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@
#include <asm/msr.h>
#include <asm/hardirq.h>
#include <asm/io.h>
#include <linux/kabi.h>

#define ARCH_APICTIMER_STOPS_ON_C3	1

@@ -298,10 +299,11 @@ struct apic {
	void	(*send_IPI_all)(int vector);
	void	(*send_IPI_self)(int vector);

	_KABI_DEPRECATE(u32, dest_logical);
	u32	disable_esr;

	enum apic_delivery_modes delivery_mode;
	bool	dest_mode_logical;
	_KABI_DEPRECATE(u32, irq_delivery_mode);
	_KABI_DEPRECATE(u32, irq_dest_mode);

	u32	(*calc_dest_apicid)(unsigned int cpu);

@@ -346,6 +348,9 @@ struct apic {
	int (*x86_32_early_logical_apicid)(int cpu);
#endif
	char	*name;

	KABI_EXTEND(enum apic_delivery_modes delivery_mode)
	KABI_EXTEND(bool dest_mode_logical)
};

/*
+9 −6
Original line number Diff line number Diff line
@@ -37,18 +37,21 @@ typedef struct arch_msi_msg_data {
 * @arch_data:		Architecture specific shadow of @data
 */
struct msi_msg {
	union {
	_KABI_DEPRECATE(u32, address_lo);
	_KABI_DEPRECATE(u32, address_hi);
	_KABI_DEPRECATE(u32, data);
	KABI_EXTEND(union {
		u32			address_lo;
		arch_msi_msg_addr_lo_t	arch_addr_lo;
	};
	union {
	})
	KABI_EXTEND(union {
		u32			address_hi;
		arch_msi_msg_addr_hi_t	arch_addr_hi;
	};
	union {
	})
	KABI_EXTEND(union {
		u32			data;
		arch_msi_msg_data_t	arch_data;
	};
	})
};

extern int pci_msi_ignore_mask;