+++ /dev/null
-From 78cbc9a916e025099cbd2575c23e96ab651b20cc Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 19 Sep 2020 16:21:53 -0400
-Subject: drm/amdgpu/atomfirmware: Add edp and integrated info v2.1 tables
-
-From: Roman Li <Roman.Li@amd.com>
-
-[ Upstream commit b9d90cb031c488d77a47084a009655d235e3d765 ]
-
-Required for vangogh.
-
-Signed-off-by: Roman Li <Roman.Li@amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-Reviewed-by: Harry Wentland <harry.wentland@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Stable-dep-of: e64e8f7c178e ("drm/amdgpu/atomfirmware: add intergrated info v2.3 table")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/amd/include/atomfirmware.h | 62 +++++++++++++++++++++-
- 1 file changed, 61 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h
-index 0799a9ca04401..4eb578b1baef1 100644
---- a/drivers/gpu/drm/amd/include/atomfirmware.h
-+++ b/drivers/gpu/drm/amd/include/atomfirmware.h
-@@ -1304,11 +1304,71 @@ struct atom_integrated_system_info_v1_12
- struct atom_hdmi_retimer_redriver_set dp3_retimer_set; //for DP3
- struct atom_DCN_dpphy_dp_tuningset hbr_tuningset; //hbr 2.7G dp tuning set
- struct atom_DCN_dpphy_dp_tuningset hbr2_tuningset; //hbr2 5.4G dp turnig set
-- struct atom_DCN_dpphy_dp_tuningset edp_tunings; //edp tuning set
-+ struct atom_DCN_dpphy_dp_tuningset edp_tunings; //edp tuning set
- struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK6_tuningset;
- uint32_t reserved[63];
- };
-
-+
-+#if defined(CONFIG_DRM_AMD_DC_DCN3_01)
-+
-+struct edp_info_table
-+{
-+ uint16_t edp_backlight_pwm_hz;
-+ uint16_t edp_ss_percentage;
-+ uint16_t edp_ss_rate_10hz;
-+ uint16_t reserved1;
-+ uint32_t reserved2;
-+ uint8_t edp_pwr_on_off_delay;
-+ uint8_t edp_pwr_on_vary_bl_to_blon;
-+ uint8_t edp_pwr_down_bloff_to_vary_bloff;
-+ uint8_t edp_panel_bpc;
-+ uint8_t edp_bootup_bl_level;
-+ uint8_t reserved3[3];
-+ uint32_t reserved4[3];
-+};
-+
-+struct atom_integrated_system_info_v2_1
-+{
-+ struct atom_common_table_header table_header;
-+ uint32_t vbios_misc; //enum of atom_system_vbiosmisc_def
-+ uint32_t gpucapinfo; //enum of atom_system_gpucapinf_def
-+ uint32_t system_config;
-+ uint32_t cpucapinfo;
-+ uint16_t gpuclk_ss_percentage; //unit of 0.001%, 1000 mean 1%
-+ uint16_t gpuclk_ss_type;
-+ uint16_t dpphy_override; // bit vector, enum of atom_sysinfo_dpphy_override_def
-+ uint8_t memorytype; // enum of atom_dmi_t17_mem_type_def, APU memory type indication.
-+ uint8_t umachannelnumber; // number of memory channels
-+ uint8_t htc_hyst_limit;
-+ uint8_t htc_tmp_limit;
-+ uint8_t reserved1;
-+ uint8_t reserved2;
-+ struct edp_info_table edp1_info;
-+ struct edp_info_table edp2_info;
-+ uint32_t reserved3[8];
-+ struct atom_external_display_connection_info extdispconninfo;
-+ struct atom_DCN_dpphy_dvihdmi_tuningset TMDS_tuningset;
-+ struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK5_tuningset; //add clk6
-+ struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK6_tuningset;
-+ struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK8_tuningset;
-+ uint32_t reserved4[6];//reserve 2*sizeof(atom_DCN_dpphy_dvihdmi_tuningset)
-+ struct atom_DCN_dpphy_dp_tuningset rbr_tuningset; // rbr 1.62G dp tuning set
-+ struct atom_DCN_dpphy_dp_tuningset hbr_tuningset; //hbr 2.7G dp tuning set
-+ struct atom_DCN_dpphy_dp_tuningset hbr2_tuningset; //hbr2 5.4G dp turnig set
-+ struct atom_DCN_dpphy_dp_tuningset hbr3_tuningset; // HBR3 dp tuning set
-+ struct atom_DCN_dpphy_dp_tuningset edp_tunings; //edp tuning set
-+ uint32_t reserved5[28];//reserve 2*sizeof(atom_DCN_dpphy_dp_tuningset)
-+ struct atom_hdmi_retimer_redriver_set dp0_retimer_set; //for DP0
-+ struct atom_hdmi_retimer_redriver_set dp1_retimer_set; //for DP1
-+ struct atom_hdmi_retimer_redriver_set dp2_retimer_set; //for DP2
-+ struct atom_hdmi_retimer_redriver_set dp3_retimer_set; //for DP3
-+ uint32_t reserved6[30];// reserve size of(atom_camera_data) for camera_info
-+ uint32_t reserved7[32];
-+
-+};
-+#endif
-+
- // system_config
- enum atom_system_vbiosmisc_def{
- INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT = 0x01,
---
-2.43.0
-
+++ /dev/null
-From 932a1db41ed0a5e087fc7d9ca22b94e03948c132 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 20 May 2024 18:43:55 +0800
-Subject: drm/amdgpu/atomfirmware: add intergrated info v2.3 table
-
-From: Li Ma <li.ma@amd.com>
-
-[ Upstream commit e64e8f7c178e5228e0b2dbb504b9dc75953a319f ]
-
-[Why]
-The vram width value is 0.
-Because the integratedsysteminfo table in VBIOS has updated to 2.3.
-
-[How]
-Driver needs a new intergrated info v2.3 table too.
-Then the vram width value will be correct.
-
-Signed-off-by: Li Ma <li.ma@amd.com>
-Reviewed-by: Yifan Zhang <yifan1.zhang@amd.com>
-Acked-by: Alex Deucher <alexander.deucher@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Cc: stable@vger.kernel.org
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- .../gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 15 +++++++
- drivers/gpu/drm/amd/include/atomfirmware.h | 43 +++++++++++++++++++
- 2 files changed, 58 insertions(+)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
-index c5ebf8ee66bc4..f71fbdc02e111 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
-@@ -113,6 +113,7 @@ union igp_info {
- struct atom_integrated_system_info_v1_11 v11;
- struct atom_integrated_system_info_v1_12 v12;
- struct atom_integrated_system_info_v2_1 v21;
-+ struct atom_integrated_system_info_v2_3 v23;
- };
-
- union umc_info {
-@@ -239,6 +240,20 @@ amdgpu_atomfirmware_get_vram_info(struct amdgpu_device *adev,
- if (vram_type)
- *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type);
- break;
-+ case 3:
-+ mem_channel_number = igp_info->v23.umachannelnumber;
-+ if (!mem_channel_number)
-+ mem_channel_number = 1;
-+ mem_type = igp_info->v23.memorytype;
-+ if (mem_type == LpDdr5MemType)
-+ mem_channel_width = 32;
-+ else
-+ mem_channel_width = 64;
-+ if (vram_width)
-+ *vram_width = mem_channel_number * mem_channel_width;
-+ if (vram_type)
-+ *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type);
-+ break;
- default:
- return -EINVAL;
- }
-diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h
-index c7cfe9d9096dc..7465f84ba5664 100644
---- a/drivers/gpu/drm/amd/include/atomfirmware.h
-+++ b/drivers/gpu/drm/amd/include/atomfirmware.h
-@@ -1419,6 +1419,49 @@ struct atom_integrated_system_info_v2_2
- uint32_t reserved4[189];
- };
-
-+struct uma_carveout_option {
-+ char optionName[29]; //max length of string is 28chars + '\0'. Current design is for "minimum", "Medium", "High". This makes entire struct size 64bits
-+ uint8_t memoryCarvedGb; //memory carved out with setting
-+ uint8_t memoryRemainingGb; //memory remaining on system
-+ union {
-+ struct _flags {
-+ uint8_t Auto : 1;
-+ uint8_t Custom : 1;
-+ uint8_t Reserved : 6;
-+ } flags;
-+ uint8_t all8;
-+ } uma_carveout_option_flags;
-+};
-+
-+struct atom_integrated_system_info_v2_3 {
-+ struct atom_common_table_header table_header;
-+ uint32_t vbios_misc; // enum of atom_system_vbiosmisc_def
-+ uint32_t gpucapinfo; // enum of atom_system_gpucapinf_def
-+ uint32_t system_config;
-+ uint32_t cpucapinfo;
-+ uint16_t gpuclk_ss_percentage; // unit of 0.001%, 1000 mean 1%
-+ uint16_t gpuclk_ss_type;
-+ uint16_t dpphy_override; // bit vector, enum of atom_sysinfo_dpphy_override_def
-+ uint8_t memorytype; // enum of atom_dmi_t17_mem_type_def, APU memory type indication.
-+ uint8_t umachannelnumber; // number of memory channels
-+ uint8_t htc_hyst_limit;
-+ uint8_t htc_tmp_limit;
-+ uint8_t reserved1; // dp_ss_control
-+ uint8_t gpu_package_id;
-+ struct edp_info_table edp1_info;
-+ struct edp_info_table edp2_info;
-+ uint32_t reserved2[8];
-+ struct atom_external_display_connection_info extdispconninfo;
-+ uint8_t UMACarveoutVersion;
-+ uint8_t UMACarveoutIndexMax;
-+ uint8_t UMACarveoutTypeDefault;
-+ uint8_t UMACarveoutIndexDefault;
-+ uint8_t UMACarveoutType; //Auto or Custom
-+ uint8_t UMACarveoutIndex;
-+ struct uma_carveout_option UMASizeControlOption[20];
-+ uint8_t reserved3[110];
-+};
-+
- // system_config
- enum atom_system_vbiosmisc_def{
- INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT = 0x01,
---
-2.43.0
-
+++ /dev/null
-From 0e0594d117ca71ec4d4017b17d20160c871c64c8 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 16 Oct 2020 11:42:00 -0400
-Subject: drm/amdgpu: drop CONFIG_DRM_AMD_DC_DCN3_01 from atomfirmware.h
-
-From: Alex Deucher <alexander.deucher@amd.com>
-
-[ Upstream commit 15047bd436a763dd2ddf8e1024b4e25af9cc11ee ]
-
-Not needed.
-
-Reviewed-by: Luben Tuikov <luben.tuikov@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Stable-dep-of: e64e8f7c178e ("drm/amdgpu/atomfirmware: add intergrated info v2.3 table")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/amd/include/atomfirmware.h | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h
-index 4eb578b1baef1..6139d10f4289d 100644
---- a/drivers/gpu/drm/amd/include/atomfirmware.h
-+++ b/drivers/gpu/drm/amd/include/atomfirmware.h
-@@ -1309,9 +1309,6 @@ struct atom_integrated_system_info_v1_12
- uint32_t reserved[63];
- };
-
--
--#if defined(CONFIG_DRM_AMD_DC_DCN3_01)
--
- struct edp_info_table
- {
- uint16_t edp_backlight_pwm_hz;
-@@ -1367,7 +1364,6 @@ struct atom_integrated_system_info_v2_1
- uint32_t reserved7[32];
-
- };
--#endif
-
- // system_config
- enum atom_system_vbiosmisc_def{
---
-2.43.0
-
+++ /dev/null
-From 5bbed97f73987016b4f084c882125bc76c7fca74 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 13 Jan 2021 20:13:17 +0800
-Subject: drm/amdgpu: fix vram type and bandwidth error for DDR5 and DDR4
-
-From: Huang Rui <ray.huang@amd.com>
-
-[ Upstream commit 78683229ddeef56ba62e4b680c6394ea97f88d6c ]
-
-This patch is to update atomfirmware parser for the memory type and
-bandwidth of DDR5 and DDR4.
-
-Signed-off-by: Huang Rui <ray.huang@amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Stable-dep-of: e64e8f7c178e ("drm/amdgpu/atomfirmware: add intergrated info v2.3 table")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- .../gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 53 +++++++++++++------
- 1 file changed, 36 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
-index b4df6460e45a9..c5ebf8ee66bc4 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
-@@ -112,6 +112,7 @@ int amdgpu_atomfirmware_allocate_fb_scratch(struct amdgpu_device *adev)
- union igp_info {
- struct atom_integrated_system_info_v1_11 v11;
- struct atom_integrated_system_info_v1_12 v12;
-+ struct atom_integrated_system_info_v2_1 v21;
- };
-
- union umc_info {
-@@ -205,24 +206,42 @@ amdgpu_atomfirmware_get_vram_info(struct amdgpu_device *adev,
- if (adev->flags & AMD_IS_APU) {
- igp_info = (union igp_info *)
- (mode_info->atom_context->bios + data_offset);
-- switch (crev) {
-- case 11:
-- mem_channel_number = igp_info->v11.umachannelnumber;
-- /* channel width is 64 */
-- if (vram_width)
-- *vram_width = mem_channel_number * 64;
-- mem_type = igp_info->v11.memorytype;
-- if (vram_type)
-- *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type);
-+ switch (frev) {
-+ case 1:
-+ switch (crev) {
-+ case 11:
-+ case 12:
-+ mem_channel_number = igp_info->v11.umachannelnumber;
-+ if (!mem_channel_number)
-+ mem_channel_number = 1;
-+ /* channel width is 64 */
-+ if (vram_width)
-+ *vram_width = mem_channel_number * 64;
-+ mem_type = igp_info->v11.memorytype;
-+ if (vram_type)
-+ *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
- break;
-- case 12:
-- mem_channel_number = igp_info->v12.umachannelnumber;
-- /* channel width is 64 */
-- if (vram_width)
-- *vram_width = mem_channel_number * 64;
-- mem_type = igp_info->v12.memorytype;
-- if (vram_type)
-- *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type);
-+ case 2:
-+ switch (crev) {
-+ case 1:
-+ case 2:
-+ mem_channel_number = igp_info->v21.umachannelnumber;
-+ if (!mem_channel_number)
-+ mem_channel_number = 1;
-+ /* channel width is 64 */
-+ if (vram_width)
-+ *vram_width = mem_channel_number * 64;
-+ mem_type = igp_info->v21.memorytype;
-+ if (vram_type)
-+ *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
- break;
- default:
- return -EINVAL;
---
-2.43.0
-
+++ /dev/null
-From 75053bfdbb4d78694076e47c1e13fef25084a7bf Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 19 May 2021 10:38:47 -0400
-Subject: drm/amdgpu: Update atomfirmware for DCN3.1 phy tuning and eDP caps
-
-From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
-
-[ Upstream commit 753625643e218eb72a6e7b7df87db595a446931a ]
-
-[Why & How]
-We'll need these in driver for phy tuning in DCN3.1.
-
-Multiple eDP support also requires understanding which LCD the backlight
-curve in atombios is for.
-
-Acked-by: Huang Rui <ray.huang@amd.com>
-Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Stable-dep-of: e64e8f7c178e ("drm/amdgpu/atomfirmware: add intergrated info v2.3 table")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/amd/include/atomfirmware.h | 56 +++++++++++++++++++++-
- 1 file changed, 55 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h
-index 6139d10f4289d..c7cfe9d9096dc 100644
---- a/drivers/gpu/drm/amd/include/atomfirmware.h
-+++ b/drivers/gpu/drm/amd/include/atomfirmware.h
-@@ -871,7 +871,8 @@ struct atom_bracket_layout_record
- };
-
- enum atom_display_device_tag_def{
-- ATOM_DISPLAY_LCD1_SUPPORT = 0x0002, //an embedded display is either an LVDS or eDP signal type of display
-+ ATOM_DISPLAY_LCD1_SUPPORT = 0x0002, //an embedded display is either an LVDS or eDP signal type of display
-+ ATOM_DISPLAY_LCD2_SUPPORT = 0x0020, //second edp device tag 0x0020 for backward compability
- ATOM_DISPLAY_DFP1_SUPPORT = 0x0008,
- ATOM_DISPLAY_DFP2_SUPPORT = 0x0080,
- ATOM_DISPLAY_DFP3_SUPPORT = 0x0200,
-@@ -1365,6 +1366,59 @@ struct atom_integrated_system_info_v2_1
-
- };
-
-+struct atom_n6_display_phy_tuning_set {
-+ uint8_t display_signal_type;
-+ uint8_t phy_sel;
-+ uint8_t preset_level;
-+ uint8_t reserved1;
-+ uint32_t reserved2;
-+ uint32_t speed_upto;
-+ uint8_t tx_vboost_level;
-+ uint8_t tx_vreg_v2i;
-+ uint8_t tx_vregdrv_byp;
-+ uint8_t tx_term_cntl;
-+ uint8_t tx_peak_level;
-+ uint8_t tx_slew_en;
-+ uint8_t tx_eq_pre;
-+ uint8_t tx_eq_main;
-+ uint8_t tx_eq_post;
-+ uint8_t tx_en_inv_pre;
-+ uint8_t tx_en_inv_post;
-+ uint8_t reserved3;
-+ uint32_t reserved4;
-+ uint32_t reserved5;
-+ uint32_t reserved6;
-+};
-+
-+struct atom_display_phy_tuning_info {
-+ struct atom_common_table_header table_header;
-+ struct atom_n6_display_phy_tuning_set disp_phy_tuning[1];
-+};
-+
-+struct atom_integrated_system_info_v2_2
-+{
-+ struct atom_common_table_header table_header;
-+ uint32_t vbios_misc; //enum of atom_system_vbiosmisc_def
-+ uint32_t gpucapinfo; //enum of atom_system_gpucapinf_def
-+ uint32_t system_config;
-+ uint32_t cpucapinfo;
-+ uint16_t gpuclk_ss_percentage; //unit of 0.001%, 1000 mean 1%
-+ uint16_t gpuclk_ss_type;
-+ uint16_t dpphy_override; // bit vector, enum of atom_sysinfo_dpphy_override_def
-+ uint8_t memorytype; // enum of atom_dmi_t17_mem_type_def, APU memory type indication.
-+ uint8_t umachannelnumber; // number of memory channels
-+ uint8_t htc_hyst_limit;
-+ uint8_t htc_tmp_limit;
-+ uint8_t reserved1;
-+ uint8_t reserved2;
-+ struct edp_info_table edp1_info;
-+ struct edp_info_table edp2_info;
-+ uint32_t reserved3[8];
-+ struct atom_external_display_connection_info extdispconninfo;
-+
-+ uint32_t reserved4[189];
-+};
-+
- // system_config
- enum atom_system_vbiosmisc_def{
- INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT = 0x01,
---
-2.43.0
-
+++ /dev/null
-From db94fa5f8f6d8f6f19747a278de06dabfebd8a53 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 28 Aug 2020 17:50:33 +0800
-Subject: drm/amdgpu: update new memory types in atomfirmware header
-
-From: Huang Rui <ray.huang@amd.com>
-
-[ Upstream commit af118ed9ef9fc6c6cc37f2db3d4aa2b66b2c4335 ]
-
-Add new nemory types in atomfirmware header.
-
-Signed-off-by: Huang Rui <ray.huang@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Stable-dep-of: e64e8f7c178e ("drm/amdgpu/atomfirmware: add intergrated info v2.3 table")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/amd/include/atomfirmware.h | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h
-index 3e526c394f6cb..0799a9ca04401 100644
---- a/drivers/gpu/drm/amd/include/atomfirmware.h
-+++ b/drivers/gpu/drm/amd/include/atomfirmware.h
-@@ -1367,6 +1367,11 @@ enum atom_dmi_t17_mem_type_def{
- LpDdr2MemType, ///< Assign 28 to LPDDR2
- LpDdr3MemType, ///< Assign 29 to LPDDR3
- LpDdr4MemType, ///< Assign 30 to LPDDR4
-+ GDdr6MemType, ///< Assign 31 to GDDR6
-+ HbmMemType, ///< Assign 32 to HBM
-+ Hbm2MemType, ///< Assign 33 to HBM2
-+ Ddr5MemType, ///< Assign 34 to DDR5
-+ LpDdr5MemType, ///< Assign 35 to LPDDR5
- };
-
-
---
-2.43.0
-
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
- drivers/net/ethernet/qualcomm/qca_debug.c | 6 ++----
- drivers/net/ethernet/qualcomm/qca_spi.c | 16 ++++++++--------
- drivers/net/ethernet/qualcomm/qca_spi.h | 3 +--
+ drivers/net/ethernet/qualcomm/qca_debug.c | 6 ++----
+ drivers/net/ethernet/qualcomm/qca_spi.c | 16 ++++++++--------
+ drivers/net/ethernet/qualcomm/qca_spi.h | 3 +--
3 files changed, 11 insertions(+), 14 deletions(-)
-diff --git a/drivers/net/ethernet/qualcomm/qca_debug.c b/drivers/net/ethernet/qualcomm/qca_debug.c
-index 66229b300c5a4..c205d3f036961 100644
--- a/drivers/net/ethernet/qualcomm/qca_debug.c
+++ b/drivers/net/ethernet/qualcomm/qca_debug.c
-@@ -110,10 +110,8 @@ qcaspi_info_show(struct seq_file *s, void *what)
+@@ -110,10 +110,8 @@ qcaspi_info_show(struct seq_file *s, voi
seq_printf(s, "IRQ : %d\n",
qca->spi_dev->irq);
seq_printf(s, "SPI max speed : %lu\n",
(unsigned long)qca->spi_dev->max_speed_hz);
-diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
-index 336e5d185f5fe..4978dd4aba3cb 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -49,6 +49,8 @@
- qca->intr_req++;
+ set_bit(SPI_INTR, &qca->intr);
- if (qca->spi_thread)
+ if (qca->spi_thread &&
+ qca->spi_thread->state != TASK_RUNNING)
wake_up_process(qca->spi_thread);
-
-@@ -685,8 +686,7 @@ qcaspi_netdev_open(struct net_device *dev)
+@@ -686,8 +687,7 @@ qcaspi_netdev_open(struct net_device *de
if (!qca)
return -EINVAL;
qca->sync = QCASPI_SYNC_UNKNOWN;
qcafrm_fsm_init_spi(&qca->frm_handle);
-diff --git a/drivers/net/ethernet/qualcomm/qca_spi.h b/drivers/net/ethernet/qualcomm/qca_spi.h
-index d13a67e20d650..8d4767e9b9149 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.h
+++ b/drivers/net/ethernet/qualcomm/qca_spi.h
@@ -92,8 +92,7 @@ struct qcaspi {
u16 reset_count;
#ifdef CONFIG_DEBUG_FS
---
-2.43.0
-
+++ /dev/null
-From 4f0014a293620a6305d7d0c2450846d3e731a1d0 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 3 Oct 2020 20:20:05 -0300
-Subject: RDMA: Check srq_type during create_srq
-
-From: Jason Gunthorpe <jgg@nvidia.com>
-
-[ Upstream commit 652caba5b5501258a46d4b9279e0dbb6e5d42d75 ]
-
-uverbs was blocking srq_types the driver doesn't support based on the
-CREATE_XSRQ cmd_mask. Fix all drivers to check for supported srq_types
-during create_srq and move CREATE_XSRQ to the core code.
-
-Link: https://lore.kernel.org/r/5-v1-caa70ba3d1ab+1436e-ucmd_mask_jgg@nvidia.com
-Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
-Stable-dep-of: 36ab7ada64ca ("RDMA/mlx5: Add check for srq max_sge attribute")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/infiniband/core/device.c | 1 +
- drivers/infiniband/hw/cxgb4/qp.c | 3 +++
- drivers/infiniband/hw/hns/hns_roce_srq.c | 4 ++++
- drivers/infiniband/hw/mlx4/main.c | 3 ---
- drivers/infiniband/hw/mlx4/srq.c | 4 ++++
- drivers/infiniband/hw/mlx5/main.c | 3 +--
- drivers/infiniband/hw/mlx5/srq.c | 5 +++++
- drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 3 +++
- drivers/infiniband/hw/qedr/main.c | 3 ---
- drivers/infiniband/hw/qedr/verbs.c | 4 ++++
- drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c | 2 +-
- drivers/infiniband/sw/rxe/rxe_verbs.c | 3 +++
- drivers/infiniband/sw/siw/siw_verbs.c | 3 +++
- 13 files changed, 32 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
-index b3c97f4f93b9f..1ceb9fe9382a9 100644
---- a/drivers/infiniband/core/device.c
-+++ b/drivers/infiniband/core/device.c
-@@ -610,6 +610,7 @@ struct ib_device *_ib_alloc_device(size_t size)
- BIT_ULL(IB_USER_VERBS_CMD_CREATE_CQ) |
- BIT_ULL(IB_USER_VERBS_CMD_CREATE_QP) |
- BIT_ULL(IB_USER_VERBS_CMD_CREATE_SRQ) |
-+ BIT_ULL(IB_USER_VERBS_CMD_CREATE_XSRQ) |
- BIT_ULL(IB_USER_VERBS_CMD_DEALLOC_MW) |
- BIT_ULL(IB_USER_VERBS_CMD_DEALLOC_PD) |
- BIT_ULL(IB_USER_VERBS_CMD_DEREG_MR) |
-diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
-index 12e5461581cb4..fb361bf9a0cef 100644
---- a/drivers/infiniband/hw/cxgb4/qp.c
-+++ b/drivers/infiniband/hw/cxgb4/qp.c
-@@ -2682,6 +2682,9 @@ int c4iw_create_srq(struct ib_srq *ib_srq, struct ib_srq_init_attr *attrs,
- int ret;
- int wr_len;
-
-+ if (attrs->srq_type != IB_SRQT_BASIC)
-+ return -EOPNOTSUPP;
-+
- pr_debug("%s ib_pd %p\n", __func__, pd);
-
- php = to_c4iw_pd(pd);
-diff --git a/drivers/infiniband/hw/hns/hns_roce_srq.c b/drivers/infiniband/hw/hns/hns_roce_srq.c
-index 02e2416b5fed6..b9d5d5cf10ad3 100644
---- a/drivers/infiniband/hw/hns/hns_roce_srq.c
-+++ b/drivers/infiniband/hw/hns/hns_roce_srq.c
-@@ -292,6 +292,10 @@ int hns_roce_create_srq(struct ib_srq *ib_srq,
- int ret;
- u32 cqn;
-
-+ if (init_attr->srq_type != IB_SRQT_BASIC &&
-+ init_attr->srq_type != IB_SRQT_XRC)
-+ return -EOPNOTSUPP;
-+
- /* Check the actual SRQ wqe and SRQ sge num */
- if (init_attr->attr.max_wr >= hr_dev->caps.max_srq_wrs ||
- init_attr->attr.max_sge > hr_dev->caps.max_srq_sges)
-diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
-index 300a0a7827388..77ac0289eef12 100644
---- a/drivers/infiniband/hw/mlx4/main.c
-+++ b/drivers/infiniband/hw/mlx4/main.c
-@@ -2654,9 +2654,6 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
- ibdev->ib_dev.num_comp_vectors = dev->caps.num_comp_vectors;
- ibdev->ib_dev.dev.parent = &dev->persist->pdev->dev;
-
-- ibdev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_CREATE_XSRQ);
--
- ib_set_device_ops(&ibdev->ib_dev, &mlx4_ib_dev_ops);
- ibdev->ib_dev.uverbs_ex_cmd_mask |=
- (1ull << IB_USER_VERBS_EX_CMD_CREATE_CQ) |
-diff --git a/drivers/infiniband/hw/mlx4/srq.c b/drivers/infiniband/hw/mlx4/srq.c
-index bf618529e734d..6a381751c0d8e 100644
---- a/drivers/infiniband/hw/mlx4/srq.c
-+++ b/drivers/infiniband/hw/mlx4/srq.c
-@@ -86,6 +86,10 @@ int mlx4_ib_create_srq(struct ib_srq *ib_srq,
- int err;
- int i;
-
-+ if (init_attr->srq_type != IB_SRQT_BASIC &&
-+ init_attr->srq_type != IB_SRQT_XRC)
-+ return -EOPNOTSUPP;
-+
- /* Sanity check SRQ size before proceeding */
- if (init_attr->attr.max_wr >= dev->dev->caps.max_srq_wqes ||
- init_attr->attr.max_sge > dev->dev->caps.max_srq_sge)
-diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
-index 73b46414ddafe..112081c38cb2b 100644
---- a/drivers/infiniband/hw/mlx5/main.c
-+++ b/drivers/infiniband/hw/mlx5/main.c
-@@ -4155,8 +4155,7 @@ static int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev)
-
- dev->ib_dev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_CREATE_AH) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_AH) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_XSRQ);
-+ (1ull << IB_USER_VERBS_CMD_DESTROY_AH);
- dev->ib_dev.uverbs_ex_cmd_mask |=
- (1ull << IB_USER_VERBS_EX_CMD_CREATE_CQ) |
- (1ull << IB_USER_VERBS_EX_CMD_CREATE_QP) |
-diff --git a/drivers/infiniband/hw/mlx5/srq.c b/drivers/infiniband/hw/mlx5/srq.c
-index e2f720eec1e18..12d485872e771 100644
---- a/drivers/infiniband/hw/mlx5/srq.c
-+++ b/drivers/infiniband/hw/mlx5/srq.c
-@@ -226,6 +226,11 @@ int mlx5_ib_create_srq(struct ib_srq *ib_srq,
- struct mlx5_srq_attr in = {};
- __u32 max_srq_wqes = 1 << MLX5_CAP_GEN(dev->mdev, log_max_srq_sz);
-
-+ if (init_attr->srq_type != IB_SRQT_BASIC &&
-+ init_attr->srq_type != IB_SRQT_XRC &&
-+ init_attr->srq_type != IB_SRQT_TM)
-+ return -EOPNOTSUPP;
-+
- /* Sanity check SRQ size before proceeding */
- if (init_attr->attr.max_wr >= max_srq_wqes) {
- mlx5_ib_dbg(dev, "max_wr %d, cap %d\n",
-diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
-index 81a560056cd52..9d047675947fd 100644
---- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
-+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
-@@ -1770,6 +1770,9 @@ int ocrdma_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init_attr,
- struct ocrdma_dev *dev = get_ocrdma_dev(ibsrq->device);
- struct ocrdma_srq *srq = get_ocrdma_srq(ibsrq);
-
-+ if (init_attr->srq_type != IB_SRQT_BASIC)
-+ return -EOPNOTSUPP;
-+
- if (init_attr->attr.max_sge > dev->attr.max_recv_sge)
- return -EINVAL;
- if (init_attr->attr.max_wr > dev->attr.max_rqe)
-diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c
-index e30edbaa30399..ad4a4b431258d 100644
---- a/drivers/infiniband/hw/qedr/main.c
-+++ b/drivers/infiniband/hw/qedr/main.c
-@@ -188,9 +188,6 @@ static void qedr_roce_register_device(struct qedr_dev *dev)
- dev->ibdev.node_type = RDMA_NODE_IB_CA;
-
- ib_set_device_ops(&dev->ibdev, &qedr_roce_dev_ops);
--
-- dev->ibdev.uverbs_cmd_mask |=
-- QEDR_UVERBS(CREATE_XSRQ);
- }
-
- static const struct ib_device_ops qedr_dev_ops = {
-diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
-index d382ac21159c2..f8c35bdb55752 100644
---- a/drivers/infiniband/hw/qedr/verbs.c
-+++ b/drivers/infiniband/hw/qedr/verbs.c
-@@ -1547,6 +1547,10 @@ int qedr_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init_attr,
- "create SRQ called from %s (pd %p)\n",
- (udata) ? "User lib" : "kernel", pd);
-
-+ if (init_attr->srq_type != IB_SRQT_BASIC &&
-+ init_attr->srq_type != IB_SRQT_XRC)
-+ return -EOPNOTSUPP;
-+
- rc = qedr_check_srq_params(dev, init_attr, udata);
- if (rc)
- return -EINVAL;
-diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c
-index 082208f9aa900..bdc2703532c6c 100644
---- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c
-+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c
-@@ -121,7 +121,7 @@ int pvrdma_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init_attr,
- dev_warn(&dev->pdev->dev,
- "shared receive queue type %d not supported\n",
- init_attr->srq_type);
-- return -EINVAL;
-+ return -EOPNOTSUPP;
- }
-
- if (init_attr->attr.max_wr > dev->dsr->caps.max_srq_wr ||
-diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
-index 641373241dbe5..1bec084fe2f8b 100644
---- a/drivers/infiniband/sw/rxe/rxe_verbs.c
-+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
-@@ -265,6 +265,9 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
- struct rxe_srq *srq = to_rsrq(ibsrq);
- struct rxe_create_srq_resp __user *uresp = NULL;
-
-+ if (init->srq_type != IB_SRQT_BASIC)
-+ return -EOPNOTSUPP;
-+
- if (udata) {
- if (udata->outlen < sizeof(*uresp))
- return -EINVAL;
-diff --git a/drivers/infiniband/sw/siw/siw_verbs.c b/drivers/infiniband/sw/siw/siw_verbs.c
-index 1d4e0dc550e42..ae4619d055374 100644
---- a/drivers/infiniband/sw/siw/siw_verbs.c
-+++ b/drivers/infiniband/sw/siw/siw_verbs.c
-@@ -1592,6 +1592,9 @@ int siw_create_srq(struct ib_srq *base_srq,
- base_ucontext);
- int rv;
-
-+ if (init_attrs->srq_type != IB_SRQT_BASIC)
-+ return -EOPNOTSUPP;
-+
- if (atomic_inc_return(&sdev->num_srq) > SIW_MAX_SRQ) {
- siw_dbg_pd(base_srq->pd, "too many SRQ's\n");
- rv = -ENOMEM;
---
-2.43.0
-
--- a/drivers/infiniband/hw/mlx5/srq.c
+++ b/drivers/infiniband/hw/mlx5/srq.c
-@@ -225,17 +225,20 @@ int mlx5_ib_create_srq(struct ib_srq *ib
+@@ -225,12 +225,15 @@ int mlx5_ib_create_srq(struct ib_srq *ib
int err;
struct mlx5_srq_attr in = {};
__u32 max_srq_wqes = 1 << MLX5_CAP_GEN(dev->mdev, log_max_srq_sz);
+ __u32 max_sge_sz = MLX5_CAP_GEN(dev->mdev, max_wqe_sz_rq) /
+ sizeof(struct mlx5_wqe_data_seg);
- if (init_attr->srq_type != IB_SRQT_BASIC &&
- init_attr->srq_type != IB_SRQT_XRC &&
- init_attr->srq_type != IB_SRQT_TM)
- return -EOPNOTSUPP;
-
- /* Sanity check SRQ size before proceeding */
- if (init_attr->attr.max_wr >= max_srq_wqes) {
- mlx5_ib_dbg(dev, "max_wr %d, cap %d\n",
+++ /dev/null
-From 16d292747c8eba92ed2837d652551b91ecd55364 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 3 Oct 2020 20:20:04 -0300
-Subject: RDMA: Move more uverbs_cmd_mask settings to the core
-
-From: Jason Gunthorpe <jgg@nvidia.com>
-
-[ Upstream commit 44ce37bc8bf30283d16c5e5f20964b638bebd429 ]
-
-These functions all depend on the driver providing a specific op:
-
-- REREG_MR is rereg_user_mr(). bnxt_re set this without providing the op
-- ATTACH/DEATCH_MCAST is attach_mcast()/detach_mcast(). usnic set this
- without providing the op
-- OPEN_QP doesn't involve the driver but requires a XRCD. qedr provides
- xrcd but forgot to set it, usnic doesn't provide XRCD but set it anyhow.
-- OPEN/CLOSE_XRCD are the ops alloc_xrcd()/dealloc_xrcd()
-- CREATE_SRQ/DESTROY_SRQ are the ops create_srq()/destroy_srq()
-- QUERY/MODIFY_SRQ is op query_srq()/modify_srq(). hns sets this but
- sometimes supplies a NULL op.
-- RESIZE_CQ is op resize_cq(). bnxt_re sets this boes doesn't supply an op
-- ALLOC/DEALLOC_MW is alloc_mw()/dealloc_mw(). cxgb4 provided an
- (now deleted) implementation but no userspace
-
-All drivers were checked that no drivers provide the op without also
-setting uverbs_cmd_mask so this should have no functional change.
-
-Link: https://lore.kernel.org/r/4-v1-caa70ba3d1ab+1436e-ucmd_mask_jgg@nvidia.com
-Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
-Stable-dep-of: 36ab7ada64ca ("RDMA/mlx5: Add check for srq max_sge attribute")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/infiniband/core/device.c | 16 ++++++++++++-
- drivers/infiniband/core/uverbs_cmd.c | 8 +++----
- drivers/infiniband/hw/bnxt_re/main.c | 6 -----
- drivers/infiniband/hw/cxgb4/provider.c | 5 +---
- drivers/infiniband/hw/hns/hns_roce_main.c | 14 ++---------
- drivers/infiniband/hw/mlx4/main.c | 20 ++--------------
- drivers/infiniband/hw/mlx5/main.c | 23 +++----------------
- drivers/infiniband/hw/mthca/mthca_provider.c | 10 --------
- drivers/infiniband/hw/ocrdma/ocrdma_main.c | 5 ----
- drivers/infiniband/hw/qedr/main.c | 8 +------
- drivers/infiniband/hw/usnic/usnic_ib_main.c | 5 ----
- .../infiniband/hw/vmw_pvrdma/pvrdma_main.c | 4 ----
- drivers/infiniband/sw/rdmavt/vt.c | 7 ------
- drivers/infiniband/sw/rxe/rxe_verbs.c | 9 +-------
- drivers/infiniband/sw/siw/siw_main.c | 6 +----
- 15 files changed, 30 insertions(+), 116 deletions(-)
-
-diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
-index cbb6a7c69360c..b3c97f4f93b9f 100644
---- a/drivers/infiniband/core/device.c
-+++ b/drivers/infiniband/core/device.c
-@@ -284,6 +284,7 @@ static void ib_device_check_mandatory(struct ib_device *device)
- IB_MANDATORY_FUNC(poll_cq),
- IB_MANDATORY_FUNC(req_notify_cq),
- IB_MANDATORY_FUNC(get_dma_mr),
-+ IB_MANDATORY_FUNC(reg_user_mr),
- IB_MANDATORY_FUNC(dereg_mr),
- IB_MANDATORY_FUNC(get_port_immutable)
- };
-@@ -601,20 +602,33 @@ struct ib_device *_ib_alloc_device(size_t size)
- INIT_WORK(&device->unregistration_work, ib_unregister_work);
-
- device->uverbs_cmd_mask =
-+ BIT_ULL(IB_USER_VERBS_CMD_ALLOC_MW) |
- BIT_ULL(IB_USER_VERBS_CMD_ALLOC_PD) |
-+ BIT_ULL(IB_USER_VERBS_CMD_ATTACH_MCAST) |
-+ BIT_ULL(IB_USER_VERBS_CMD_CLOSE_XRCD) |
- BIT_ULL(IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
- BIT_ULL(IB_USER_VERBS_CMD_CREATE_CQ) |
- BIT_ULL(IB_USER_VERBS_CMD_CREATE_QP) |
-+ BIT_ULL(IB_USER_VERBS_CMD_CREATE_SRQ) |
-+ BIT_ULL(IB_USER_VERBS_CMD_DEALLOC_MW) |
- BIT_ULL(IB_USER_VERBS_CMD_DEALLOC_PD) |
- BIT_ULL(IB_USER_VERBS_CMD_DEREG_MR) |
- BIT_ULL(IB_USER_VERBS_CMD_DESTROY_CQ) |
- BIT_ULL(IB_USER_VERBS_CMD_DESTROY_QP) |
-+ BIT_ULL(IB_USER_VERBS_CMD_DESTROY_SRQ) |
-+ BIT_ULL(IB_USER_VERBS_CMD_DETACH_MCAST) |
- BIT_ULL(IB_USER_VERBS_CMD_GET_CONTEXT) |
- BIT_ULL(IB_USER_VERBS_CMD_MODIFY_QP) |
-+ BIT_ULL(IB_USER_VERBS_CMD_MODIFY_SRQ) |
-+ BIT_ULL(IB_USER_VERBS_CMD_OPEN_QP) |
-+ BIT_ULL(IB_USER_VERBS_CMD_OPEN_XRCD) |
- BIT_ULL(IB_USER_VERBS_CMD_QUERY_DEVICE) |
- BIT_ULL(IB_USER_VERBS_CMD_QUERY_PORT) |
- BIT_ULL(IB_USER_VERBS_CMD_QUERY_QP) |
-- BIT_ULL(IB_USER_VERBS_CMD_REG_MR);
-+ BIT_ULL(IB_USER_VERBS_CMD_QUERY_SRQ) |
-+ BIT_ULL(IB_USER_VERBS_CMD_REG_MR) |
-+ BIT_ULL(IB_USER_VERBS_CMD_REREG_MR) |
-+ BIT_ULL(IB_USER_VERBS_CMD_RESIZE_CQ);
-
- device->uverbs_ex_cmd_mask =
- BIT_ULL(IB_USER_VERBS_EX_CMD_CREATE_FLOW) |
-diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
-index 158f9eadc4e95..36fb509ea24b3 100644
---- a/drivers/infiniband/core/uverbs_cmd.c
-+++ b/drivers/infiniband/core/uverbs_cmd.c
-@@ -4024,8 +4024,7 @@ const struct uapi_definition uverbs_def_write_intf[] = {
- DECLARE_UVERBS_WRITE(
- IB_USER_VERBS_CMD_CLOSE_XRCD,
- ib_uverbs_close_xrcd,
-- UAPI_DEF_WRITE_I(struct ib_uverbs_close_xrcd),
-- UAPI_DEF_METHOD_NEEDS_FN(dealloc_xrcd)),
-+ UAPI_DEF_WRITE_I(struct ib_uverbs_close_xrcd)),
- DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_OPEN_QP,
- ib_uverbs_open_qp,
- UAPI_DEF_WRITE_UDATA_IO(
-@@ -4035,8 +4034,9 @@ const struct uapi_definition uverbs_def_write_intf[] = {
- ib_uverbs_open_xrcd,
- UAPI_DEF_WRITE_UDATA_IO(
- struct ib_uverbs_open_xrcd,
-- struct ib_uverbs_open_xrcd_resp),
-- UAPI_DEF_METHOD_NEEDS_FN(alloc_xrcd))),
-+ struct ib_uverbs_open_xrcd_resp)),
-+ UAPI_DEF_OBJ_NEEDS_FN(alloc_xrcd),
-+ UAPI_DEF_OBJ_NEEDS_FN(dealloc_xrcd)),
-
- {},
- };
-diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
-index 0be439c73bef4..195fbfe1d13d5 100644
---- a/drivers/infiniband/hw/bnxt_re/main.c
-+++ b/drivers/infiniband/hw/bnxt_re/main.c
-@@ -711,12 +711,6 @@ static int bnxt_re_register_ib(struct bnxt_re_dev *rdev)
-
- /* User space */
- ibdev->uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_REREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_SRQ) |
- (1ull << IB_USER_VERBS_CMD_CREATE_AH) |
- (1ull << IB_USER_VERBS_CMD_MODIFY_AH) |
- (1ull << IB_USER_VERBS_CMD_QUERY_AH) |
-diff --git a/drivers/infiniband/hw/cxgb4/provider.c b/drivers/infiniband/hw/cxgb4/provider.c
-index c692407dcaa40..49c173ae76b69 100644
---- a/drivers/infiniband/hw/cxgb4/provider.c
-+++ b/drivers/infiniband/hw/cxgb4/provider.c
-@@ -537,10 +537,7 @@ void c4iw_register_device(struct work_struct *work)
- (1ull << IB_USER_VERBS_CMD_REQ_NOTIFY_CQ) |
- (1ull << IB_USER_VERBS_CMD_POLL_CQ) |
- (1ull << IB_USER_VERBS_CMD_POST_SEND) |
-- (1ull << IB_USER_VERBS_CMD_POST_RECV) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_SRQ);
-+ (1ull << IB_USER_VERBS_CMD_POST_RECV);
- dev->ibdev.node_type = RDMA_NODE_RNIC;
- BUILD_BUG_ON(sizeof(C4IW_NODE_DESC) > IB_DEVICE_NODE_DESC_MAX);
- memcpy(dev->ibdev.node_desc, C4IW_NODE_DESC, sizeof(C4IW_NODE_DESC));
-diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
-index 3956da653901b..9352f0a3073e6 100644
---- a/drivers/infiniband/hw/hns/hns_roce_main.c
-+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
-@@ -496,18 +496,12 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
- ib_dev->local_dma_lkey = hr_dev->caps.reserved_lkey;
- ib_dev->num_comp_vectors = hr_dev->caps.num_comp_vectors;
-
-- if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_REREG_MR) {
-- ib_dev->uverbs_cmd_mask |= (1ULL << IB_USER_VERBS_CMD_REREG_MR);
-+ if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_REREG_MR)
- ib_set_device_ops(ib_dev, &hns_roce_dev_mr_ops);
-- }
-
- /* MW */
-- if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_MW) {
-- ib_dev->uverbs_cmd_mask |=
-- (1ULL << IB_USER_VERBS_CMD_ALLOC_MW) |
-- (1ULL << IB_USER_VERBS_CMD_DEALLOC_MW);
-+ if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_MW)
- ib_set_device_ops(ib_dev, &hns_roce_dev_mw_ops);
-- }
-
- /* FRMR */
- if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_FRMR)
-@@ -516,10 +510,6 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
- /* SRQ */
- if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SRQ) {
- ib_dev->uverbs_cmd_mask |=
-- (1ULL << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ULL << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ULL << IB_USER_VERBS_CMD_QUERY_SRQ) |
-- (1ULL << IB_USER_VERBS_CMD_DESTROY_SRQ) |
- (1ULL << IB_USER_VERBS_CMD_POST_SRQ_RECV);
- ib_set_device_ops(ib_dev, &hns_roce_dev_srq_ops);
- ib_set_device_ops(ib_dev, hr_dev->hw->hns_roce_dev_srq_ops);
-diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
-index 6058128b0f56a..300a0a7827388 100644
---- a/drivers/infiniband/hw/mlx4/main.c
-+++ b/drivers/infiniband/hw/mlx4/main.c
-@@ -2655,16 +2655,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
- ibdev->ib_dev.dev.parent = &dev->persist->pdev->dev;
-
- ibdev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_REREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_XSRQ) |
-- (1ull << IB_USER_VERBS_CMD_OPEN_QP);
-+ (1ull << IB_USER_VERBS_CMD_CREATE_XSRQ);
-
- ib_set_device_ops(&ibdev->ib_dev, &mlx4_ib_dev_ops);
- ibdev->ib_dev.uverbs_ex_cmd_mask |=
-@@ -2679,17 +2670,10 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
- ib_set_device_ops(&ibdev->ib_dev, &mlx4_ib_dev_wq_ops);
-
- if (dev->caps.flags & MLX4_DEV_CAP_FLAG_MEM_WINDOW ||
-- dev->caps.bmme_flags & MLX4_BMME_FLAG_TYPE_2_WIN) {
-- ibdev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_ALLOC_MW) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_MW);
-+ dev->caps.bmme_flags & MLX4_BMME_FLAG_TYPE_2_WIN)
- ib_set_device_ops(&ibdev->ib_dev, &mlx4_ib_dev_mw_ops);
-- }
-
- if (dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) {
-- ibdev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_OPEN_XRCD) |
-- (1ull << IB_USER_VERBS_CMD_CLOSE_XRCD);
- ib_set_device_ops(&ibdev->ib_dev, &mlx4_ib_dev_xrc_ops);
- }
-
-diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
-index 4e83ba99877fd..73b46414ddafe 100644
---- a/drivers/infiniband/hw/mlx5/main.c
-+++ b/drivers/infiniband/hw/mlx5/main.c
-@@ -4156,16 +4156,7 @@ static int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev)
- dev->ib_dev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_CREATE_AH) |
- (1ull << IB_USER_VERBS_CMD_DESTROY_AH) |
-- (1ull << IB_USER_VERBS_CMD_REREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_XSRQ) |
-- (1ull << IB_USER_VERBS_CMD_OPEN_QP);
-+ (1ull << IB_USER_VERBS_CMD_CREATE_XSRQ);
- dev->ib_dev.uverbs_ex_cmd_mask |=
- (1ull << IB_USER_VERBS_EX_CMD_CREATE_CQ) |
- (1ull << IB_USER_VERBS_EX_CMD_CREATE_QP) |
-@@ -4181,19 +4172,11 @@ static int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev)
-
- dev->umr_fence = mlx5_get_umr_fence(MLX5_CAP_GEN(mdev, umr_fence));
-
-- if (MLX5_CAP_GEN(mdev, imaicl)) {
-- dev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_ALLOC_MW) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_MW);
-+ if (MLX5_CAP_GEN(mdev, imaicl))
- ib_set_device_ops(&dev->ib_dev, &mlx5_ib_dev_mw_ops);
-- }
-
-- if (MLX5_CAP_GEN(mdev, xrc)) {
-- dev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_OPEN_XRCD) |
-- (1ull << IB_USER_VERBS_CMD_CLOSE_XRCD);
-+ if (MLX5_CAP_GEN(mdev, xrc))
- ib_set_device_ops(&dev->ib_dev, &mlx5_ib_dev_xrc_ops);
-- }
-
- if (MLX5_CAP_DEV_MEM(mdev, memic) ||
- MLX5_CAP_GEN_64(dev->mdev, general_obj_types) &
-diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
-index 86840afcfba63..ea4a8deabfb6f 100644
---- a/drivers/infiniband/hw/mthca/mthca_provider.c
-+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
-@@ -1158,22 +1158,12 @@ int mthca_register_device(struct mthca_dev *dev)
- if (ret)
- return ret;
-
-- dev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST);
- dev->ib_dev.node_type = RDMA_NODE_IB_CA;
- dev->ib_dev.phys_port_cnt = dev->limits.num_ports;
- dev->ib_dev.num_comp_vectors = 1;
- dev->ib_dev.dev.parent = &dev->pdev->dev;
-
- if (dev->mthca_flags & MTHCA_FLAG_SRQ) {
-- dev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_SRQ);
--
- if (mthca_is_memfree(dev))
- ib_set_device_ops(&dev->ib_dev,
- &mthca_dev_arbel_srq_ops);
-diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-index e6611a7e8eeb2..b5c8b5a9a0939 100644
---- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-+++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-@@ -205,7 +205,6 @@ static int ocrdma_register_device(struct ocrdma_dev *dev)
- memcpy(dev->ibdev.node_desc, OCRDMA_NODE_DESC,
- sizeof(OCRDMA_NODE_DESC));
- dev->ibdev.uverbs_cmd_mask |=
-- OCRDMA_UVERBS(RESIZE_CQ) |
- OCRDMA_UVERBS(REQ_NOTIFY_CQ) |
- OCRDMA_UVERBS(POLL_CQ) |
- OCRDMA_UVERBS(POST_SEND) |
-@@ -228,10 +227,6 @@ static int ocrdma_register_device(struct ocrdma_dev *dev)
-
- if (ocrdma_get_asic_type(dev) == OCRDMA_ASIC_GEN_SKH_R) {
- dev->ibdev.uverbs_cmd_mask |=
-- OCRDMA_UVERBS(CREATE_SRQ) |
-- OCRDMA_UVERBS(MODIFY_SRQ) |
-- OCRDMA_UVERBS(QUERY_SRQ) |
-- OCRDMA_UVERBS(DESTROY_SRQ) |
- OCRDMA_UVERBS(POST_SRQ_RECV);
-
- ib_set_device_ops(&dev->ibdev, &ocrdma_dev_srq_ops);
-diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c
-index 9ba44d9dbd1d3..e30edbaa30399 100644
---- a/drivers/infiniband/hw/qedr/main.c
-+++ b/drivers/infiniband/hw/qedr/main.c
-@@ -189,8 +189,7 @@ static void qedr_roce_register_device(struct qedr_dev *dev)
-
- ib_set_device_ops(&dev->ibdev, &qedr_roce_dev_ops);
-
-- dev->ibdev.uverbs_cmd_mask |= QEDR_UVERBS(OPEN_XRCD) |
-- QEDR_UVERBS(CLOSE_XRCD) |
-+ dev->ibdev.uverbs_cmd_mask |=
- QEDR_UVERBS(CREATE_XSRQ);
- }
-
-@@ -250,12 +249,7 @@ static int qedr_register_device(struct qedr_dev *dev)
- memcpy(dev->ibdev.node_desc, QEDR_NODE_DESC, sizeof(QEDR_NODE_DESC));
-
- dev->ibdev.uverbs_cmd_mask |=
-- QEDR_UVERBS(RESIZE_CQ) |
- QEDR_UVERBS(REQ_NOTIFY_CQ) |
-- QEDR_UVERBS(CREATE_SRQ) |
-- QEDR_UVERBS(DESTROY_SRQ) |
-- QEDR_UVERBS(QUERY_SRQ) |
-- QEDR_UVERBS(MODIFY_SRQ) |
- QEDR_UVERBS(POST_SRQ_RECV) |
- QEDR_UVERBS(POLL_CQ) |
- QEDR_UVERBS(POST_SEND) |
-diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
-index 7db5c1c7d06d2..1b63a491fa72d 100644
---- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
-+++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
-@@ -398,11 +398,6 @@ static void *usnic_ib_device_add(struct pci_dev *dev)
- us_ibdev->ib_dev.num_comp_vectors = USNIC_IB_NUM_COMP_VECTORS;
- us_ibdev->ib_dev.dev.parent = &dev->dev;
-
-- us_ibdev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_OPEN_QP);
--
- ib_set_device_ops(&us_ibdev->ib_dev, &usnic_dev_ops);
-
- rdma_set_device_sysfs_group(&us_ibdev->ib_dev, &usnic_attr_group);
-diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
-index 223977703f935..db19feabf51a9 100644
---- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
-+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
-@@ -236,10 +236,6 @@ static int pvrdma_register_device(struct pvrdma_dev *dev)
- /* Check if SRQ is supported by backend */
- if (dev->dsr->caps.max_srq) {
- dev->ib_dev.uverbs_cmd_mask |=
-- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_SRQ) |
- (1ull << IB_USER_VERBS_CMD_POST_SRQ_RECV);
-
- ib_set_device_ops(&dev->ib_dev, &pvrdma_dev_srq_ops);
-diff --git a/drivers/infiniband/sw/rdmavt/vt.c b/drivers/infiniband/sw/rdmavt/vt.c
-index 151e4acc26bd5..f1ec0311e5cc8 100644
---- a/drivers/infiniband/sw/rdmavt/vt.c
-+++ b/drivers/infiniband/sw/rdmavt/vt.c
-@@ -593,17 +593,10 @@ int rvt_register_device(struct rvt_dev_info *rdi)
- (1ull << IB_USER_VERBS_CMD_MODIFY_AH) |
- (1ull << IB_USER_VERBS_CMD_QUERY_AH) |
- (1ull << IB_USER_VERBS_CMD_DESTROY_AH) |
-- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
- (1ull << IB_USER_VERBS_CMD_POLL_CQ) |
- (1ull << IB_USER_VERBS_CMD_REQ_NOTIFY_CQ) |
- (1ull << IB_USER_VERBS_CMD_POST_SEND) |
- (1ull << IB_USER_VERBS_CMD_POST_RECV) |
-- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_SRQ) |
- (1ull << IB_USER_VERBS_CMD_POST_SRQ_RECV);
- rdi->ibdev.node_type = RDMA_NODE_IB_CA;
- if (!rdi->ibdev.num_comp_vectors)
-diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
-index 8f63d0f186d7c..641373241dbe5 100644
---- a/drivers/infiniband/sw/rxe/rxe_verbs.c
-+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
-@@ -1129,14 +1129,9 @@ int rxe_register_device(struct rxe_dev *rxe, const char *ibdev_name)
- rxe->ndev->dev_addr);
-
- dev->uverbs_cmd_mask |=
-- BIT_ULL(IB_USER_VERBS_CMD_CREATE_SRQ)
-- | BIT_ULL(IB_USER_VERBS_CMD_MODIFY_SRQ)
-- | BIT_ULL(IB_USER_VERBS_CMD_QUERY_SRQ)
-- | BIT_ULL(IB_USER_VERBS_CMD_DESTROY_SRQ)
-- | BIT_ULL(IB_USER_VERBS_CMD_POST_SRQ_RECV)
-+ BIT_ULL(IB_USER_VERBS_CMD_POST_SRQ_RECV)
- | BIT_ULL(IB_USER_VERBS_CMD_POST_SEND)
- | BIT_ULL(IB_USER_VERBS_CMD_POST_RECV)
-- | BIT_ULL(IB_USER_VERBS_CMD_RESIZE_CQ)
- | BIT_ULL(IB_USER_VERBS_CMD_POLL_CQ)
- | BIT_ULL(IB_USER_VERBS_CMD_PEEK_CQ)
- | BIT_ULL(IB_USER_VERBS_CMD_REQ_NOTIFY_CQ)
-@@ -1144,8 +1139,6 @@ int rxe_register_device(struct rxe_dev *rxe, const char *ibdev_name)
- | BIT_ULL(IB_USER_VERBS_CMD_MODIFY_AH)
- | BIT_ULL(IB_USER_VERBS_CMD_QUERY_AH)
- | BIT_ULL(IB_USER_VERBS_CMD_DESTROY_AH)
-- | BIT_ULL(IB_USER_VERBS_CMD_ATTACH_MCAST)
-- | BIT_ULL(IB_USER_VERBS_CMD_DETACH_MCAST)
- ;
-
- ib_set_device_ops(dev, &rxe_dev_ops);
-diff --git a/drivers/infiniband/sw/siw/siw_main.c b/drivers/infiniband/sw/siw/siw_main.c
-index 7c6f534590b19..8d66a4a4a6ca6 100644
---- a/drivers/infiniband/sw/siw/siw_main.c
-+++ b/drivers/infiniband/sw/siw/siw_main.c
-@@ -335,11 +335,7 @@ static struct siw_device *siw_device_create(struct net_device *netdev)
- (1ull << IB_USER_VERBS_CMD_REQ_NOTIFY_CQ) |
- (1ull << IB_USER_VERBS_CMD_POST_SEND) |
- (1ull << IB_USER_VERBS_CMD_POST_RECV) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_POST_SRQ_RECV) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_SRQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_SRQ);
-+ (1ull << IB_USER_VERBS_CMD_POST_SRQ_RECV);
-
- base_dev->node_type = RDMA_NODE_RNIC;
- memcpy(base_dev->node_desc, SIW_NODE_DESC_COMMON,
---
-2.43.0
-
+++ /dev/null
-From d1d6dbce8b7a3a750b3a720123af9a4508f169bd Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 3 Oct 2020 20:20:03 -0300
-Subject: RDMA: Remove elements in uverbs_cmd_mask that all drivers set
-
-From: Jason Gunthorpe <jgg@nvidia.com>
-
-[ Upstream commit c074bb1e30f9b51032245300798613a290e42f25 ]
-
-This is a step toward eliminating uverbs_cmd_mask. Preset this list in the
-core code. Only the op reg_user_mr wasn't already being required from the
-drivers.
-
-Link: https://lore.kernel.org/r/3-v1-caa70ba3d1ab+1436e-ucmd_mask_jgg@nvidia.com
-Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
-Stable-dep-of: 36ab7ada64ca ("RDMA/mlx5: Add check for srq max_sge attribute")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/infiniband/core/device.c | 16 ++++++++++++++++
- drivers/infiniband/hw/bnxt_re/main.c | 16 +---------------
- drivers/infiniband/hw/cxgb4/provider.c | 16 +---------------
- drivers/infiniband/hw/efa/efa_main.c | 16 +---------------
- drivers/infiniband/hw/hns/hns_roce_main.c | 15 ---------------
- drivers/infiniband/hw/i40iw/i40iw_verbs.c | 16 +---------------
- drivers/infiniband/hw/mlx4/main.c | 16 +---------------
- drivers/infiniband/hw/mlx5/main.c | 16 +---------------
- drivers/infiniband/hw/mthca/mthca_provider.c | 16 +---------------
- drivers/infiniband/hw/ocrdma/ocrdma_main.c | 16 +---------------
- drivers/infiniband/hw/qedr/main.c | 15 +--------------
- drivers/infiniband/hw/usnic/usnic_ib_main.c | 16 +---------------
- drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 16 +---------------
- drivers/infiniband/sw/rdmavt/vt.c | 16 +---------------
- drivers/infiniband/sw/rxe/rxe_verbs.c | 17 ++---------------
- drivers/infiniband/sw/siw/siw_main.c | 16 +---------------
- 16 files changed, 31 insertions(+), 224 deletions(-)
-
-diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
-index 94c3bad72cc59..cbb6a7c69360c 100644
---- a/drivers/infiniband/core/device.c
-+++ b/drivers/infiniband/core/device.c
-@@ -600,6 +600,22 @@ struct ib_device *_ib_alloc_device(size_t size)
- init_completion(&device->unreg_completion);
- INIT_WORK(&device->unregistration_work, ib_unregister_work);
-
-+ device->uverbs_cmd_mask =
-+ BIT_ULL(IB_USER_VERBS_CMD_ALLOC_PD) |
-+ BIT_ULL(IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-+ BIT_ULL(IB_USER_VERBS_CMD_CREATE_CQ) |
-+ BIT_ULL(IB_USER_VERBS_CMD_CREATE_QP) |
-+ BIT_ULL(IB_USER_VERBS_CMD_DEALLOC_PD) |
-+ BIT_ULL(IB_USER_VERBS_CMD_DEREG_MR) |
-+ BIT_ULL(IB_USER_VERBS_CMD_DESTROY_CQ) |
-+ BIT_ULL(IB_USER_VERBS_CMD_DESTROY_QP) |
-+ BIT_ULL(IB_USER_VERBS_CMD_GET_CONTEXT) |
-+ BIT_ULL(IB_USER_VERBS_CMD_MODIFY_QP) |
-+ BIT_ULL(IB_USER_VERBS_CMD_QUERY_DEVICE) |
-+ BIT_ULL(IB_USER_VERBS_CMD_QUERY_PORT) |
-+ BIT_ULL(IB_USER_VERBS_CMD_QUERY_QP) |
-+ BIT_ULL(IB_USER_VERBS_CMD_REG_MR);
-+
- device->uverbs_ex_cmd_mask =
- BIT_ULL(IB_USER_VERBS_EX_CMD_CREATE_FLOW) |
- BIT_ULL(IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL) |
-diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
-index 76030eac49a37..0be439c73bef4 100644
---- a/drivers/infiniband/hw/bnxt_re/main.c
-+++ b/drivers/infiniband/hw/bnxt_re/main.c
-@@ -710,23 +710,9 @@ static int bnxt_re_register_ib(struct bnxt_re_dev *rdev)
- ibdev->local_dma_lkey = BNXT_QPLIB_RSVD_LKEY;
-
- /* User space */
-- ibdev->uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-+ ibdev->uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_REREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
- (1ull << IB_USER_VERBS_CMD_MODIFY_SRQ) |
- (1ull << IB_USER_VERBS_CMD_QUERY_SRQ) |
-diff --git a/drivers/infiniband/hw/cxgb4/provider.c b/drivers/infiniband/hw/cxgb4/provider.c
-index 8138c57a1e43b..c692407dcaa40 100644
---- a/drivers/infiniband/hw/cxgb4/provider.c
-+++ b/drivers/infiniband/hw/cxgb4/provider.c
-@@ -533,23 +533,9 @@ void c4iw_register_device(struct work_struct *work)
- if (fastreg_support)
- dev->device_cap_flags |= IB_DEVICE_MEM_MGT_EXTENSIONS;
- dev->ibdev.local_dma_lkey = 0;
-- dev->ibdev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-+ dev->ibdev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_REQ_NOTIFY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
- (1ull << IB_USER_VERBS_CMD_POLL_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_POST_SEND) |
- (1ull << IB_USER_VERBS_CMD_POST_RECV) |
- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-diff --git a/drivers/infiniband/hw/efa/efa_main.c b/drivers/infiniband/hw/efa/efa_main.c
-index cd41cd114ab63..ead0f84a323eb 100644
---- a/drivers/infiniband/hw/efa/efa_main.c
-+++ b/drivers/infiniband/hw/efa/efa_main.c
-@@ -308,21 +308,7 @@ static int efa_ib_device_add(struct efa_dev *dev)
- dev->ibdev.num_comp_vectors = 1;
- dev->ibdev.dev.parent = &pdev->dev;
-
-- dev->ibdev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
-+ dev->ibdev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_CREATE_AH) |
- (1ull << IB_USER_VERBS_CMD_DESTROY_AH);
-
-diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
-index f62162771db51..3956da653901b 100644
---- a/drivers/infiniband/hw/hns/hns_roce_main.c
-+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
-@@ -495,21 +495,6 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
- ib_dev->phys_port_cnt = hr_dev->caps.num_ports;
- ib_dev->local_dma_lkey = hr_dev->caps.reserved_lkey;
- ib_dev->num_comp_vectors = hr_dev->caps.num_comp_vectors;
-- ib_dev->uverbs_cmd_mask =
-- (1ULL << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ULL << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ULL << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ULL << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ULL << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ULL << IB_USER_VERBS_CMD_REG_MR) |
-- (1ULL << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ULL << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ULL << IB_USER_VERBS_CMD_CREATE_CQ) |
-- (1ULL << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ULL << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ULL << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ULL << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ULL << IB_USER_VERBS_CMD_DESTROY_QP);
-
- if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_REREG_MR) {
- ib_dev->uverbs_cmd_mask |= (1ULL << IB_USER_VERBS_CMD_REREG_MR);
-diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
-index 89654dc91d81a..713b2ec263422 100644
---- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
-+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
-@@ -2667,25 +2667,11 @@ static struct i40iw_ib_device *i40iw_init_rdma_device(struct i40iw_device *iwdev
- iwibdev->ibdev.node_type = RDMA_NODE_RNIC;
- ether_addr_copy((u8 *)&iwibdev->ibdev.node_guid, netdev->dev_addr);
-
-- iwibdev->ibdev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-+ iwibdev->ibdev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_REQ_NOTIFY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
- (1ull << IB_USER_VERBS_CMD_POLL_CQ) |
- (1ull << IB_USER_VERBS_CMD_CREATE_AH) |
- (1ull << IB_USER_VERBS_CMD_DESTROY_AH) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_POST_RECV) |
- (1ull << IB_USER_VERBS_CMD_POST_SEND);
- iwibdev->ibdev.phys_port_cnt = 1;
-diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
-index c62cdd6456962..6058128b0f56a 100644
---- a/drivers/infiniband/hw/mlx4/main.c
-+++ b/drivers/infiniband/hw/mlx4/main.c
-@@ -2654,23 +2654,9 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
- ibdev->ib_dev.num_comp_vectors = dev->caps.num_comp_vectors;
- ibdev->ib_dev.dev.parent = &dev->persist->pdev->dev;
-
-- ibdev->ib_dev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-+ ibdev->ib_dev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_REREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST) |
- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
-index d36436d4277a0..4e83ba99877fd 100644
---- a/drivers/infiniband/hw/mlx5/main.c
-+++ b/drivers/infiniband/hw/mlx5/main.c
-@@ -4153,25 +4153,11 @@ static int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev)
- struct mlx5_core_dev *mdev = dev->mdev;
- int err;
-
-- dev->ib_dev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-+ dev->ib_dev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_CREATE_AH) |
- (1ull << IB_USER_VERBS_CMD_DESTROY_AH) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
- (1ull << IB_USER_VERBS_CMD_REREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST) |
- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
-diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
-index c4d9cdc4ee97e..86840afcfba63 100644
---- a/drivers/infiniband/hw/mthca/mthca_provider.c
-+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
-@@ -1158,22 +1158,8 @@ int mthca_register_device(struct mthca_dev *dev)
- if (ret)
- return ret;
-
-- dev->ib_dev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
-+ dev->ib_dev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST);
- dev->ib_dev.node_type = RDMA_NODE_IB_CA;
-diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-index 9b96661a71435..e6611a7e8eeb2 100644
---- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-+++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
-@@ -204,23 +204,9 @@ static int ocrdma_register_device(struct ocrdma_dev *dev)
- BUILD_BUG_ON(sizeof(OCRDMA_NODE_DESC) > IB_DEVICE_NODE_DESC_MAX);
- memcpy(dev->ibdev.node_desc, OCRDMA_NODE_DESC,
- sizeof(OCRDMA_NODE_DESC));
-- dev->ibdev.uverbs_cmd_mask =
-- OCRDMA_UVERBS(GET_CONTEXT) |
-- OCRDMA_UVERBS(QUERY_DEVICE) |
-- OCRDMA_UVERBS(QUERY_PORT) |
-- OCRDMA_UVERBS(ALLOC_PD) |
-- OCRDMA_UVERBS(DEALLOC_PD) |
-- OCRDMA_UVERBS(REG_MR) |
-- OCRDMA_UVERBS(DEREG_MR) |
-- OCRDMA_UVERBS(CREATE_COMP_CHANNEL) |
-- OCRDMA_UVERBS(CREATE_CQ) |
-+ dev->ibdev.uverbs_cmd_mask |=
- OCRDMA_UVERBS(RESIZE_CQ) |
-- OCRDMA_UVERBS(DESTROY_CQ) |
- OCRDMA_UVERBS(REQ_NOTIFY_CQ) |
-- OCRDMA_UVERBS(CREATE_QP) |
-- OCRDMA_UVERBS(MODIFY_QP) |
-- OCRDMA_UVERBS(QUERY_QP) |
-- OCRDMA_UVERBS(DESTROY_QP) |
- OCRDMA_UVERBS(POLL_CQ) |
- OCRDMA_UVERBS(POST_SEND) |
- OCRDMA_UVERBS(POST_RECV);
-diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c
-index d0bb61b7e419f..9ba44d9dbd1d3 100644
---- a/drivers/infiniband/hw/qedr/main.c
-+++ b/drivers/infiniband/hw/qedr/main.c
-@@ -249,27 +249,14 @@ static int qedr_register_device(struct qedr_dev *dev)
- dev->ibdev.node_guid = dev->attr.node_guid;
- memcpy(dev->ibdev.node_desc, QEDR_NODE_DESC, sizeof(QEDR_NODE_DESC));
-
-- dev->ibdev.uverbs_cmd_mask = QEDR_UVERBS(GET_CONTEXT) |
-- QEDR_UVERBS(QUERY_DEVICE) |
-- QEDR_UVERBS(QUERY_PORT) |
-- QEDR_UVERBS(ALLOC_PD) |
-- QEDR_UVERBS(DEALLOC_PD) |
-- QEDR_UVERBS(CREATE_COMP_CHANNEL) |
-- QEDR_UVERBS(CREATE_CQ) |
-+ dev->ibdev.uverbs_cmd_mask |=
- QEDR_UVERBS(RESIZE_CQ) |
-- QEDR_UVERBS(DESTROY_CQ) |
- QEDR_UVERBS(REQ_NOTIFY_CQ) |
-- QEDR_UVERBS(CREATE_QP) |
-- QEDR_UVERBS(MODIFY_QP) |
-- QEDR_UVERBS(QUERY_QP) |
-- QEDR_UVERBS(DESTROY_QP) |
- QEDR_UVERBS(CREATE_SRQ) |
- QEDR_UVERBS(DESTROY_SRQ) |
- QEDR_UVERBS(QUERY_SRQ) |
- QEDR_UVERBS(MODIFY_SRQ) |
- QEDR_UVERBS(POST_SRQ_RECV) |
-- QEDR_UVERBS(REG_MR) |
-- QEDR_UVERBS(DEREG_MR) |
- QEDR_UVERBS(POLL_CQ) |
- QEDR_UVERBS(POST_SEND) |
- QEDR_UVERBS(POST_RECV);
-diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
-index aa2e65fc5cd65..7db5c1c7d06d2 100644
---- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
-+++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
-@@ -398,21 +398,7 @@ static void *usnic_ib_device_add(struct pci_dev *dev)
- us_ibdev->ib_dev.num_comp_vectors = USNIC_IB_NUM_COMP_VECTORS;
- us_ibdev->ib_dev.dev.parent = &dev->dev;
-
-- us_ibdev->ib_dev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
-+ us_ibdev->ib_dev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
- (1ull << IB_USER_VERBS_CMD_DETACH_MCAST) |
- (1ull << IB_USER_VERBS_CMD_OPEN_QP);
-diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
-index 6895bac539907..223977703f935 100644
---- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
-+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
-@@ -205,23 +205,9 @@ static int pvrdma_register_device(struct pvrdma_dev *dev)
- dev->flags = 0;
- dev->ib_dev.num_comp_vectors = 1;
- dev->ib_dev.dev.parent = &dev->pdev->dev;
-- dev->ib_dev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
-+ dev->ib_dev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_POLL_CQ) |
- (1ull << IB_USER_VERBS_CMD_REQ_NOTIFY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_POST_SEND) |
- (1ull << IB_USER_VERBS_CMD_POST_RECV) |
- (1ull << IB_USER_VERBS_CMD_CREATE_AH) |
-diff --git a/drivers/infiniband/sw/rdmavt/vt.c b/drivers/infiniband/sw/rdmavt/vt.c
-index d1bbe66610cfe..151e4acc26bd5 100644
---- a/drivers/infiniband/sw/rdmavt/vt.c
-+++ b/drivers/infiniband/sw/rdmavt/vt.c
-@@ -588,28 +588,14 @@ int rvt_register_device(struct rvt_dev_info *rdi)
- * exactly which functions rdmavt supports, nor do they know the ABI
- * version, so we do all of this sort of stuff here.
- */
-- rdi->ibdev.uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-+ rdi->ibdev.uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_CREATE_AH) |
- (1ull << IB_USER_VERBS_CMD_MODIFY_AH) |
- (1ull << IB_USER_VERBS_CMD_QUERY_AH) |
- (1ull << IB_USER_VERBS_CMD_DESTROY_AH) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
- (1ull << IB_USER_VERBS_CMD_RESIZE_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
- (1ull << IB_USER_VERBS_CMD_POLL_CQ) |
- (1ull << IB_USER_VERBS_CMD_REQ_NOTIFY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_POST_SEND) |
- (1ull << IB_USER_VERBS_CMD_POST_RECV) |
- (1ull << IB_USER_VERBS_CMD_ATTACH_MCAST) |
-diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
-index 512868c230238..8f63d0f186d7c 100644
---- a/drivers/infiniband/sw/rxe/rxe_verbs.c
-+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
-@@ -1128,31 +1128,18 @@ int rxe_register_device(struct rxe_dev *rxe, const char *ibdev_name)
- addrconf_addr_eui48((unsigned char *)&dev->node_guid,
- rxe->ndev->dev_addr);
-
-- dev->uverbs_cmd_mask = BIT_ULL(IB_USER_VERBS_CMD_GET_CONTEXT)
-- | BIT_ULL(IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL)
-- | BIT_ULL(IB_USER_VERBS_CMD_QUERY_DEVICE)
-- | BIT_ULL(IB_USER_VERBS_CMD_QUERY_PORT)
-- | BIT_ULL(IB_USER_VERBS_CMD_ALLOC_PD)
-- | BIT_ULL(IB_USER_VERBS_CMD_DEALLOC_PD)
-- | BIT_ULL(IB_USER_VERBS_CMD_CREATE_SRQ)
-+ dev->uverbs_cmd_mask |=
-+ BIT_ULL(IB_USER_VERBS_CMD_CREATE_SRQ)
- | BIT_ULL(IB_USER_VERBS_CMD_MODIFY_SRQ)
- | BIT_ULL(IB_USER_VERBS_CMD_QUERY_SRQ)
- | BIT_ULL(IB_USER_VERBS_CMD_DESTROY_SRQ)
- | BIT_ULL(IB_USER_VERBS_CMD_POST_SRQ_RECV)
-- | BIT_ULL(IB_USER_VERBS_CMD_CREATE_QP)
-- | BIT_ULL(IB_USER_VERBS_CMD_MODIFY_QP)
-- | BIT_ULL(IB_USER_VERBS_CMD_QUERY_QP)
-- | BIT_ULL(IB_USER_VERBS_CMD_DESTROY_QP)
- | BIT_ULL(IB_USER_VERBS_CMD_POST_SEND)
- | BIT_ULL(IB_USER_VERBS_CMD_POST_RECV)
-- | BIT_ULL(IB_USER_VERBS_CMD_CREATE_CQ)
- | BIT_ULL(IB_USER_VERBS_CMD_RESIZE_CQ)
-- | BIT_ULL(IB_USER_VERBS_CMD_DESTROY_CQ)
- | BIT_ULL(IB_USER_VERBS_CMD_POLL_CQ)
- | BIT_ULL(IB_USER_VERBS_CMD_PEEK_CQ)
- | BIT_ULL(IB_USER_VERBS_CMD_REQ_NOTIFY_CQ)
-- | BIT_ULL(IB_USER_VERBS_CMD_REG_MR)
-- | BIT_ULL(IB_USER_VERBS_CMD_DEREG_MR)
- | BIT_ULL(IB_USER_VERBS_CMD_CREATE_AH)
- | BIT_ULL(IB_USER_VERBS_CMD_MODIFY_AH)
- | BIT_ULL(IB_USER_VERBS_CMD_QUERY_AH)
-diff --git a/drivers/infiniband/sw/siw/siw_main.c b/drivers/infiniband/sw/siw/siw_main.c
-index 5ba0893f1f017..7c6f534590b19 100644
---- a/drivers/infiniband/sw/siw/siw_main.c
-+++ b/drivers/infiniband/sw/siw/siw_main.c
-@@ -330,23 +330,9 @@ static struct siw_device *siw_device_create(struct net_device *netdev)
- addrconf_addr_eui48((unsigned char *)&base_dev->node_guid,
- addr);
- }
-- base_dev->uverbs_cmd_mask =
-- (1ull << IB_USER_VERBS_CMD_QUERY_DEVICE) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_PORT) |
-- (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
-- (1ull << IB_USER_VERBS_CMD_ALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_DEALLOC_PD) |
-- (1ull << IB_USER_VERBS_CMD_REG_MR) |
-- (1ull << IB_USER_VERBS_CMD_DEREG_MR) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_CQ) |
-+ base_dev->uverbs_cmd_mask |=
- (1ull << IB_USER_VERBS_CMD_POLL_CQ) |
- (1ull << IB_USER_VERBS_CMD_REQ_NOTIFY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_CQ) |
-- (1ull << IB_USER_VERBS_CMD_CREATE_QP) |
-- (1ull << IB_USER_VERBS_CMD_QUERY_QP) |
-- (1ull << IB_USER_VERBS_CMD_MODIFY_QP) |
-- (1ull << IB_USER_VERBS_CMD_DESTROY_QP) |
- (1ull << IB_USER_VERBS_CMD_POST_SEND) |
- (1ull << IB_USER_VERBS_CMD_POST_RECV) |
- (1ull << IB_USER_VERBS_CMD_CREATE_SRQ) |
---
-2.43.0
-
+++ /dev/null
-From 11b197bb78bb483ea0beda146466f859fb09f642 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 11 Jun 2021 10:28:11 +0200
-Subject: sched: Unbreak wakeups
-
-From: Peter Zijlstra <peterz@infradead.org>
-
-[ Upstream commit 37aadc687ab441bbcb693ddae613acf9afcea1ab ]
-
-Remove broken task->state references and let wake_up_process() DTRT.
-
-The anti-pattern in these patches breaks the ordering of ->state vs
-COND as described in the comment near set_current_state() and can lead
-to missed wakeups:
-
- (OoO load, observes RUNNING)<-.
- for (;;) { |
- t->state = UNINTERRUPTIBLE; |
- smp_mb(); ,-----> | (observes !COND)
- | /
- if (COND) ---------' | COND = 1;
- break; `- if (t->state != RUNNING)
- wake_up_process(t); // not done
- schedule(); // forever waiting
- }
- t->state = TASK_RUNNING;
-
-Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
-Reviewed-by: Davidlohr Bueso <dbueso@suse.de>
-Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Acked-by: Will Deacon <will@kernel.org>
-Link: https://lore.kernel.org/r/20210611082838.160855222@infradead.org
-Stable-dep-of: 2d7198278ece ("qca_spi: Make interrupt remembering atomic")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/qualcomm/qca_spi.c | 6 ++----
- drivers/usb/gadget/udc/max3420_udc.c | 15 +++++----------
- drivers/usb/host/max3421-hcd.c | 3 +--
- kernel/softirq.c | 2 +-
- 4 files changed, 9 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
-index ffa1846f5b4c4..336e5d185f5fe 100644
---- a/drivers/net/ethernet/qualcomm/qca_spi.c
-+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
-@@ -670,8 +670,7 @@ qcaspi_intr_handler(int irq, void *data)
- struct qcaspi *qca = data;
-
- qca->intr_req++;
-- if (qca->spi_thread &&
-- qca->spi_thread->state != TASK_RUNNING)
-+ if (qca->spi_thread)
- wake_up_process(qca->spi_thread);
-
- return IRQ_HANDLED;
-@@ -794,8 +793,7 @@ qcaspi_netdev_xmit(struct sk_buff *skb, struct net_device *dev)
-
- netif_trans_update(dev);
-
-- if (qca->spi_thread &&
-- qca->spi_thread->state != TASK_RUNNING)
-+ if (qca->spi_thread)
- wake_up_process(qca->spi_thread);
-
- return NETDEV_TX_OK;
-diff --git a/drivers/usb/gadget/udc/max3420_udc.c b/drivers/usb/gadget/udc/max3420_udc.c
-index 91c9e9057cff3..d2a2b20cc1ad4 100644
---- a/drivers/usb/gadget/udc/max3420_udc.c
-+++ b/drivers/usb/gadget/udc/max3420_udc.c
-@@ -509,8 +509,7 @@ static irqreturn_t max3420_vbus_handler(int irq, void *dev_id)
- ? USB_STATE_POWERED : USB_STATE_NOTATTACHED);
- spin_unlock_irqrestore(&udc->lock, flags);
-
-- if (udc->thread_task &&
-- udc->thread_task->state != TASK_RUNNING)
-+ if (udc->thread_task)
- wake_up_process(udc->thread_task);
-
- return IRQ_HANDLED;
-@@ -529,8 +528,7 @@ static irqreturn_t max3420_irq_handler(int irq, void *dev_id)
- }
- spin_unlock_irqrestore(&udc->lock, flags);
-
-- if (udc->thread_task &&
-- udc->thread_task->state != TASK_RUNNING)
-+ if (udc->thread_task)
- wake_up_process(udc->thread_task);
-
- return IRQ_HANDLED;
-@@ -1093,8 +1091,7 @@ static int max3420_wakeup(struct usb_gadget *gadget)
-
- spin_unlock_irqrestore(&udc->lock, flags);
-
-- if (udc->thread_task &&
-- udc->thread_task->state != TASK_RUNNING)
-+ if (udc->thread_task)
- wake_up_process(udc->thread_task);
- return ret;
- }
-@@ -1117,8 +1114,7 @@ static int max3420_udc_start(struct usb_gadget *gadget,
- udc->todo |= UDC_START;
- spin_unlock_irqrestore(&udc->lock, flags);
-
-- if (udc->thread_task &&
-- udc->thread_task->state != TASK_RUNNING)
-+ if (udc->thread_task)
- wake_up_process(udc->thread_task);
-
- return 0;
-@@ -1137,8 +1133,7 @@ static int max3420_udc_stop(struct usb_gadget *gadget)
- udc->todo |= UDC_START;
- spin_unlock_irqrestore(&udc->lock, flags);
-
-- if (udc->thread_task &&
-- udc->thread_task->state != TASK_RUNNING)
-+ if (udc->thread_task)
- wake_up_process(udc->thread_task);
-
- return 0;
-diff --git a/drivers/usb/host/max3421-hcd.c b/drivers/usb/host/max3421-hcd.c
-index b875da01c5309..21b1e5e1958a6 100644
---- a/drivers/usb/host/max3421-hcd.c
-+++ b/drivers/usb/host/max3421-hcd.c
-@@ -1139,8 +1139,7 @@ max3421_irq_handler(int irq, void *dev_id)
- struct spi_device *spi = to_spi_device(hcd->self.controller);
- struct max3421_hcd *max3421_hcd = hcd_to_max3421(hcd);
-
-- if (max3421_hcd->spi_thread &&
-- max3421_hcd->spi_thread->state != TASK_RUNNING)
-+ if (max3421_hcd->spi_thread)
- wake_up_process(max3421_hcd->spi_thread);
- if (!test_and_set_bit(ENABLE_IRQ, &max3421_hcd->todo))
- disable_irq_nosync(spi->irq);
-diff --git a/kernel/softirq.c b/kernel/softirq.c
-index 09229ad822096..ded3dc45680bd 100644
---- a/kernel/softirq.c
-+++ b/kernel/softirq.c
-@@ -72,7 +72,7 @@ static void wakeup_softirqd(void)
- /* Interrupts are disabled: no need to stop preemption */
- struct task_struct *tsk = __this_cpu_read(ksoftirqd);
-
-- if (tsk && tsk->state != TASK_RUNNING)
-+ if (tsk)
- wake_up_process(tsk);
- }
-
---
-2.43.0
-
ipv6-prevent-possible-null-dereference-in-rt6_probe.patch
xfrm6-check-ip6_dst_idev-return-value-in-xfrm6_get_s.patch
netns-make-get_net_ns-handle-zero-refcount-net.patch
-sched-unbreak-wakeups.patch
qca_spi-make-interrupt-remembering-atomic.patch
net-sched-act_api-rely-on-rcu-in-tcf_idr_check_alloc.patch
net-sched-act_api-fix-possible-infinite-loop-in-tcf_.patch
dmaengine-ioatdma-fix-kmemleak-in-ioat_pci_probe.patch
dmaengine-ioatdma-fix-missing-kmem_cache_destroy.patch
acpica-revert-acpica-avoid-info-mapping-multiple-bar.patch
-rdma-remove-elements-in-uverbs_cmd_mask-that-all-dri.patch
-rdma-move-more-uverbs_cmd_mask-settings-to-the-core.patch
-rdma-check-srq_type-during-create_srq.patch
rdma-mlx5-add-check-for-srq-max_sge-attribute.patch
alsa-hda-realtek-limit-mic-boost-on-n14ap7.patch
drm-radeon-fix-ubsan-warning-in-kv_dpm.c.patch
tracing-add-module_description-to-preemptirq_delay_t.patch
x86-cpu-vfm-add-new-macros-to-work-with-vendor-famil.patch
x86-cpu-fix-x86_match_cpu-to-match-just-x86_vendor_i.patch
-drm-amdgpu-update-new-memory-types-in-atomfirmware-h.patch
-drm-amdgpu-atomfirmware-add-edp-and-integrated-info-.patch
-drm-amdgpu-drop-config_drm_amd_dc_dcn3_01-from-atomf.patch
-drm-amdgpu-fix-vram-type-and-bandwidth-error-for-ddr.patch
-drm-amdgpu-update-atomfirmware-for-dcn3.1-phy-tuning.patch
-drm-amdgpu-atomfirmware-add-intergrated-info-v2.3-ta.patch
r8169-remove-unneeded-memory-barrier-in-rtl_tx.patch
r8169-improve-rtl_tx.patch
r8169-improve-rtl8169_start_xmit.patch