Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Geert, On Tue, 30 Mar 2021 09:36:57 +0200 Geert Uytterhoeven wrote: > > On Mon, Mar 29, 2021 at 4:16 AM Stephen Rothwell > wrote: > > Today's linux-next merge of the drm tree got a conflict in: > > > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > > between commits: > > > > 9adb125dde69 ("drm/amdgpu: re-enable suspend phase 2 for S0ix") > > 4021229e32bd ("drm/amdgpu/swsmu: skip gfx cgpg on s0ix suspend") > > 9bb735abcbd8 ("drm/amdgpu: update comments about s0ix suspend/resume") > > > > from Linus' tree and commit: > > > > e3c1b0712fdb ("drm/amdgpu: Reset the devices in the XGMI hive duirng > > probe") > > > > from the drm tree. > > > > I fixed it up (I think - see below) and can carry the fix as necessary. > > This is now fixed as far as linux-next is concerned, but any non trivial > > conflicts should be mentioned to your upstream maintainer when your tree > > is submitted for merging. You may also want to consider cooperating > > with the maintainer of the conflicting tree to minimise any particularly > > complex conflicts. > > > > -- > > Cheers, > > Stephen Rothwell > > > > diff --cc drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > index 8a5a8ff5d362,0f82c5d21237.. > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > @@@ -2743,16 -2712,15 +2720,25 @@@ static int amdgpu_device_ip_suspend_pha > > continue; > > } > > > > + /* skip suspend of gfx and psp for S0ix > > + * gfx is in gfxoff state, so on resume it will exit gfxoff > > just > > + * like at runtime. PSP is also part of the always on > > hardware > > + * so no need to suspend it. > > + */ > > + if (adev->in_s0ix && > > + (adev->ip_blocks[i].version->type == > > AMD_IP_BLOCK_TYPE_PSP || > > + adev->ip_blocks[i].version->type == > > AMD_IP_BLOCK_TYPE_GFX)) > > + continue; > > + > > + /* skip unnecessary suspend if we do not initialize them > > yet */ > > + if (adev->gmc.xgmi.pending_reset && > > + !(adev->ip_blocks[i].version->type == > > AMD_IP_BLOCK_TYPE_GMC || > > + adev->ip_blocks[i].version->type == > > AMD_IP_BLOCK_TYPE_SMC || > > + adev->ip_blocks[i].version->type == > > AMD_IP_BLOCK_TYPE_COMMON || > > + adev->ip_blocks[i].version->type == > > AMD_IP_BLOCK_TYPE_IH)) { > > + adev->ip_blocks[i].status.hw = false; > > + continue; > > + } > > /* XXX handle errors */ > > r = adev->ip_blocks[i].version->funcs->suspend(adev); > > /* XXX handle errors */ > > The above is not what you have in next-20210329? > Your tree has a second copy of the first conflict block after the second: > > /* skip suspend of gfx and psp for S0ix > [...] > /* skip unnecessary suspend if we do not initialize them yet > */ > [...] > /* skip suspend of gfx and psp for S0ix > It happened because those commits in Linus' tree are also (as different commits) in the amdgpu tree and so git happily did a new merge resolution and ended up with what you see :-( I'll see if I can fix it up for today. -- Cheers, Stephen Rothwell
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Stephen, On Mon, Mar 29, 2021 at 4:16 AM Stephen Rothwell wrote: > Today's linux-next merge of the drm tree got a conflict in: > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > between commits: > > 9adb125dde69 ("drm/amdgpu: re-enable suspend phase 2 for S0ix") > 4021229e32bd ("drm/amdgpu/swsmu: skip gfx cgpg on s0ix suspend") > 9bb735abcbd8 ("drm/amdgpu: update comments about s0ix suspend/resume") > > from Linus' tree and commit: > > e3c1b0712fdb ("drm/amdgpu: Reset the devices in the XGMI hive duirng probe") > > from the drm tree. > > I fixed it up (I think - see below) and can carry the fix as necessary. > This is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. > > -- > Cheers, > Stephen Rothwell > > diff --cc drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 8a5a8ff5d362,0f82c5d21237.. > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@@ -2743,16 -2712,15 +2720,25 @@@ static int amdgpu_device_ip_suspend_pha > continue; > } > > + /* skip suspend of gfx and psp for S0ix > + * gfx is in gfxoff state, so on resume it will exit gfxoff > just > + * like at runtime. PSP is also part of the always on hardware > + * so no need to suspend it. > + */ > + if (adev->in_s0ix && > + (adev->ip_blocks[i].version->type == > AMD_IP_BLOCK_TYPE_PSP || > + adev->ip_blocks[i].version->type == > AMD_IP_BLOCK_TYPE_GFX)) > + continue; > + > + /* skip unnecessary suspend if we do not initialize them yet > */ > + if (adev->gmc.xgmi.pending_reset && > + !(adev->ip_blocks[i].version->type == > AMD_IP_BLOCK_TYPE_GMC || > + adev->ip_blocks[i].version->type == > AMD_IP_BLOCK_TYPE_SMC || > + adev->ip_blocks[i].version->type == > AMD_IP_BLOCK_TYPE_COMMON || > + adev->ip_blocks[i].version->type == > AMD_IP_BLOCK_TYPE_IH)) { > + adev->ip_blocks[i].status.hw = false; > + continue; > + } > /* XXX handle errors */ > r = adev->ip_blocks[i].version->funcs->suspend(adev); > /* XXX handle errors */ The above is not what you have in next-20210329? Your tree has a second copy of the first conflict block after the second: /* skip suspend of gfx and psp for S0ix [...] /* skip unnecessary suspend if we do not initialize them yet */ [...] /* skip suspend of gfx and psp for S0ix Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/amdgpu/amdgpu_device.c between commits: 9adb125dde69 ("drm/amdgpu: re-enable suspend phase 2 for S0ix") 4021229e32bd ("drm/amdgpu/swsmu: skip gfx cgpg on s0ix suspend") 9bb735abcbd8 ("drm/amdgpu: update comments about s0ix suspend/resume") from Linus' tree and commit: e3c1b0712fdb ("drm/amdgpu: Reset the devices in the XGMI hive duirng probe") from the drm tree. I fixed it up (I think - see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 8a5a8ff5d362,0f82c5d21237.. --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@@ -2743,16 -2712,15 +2720,25 @@@ static int amdgpu_device_ip_suspend_pha continue; } + /* skip suspend of gfx and psp for S0ix + * gfx is in gfxoff state, so on resume it will exit gfxoff just + * like at runtime. PSP is also part of the always on hardware + * so no need to suspend it. + */ + if (adev->in_s0ix && + (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_PSP || + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX)) + continue; + + /* skip unnecessary suspend if we do not initialize them yet */ + if (adev->gmc.xgmi.pending_reset && + !(adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC || + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SMC || + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_COMMON || + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_IH)) { + adev->ip_blocks[i].status.hw = false; + continue; + } /* XXX handle errors */ r = adev->ip_blocks[i].version->funcs->suspend(adev); /* XXX handle errors */ pgp9Rfosu7JKE.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi all, On Mon, 1 Feb 2021 12:30:12 +1100 Stephen Rothwell wrote: > > Today's linux-next merge of the drm tree got a conflict in: > > drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h > > between commit: > > a119f87b86bc ("Revert "drm/amdgpu/swsmu: drop set_fan_speed_percent (v2)"") > > from Linus' tree and commit: > > d8a0b8dd690b ("drm/amd/pm: add pptable_funcs documentation (v3)") > > from the drm tree. > > I fixed it up (see below) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. > > diff --cc drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h > index 0d797fa9f5cc,a087e00382e6.. > --- a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h > +++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h > @@@ -551,39 -924,199 +924,201 @@@ struct pptable_funcs > int (*display_clock_voltage_request)(struct smu_context *smu, struct >pp_display_clock_request >*clock_req); > + > + /** > + * @get_fan_control_mode: Get the current fan control mode. > + */ > uint32_t (*get_fan_control_mode)(struct smu_context *smu); > + > + /** > + * @set_fan_control_mode: Set the fan control mode. > + */ > int (*set_fan_control_mode)(struct smu_context *smu, uint32_t mode); > + > +int (*set_fan_speed_percent)(struct smu_context *smu, uint32_t speed); > ++ > + /** > + * @set_fan_speed_rpm: Set a static fan speed in RPM. > + */ > int (*set_fan_speed_rpm)(struct smu_context *smu, uint32_t speed); > + > + /** > + * @set_xgmi_pstate: Set inter-chip global memory interconnect pstate. > + * : Pstate to set. D0 if Nonzero, D3 otherwise. > + */ > int (*set_xgmi_pstate)(struct smu_context *smu, uint32_t pstate); > + > + /** > + * @gfx_off_control: Enable/disable graphics engine poweroff. > + */ > int (*gfx_off_control)(struct smu_context *smu, bool enable); > + > + > + /** > + * @get_gfx_off_status: Get graphics engine poweroff status. > + * > + * Return: > + * 0 - GFXOFF(default). > + * 1 - Transition out of GFX State. > + * 2 - Not in GFXOFF. > + * 3 - Transition into GFXOFF. > + */ > uint32_t (*get_gfx_off_status)(struct smu_context *smu); > + > + /** > + * @register_irq_handler: Register interupt request handlers. > + */ > int (*register_irq_handler)(struct smu_context *smu); > + > + /** > + * @set_azalia_d3_pme: Wake the audio decode engine from d3 sleep. > + */ > int (*set_azalia_d3_pme)(struct smu_context *smu); > + > + /** > + * @get_max_sustainable_clocks_by_dc: Get a copy of the max sustainable > + *clock speeds table. > + * > + * Provides a way for the display component (DC) to get the max > + * sustainable clocks from the SMU. > + */ > int (*get_max_sustainable_clocks_by_dc)(struct smu_context *smu, struct > pp_smu_nv_clock_table *max_clocks); > + > + /** > + * @baco_is_support: Check if GPU supports BACO (Bus Active, Chip Off). > + */ > bool (*baco_is_support)(struct smu_context *smu); > + > + /** > + * @baco_get_state: Get the current BACO state. > + * > + * Return: Current BACO state. > + */ > enum smu_baco_state (*baco_get_state)(struct smu_context *smu); > + > + /** > + * @baco_set_state: Enter/exit BACO. > + */ > int (*baco_set_state)(struct smu_context *smu, enum smu_baco_state > state); > + > + /** > + * @baco_enter: Enter BACO. > + */ > int (*baco_enter)(struct smu_context *smu); > + > + /** > + * @baco_exit: Exit Baco. > + */ > int (*baco_exit)(struct smu_context *smu); > + > + /** > + * @mode1_reset_is_support: Check if GPU supports mode1 reset. > + */ > bool (*mode1_reset_is_support)(struct smu_context *smu); > + > + /** > + * @mode1_reset: Perform mode1 reset. > + * > + * Complete GPU reset. > + */ > int (*mode1_reset)(struct smu_context *smu); > + > + /** > + * @mode2_reset: Perform mode2 reset. > + * > + * Mode2 reset generally does not reset as many IPs as mode1 reset. The > + * IPs reset varies by asic. > + */ > int (*mode2_reset)(struct smu_context *smu); > + > + /** > + * @get_dpm_ultimate_freq: Get the hard frequency range of a clock > + * domain in MHz. > + */ > int (*get_dpm_ultimate_freq)(struct smu_context *smu, enum smu_clk_type > clk_type, uint32_t *min, uint32_t *max); > + > + /** > +
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h between commit: a119f87b86bc ("Revert "drm/amdgpu/swsmu: drop set_fan_speed_percent (v2)"") from Linus' tree and commit: d8a0b8dd690b ("drm/amd/pm: add pptable_funcs documentation (v3)") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h index 0d797fa9f5cc,a087e00382e6.. --- a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h +++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h @@@ -551,39 -924,199 +924,201 @@@ struct pptable_funcs int (*display_clock_voltage_request)(struct smu_context *smu, struct pp_display_clock_request *clock_req); + + /** +* @get_fan_control_mode: Get the current fan control mode. +*/ uint32_t (*get_fan_control_mode)(struct smu_context *smu); + + /** +* @set_fan_control_mode: Set the fan control mode. +*/ int (*set_fan_control_mode)(struct smu_context *smu, uint32_t mode); + + int (*set_fan_speed_percent)(struct smu_context *smu, uint32_t speed); ++ + /** +* @set_fan_speed_rpm: Set a static fan speed in RPM. +*/ int (*set_fan_speed_rpm)(struct smu_context *smu, uint32_t speed); + + /** +* @set_xgmi_pstate: Set inter-chip global memory interconnect pstate. +* : Pstate to set. D0 if Nonzero, D3 otherwise. +*/ int (*set_xgmi_pstate)(struct smu_context *smu, uint32_t pstate); + + /** +* @gfx_off_control: Enable/disable graphics engine poweroff. +*/ int (*gfx_off_control)(struct smu_context *smu, bool enable); + + + /** +* @get_gfx_off_status: Get graphics engine poweroff status. +* +* Return: +* 0 - GFXOFF(default). +* 1 - Transition out of GFX State. +* 2 - Not in GFXOFF. +* 3 - Transition into GFXOFF. +*/ uint32_t (*get_gfx_off_status)(struct smu_context *smu); + + /** +* @register_irq_handler: Register interupt request handlers. +*/ int (*register_irq_handler)(struct smu_context *smu); + + /** +* @set_azalia_d3_pme: Wake the audio decode engine from d3 sleep. +*/ int (*set_azalia_d3_pme)(struct smu_context *smu); + + /** +* @get_max_sustainable_clocks_by_dc: Get a copy of the max sustainable +*clock speeds table. +* +* Provides a way for the display component (DC) to get the max +* sustainable clocks from the SMU. +*/ int (*get_max_sustainable_clocks_by_dc)(struct smu_context *smu, struct pp_smu_nv_clock_table *max_clocks); + + /** +* @baco_is_support: Check if GPU supports BACO (Bus Active, Chip Off). +*/ bool (*baco_is_support)(struct smu_context *smu); + + /** +* @baco_get_state: Get the current BACO state. +* +* Return: Current BACO state. +*/ enum smu_baco_state (*baco_get_state)(struct smu_context *smu); + + /** +* @baco_set_state: Enter/exit BACO. +*/ int (*baco_set_state)(struct smu_context *smu, enum smu_baco_state state); + + /** +* @baco_enter: Enter BACO. +*/ int (*baco_enter)(struct smu_context *smu); + + /** +* @baco_exit: Exit Baco. +*/ int (*baco_exit)(struct smu_context *smu); + + /** +* @mode1_reset_is_support: Check if GPU supports mode1 reset. +*/ bool (*mode1_reset_is_support)(struct smu_context *smu); + + /** +* @mode1_reset: Perform mode1 reset. +* +* Complete GPU reset. +*/ int (*mode1_reset)(struct smu_context *smu); + + /** +* @mode2_reset: Perform mode2 reset. +* +* Mode2 reset generally does not reset as many IPs as mode1 reset. The +* IPs reset varies by asic. +*/ int (*mode2_reset)(struct smu_context *smu); + + /** +* @get_dpm_ultimate_freq: Get the hard frequency range of a clock +* domain in MHz. +*/ int (*get_dpm_ultimate_freq)(struct smu_context *smu, enum smu_clk_type clk_type, uint32_t *min, uint32_t *max); + + /** +* @set_soft_freq_limited_range: Set the soft frequency range of a clock +* domain in MHz. +
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h between commits: 3c517ca5212f ("Revert "drm/amdgpu/disply: fix documentation warnings in display manager"") a7ddd22151fc ("Revert "drm/amd/display: Expose new CRC window property"") from Linus' tree and commit: 71338cb4a7c2 ("drm/amd/display: enable idle optimizations for linux (MALL stutter)") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h index 1182dafcef02,f084e2fc9569.. --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h @@@ -336,6 -336,39 +336,13 @@@ struct amdgpu_display_manager */ const struct gpu_info_soc_bounding_box_v1_0 *soc_bounding_box; + /** +* @active_vblank_irq_count +* +* number of currently active vblank irqs +*/ + uint32_t active_vblank_irq_count; + -#ifdef CONFIG_DEBUG_FS - /** - * @crc_win_x_start_property: - * - * X start of the crc calculation window - */ - struct drm_property *crc_win_x_start_property; - /** - * @crc_win_y_start_property: - * - * Y start of the crc calculation window - */ - struct drm_property *crc_win_y_start_property; - /** - * @crc_win_x_end_property: - * - * X end of the crc calculation window - */ - struct drm_property *crc_win_x_end_property; - /** - * @crc_win_y_end_property: - * - * Y end of the crc calculation window - */ - struct drm_property *crc_win_y_end_property; -#endif /** * @mst_encoders: * pgpUy3dd5MwN8.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c between commit: b19515253623 ("drm/amd/pm: setup APU dpm clock table in SMU HW initialization") from the Linus tree and commits: 82cac71c1b64 ("drm/amd/pm: put Navi1X umc cdr workaround in post_smu_init") 236b156f7388 ("drm/amd/pm: apply no power source workaround if dc reported by gpio") 1653a179c822 ("drm/amd/pm: move NAVI1X power mode switching workaround to post_init") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c index 8dc5abb6931e,5c4b74f964fc.. --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c @@@ -955,35 -1013,6 +1002,17 @@@ static int smu_smc_hw_setup(struct smu_ return ret; } - ret = smu_disable_umc_cdr_12gbps_workaround(smu); - if (ret) { - dev_err(adev->dev, "Workaround failed to disable UMC CDR feature on 12Gbps SKU!\n"); - return ret; - } - - /* -* For Navi1X, manually switch it to AC mode as PMFW -* may boot it with DC mode. -*/ - ret = smu_set_power_source(smu, - adev->pm.ac_power ? SMU_POWER_SOURCE_AC : - SMU_POWER_SOURCE_DC); - if (ret) { - dev_err(adev->dev, "Failed to switch to %s mode!\n", adev->pm.ac_power ? "AC" : "DC"); - return ret; - } - + /* + * Set initialized values (get from vbios) to dpm tables context such as + * gfxclk, memclk, dcefclk, and etc. And enable the DPM feature for each + * type of clks. + */ + ret = smu_set_default_dpm_table(smu); + if (ret) { + dev_err(adev->dev, "Failed to setup default dpm clock tables!\n"); + return ret; + } + ret = smu_notify_display_change(smu); if (ret) return ret; pgpNa4QYOhfcn.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/amd/display/dc/dcn10/dcn10_init.c drivers/gpu/drm/amd/display/dc/dcn20/dcn20_init.c between commit: 31ecebee9c36 ("drm/amd/display: Defer cursor lock until after VUPDATE") from Linus' tree and commits: b3a941df690f ("drm/amd/display: Power down hw blocks on boot") 4b0e95d1838f ("drm/amd/display: Add set backlight to hw sequencer.") ddea4ed01058 ("drm/amd/display: remove duplicate assignment of dcn21_funcs members") 3ba01817365c ("drm/amd/display: Move panel_cntl specific register from abm to panel_cntl.") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/display/dc/dcn10/dcn10_init.c index 9e8e32629e47,897a3d25685a.. --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_init.c +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_init.c @@@ -72,7 -72,8 +72,9 @@@ static const struct hw_sequencer_funcs .set_clock = dcn10_set_clock, .get_clock = dcn10_get_clock, .get_vupdate_offset_from_vsync = dcn10_get_vupdate_offset_from_vsync, + .set_backlight_level = dce110_set_backlight_level, + .set_abm_immediate_disable = dce110_set_abm_immediate_disable, + .calc_vupdate_position = dcn10_calc_vupdate_position, }; static const struct hwseq_private_funcs dcn10_private_funcs = { diff --cc drivers/gpu/drm/amd/display/dc/dcn20/dcn20_init.c index 8334bbd6eabb,a8bcd747d7ba.. --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_init.c +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_init.c @@@ -83,7 -83,8 +83,9 @@@ static const struct hw_sequencer_funcs .init_vm_ctx = dcn20_init_vm_ctx, .set_flip_control_gsl = dcn20_set_flip_control_gsl, .get_vupdate_offset_from_vsync = dcn10_get_vupdate_offset_from_vsync, + .set_backlight_level = dce110_set_backlight_level, + .set_abm_immediate_disable = dce110_set_abm_immediate_disable, + .calc_vupdate_position = dcn10_calc_vupdate_position, }; static const struct hwseq_private_funcs dcn20_private_funcs = { diff --cc drivers/gpu/drm/amd/display/dc/dcn21/dcn21_init.c index 4dd634118df2,e97dfaa656e9.. --- a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_init.c +++ b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_init.c @@@ -86,12 -86,9 +86,10 @@@ static const struct hw_sequencer_funcs .optimize_pwr_state = dcn21_optimize_pwr_state, .exit_optimized_pwr_state = dcn21_exit_optimized_pwr_state, .get_vupdate_offset_from_vsync = dcn10_get_vupdate_offset_from_vsync, + .calc_vupdate_position = dcn10_calc_vupdate_position, - .set_cursor_position = dcn10_set_cursor_position, - .set_cursor_attribute = dcn10_set_cursor_attribute, - .set_cursor_sdr_white_level = dcn10_set_cursor_sdr_white_level, - .optimize_pwr_state = dcn21_optimize_pwr_state, - .exit_optimized_pwr_state = dcn21_exit_optimized_pwr_state, + .power_down = dce110_power_down, + .set_backlight_level = dce110_set_backlight_level, + .set_abm_immediate_disable = dce110_set_abm_immediate_disable, }; static const struct hwseq_private_funcs dcn21_private_funcs = { pgpS1zhuj2DyT.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi all, On Thu, 22 Mar 2018 17:37:22 +1100 Stephen Rothwellwrote: > > Today's linux-next merge of the drm tree got conflicts in several amdgpu > files because there are a set of (mostly identical) patches that appear > Linus' tree and the drm tree. In each case I just used the version fo > the file from the drm tree. > > You should do a test merge between your tree and Linus' tree and see what > you want to do about the resolution (either do the back merge (I think > with v4.16-rc6), or provide Linus with branch that has the merge done). > Its a bit of a mess :-( I got a few more of these today. -- Cheers, Stephen Rothwell pgpqw3NCsq8IR.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi all, On Thu, 22 Mar 2018 17:37:22 +1100 Stephen Rothwell wrote: > > Today's linux-next merge of the drm tree got conflicts in several amdgpu > files because there are a set of (mostly identical) patches that appear > Linus' tree and the drm tree. In each case I just used the version fo > the file from the drm tree. > > You should do a test merge between your tree and Linus' tree and see what > you want to do about the resolution (either do the back merge (I think > with v4.16-rc6), or provide Linus with branch that has the merge done). > Its a bit of a mess :-( I got a few more of these today. -- Cheers, Stephen Rothwell pgpqw3NCsq8IR.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/vmwgfx/vmwgfx_drv.h drivers/gpu/drm/vmwgfx/vmwgfx_kms.c between commit: 140bcaa23a1c ("drm/vmwgfx: Fix black screen and device errors when running without fbdev") from Linus' tree and commit: c3b9b1657344 ("drm/vmwgfx: Improve on hibernation") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/vmwgfx/vmwgfx_drv.h index 9116fe8baebc,9e60de95b863.. --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h @@@ -938,7 -947,8 +947,9 @@@ int vmw_kms_present(struct vmw_private int vmw_kms_update_layout_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); void vmw_kms_legacy_hotspot_clear(struct vmw_private *dev_priv); +void vmw_kms_lost_device(struct drm_device *dev); + int vmw_kms_suspend(struct drm_device *dev); + int vmw_kms_resume(struct drm_device *dev); int vmw_dumb_create(struct drm_file *file_priv, struct drm_device *dev, diff --cc drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 3c824fd7cbf3,3628a9fe705f.. --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@@ -2561,11 -2551,10 +2557,12 @@@ int vmw_kms_helper_resource_prepare(str if (res->backup) { ret = vmw_kms_helper_buffer_prepare(res->dev_priv, res->backup, interruptible, - res->dev_priv->has_mob); + res->dev_priv->has_mob, + false); if (ret) goto out_unreserve; + + ctx->buf = vmw_dmabuf_reference(res->backup); } ret = vmw_resource_validate(res); if (ret) @@@ -2863,12 -2850,49 +2860,59 @@@ int vmw_kms_set_config(struct drm_mode_ } +/** + * vmw_kms_lost_device - Notify kms that modesetting capabilities will be lost + * + * @dev: Pointer to the drm device + */ +void vmw_kms_lost_device(struct drm_device *dev) +{ + drm_atomic_helper_shutdown(dev); +} ++ + /** + * vmw_kms_suspend - Save modesetting state and turn modesetting off. + * + * @dev: Pointer to the drm device + * Return: 0 on success. Negative error code on failure. + */ + int vmw_kms_suspend(struct drm_device *dev) + { + struct vmw_private *dev_priv = vmw_priv(dev); + + dev_priv->suspend_state = drm_atomic_helper_suspend(dev); + if (IS_ERR(dev_priv->suspend_state)) { + int ret = PTR_ERR(dev_priv->suspend_state); + + DRM_ERROR("Failed kms suspend: %d\n", ret); + dev_priv->suspend_state = NULL; + + return ret; + } + + return 0; + } + + + /** + * vmw_kms_resume - Re-enable modesetting and restore state + * + * @dev: Pointer to the drm device + * Return: 0 on success. Negative error code on failure. + * + * State is resumed from a previous vmw_kms_suspend(). It's illegal + * to call this function without a previous vmw_kms_suspend(). + */ + int vmw_kms_resume(struct drm_device *dev) + { + struct vmw_private *dev_priv = vmw_priv(dev); + int ret; + + if (WARN_ON(!dev_priv->suspend_state)) + return 0; + + ret = drm_atomic_helper_resume(dev, dev_priv->suspend_state); + dev_priv->suspend_state = NULL; + + return ret; + } pgpZ5ofp8Ayc4.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/vmwgfx/vmwgfx_drv.h drivers/gpu/drm/vmwgfx/vmwgfx_kms.c between commit: 140bcaa23a1c ("drm/vmwgfx: Fix black screen and device errors when running without fbdev") from Linus' tree and commit: c3b9b1657344 ("drm/vmwgfx: Improve on hibernation") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/vmwgfx/vmwgfx_drv.h index 9116fe8baebc,9e60de95b863.. --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h @@@ -938,7 -947,8 +947,9 @@@ int vmw_kms_present(struct vmw_private int vmw_kms_update_layout_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); void vmw_kms_legacy_hotspot_clear(struct vmw_private *dev_priv); +void vmw_kms_lost_device(struct drm_device *dev); + int vmw_kms_suspend(struct drm_device *dev); + int vmw_kms_resume(struct drm_device *dev); int vmw_dumb_create(struct drm_file *file_priv, struct drm_device *dev, diff --cc drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 3c824fd7cbf3,3628a9fe705f.. --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@@ -2561,11 -2551,10 +2557,12 @@@ int vmw_kms_helper_resource_prepare(str if (res->backup) { ret = vmw_kms_helper_buffer_prepare(res->dev_priv, res->backup, interruptible, - res->dev_priv->has_mob); + res->dev_priv->has_mob, + false); if (ret) goto out_unreserve; + + ctx->buf = vmw_dmabuf_reference(res->backup); } ret = vmw_resource_validate(res); if (ret) @@@ -2863,12 -2850,49 +2860,59 @@@ int vmw_kms_set_config(struct drm_mode_ } +/** + * vmw_kms_lost_device - Notify kms that modesetting capabilities will be lost + * + * @dev: Pointer to the drm device + */ +void vmw_kms_lost_device(struct drm_device *dev) +{ + drm_atomic_helper_shutdown(dev); +} ++ + /** + * vmw_kms_suspend - Save modesetting state and turn modesetting off. + * + * @dev: Pointer to the drm device + * Return: 0 on success. Negative error code on failure. + */ + int vmw_kms_suspend(struct drm_device *dev) + { + struct vmw_private *dev_priv = vmw_priv(dev); + + dev_priv->suspend_state = drm_atomic_helper_suspend(dev); + if (IS_ERR(dev_priv->suspend_state)) { + int ret = PTR_ERR(dev_priv->suspend_state); + + DRM_ERROR("Failed kms suspend: %d\n", ret); + dev_priv->suspend_state = NULL; + + return ret; + } + + return 0; + } + + + /** + * vmw_kms_resume - Re-enable modesetting and restore state + * + * @dev: Pointer to the drm device + * Return: 0 on success. Negative error code on failure. + * + * State is resumed from a previous vmw_kms_suspend(). It's illegal + * to call this function without a previous vmw_kms_suspend(). + */ + int vmw_kms_resume(struct drm_device *dev) + { + struct vmw_private *dev_priv = vmw_priv(dev); + int ret; + + if (WARN_ON(!dev_priv->suspend_state)) + return 0; + + ret = drm_atomic_helper_resume(dev, dev_priv->suspend_state); + dev_priv->suspend_state = NULL; + + return ret; + } pgpZ5ofp8Ayc4.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got conflicts in several amdgpu files because there are a set of (mostly identical) patches that appear Linus' tree and the drm tree. In each case I just used the version fo the file from the drm tree. You should do a test merge between your tree and Linus' tree and see what you want to do about the resolution (either do the back merge (I think with v4.16-rc6), or provide Linus with branch that has the merge done). Its a bit of a mess :-( -- Cheers, Stephen Rothwell pgplUIjH36xU1.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got conflicts in several amdgpu files because there are a set of (mostly identical) patches that appear Linus' tree and the drm tree. In each case I just used the version fo the file from the drm tree. You should do a test merge between your tree and Linus' tree and see what you want to do about the resolution (either do the back merge (I think with v4.16-rc6), or provide Linus with branch that has the merge done). Its a bit of a mess :-( -- Cheers, Stephen Rothwell pgplUIjH36xU1.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c between commit: a0aaa03062be ("drm/amd/powerplay: fix power over limit on Fiji") from the Linus' and commit: a5278e511dce ("drm/amd/pp: Revert gfx/compute profile switch sysfs") from the drm tree. I fixed it up (I just used the latter version) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell pgpnXVQQmYWz6.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c between commit: a0aaa03062be ("drm/amd/powerplay: fix power over limit on Fiji") from the Linus' and commit: a5278e511dce ("drm/amd/pp: Revert gfx/compute profile switch sysfs") from the drm tree. I fixed it up (I just used the latter version) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell pgpnXVQQmYWz6.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
On Mon, Feb 19, 2018 at 10:10:50AM +1100, Stephen Rothwell wrote: > Hi all, > > Today's linux-next merge of the drm tree got a conflict in: > > drivers/gpu/drm/i915/intel_breadcrumbs.c > > between commit: > > 117172c8f9d4 ("drm/i915/breadcrumbs: Ignore unsubmitted signalers") > > from Linus' tree and commit: > > b7a3f33bd5ab ("drm/i915/breadcrumbs: Drop request reference for the > signaler thread") > > from the drm tree. > > These are basically identical for the conflicting section except that > the former added a line: > > GEM_BUG_ON(!i915_gem_request_completed(request)); > > which I left in. > > I fixed it up (see above) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. For this and for the PMU one, I'm really sorry. I believe I should had mentioned this to Dave when sending pull request for drm-intel-fixes. I didn't mentioned because for what fixes is concerned this shouldn't be a problem, but I totally forgot about linux-next. Please accept my apologies. Do you use any rerere on linux-next? I wonder if drm-rerere could be used somehow here to simplify this process of propagating conflicts resolutions like this. Thanks, Rodrigo. > > -- > Cheers, > Stephen Rothwell > ___ > dri-devel mailing list > dri-de...@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: linux-next: manual merge of the drm tree with Linus' tree
On Mon, Feb 19, 2018 at 10:10:50AM +1100, Stephen Rothwell wrote: > Hi all, > > Today's linux-next merge of the drm tree got a conflict in: > > drivers/gpu/drm/i915/intel_breadcrumbs.c > > between commit: > > 117172c8f9d4 ("drm/i915/breadcrumbs: Ignore unsubmitted signalers") > > from Linus' tree and commit: > > b7a3f33bd5ab ("drm/i915/breadcrumbs: Drop request reference for the > signaler thread") > > from the drm tree. > > These are basically identical for the conflicting section except that > the former added a line: > > GEM_BUG_ON(!i915_gem_request_completed(request)); > > which I left in. > > I fixed it up (see above) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. For this and for the PMU one, I'm really sorry. I believe I should had mentioned this to Dave when sending pull request for drm-intel-fixes. I didn't mentioned because for what fixes is concerned this shouldn't be a problem, but I totally forgot about linux-next. Please accept my apologies. Do you use any rerere on linux-next? I wonder if drm-rerere could be used somehow here to simplify this process of propagating conflicts resolutions like this. Thanks, Rodrigo. > > -- > Cheers, > Stephen Rothwell > ___ > dri-devel mailing list > dri-de...@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/intel_breadcrumbs.c between commit: 117172c8f9d4 ("drm/i915/breadcrumbs: Ignore unsubmitted signalers") from Linus' tree and commit: b7a3f33bd5ab ("drm/i915/breadcrumbs: Drop request reference for the signaler thread") from the drm tree. These are basically identical for the conflicting section except that the former added a line: GEM_BUG_ON(!i915_gem_request_completed(request)); which I left in. I fixed it up (see above) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell pgpOAdJukWRAk.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/intel_breadcrumbs.c between commit: 117172c8f9d4 ("drm/i915/breadcrumbs: Ignore unsubmitted signalers") from Linus' tree and commit: b7a3f33bd5ab ("drm/i915/breadcrumbs: Drop request reference for the signaler thread") from the drm tree. These are basically identical for the conflicting section except that the former added a line: GEM_BUG_ON(!i915_gem_request_completed(request)); which I left in. I fixed it up (see above) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell pgpOAdJukWRAk.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/i915_pmu.h between commit: 4c83f0a788cc ("drm/i915/pmu: Fix sleep under atomic in RC6 readout") from Linus' tree and commit: 109ec558370f ("drm/i915/pmu: Only enumerate available counters in sysfs") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/i915/i915_pmu.h index bb62df15afa4,5a2e013a56bb.. --- a/drivers/gpu/drm/i915/i915_pmu.h +++ b/drivers/gpu/drm/i915/i915_pmu.h @@@ -96,10 -94,14 +96,18 @@@ struct i915_pmu * struct intel_engine_cs. */ struct i915_pmu_sample sample[__I915_NUM_PMU_SAMPLERS]; + /** + * @suspended_jiffies_last: Cached suspend time from PM core. + */ + unsigned long suspended_jiffies_last; + /** +* @i915_attr: Memory block holding device attributes. +*/ + void *i915_attr; + /** +* @pmu_attr: Memory block holding device attributes. +*/ + void *pmu_attr; }; #ifdef CONFIG_PERF_EVENTS pgpJhp83dm_cQ.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/i915_pmu.h between commit: 4c83f0a788cc ("drm/i915/pmu: Fix sleep under atomic in RC6 readout") from Linus' tree and commit: 109ec558370f ("drm/i915/pmu: Only enumerate available counters in sysfs") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/i915/i915_pmu.h index bb62df15afa4,5a2e013a56bb.. --- a/drivers/gpu/drm/i915/i915_pmu.h +++ b/drivers/gpu/drm/i915/i915_pmu.h @@@ -96,10 -94,14 +96,18 @@@ struct i915_pmu * struct intel_engine_cs. */ struct i915_pmu_sample sample[__I915_NUM_PMU_SAMPLERS]; + /** + * @suspended_jiffies_last: Cached suspend time from PM core. + */ + unsigned long suspended_jiffies_last; + /** +* @i915_attr: Memory block holding device attributes. +*/ + void *i915_attr; + /** +* @pmu_attr: Memory block holding device attributes. +*/ + void *pmu_attr; }; #ifdef CONFIG_PERF_EVENTS pgpJhp83dm_cQ.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/tegra/sor.c between commit: d780537f9b49 ("drm/tegra: sor: Fix hang on Tegra124 eDP") from Linus' tree and commit: 1087fac18b8e ("drm/tegra: dc: Use direct offset to plane registers") from the drm tree. I fixed it up (I just included the comment from the former) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/tegra/sor.c between commit: d780537f9b49 ("drm/tegra: sor: Fix hang on Tegra124 eDP") from Linus' tree and commit: 1087fac18b8e ("drm/tegra: dc: Use direct offset to plane registers") from the drm tree. I fixed it up (I just included the comment from the former) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi all, FIXME: Add owner of second tree to To: Add author(s)/SOB of conflicting commits. Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c between commits: 0290c4ca2536 ("of: overlay: rename identifiers to more reflect what they do") 24789c5ce5a3 ("of: overlay: detect cases where device tree may become corrupt") f948d6d8b792 ("of: overlay: avoid race condition between applying multiple overlays") from Linus' tree and commit: 739acd85ffdb ("drm/tilcdc: Remove obsolete "ti,tilcdc,slave" dts binding support") from the drm tree. I fixed it up (the latter removed the file, so I did that) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi all, FIXME: Add owner of second tree to To: Add author(s)/SOB of conflicting commits. Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c between commits: 0290c4ca2536 ("of: overlay: rename identifiers to more reflect what they do") 24789c5ce5a3 ("of: overlay: detect cases where device tree may become corrupt") f948d6d8b792 ("of: overlay: avoid race condition between applying multiple overlays") from Linus' tree and commit: 739acd85ffdb ("drm/tilcdc: Remove obsolete "ti,tilcdc,slave" dts binding support") from the drm tree. I fixed it up (the latter removed the file, so I did that) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/intel_runtime_pm.c between commit: 2a8408e537250 ("drm/i915/cnl: Reprogram DMC firmware after S3/S4 resume") from Linus' tree and commit: 57522c4c87de2 ("drm/i915/cnl: Reprogram DMC firmware after S3/S4 resume") from the drm tree. This one has also been in Linus' tree since -rc6. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. diff --cc drivers/gpu/drm/i915/intel_display.c index 5c7828c52d12,7e91dc9a0fcf.. --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c diff --cc drivers/gpu/drm/i915/intel_runtime_pm.c index 49577eba8e7e,8af286c63d3b.. --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c signature.asc Description: PGP signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/intel_runtime_pm.c between commit: 2a8408e537250 ("drm/i915/cnl: Reprogram DMC firmware after S3/S4 resume") from Linus' tree and commit: 57522c4c87de2 ("drm/i915/cnl: Reprogram DMC firmware after S3/S4 resume") from the drm tree. This one has also been in Linus' tree since -rc6. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. diff --cc drivers/gpu/drm/i915/intel_display.c index 5c7828c52d12,7e91dc9a0fcf.. --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c diff --cc drivers/gpu/drm/i915/intel_runtime_pm.c index 49577eba8e7e,8af286c63d3b.. --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c signature.asc Description: PGP signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/scheduler/gpu_scheduler.c between commit: c94501279bb191c ("Revert "drm/amdgpu: discard commands of killed processes"") from Linus' tree (it even made it into -rc6 over a week ago!) and the fixes it explicitly identifies from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. diff --cc drivers/gpu/drm/amd/scheduler/gpu_scheduler.c index 38cea6fb25a8,e4d3b4ec4e92.. --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c @@@ -208,14 -209,34 +209,35 @@@ void amd_sched_entity_fini(struct amd_g if (!amd_sched_entity_is_initialized(sched, entity)) return; + /** * The client will not queue more IBs during this fini, consume existing - * queued IBs or discard them on SIGKILL + * queued IBs */ - wait_event(sched->job_scheduled, amd_sched_entity_is_idle(entity)); + if ((current->flags & PF_SIGNALED) && current->exit_code == SIGKILL) + r = -ERESTARTSYS; + else + r = wait_event_killable(sched->job_scheduled, + amd_sched_entity_is_idle(entity)); + amd_sched_entity_set_rq(entity, NULL); + if (r) { + struct amd_sched_job *job; + + /* Park the kernel for a moment to make sure it isn't processing +* our enity. +*/ + kthread_park(sched->thread); + kthread_unpark(sched->thread); + while (kfifo_out(>job_queue, , sizeof(job))) { + struct amd_sched_fence *s_fence = job->s_fence; + amd_sched_fence_scheduled(s_fence); + dma_fence_set_error(_fence->finished, -ESRCH); + amd_sched_fence_finished(s_fence); + dma_fence_put(_fence->finished); + sched->ops->free_job(job); + } - amd_sched_rq_remove_entity(rq, entity); + } kfifo_free(>job_queue); } signature.asc Description: PGP signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/scheduler/gpu_scheduler.c between commit: c94501279bb191c ("Revert "drm/amdgpu: discard commands of killed processes"") from Linus' tree (it even made it into -rc6 over a week ago!) and the fixes it explicitly identifies from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. diff --cc drivers/gpu/drm/amd/scheduler/gpu_scheduler.c index 38cea6fb25a8,e4d3b4ec4e92.. --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c @@@ -208,14 -209,34 +209,35 @@@ void amd_sched_entity_fini(struct amd_g if (!amd_sched_entity_is_initialized(sched, entity)) return; + /** * The client will not queue more IBs during this fini, consume existing - * queued IBs or discard them on SIGKILL + * queued IBs */ - wait_event(sched->job_scheduled, amd_sched_entity_is_idle(entity)); + if ((current->flags & PF_SIGNALED) && current->exit_code == SIGKILL) + r = -ERESTARTSYS; + else + r = wait_event_killable(sched->job_scheduled, + amd_sched_entity_is_idle(entity)); + amd_sched_entity_set_rq(entity, NULL); + if (r) { + struct amd_sched_job *job; + + /* Park the kernel for a moment to make sure it isn't processing +* our enity. +*/ + kthread_park(sched->thread); + kthread_unpark(sched->thread); + while (kfifo_out(>job_queue, , sizeof(job))) { + struct amd_sched_fence *s_fence = job->s_fence; + amd_sched_fence_scheduled(s_fence); + dma_fence_set_error(_fence->finished, -ESRCH); + amd_sched_fence_finished(s_fence); + dma_fence_put(_fence->finished); + sched->ops->free_job(job); + } - amd_sched_rq_remove_entity(rq, entity); + } kfifo_free(>job_queue); } signature.asc Description: PGP signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/imx/ipuv3-plane.c between commit: 5be5dd38d462 ("drm/imx: ipuv3-plane: fix YUV framebuffer scanout on the base plane") from Linus' tree and commit: 58dff39904c0 ("drm/imx: ipuv3-plane: use fb local variable instead of state->fb") from the drm tree. I fixed it up (the former included the latter change) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/imx/ipuv3-plane.c between commit: 5be5dd38d462 ("drm/imx: ipuv3-plane: fix YUV framebuffer scanout on the base plane") from Linus' tree and commit: 58dff39904c0 ("drm/imx: ipuv3-plane: use fb local variable instead of state->fb") from the drm tree. I fixed it up (the former included the latter change) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/nouveau/nv50_display.c between commit: 4a5431af19bc ("drm/nouveau/kms/nv50: update vblank state in response to modeset actions") from Linus' tree and commit: ca814b25538a ("drm/vblank: Consistent drm_crtc_ prefix") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/nouveau/nv50_display.c index 2bc0dc985214,747c99c1e474.. --- a/drivers/gpu/drm/nouveau/nv50_display.c +++ b/drivers/gpu/drm/nouveau/nv50_display.c @@@ -4080,8 -4068,7 +4081,8 @@@ nv50_disp_atomic_commit_tail(struct drm if (crtc->state->event) { unsigned long flags; /* Get correct count/ts if racing with vblank irq */ - drm_crtc_accurate_vblank_count(crtc); + if (crtc->state->active) - drm_accurate_vblank_count(crtc); ++ drm_crtc_accurate_vblank_count(crtc); spin_lock_irqsave(>dev->event_lock, flags); drm_crtc_send_vblank_event(crtc, crtc->state->event); spin_unlock_irqrestore(>dev->event_lock, flags);
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/nouveau/nv50_display.c between commit: 4a5431af19bc ("drm/nouveau/kms/nv50: update vblank state in response to modeset actions") from Linus' tree and commit: ca814b25538a ("drm/vblank: Consistent drm_crtc_ prefix") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/nouveau/nv50_display.c index 2bc0dc985214,747c99c1e474.. --- a/drivers/gpu/drm/nouveau/nv50_display.c +++ b/drivers/gpu/drm/nouveau/nv50_display.c @@@ -4080,8 -4068,7 +4081,8 @@@ nv50_disp_atomic_commit_tail(struct drm if (crtc->state->event) { unsigned long flags; /* Get correct count/ts if racing with vblank irq */ - drm_crtc_accurate_vblank_count(crtc); + if (crtc->state->active) - drm_accurate_vblank_count(crtc); ++ drm_crtc_accurate_vblank_count(crtc); spin_lock_irqsave(>dev->event_lock, flags); drm_crtc_send_vblank_event(crtc, crtc->state->event); spin_unlock_irqrestore(>dev->event_lock, flags);
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi all, On Mon, 24 Jul 2017 12:06:05 +1000 Stephen Rothwellwrote: > > Today's linux-next merge of the drm tree got a conflict in: > > MAINTAINERS > > between commit: > > 82abbea734d6 ("MAINTAINERS: fix alphabetical ordering") > > from Linus' tree and commit: > > 3589211e9b03 ("drm/tinydrm: Add RePaper e-ink driver") > > from the drm tree. > > I fixed it up (see below) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. I did the resolution again after running Linus' script ... -- Cheers, Stephen Rothwell diff --cc MAINTAINERS index 55859cdde82a,9387e6aed3b8.. --- a/MAINTAINERS +++ b/MAINTAINERS @@@ -4306,130 -4349,68 +4306,136 @@@ T: git git://anongit.freedesktop.org/dr S:Maintained F:drivers/gpu/drm/bochs/ -DRM DRIVER FOR QEMU'S CIRRUS DEVICE +DRM DRIVER FOR INTEL I810 VIDEO CARDS +S:Orphan / Obsolete +F:drivers/gpu/drm/i810/ +F:include/uapi/drm/i810_drm.h + +DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS +S:Orphan / Obsolete +F:drivers/gpu/drm/mga/ +F:include/uapi/drm/mga_drm.h + +DRM DRIVER FOR MGA G200 SERVER GRAPHICS CHIPS M:Dave Airlie -M:Gerd Hoffmann -L:virtualizat...@lists.linux-foundation.org -T:git git://anongit.freedesktop.org/drm/drm-misc -S:Obsolete -W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/ -F:drivers/gpu/drm/cirrus/ +S:Odd Fixes +F:drivers/gpu/drm/mgag200/ -RADEON and AMDGPU DRM DRIVERS -M:Alex Deucher -M:Christian König -L:amd-...@lists.freedesktop.org -T:git git://people.freedesktop.org/~agd5f/linux -S:Supported -F:drivers/gpu/drm/radeon/ -F:include/uapi/drm/radeon_drm.h -F:drivers/gpu/drm/amd/ -F:include/uapi/drm/amdgpu_drm.h +DRM DRIVER FOR MI0283QT +M:Noralf Trønnes +S:Maintained +F:drivers/gpu/drm/tinydrm/mi0283qt.c +F:Documentation/devicetree/bindings/display/multi-inno,mi0283qt.txt -DRM PANEL DRIVERS -M:Thierry Reding +DRM DRIVER FOR MSM ADRENO GPU +M:Rob Clark +L:linux-arm-...@vger.kernel.org L:dri-de...@lists.freedesktop.org -T:git git://anongit.freedesktop.org/tegra/linux.git +L:freedr...@lists.freedesktop.org +T:git git://people.freedesktop.org/~robclark/linux S:Maintained -F:drivers/gpu/drm/drm_panel.c -F:drivers/gpu/drm/panel/ -F:include/drm/drm_panel.h -F:Documentation/devicetree/bindings/display/panel/ +F:drivers/gpu/drm/msm/ +F:include/uapi/drm/msm_drm.h +F:Documentation/devicetree/bindings/display/msm/ -INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets) -M:Daniel Vetter -M:Jani Nikula -L:intel-...@lists.freedesktop.org -W:https://01.org/linuxgraphics/ -B:https://01.org/linuxgraphics/documentation/how-report-bugs -C:irc://chat.freenode.net/intel-gfx -Q:http://patchwork.freedesktop.org/project/intel-gfx/ -T:git git://anongit.freedesktop.org/drm-intel +DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS +M:Ben Skeggs +L:dri-de...@lists.freedesktop.org +L:nouv...@lists.freedesktop.org +T:git git://github.com/skeggsb/linux S:Supported -F:drivers/gpu/drm/i915/ -F:include/drm/i915* -F:include/uapi/drm/i915_drm.h -F:Documentation/gpu/i915.rst +F:drivers/gpu/drm/nouveau/ +F:include/uapi/drm/nouveau_drm.h -INTEL GVT-g DRIVERS (Intel GPU Virtualization) -M: Zhenyu Wang -M: Zhi Wang -L: intel-gvt-...@lists.freedesktop.org -L: intel-...@lists.freedesktop.org -W: https://01.org/igvt-g -T: git https://github.com/01org/gvt-linux.git -S: Supported -F: drivers/gpu/drm/i915/gvt/ ++DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS ++M:Noralf Trønnes ++S:Maintained ++F:drivers/gpu/drm/tinydrm/repaper.c ++F:Documentation/devicetree/bindings/display/repaper.txt + -DRM DRIVERS FOR ATMEL HLCDC -M:Boris Brezillon +DRM DRIVER FOR QEMU'S CIRRUS DEVICE +M:Dave Airlie +M:Gerd Hoffmann +L:virtualizat...@lists.linux-foundation.org +T:git git://anongit.freedesktop.org/drm/drm-misc +S:Obsolete +W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/ +F:
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi all, On Mon, 24 Jul 2017 12:06:05 +1000 Stephen Rothwell wrote: > > Today's linux-next merge of the drm tree got a conflict in: > > MAINTAINERS > > between commit: > > 82abbea734d6 ("MAINTAINERS: fix alphabetical ordering") > > from Linus' tree and commit: > > 3589211e9b03 ("drm/tinydrm: Add RePaper e-ink driver") > > from the drm tree. > > I fixed it up (see below) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. I did the resolution again after running Linus' script ... -- Cheers, Stephen Rothwell diff --cc MAINTAINERS index 55859cdde82a,9387e6aed3b8.. --- a/MAINTAINERS +++ b/MAINTAINERS @@@ -4306,130 -4349,68 +4306,136 @@@ T: git git://anongit.freedesktop.org/dr S:Maintained F:drivers/gpu/drm/bochs/ -DRM DRIVER FOR QEMU'S CIRRUS DEVICE +DRM DRIVER FOR INTEL I810 VIDEO CARDS +S:Orphan / Obsolete +F:drivers/gpu/drm/i810/ +F:include/uapi/drm/i810_drm.h + +DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS +S:Orphan / Obsolete +F:drivers/gpu/drm/mga/ +F:include/uapi/drm/mga_drm.h + +DRM DRIVER FOR MGA G200 SERVER GRAPHICS CHIPS M:Dave Airlie -M:Gerd Hoffmann -L:virtualizat...@lists.linux-foundation.org -T:git git://anongit.freedesktop.org/drm/drm-misc -S:Obsolete -W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/ -F:drivers/gpu/drm/cirrus/ +S:Odd Fixes +F:drivers/gpu/drm/mgag200/ -RADEON and AMDGPU DRM DRIVERS -M:Alex Deucher -M:Christian König -L:amd-...@lists.freedesktop.org -T:git git://people.freedesktop.org/~agd5f/linux -S:Supported -F:drivers/gpu/drm/radeon/ -F:include/uapi/drm/radeon_drm.h -F:drivers/gpu/drm/amd/ -F:include/uapi/drm/amdgpu_drm.h +DRM DRIVER FOR MI0283QT +M:Noralf Trønnes +S:Maintained +F:drivers/gpu/drm/tinydrm/mi0283qt.c +F:Documentation/devicetree/bindings/display/multi-inno,mi0283qt.txt -DRM PANEL DRIVERS -M:Thierry Reding +DRM DRIVER FOR MSM ADRENO GPU +M:Rob Clark +L:linux-arm-...@vger.kernel.org L:dri-de...@lists.freedesktop.org -T:git git://anongit.freedesktop.org/tegra/linux.git +L:freedr...@lists.freedesktop.org +T:git git://people.freedesktop.org/~robclark/linux S:Maintained -F:drivers/gpu/drm/drm_panel.c -F:drivers/gpu/drm/panel/ -F:include/drm/drm_panel.h -F:Documentation/devicetree/bindings/display/panel/ +F:drivers/gpu/drm/msm/ +F:include/uapi/drm/msm_drm.h +F:Documentation/devicetree/bindings/display/msm/ -INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets) -M:Daniel Vetter -M:Jani Nikula -L:intel-...@lists.freedesktop.org -W:https://01.org/linuxgraphics/ -B:https://01.org/linuxgraphics/documentation/how-report-bugs -C:irc://chat.freenode.net/intel-gfx -Q:http://patchwork.freedesktop.org/project/intel-gfx/ -T:git git://anongit.freedesktop.org/drm-intel +DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS +M:Ben Skeggs +L:dri-de...@lists.freedesktop.org +L:nouv...@lists.freedesktop.org +T:git git://github.com/skeggsb/linux S:Supported -F:drivers/gpu/drm/i915/ -F:include/drm/i915* -F:include/uapi/drm/i915_drm.h -F:Documentation/gpu/i915.rst +F:drivers/gpu/drm/nouveau/ +F:include/uapi/drm/nouveau_drm.h -INTEL GVT-g DRIVERS (Intel GPU Virtualization) -M: Zhenyu Wang -M: Zhi Wang -L: intel-gvt-...@lists.freedesktop.org -L: intel-...@lists.freedesktop.org -W: https://01.org/igvt-g -T: git https://github.com/01org/gvt-linux.git -S: Supported -F: drivers/gpu/drm/i915/gvt/ ++DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS ++M:Noralf Trønnes ++S:Maintained ++F:drivers/gpu/drm/tinydrm/repaper.c ++F:Documentation/devicetree/bindings/display/repaper.txt + -DRM DRIVERS FOR ATMEL HLCDC -M:Boris Brezillon +DRM DRIVER FOR QEMU'S CIRRUS DEVICE +M:Dave Airlie +M:Gerd Hoffmann +L:virtualizat...@lists.linux-foundation.org +T:git git://anongit.freedesktop.org/drm/drm-misc +S:Obsolete +W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/ +F:drivers/gpu/drm/cirrus/ + +DRM DRIVER FOR QXL VIRTUAL GPU +M:Dave Airlie +M:Gerd Hoffmann +L:virtualizat...@lists.linux-foundation.org +T:git git://anongit.freedesktop.org/drm/drm-misc +S:Maintained +F:drivers/gpu/drm/qxl/ +F:include/uapi/drm/qxl_drm.h + +DRM DRIVER FOR RAGE 128 VIDEO CARDS +S:Orphan / Obsolete +F:drivers/gpu/drm/r128/ +F:
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: MAINTAINERS between commit: 82abbea734d6 ("MAINTAINERS: fix alphabetical ordering") from Linus' tree and commit: 3589211e9b03 ("drm/tinydrm: Add RePaper e-ink driver") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc MAINTAINERS index 55859cdde82a,9387e6aed3b8.. --- a/MAINTAINERS +++ b/MAINTAINERS @@@ -4535,6 -4531,27 +4535,12 @@@ F:include/linux/host1x. F:include/uapi/drm/tegra_drm.h F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt -DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS -S:Orphan / Obsolete -F:drivers/gpu/drm/mga/ -F:include/uapi/drm/mga_drm.h - -DRM DRIVER FOR MGA G200 SERVER GRAPHICS CHIPS -M:Dave Airlie-S:Odd Fixes -F:drivers/gpu/drm/mgag200/ - + DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS + M:Noralf Trønnes + S:Maintained + F:drivers/gpu/drm/tinydrm/repaper.c + F:Documentation/devicetree/bindings/display/repaper.txt + -DRM DRIVER FOR RAGE 128 VIDEO CARDS -S:Orphan / Obsolete -F:drivers/gpu/drm/r128/ -F:include/uapi/drm/r128_drm.h - DRM DRIVERS FOR RENESAS M:Laurent Pinchart L:dri-de...@lists.freedesktop.org
linux-next: manual merge of the drm tree with Linus' tree
Hi all, Today's linux-next merge of the drm tree got a conflict in: MAINTAINERS between commit: 82abbea734d6 ("MAINTAINERS: fix alphabetical ordering") from Linus' tree and commit: 3589211e9b03 ("drm/tinydrm: Add RePaper e-ink driver") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc MAINTAINERS index 55859cdde82a,9387e6aed3b8.. --- a/MAINTAINERS +++ b/MAINTAINERS @@@ -4535,6 -4531,27 +4535,12 @@@ F:include/linux/host1x. F:include/uapi/drm/tegra_drm.h F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt -DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS -S:Orphan / Obsolete -F:drivers/gpu/drm/mga/ -F:include/uapi/drm/mga_drm.h - -DRM DRIVER FOR MGA G200 SERVER GRAPHICS CHIPS -M:Dave Airlie -S:Odd Fixes -F:drivers/gpu/drm/mgag200/ - + DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS + M:Noralf Trønnes + S:Maintained + F:drivers/gpu/drm/tinydrm/repaper.c + F:Documentation/devicetree/bindings/display/repaper.txt + -DRM DRIVER FOR RAGE 128 VIDEO CARDS -S:Orphan / Obsolete -F:drivers/gpu/drm/r128/ -F:include/uapi/drm/r128_drm.h - DRM DRIVERS FOR RENESAS M:Laurent Pinchart L:dri-de...@lists.freedesktop.org
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/intel_dp.c between commit: 8001b7541aa7 ("drm/i915/dp: rename rate_to_index() to intel_dp_rate_index() and reuse") from Linus' tree and commit: 3194102439f6 ("drm/i915/dp: use known correct array size in rate_to_index") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/i915/intel_dp.c index fc691b8b317c,4a6feb6a69bd.. --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@@ -1507,17 -1548,37 +1548,6 @@@ static void intel_dp_print_rates(struc DRM_DEBUG_KMS("common rates: %s\n", str); } - static int rate_to_index(int find, const int *rates) -bool -__intel_dp_read_desc(struct intel_dp *intel_dp, struct intel_dp_desc *desc) --{ - int i = 0; - u32 base = drm_dp_is_branch(intel_dp->dpcd) ? DP_BRANCH_OUI : -DP_SINK_OUI; -- - for (i = 0; i < DP_MAX_SUPPORTED_RATES; ++i) - if (find == rates[i]) - break; - return drm_dp_dpcd_read(_dp->aux, base, desc, sizeof(*desc)) == - sizeof(*desc); -} -- - return i; -bool intel_dp_read_desc(struct intel_dp *intel_dp) -{ - struct intel_dp_desc *desc = _dp->desc; - bool oui_sup = intel_dp->dpcd[DP_DOWN_STREAM_PORT_COUNT] & - DP_OUI_SUPPORT; - int dev_id_len; - - if (!__intel_dp_read_desc(intel_dp, desc)) - return false; - - dev_id_len = strnlen(desc->device_id, sizeof(desc->device_id)); - DRM_DEBUG_KMS("DP %s: OUI %*phD%s dev-ID %*pE HW-rev %d.%d SW-rev %d.%d\n", -drm_dp_is_branch(intel_dp->dpcd) ? "branch" : "sink", -(int)sizeof(desc->oui), desc->oui, oui_sup ? "" : "(NS)", -dev_id_len, desc->device_id, -desc->hw_rev >> 4, desc->hw_rev & 0xf, -desc->sw_major_rev, desc->sw_minor_rev); - - return true; --} -- int intel_dp_max_link_rate(struct intel_dp *intel_dp) { @@@ -1587,16 -1654,13 +1623,15 @@@ intel_dp_compute_config(struct intel_en /* Conveniently, the link BW constants become indices with a shift...*/ int min_clock = 0; int max_clock; - int link_rate_index; int bpp, mode_rate; int link_avail, link_clock; - int common_rates[DP_MAX_SUPPORTED_RATES] = {}; int common_len; uint8_t link_bw, rate_select; + bool reduce_m_n = drm_dp_has_quirk(_dp->desc, + DP_DPCD_QUIRK_LIMITED_M_N); - common_len = intel_dp_common_rates(intel_dp, common_rates); + common_len = intel_dp_common_len_rate_limit(intel_dp, + intel_dp->max_link_rate); /* No common link rates between source and sink */ WARN_ON(common_len <= 0);
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/intel_dp.c between commit: 8001b7541aa7 ("drm/i915/dp: rename rate_to_index() to intel_dp_rate_index() and reuse") from Linus' tree and commit: 3194102439f6 ("drm/i915/dp: use known correct array size in rate_to_index") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/i915/intel_dp.c index fc691b8b317c,4a6feb6a69bd.. --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@@ -1507,17 -1548,37 +1548,6 @@@ static void intel_dp_print_rates(struc DRM_DEBUG_KMS("common rates: %s\n", str); } - static int rate_to_index(int find, const int *rates) -bool -__intel_dp_read_desc(struct intel_dp *intel_dp, struct intel_dp_desc *desc) --{ - int i = 0; - u32 base = drm_dp_is_branch(intel_dp->dpcd) ? DP_BRANCH_OUI : -DP_SINK_OUI; -- - for (i = 0; i < DP_MAX_SUPPORTED_RATES; ++i) - if (find == rates[i]) - break; - return drm_dp_dpcd_read(_dp->aux, base, desc, sizeof(*desc)) == - sizeof(*desc); -} -- - return i; -bool intel_dp_read_desc(struct intel_dp *intel_dp) -{ - struct intel_dp_desc *desc = _dp->desc; - bool oui_sup = intel_dp->dpcd[DP_DOWN_STREAM_PORT_COUNT] & - DP_OUI_SUPPORT; - int dev_id_len; - - if (!__intel_dp_read_desc(intel_dp, desc)) - return false; - - dev_id_len = strnlen(desc->device_id, sizeof(desc->device_id)); - DRM_DEBUG_KMS("DP %s: OUI %*phD%s dev-ID %*pE HW-rev %d.%d SW-rev %d.%d\n", -drm_dp_is_branch(intel_dp->dpcd) ? "branch" : "sink", -(int)sizeof(desc->oui), desc->oui, oui_sup ? "" : "(NS)", -dev_id_len, desc->device_id, -desc->hw_rev >> 4, desc->hw_rev & 0xf, -desc->sw_major_rev, desc->sw_minor_rev); - - return true; --} -- int intel_dp_max_link_rate(struct intel_dp *intel_dp) { @@@ -1587,16 -1654,13 +1623,15 @@@ intel_dp_compute_config(struct intel_en /* Conveniently, the link BW constants become indices with a shift...*/ int min_clock = 0; int max_clock; - int link_rate_index; int bpp, mode_rate; int link_avail, link_clock; - int common_rates[DP_MAX_SUPPORTED_RATES] = {}; int common_len; uint8_t link_bw, rate_select; + bool reduce_m_n = drm_dp_has_quirk(_dp->desc, + DP_DPCD_QUIRK_LIMITED_M_N); - common_len = intel_dp_common_rates(intel_dp, common_rates); + common_len = intel_dp_common_len_rate_limit(intel_dp, + intel_dp->max_link_rate); /* No common link rates between source and sink */ WARN_ON(common_len <= 0);
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/vmwgfx/vmwgfx_fence.c between commit: f7652afa8ead ("drm/vmwgfx: Type-check lookups of fence objects") from Linus' tree and commit: 8dfe162ac74f ("gpu: drm: drivers: Convert printk(KERN_ to pr_") from the drm tree. I fixed it up (the former moved and updated the code updated by the latter, so I just used the former) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/vmwgfx/vmwgfx_fence.c between commit: f7652afa8ead ("drm/vmwgfx: Type-check lookups of fence objects") from Linus' tree and commit: 8dfe162ac74f ("gpu: drm: drivers: Convert printk(KERN_ to pr_") from the drm tree. I fixed it up (the former moved and updated the code updated by the latter, so I just used the former) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: lib/Kconfig between commit: 44091d29f207 ("lib: Introduce priority array area manager") from Linus' tree and commit: cf4a7207b1cb ("lib: Add a simple prime number generator") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc lib/Kconfig index f3552604e47a,1788a1f50d28.. --- a/lib/Kconfig +++ b/lib/Kconfig @@@ -550,7 -550,11 +550,14 @@@ config STACKDEPO config SBITMAP bool +config PARMAN + tristate + + config PRIME_NUMBERS + tristate "Prime number generator" + default n + help + Provides a helper module to generate prime numbers. Useful for writing + test code, especially when checking multiplication and divison. + endmenu
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: lib/Kconfig between commit: 44091d29f207 ("lib: Introduce priority array area manager") from Linus' tree and commit: cf4a7207b1cb ("lib: Add a simple prime number generator") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc lib/Kconfig index f3552604e47a,1788a1f50d28.. --- a/lib/Kconfig +++ b/lib/Kconfig @@@ -550,7 -550,11 +550,14 @@@ config STACKDEPO config SBITMAP bool +config PARMAN + tristate + + config PRIME_NUMBERS + tristate "Prime number generator" + default n + help + Provides a helper module to generate prime numbers. Useful for writing + test code, especially when checking multiplication and divison. + endmenu
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/drm_crtc.c between commit: 6f00975c6190 ("drm: Reject page_flip for !DRIVER_MODESET") from Linus' tree and commit: 43968d7b806d ("drm: Extract drm_plane.[hc]") from the drm tree. I fixed it up (the latter takes the former into account, so I just used the drm tree version) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/drm_crtc.c between commit: 6f00975c6190 ("drm: Reject page_flip for !DRIVER_MODESET") from Linus' tree and commit: 43968d7b806d ("drm: Extract drm_plane.[hc]") from the drm tree. I fixed it up (the latter takes the former into account, so I just used the drm tree version) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Stephen, Am Dienstag, den 20.09.2016, 12:42 +1000 schrieb Stephen Rothwell: > Hi Dave, > > Today's linux-next merge of the drm tree got a conflict in: > > drivers/gpu/drm/imx/ipuv3-crtc.c > > between commit: > > a474478642d5 ("drm/imx: fix crtc vblank state regression") > > from Linus' tree and commit: > > 5f4df0c769a9 ("drm/imx: Use DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET flag") > > from the drm tree. > > I fixed it up (I think - see below) and can carry the fix as > necessary. This is now fixed as far as linux-next is concerned, but any > non trivial conflicts should be mentioned to your upstream maintainer > when your tree is submitted for merging. You may also want to consider > cooperating with the maintainer of the conflicting tree to minimise any > particularly complex conflicts. Thank you for the fix. It shouldn't be critical, but I'd put the drm_crtc_vblank_off last, for symmetry reasons. regards Philipp
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Stephen, Am Dienstag, den 20.09.2016, 12:42 +1000 schrieb Stephen Rothwell: > Hi Dave, > > Today's linux-next merge of the drm tree got a conflict in: > > drivers/gpu/drm/imx/ipuv3-crtc.c > > between commit: > > a474478642d5 ("drm/imx: fix crtc vblank state regression") > > from Linus' tree and commit: > > 5f4df0c769a9 ("drm/imx: Use DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET flag") > > from the drm tree. > > I fixed it up (I think - see below) and can carry the fix as > necessary. This is now fixed as far as linux-next is concerned, but any > non trivial conflicts should be mentioned to your upstream maintainer > when your tree is submitted for merging. You may also want to consider > cooperating with the maintainer of the conflicting tree to minimise any > particularly complex conflicts. Thank you for the fix. It shouldn't be critical, but I'd put the drm_crtc_vblank_off last, for symmetry reasons. regards Philipp
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/imx/ipuv3-crtc.c between commit: a474478642d5 ("drm/imx: fix crtc vblank state regression") from Linus' tree and commit: 5f4df0c769a9 ("drm/imx: Use DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET flag") from the drm tree. I fixed it up (I think - see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/imx/ipuv3-crtc.c index 462056e4b9e4,9df29f1cb16a.. --- a/drivers/gpu/drm/imx/ipuv3-crtc.c +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c @@@ -77,7 -77,8 +77,10 @@@ static void ipu_crtc_atomic_disable(str } spin_unlock_irq(>dev->event_lock); + drm_crtc_vblank_off(crtc); ++ + /* always disable planes on the CRTC */ + drm_atomic_helper_disable_planes_on_crtc(old_crtc_state, true); } static void imx_drm_crtc_reset(struct drm_crtc *crtc)
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/imx/ipuv3-crtc.c between commit: a474478642d5 ("drm/imx: fix crtc vblank state regression") from Linus' tree and commit: 5f4df0c769a9 ("drm/imx: Use DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET flag") from the drm tree. I fixed it up (I think - see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/imx/ipuv3-crtc.c index 462056e4b9e4,9df29f1cb16a.. --- a/drivers/gpu/drm/imx/ipuv3-crtc.c +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c @@@ -77,7 -77,8 +77,10 @@@ static void ipu_crtc_atomic_disable(str } spin_unlock_irq(>dev->event_lock); + drm_crtc_vblank_off(crtc); ++ + /* always disable planes on the CRTC */ + drm_atomic_helper_disable_planes_on_crtc(old_crtc_state, true); } static void imx_drm_crtc_reset(struct drm_crtc *crtc)
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/amdgpu/amdgpu.h between commit: 566153874951 ("drm/amdgpu: fix lru size grouping v2") from Linus' tree and commit: c632d7994360 ("amdgpu: move ttm stuff to amdgpu_ttm.h") from the drm tree. I fixed it up (the code move was fixed up in another commit, so I just removed the former change to this file) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/amdgpu/amdgpu.h between commit: 566153874951 ("drm/amdgpu: fix lru size grouping v2") from Linus' tree and commit: c632d7994360 ("amdgpu: move ttm stuff to amdgpu_ttm.h") from the drm tree. I fixed it up (the code move was fixed up in another commit, so I just removed the former change to this file) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/drm_crtc.c between commit: 6f00975c6190 ("drm: Reject page_flip for !DRIVER_MODESET") from Linus' tree and commit: f837297ad824 ("drm: Add DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags v2") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/drm_crtc.c index ddebe54cd5ca,a33dab27bb0d.. --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@@ -5402,13 -1915,19 +1915,22 @@@ int drm_mode_page_flip_ioctl(struct drm struct drm_crtc *crtc; struct drm_framebuffer *fb = NULL; struct drm_pending_vblank_event *e = NULL; + u32 target_vblank = page_flip->sequence; int ret = -EINVAL; + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + return -EINVAL; + - if (page_flip->flags & ~DRM_MODE_PAGE_FLIP_FLAGS || - page_flip->reserved != 0) + if (page_flip->flags & ~DRM_MODE_PAGE_FLIP_FLAGS) + return -EINVAL; + + if (page_flip->sequence != 0 && !(page_flip->flags & DRM_MODE_PAGE_FLIP_TARGET)) + return -EINVAL; + + /* Only one of the DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags +* can be specified +*/ + if ((page_flip->flags & DRM_MODE_PAGE_FLIP_TARGET) == DRM_MODE_PAGE_FLIP_TARGET) return -EINVAL; if ((page_flip->flags & DRM_MODE_PAGE_FLIP_ASYNC) && !dev->mode_config.async_page_flip)
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/drm_crtc.c between commit: 6f00975c6190 ("drm: Reject page_flip for !DRIVER_MODESET") from Linus' tree and commit: f837297ad824 ("drm: Add DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags v2") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/drm_crtc.c index ddebe54cd5ca,a33dab27bb0d.. --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@@ -5402,13 -1915,19 +1915,22 @@@ int drm_mode_page_flip_ioctl(struct drm struct drm_crtc *crtc; struct drm_framebuffer *fb = NULL; struct drm_pending_vblank_event *e = NULL; + u32 target_vblank = page_flip->sequence; int ret = -EINVAL; + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + return -EINVAL; + - if (page_flip->flags & ~DRM_MODE_PAGE_FLIP_FLAGS || - page_flip->reserved != 0) + if (page_flip->flags & ~DRM_MODE_PAGE_FLIP_FLAGS) + return -EINVAL; + + if (page_flip->sequence != 0 && !(page_flip->flags & DRM_MODE_PAGE_FLIP_TARGET)) + return -EINVAL; + + /* Only one of the DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags +* can be specified +*/ + if ((page_flip->flags & DRM_MODE_PAGE_FLIP_TARGET) == DRM_MODE_PAGE_FLIP_TARGET) return -EINVAL; if ((page_flip->flags & DRM_MODE_PAGE_FLIP_ASYNC) && !dev->mode_config.async_page_flip)
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/i915_debugfs.c between commit: 194dc870a589 ("Add braces to avoid "ambiguous ‘else’" compiler warnings") from Linus' tree and commit: 24f1d3cc0997 ("drm/i915: Refactor execlists default context pinning") from the drm tree. I fixed it up (I just used the version from the drm tree) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/i915/i915_debugfs.c between commit: 194dc870a589 ("Add braces to avoid "ambiguous ‘else’" compiler warnings") from Linus' tree and commit: 24f1d3cc0997 ("drm/i915: Refactor execlists default context pinning") from the drm tree. I fixed it up (I just used the version from the drm tree) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/ttm/ttm_bo.c between commit: 56fc350224f1 ("drm/ttm: fix kref count mess in ttm_bo_move_to_lru_tail") from Linus' tree and commits: c3ea576e0583 ("drm/ttm: add optional LRU removal callback v2") 98c2872ae99b ("drm/ttm: implement LRU add callbacks v2") from the drm tree. I fixed it up (I have no idea how to fix merge these changes, so I just used the latter ones) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/ttm/ttm_bo.c between commit: 56fc350224f1 ("drm/ttm: fix kref count mess in ttm_bo_move_to_lru_tail") from Linus' tree and commits: c3ea576e0583 ("drm/ttm: add optional LRU removal callback v2") 98c2872ae99b ("drm/ttm: implement LRU add callbacks v2") from the drm tree. I fixed it up (I have no idea how to fix merge these changes, so I just used the latter ones) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c between commit: 562e2689baeb ("amdgpu/uvd: add uvd fw version for amdgpu") from Linus' tree and commit: c036554170fc ("drm/amdgpu: handle more than 10 UVD sessions (v2)") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c index 871018c634e0,db86012deb67.. --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c @@@ -158,11 -171,19 +171,22 @@@ int amdgpu_uvd_sw_init(struct amdgpu_de DRM_INFO("Found UVD firmware Version: %hu.%hu Family ID: %hu\n", version_major, version_minor, family_id); + adev->uvd.fw_version = ((version_major << 24) | (version_minor << 16) | + (family_id << 8)); + + /* +* Limit the number of UVD handles depending on microcode major +* and minor versions. The firmware version which has 40 UVD +* instances support is 1.80. So all subsequent versions should +* also have the same support. +*/ + if ((version_major > 0x01) || + ((version_major == 0x01) && (version_minor >= 0x50))) + adev->uvd.max_handles = AMDGPU_MAX_UVD_HANDLES; + bo_size = AMDGPU_GPU_PAGE_ALIGN(le32_to_cpu(hdr->ucode_size_bytes) + 8) -+ AMDGPU_UVD_STACK_SIZE + AMDGPU_UVD_HEAP_SIZE; + + AMDGPU_UVD_STACK_SIZE + AMDGPU_UVD_HEAP_SIZE + + AMDGPU_UVD_SESSION_SIZE * adev->uvd.max_handles; r = amdgpu_bo_create(adev, bo_size, PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM, AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c between commit: 562e2689baeb ("amdgpu/uvd: add uvd fw version for amdgpu") from Linus' tree and commit: c036554170fc ("drm/amdgpu: handle more than 10 UVD sessions (v2)") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c index 871018c634e0,db86012deb67.. --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c @@@ -158,11 -171,19 +171,22 @@@ int amdgpu_uvd_sw_init(struct amdgpu_de DRM_INFO("Found UVD firmware Version: %hu.%hu Family ID: %hu\n", version_major, version_minor, family_id); + adev->uvd.fw_version = ((version_major << 24) | (version_minor << 16) | + (family_id << 8)); + + /* +* Limit the number of UVD handles depending on microcode major +* and minor versions. The firmware version which has 40 UVD +* instances support is 1.80. So all subsequent versions should +* also have the same support. +*/ + if ((version_major > 0x01) || + ((version_major == 0x01) && (version_minor >= 0x50))) + adev->uvd.max_handles = AMDGPU_MAX_UVD_HANDLES; + bo_size = AMDGPU_GPU_PAGE_ALIGN(le32_to_cpu(hdr->ucode_size_bytes) + 8) -+ AMDGPU_UVD_STACK_SIZE + AMDGPU_UVD_HEAP_SIZE; + + AMDGPU_UVD_STACK_SIZE + AMDGPU_UVD_HEAP_SIZE + + AMDGPU_UVD_SESSION_SIZE * adev->uvd.max_handles; r = amdgpu_bo_create(adev, bo_size, PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM, AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/sti/sti_hqvdp.c between commit: f6e45661f9be ("dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc()") from Linus' tree and commit: 52807ae90e76 ("drm/sti: use u32 to store DMA addresses") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/sti/sti_hqvdp.c index 1d3c3d029603,d7c1f427811d.. --- a/drivers/gpu/drm/sti/sti_hqvdp.c +++ b/drivers/gpu/drm/sti/sti_hqvdp.c @@@ -617,9 -852,9 +852,8 @@@ static void sti_hqvdp_init(struct sti_h /* Allocate memory for the VDP commands */ size = NB_VDP_CMD * sizeof(struct sti_hqvdp_cmd); - hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size, - >hqvdp_cmd_paddr, - hqvdp->hqvdp_cmd = dma_alloc_writecombine(hqvdp->dev, size, - _addr, - GFP_KERNEL | GFP_DMA); ++ hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size, _addr, + GFP_KERNEL | GFP_DMA); if (!hqvdp->hqvdp_cmd) { DRM_ERROR("Failed to allocate memory for VDP cmd\n"); return;
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/sti/sti_hqvdp.c between commit: f6e45661f9be ("dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc()") from Linus' tree and commit: 52807ae90e76 ("drm/sti: use u32 to store DMA addresses") from the drm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/sti/sti_hqvdp.c index 1d3c3d029603,d7c1f427811d.. --- a/drivers/gpu/drm/sti/sti_hqvdp.c +++ b/drivers/gpu/drm/sti/sti_hqvdp.c @@@ -617,9 -852,9 +852,8 @@@ static void sti_hqvdp_init(struct sti_h /* Allocate memory for the VDP commands */ size = NB_VDP_CMD * sizeof(struct sti_hqvdp_cmd); - hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size, - >hqvdp_cmd_paddr, - hqvdp->hqvdp_cmd = dma_alloc_writecombine(hqvdp->dev, size, - _addr, - GFP_KERNEL | GFP_DMA); ++ hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size, _addr, + GFP_KERNEL | GFP_DMA); if (!hqvdp->hqvdp_cmd) { DRM_ERROR("Failed to allocate memory for VDP cmd\n"); return;
Re: linux-next: manual merge of the drm tree with Linus' tree
Stephen, thanks a lot for addressing that conflict. Replying top-style on purpose. In the future such type of conflicts should be resolvable automatically through a git conflict resolution hook that would use Coccinelle if present when it detects a patch with Coccinelle SmPL grammar has been used with no required addendums. Such a tool and further enhancements (automatic SmPL inference, if a patch did not have the grammar spelled out in the commit log) are documented here: http://kernelnewbies.org/KernelProjects/linux-oven If you want this tomorrow consider funding Julia's R more :D Luis On Thu, Mar 17, 2016 at 11:45:16AM +1100, Stephen Rothwell wrote: > Hi Dave, > > Today's linux-next merge of the drm tree got a conflict in: > > drivers/gpu/drm/sti/sti_hqvdp.c > > between commit: > > f6e45661f9be ("dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc()") > > from Linus' tree and commit: > > 52807ae90e76 ("drm/sti: use u32 to store DMA addresses") > > from the drm tree. > > I fixed it up (see below) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. > > -- > Cheers, > Stephen Rothwell > > diff --cc drivers/gpu/drm/sti/sti_hqvdp.c > index 1d3c3d029603,d7c1f427811d.. > --- a/drivers/gpu/drm/sti/sti_hqvdp.c > +++ b/drivers/gpu/drm/sti/sti_hqvdp.c > @@@ -617,9 -852,9 +852,8 @@@ static void sti_hqvdp_init(struct sti_h > > /* Allocate memory for the VDP commands */ > size = NB_VDP_CMD * sizeof(struct sti_hqvdp_cmd); > - hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size, > - >hqvdp_cmd_paddr, > -hqvdp->hqvdp_cmd = dma_alloc_writecombine(hqvdp->dev, size, > - _addr, > - GFP_KERNEL | GFP_DMA); > ++hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size, _addr, > +GFP_KERNEL | GFP_DMA); > if (!hqvdp->hqvdp_cmd) { > DRM_ERROR("Failed to allocate memory for VDP cmd\n"); > return; > -- Luis Rodriguez, SUSE LINUX GmbH Maxfeldstrasse 5; D-90409 Nuernberg
Re: linux-next: manual merge of the drm tree with Linus' tree
Stephen, thanks a lot for addressing that conflict. Replying top-style on purpose. In the future such type of conflicts should be resolvable automatically through a git conflict resolution hook that would use Coccinelle if present when it detects a patch with Coccinelle SmPL grammar has been used with no required addendums. Such a tool and further enhancements (automatic SmPL inference, if a patch did not have the grammar spelled out in the commit log) are documented here: http://kernelnewbies.org/KernelProjects/linux-oven If you want this tomorrow consider funding Julia's R more :D Luis On Thu, Mar 17, 2016 at 11:45:16AM +1100, Stephen Rothwell wrote: > Hi Dave, > > Today's linux-next merge of the drm tree got a conflict in: > > drivers/gpu/drm/sti/sti_hqvdp.c > > between commit: > > f6e45661f9be ("dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc()") > > from Linus' tree and commit: > > 52807ae90e76 ("drm/sti: use u32 to store DMA addresses") > > from the drm tree. > > I fixed it up (see below) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. > > -- > Cheers, > Stephen Rothwell > > diff --cc drivers/gpu/drm/sti/sti_hqvdp.c > index 1d3c3d029603,d7c1f427811d.. > --- a/drivers/gpu/drm/sti/sti_hqvdp.c > +++ b/drivers/gpu/drm/sti/sti_hqvdp.c > @@@ -617,9 -852,9 +852,8 @@@ static void sti_hqvdp_init(struct sti_h > > /* Allocate memory for the VDP commands */ > size = NB_VDP_CMD * sizeof(struct sti_hqvdp_cmd); > - hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size, > - >hqvdp_cmd_paddr, > -hqvdp->hqvdp_cmd = dma_alloc_writecombine(hqvdp->dev, size, > - _addr, > - GFP_KERNEL | GFP_DMA); > ++hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size, _addr, > +GFP_KERNEL | GFP_DMA); > if (!hqvdp->hqvdp_cmd) { > DRM_ERROR("Failed to allocate memory for VDP cmd\n"); > return; > -- Luis Rodriguez, SUSE LINUX GmbH Maxfeldstrasse 5; D-90409 Nuernberg
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/amdgpu/amdgpu_display.c between commit: e1d09dc0ccc6 ("drm/amdgpu: Don't hang in amdgpu_flip_work_func on disabled crtc.") from Linus' tree and commit: 6bd9e877ce53 ("drm/amdgpu: Move MMIO flip out of spinlocked region") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index 8297bc319369,2cb53c24dec0.. --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@@ -72,13 -70,16 +70,16 @@@ static void amdgpu_flip_work_func(struc struct drm_crtc *crtc = >base; unsigned long flags; - unsigned i; - int vpos, hpos, stat, min_udelay; + unsigned i, repcnt = 4; + int vpos, hpos, stat, min_udelay = 0; struct drm_vblank_crtc *vblank = >dev->vblank[work->crtc_id]; - amdgpu_flip_wait_fence(adev, >excl); + if (amdgpu_flip_handle_fence(work, >excl)) + return; + for (i = 0; i < work->shared_count; ++i) - amdgpu_flip_wait_fence(adev, >shared[i]); + if (amdgpu_flip_handle_fence(work, >shared[i])) + return; /* We borrow the event spin lock for protecting flip_status */ spin_lock_irqsave(>dev->event_lock, flags); @@@ -123,19 -119,12 +124,19 @@@ spin_lock_irqsave(>dev->event_lock, flags); }; + if (!repcnt) + DRM_DEBUG_DRIVER("Delay problem on crtc %d: min_udelay %d, " + "framedur %d, linedur %d, stat %d, vpos %d, " + "hpos %d\n", work->crtc_id, min_udelay, + vblank->framedur_ns / 1000, + vblank->linedur_ns / 1000, stat, vpos, hpos); + - /* do the flip (mmio) */ - adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base); /* set the flip status */ amdgpuCrtc->pflip_status = AMDGPU_FLIP_SUBMITTED; - spin_unlock_irqrestore(>dev->event_lock, flags); + + /* Do the flip (mmio) */ + adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base); } /*
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/amd/amdgpu/amdgpu_display.c between commit: e1d09dc0ccc6 ("drm/amdgpu: Don't hang in amdgpu_flip_work_func on disabled crtc.") from Linus' tree and commit: 6bd9e877ce53 ("drm/amdgpu: Move MMIO flip out of spinlocked region") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwell diff --cc drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index 8297bc319369,2cb53c24dec0.. --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@@ -72,13 -70,16 +70,16 @@@ static void amdgpu_flip_work_func(struc struct drm_crtc *crtc = >base; unsigned long flags; - unsigned i; - int vpos, hpos, stat, min_udelay; + unsigned i, repcnt = 4; + int vpos, hpos, stat, min_udelay = 0; struct drm_vblank_crtc *vblank = >dev->vblank[work->crtc_id]; - amdgpu_flip_wait_fence(adev, >excl); + if (amdgpu_flip_handle_fence(work, >excl)) + return; + for (i = 0; i < work->shared_count; ++i) - amdgpu_flip_wait_fence(adev, >shared[i]); + if (amdgpu_flip_handle_fence(work, >shared[i])) + return; /* We borrow the event spin lock for protecting flip_status */ spin_lock_irqsave(>dev->event_lock, flags); @@@ -123,19 -119,12 +124,19 @@@ spin_lock_irqsave(>dev->event_lock, flags); }; + if (!repcnt) + DRM_DEBUG_DRIVER("Delay problem on crtc %d: min_udelay %d, " + "framedur %d, linedur %d, stat %d, vpos %d, " + "hpos %d\n", work->crtc_id, min_udelay, + vblank->framedur_ns / 1000, + vblank->linedur_ns / 1000, stat, vpos, hpos); + - /* do the flip (mmio) */ - adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base); /* set the flip status */ amdgpuCrtc->pflip_status = AMDGPU_FLIP_SUBMITTED; - spin_unlock_irqrestore(>dev->event_lock, flags); + + /* Do the flip (mmio) */ + adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base); } /*
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/imx/imx-drm-core.c between commit: 3f3a7280d4ca ("GPU-DRM-IMX: Delete an unnecessary check before drm_fbdev_cma_restore_mode()") from Linus' tree and commit: c1ff5a7aa3c3 ("drm/imx: Remove local fbdev emulation Kconfig option") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/imx/imx-drm-core.c index 7b990b4e96d2,6faa735376ec.. --- a/drivers/gpu/drm/imx/imx-drm-core.c +++ b/drivers/gpu/drm/imx/imx-drm-core.c @@@ -60,11 -62,10 +62,9 @@@ EXPORT_SYMBOL_GPL(imx_drm_crtc_id) static void imx_drm_driver_lastclose(struct drm_device *drm) { - #if IS_ENABLED(CONFIG_DRM_IMX_FB_HELPER) struct imx_drm_device *imxdrm = drm->dev_private; - if (imxdrm->fbhelper) - drm_fbdev_cma_restore_mode(imxdrm->fbhelper); + drm_fbdev_cma_restore_mode(imxdrm->fbhelper); - #endif } static int imx_drm_driver_unload(struct drm_device *drm) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/imx/imx-drm-core.c between commit: 3f3a7280d4ca ("GPU-DRM-IMX: Delete an unnecessary check before drm_fbdev_cma_restore_mode()") from Linus' tree and commit: c1ff5a7aa3c3 ("drm/imx: Remove local fbdev emulation Kconfig option") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/imx/imx-drm-core.c index 7b990b4e96d2,6faa735376ec.. --- a/drivers/gpu/drm/imx/imx-drm-core.c +++ b/drivers/gpu/drm/imx/imx-drm-core.c @@@ -60,11 -62,10 +62,9 @@@ EXPORT_SYMBOL_GPL(imx_drm_crtc_id) static void imx_drm_driver_lastclose(struct drm_device *drm) { - #if IS_ENABLED(CONFIG_DRM_IMX_FB_HELPER) struct imx_drm_device *imxdrm = drm->dev_private; - if (imxdrm->fbhelper) - drm_fbdev_cma_restore_mode(imxdrm->fbhelper); + drm_fbdev_cma_restore_mode(imxdrm->fbhelper); - #endif } static int imx_drm_driver_unload(struct drm_device *drm) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/amd/amdgpu/dce_v10_0.c drivers/gpu/drm/amd/amdgpu/dce_v11_0.c drivers/gpu/drm/amd/amdgpu/dce_v8_0.c between commit: f6c7aba47bcc ("drm/amdgpu: Keep the pflip interrupts always enabled v7") from Linus' tree and commit: f9fff064bb83 ("drm/amdgpu/dce: simplify suspend/resume") from the drm tree. I fixed it up (I just used the versions from the drm tree) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/amd/amdgpu/dce_v10_0.c drivers/gpu/drm/amd/amdgpu/dce_v11_0.c drivers/gpu/drm/amd/amdgpu/dce_v8_0.c between commit: f6c7aba47bcc ("drm/amdgpu: Keep the pflip interrupts always enabled v7") from Linus' tree and commit: f9fff064bb83 ("drm/amdgpu/dce: simplify suspend/resume") from the drm tree. I fixed it up (I just used the versions from the drm tree) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/drm_crtc.c between commit: 5677d67ae394 ("drm: Stop resetting connector state to unknown") from Linus' tree and commit: 6295d607ad34 ("drm: Add modeset object iterators") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/drm_crtc.c index fed748311b92,1f0da41ae2a1.. --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@@ -5398,9 -5273,12 +5273,9 @@@ void drm_mode_config_reset(struct drm_d if (encoder->funcs->reset) encoder->funcs->reset(encoder); - list_for_each_entry(connector, >mode_config.connector_list, head) - drm_for_each_connector(connector, dev) { - connector->status = connector_status_unknown; - ++ drm_for_each_connector(connector, dev) if (connector->funcs->reset) connector->funcs->reset(connector); - } } EXPORT_SYMBOL(drm_mode_config_reset); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in: drivers/gpu/drm/drm_crtc.c between commit: 5677d67ae394 (drm: Stop resetting connector state to unknown) from Linus' tree and commit: 6295d607ad34 (drm: Add modeset object iterators) from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/drm_crtc.c index fed748311b92,1f0da41ae2a1.. --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@@ -5398,9 -5273,12 +5273,9 @@@ void drm_mode_config_reset(struct drm_d if (encoder-funcs-reset) encoder-funcs-reset(encoder); - list_for_each_entry(connector, dev-mode_config.connector_list, head) - drm_for_each_connector(connector, dev) { - connector-status = connector_status_unknown; - ++ drm_for_each_connector(connector, dev) if (connector-funcs-reset) connector-funcs-reset(connector); - } } EXPORT_SYMBOL(drm_mode_config_reset); -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Stephen & Dave, indeed RADEON_INFO_VA_UNMAP_WORKING was added to 4.1 to indicate that a certain kernel bug is fixed now and we can remove the user space workaround. And RADEON_INFO_GPU_RESET_COUNTER was stashed to be merged in 4.2 as new feature. Annoying but harmless and Stephen's resolve of the conflict looks valid to me. Regards, Christian. On 21.06.2015 05:50, Stephen Rothwell wrote: Hi Dave, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/radeon/radeon_kms.c include/uapi/drm/radeon_drm.h between commit: 3bc980bf19bb ("drm/radeon: Add RADEON_INFO_VA_UNMAP_WORKING query") from Linus' tree and commit: 72b9076b2887 ("drm/radeon: add a GPU reset counter queryable by userspace") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Stephen Dave, indeed RADEON_INFO_VA_UNMAP_WORKING was added to 4.1 to indicate that a certain kernel bug is fixed now and we can remove the user space workaround. And RADEON_INFO_GPU_RESET_COUNTER was stashed to be merged in 4.2 as new feature. Annoying but harmless and Stephen's resolve of the conflict looks valid to me. Regards, Christian. On 21.06.2015 05:50, Stephen Rothwell wrote: Hi Dave, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/radeon/radeon_kms.c include/uapi/drm/radeon_drm.h between commit: 3bc980bf19bb (drm/radeon: Add RADEON_INFO_VA_UNMAP_WORKING query) from Linus' tree and commit: 72b9076b2887 (drm/radeon: add a GPU reset counter queryable by userspace) from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- To unsubscribe from this list: send the line unsubscribe linux-kernel in Please read the FAQ at http://www.tux.org/lkml/
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/radeon/radeon_kms.c include/uapi/drm/radeon_drm.h between commit: 3bc980bf19bb ("drm/radeon: Add RADEON_INFO_VA_UNMAP_WORKING query") from Linus' tree and commit: 72b9076b2887 ("drm/radeon: add a GPU reset counter queryable by userspace") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/radeon/radeon_kms.c index b0acf50d9558,9632e886ddc3.. --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c @@@ -576,8 -576,8 +576,10 @@@ static int radeon_info_ioctl(struct drm if (radeon_get_allowed_info_register(rdev, *value, value)) return -EINVAL; break; + case RADEON_INFO_VA_UNMAP_WORKING: + *value = true; + case RADEON_INFO_GPU_RESET_COUNTER: + *value = atomic_read(>gpu_reset_counter); break; default: DRM_DEBUG_KMS("Invalid request %d\n", info->request); diff --cc include/uapi/drm/radeon_drm.h index 94d44ab2fda1,573cb86a3d6e.. --- a/include/uapi/drm/radeon_drm.h +++ b/include/uapi/drm/radeon_drm.h @@@ -1038,7 -1038,7 +1038,8 @@@ struct drm_radeon_cs #define RADEON_INFO_CURRENT_GPU_SCLK 0x22 #define RADEON_INFO_CURRENT_GPU_MCLK 0x23 #define RADEON_INFO_READ_REG 0x24 -#define RADEON_INFO_GPU_RESET_COUNTER 0x25 +#define RADEON_INFO_VA_UNMAP_WORKING 0x25 ++#define RADEON_INFO_GPU_RESET_COUNTER 0x26 struct drm_radeon_info { uint32_trequest; pgpcfev_mnCKy.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got conflicts in: drivers/gpu/drm/radeon/radeon_kms.c include/uapi/drm/radeon_drm.h between commit: 3bc980bf19bb (drm/radeon: Add RADEON_INFO_VA_UNMAP_WORKING query) from Linus' tree and commit: 72b9076b2887 (drm/radeon: add a GPU reset counter queryable by userspace) from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/radeon/radeon_kms.c index b0acf50d9558,9632e886ddc3.. --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c @@@ -576,8 -576,8 +576,10 @@@ static int radeon_info_ioctl(struct drm if (radeon_get_allowed_info_register(rdev, *value, value)) return -EINVAL; break; + case RADEON_INFO_VA_UNMAP_WORKING: + *value = true; + case RADEON_INFO_GPU_RESET_COUNTER: + *value = atomic_read(rdev-gpu_reset_counter); break; default: DRM_DEBUG_KMS(Invalid request %d\n, info-request); diff --cc include/uapi/drm/radeon_drm.h index 94d44ab2fda1,573cb86a3d6e.. --- a/include/uapi/drm/radeon_drm.h +++ b/include/uapi/drm/radeon_drm.h @@@ -1038,7 -1038,7 +1038,8 @@@ struct drm_radeon_cs #define RADEON_INFO_CURRENT_GPU_SCLK 0x22 #define RADEON_INFO_CURRENT_GPU_MCLK 0x23 #define RADEON_INFO_READ_REG 0x24 -#define RADEON_INFO_GPU_RESET_COUNTER 0x25 +#define RADEON_INFO_VA_UNMAP_WORKING 0x25 ++#define RADEON_INFO_GPU_RESET_COUNTER 0x26 struct drm_radeon_info { uint32_trequest; pgpcfev_mnCKy.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/drm_irq.c between commit fdb68e09bbb1 ("drm: Zero out invalid vblank timestamp in drm_update_vblank_count") from Linus' tree and commit d66a1e38280c ("drm: Zero out invalid vblank timestamp in drm_update_vblank_count. (v2)") from the drm tree. I fixed it up (a rebased version of a patch that is already in Linus' tree :-( - I used the version from the drm tree) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au http://www.canb.auug.org.au/~sfr/ pgpyAdkoWbqZP.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/drm_irq.c between commit fdb68e09bbb1 (drm: Zero out invalid vblank timestamp in drm_update_vblank_count) from Linus' tree and commit d66a1e38280c (drm: Zero out invalid vblank timestamp in drm_update_vblank_count. (v2)) from the drm tree. I fixed it up (a rebased version of a patch that is already in Linus' tree :-( - I used the version from the drm tree) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au http://www.canb.auug.org.au/~sfr/ pgpyAdkoWbqZP.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/i915/intel_sprite.c between commit 840a1cf0cd53 ("drm/i915: Reject the colorkey ioctls for primary and cursor planes") from Linus' tree and commit a8265c59e22a ("drm/i915: Rip out GET_SPRITE_COLORKEY ioctl") from the drm tree. I fixed it up (The latter removed some of the code modified by the former) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au pgpgYpnleaVqA.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/i915/intel_sprite.c between commit 840a1cf0cd53 (drm/i915: Reject the colorkey ioctls for primary and cursor planes) from Linus' tree and commit a8265c59e22a (drm/i915: Rip out GET_SPRITE_COLORKEY ioctl) from the drm tree. I fixed it up (The latter removed some of the code modified by the former) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au pgpgYpnleaVqA.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
On 01/29/2015 04:17 AM, Stephen Rothwell wrote: Hi Dave, Today's linux-next merge of the drm tree got conflicts in drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c and drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h between commits b8cbab042cd6 ("drm/amdkfd: Allow user to limit only queues per device") and 9fa843e76d90 ("drm/amdkfd: Fix bug in call to init_pipelines()") from Linus' tree and commits bcea30817574 ("drm/amdkfd: Add SDMA user-mode queues support to QCM") and fe502804205e ("drm/amdkfd: Remove call to deprecated init_memory interface") from the drm tree. I fixed it up (hopefully - see below) and can carry the fix as necessary (no action is required). Looks fine, thanks! Oded -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: linux-next: manual merge of the drm tree with Linus' tree
On 01/29/2015 04:17 AM, Stephen Rothwell wrote: Hi Dave, Today's linux-next merge of the drm tree got conflicts in drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c and drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h between commits b8cbab042cd6 (drm/amdkfd: Allow user to limit only queues per device) and 9fa843e76d90 (drm/amdkfd: Fix bug in call to init_pipelines()) from Linus' tree and commits bcea30817574 (drm/amdkfd: Add SDMA user-mode queues support to QCM) and fe502804205e (drm/amdkfd: Remove call to deprecated init_memory interface) from the drm tree. I fixed it up (hopefully - see below) and can carry the fix as necessary (no action is required). Looks fine, thanks! Oded -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got conflicts in drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c and drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h between commits b8cbab042cd6 ("drm/amdkfd: Allow user to limit only queues per device") and 9fa843e76d90 ("drm/amdkfd: Fix bug in call to init_pipelines()") from Linus' tree and commits bcea30817574 ("drm/amdkfd: Add SDMA user-mode queues support to QCM") and fe502804205e ("drm/amdkfd: Remove call to deprecated init_memory interface") from the drm tree. I fixed it up (hopefully - see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c index 0d8694f015c1,b189f9791c90.. --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c @@@ -213,15 -161,8 +168,18 @@@ static int create_queue_nocpsch(struct list_add(>list, >queues_list); dqm->queue_count++; + + /* + * Unconditionally increment this counter, regardless of the queue's + * type or whether the queue is active. + */ + dqm->total_queue_count++; + pr_debug("Total of %d queues are accountable so far\n", + dqm->total_queue_count); + ++ + if (q->properties.type == KFD_QUEUE_TYPE_SDMA) + dqm->sdma_queue_count++; mutex_unlock(>lock); return 0; } @@@ -588,11 -488,7 +518,7 @@@ static int init_scheduler(struct device pr_debug("kfd: In %s\n", __func__); - retval = init_pipelines(dqm, get_pipes_num(dqm), KFD_DQM_FIRST_PIPE); + retval = init_pipelines(dqm, get_pipes_num(dqm), get_first_pipe(dqm)); - if (retval != 0) - return retval; - - retval = init_memory(dqm); return retval; } @@@ -843,14 -793,12 +845,19 @@@ static int create_queue_cpsch(struct de mutex_lock(>lock); + if (dqm->total_queue_count >= max_num_of_queues_per_device) { + pr_warn("amdkfd: Can't create new usermode queue because %d queues were already created\n", + dqm->total_queue_count); + retval = -EPERM; + goto out; + } + - mqd = dqm->get_mqd_manager(dqm, KFD_MQD_TYPE_CIK_CP); + if (q->properties.type == KFD_QUEUE_TYPE_SDMA) + select_sdma_engine_id(q); + + mqd = dqm->ops.get_mqd_manager(dqm, + get_mqd_type_from_queue_type(q->properties.type)); + if (mqd == NULL) { mutex_unlock(>lock); return -ENOMEM; @@@ -867,15 -815,9 +874,18 @@@ retval = execute_queues_cpsch(dqm, false); } + /* + * Unconditionally increment this counter, regardless of the queue's + * type or whether the queue is active. + */ + dqm->total_queue_count++; + + pr_debug("Total of %d queues are accountable so far\n", + dqm->total_queue_count); + + if (q->properties.type == KFD_QUEUE_TYPE_SDMA) + dqm->sdma_queue_count++; + out: mutex_unlock(>lock); return retval; diff --cc drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h index 52035bf0c1cb,e7b17b28330e.. --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h @@@ -130,9 -143,10 +143,11 @@@ struct device_queue_manager struct list_headqueues; unsigned intprocesses_count; unsigned intqueue_count; + unsigned inttotal_queue_count; + unsigned intsdma_queue_count; unsigned intnext_pipe_to_allocate; unsigned int*allocated_queues; + unsigned intsdma_bitmap; unsigned intvmid_bitmap; uint64_tpipelines_addr; struct kfd_mem_obj *pipeline_mem; pgpjQ8vfkm0gD.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got conflicts in drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c and drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h between commits b8cbab042cd6 (drm/amdkfd: Allow user to limit only queues per device) and 9fa843e76d90 (drm/amdkfd: Fix bug in call to init_pipelines()) from Linus' tree and commits bcea30817574 (drm/amdkfd: Add SDMA user-mode queues support to QCM) and fe502804205e (drm/amdkfd: Remove call to deprecated init_memory interface) from the drm tree. I fixed it up (hopefully - see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c index 0d8694f015c1,b189f9791c90.. --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c @@@ -213,15 -161,8 +168,18 @@@ static int create_queue_nocpsch(struct list_add(q-list, qpd-queues_list); dqm-queue_count++; + + /* + * Unconditionally increment this counter, regardless of the queue's + * type or whether the queue is active. + */ + dqm-total_queue_count++; + pr_debug(Total of %d queues are accountable so far\n, + dqm-total_queue_count); + ++ + if (q-properties.type == KFD_QUEUE_TYPE_SDMA) + dqm-sdma_queue_count++; mutex_unlock(dqm-lock); return 0; } @@@ -588,11 -488,7 +518,7 @@@ static int init_scheduler(struct device pr_debug(kfd: In %s\n, __func__); - retval = init_pipelines(dqm, get_pipes_num(dqm), KFD_DQM_FIRST_PIPE); + retval = init_pipelines(dqm, get_pipes_num(dqm), get_first_pipe(dqm)); - if (retval != 0) - return retval; - - retval = init_memory(dqm); return retval; } @@@ -843,14 -793,12 +845,19 @@@ static int create_queue_cpsch(struct de mutex_lock(dqm-lock); + if (dqm-total_queue_count = max_num_of_queues_per_device) { + pr_warn(amdkfd: Can't create new usermode queue because %d queues were already created\n, + dqm-total_queue_count); + retval = -EPERM; + goto out; + } + - mqd = dqm-get_mqd_manager(dqm, KFD_MQD_TYPE_CIK_CP); + if (q-properties.type == KFD_QUEUE_TYPE_SDMA) + select_sdma_engine_id(q); + + mqd = dqm-ops.get_mqd_manager(dqm, + get_mqd_type_from_queue_type(q-properties.type)); + if (mqd == NULL) { mutex_unlock(dqm-lock); return -ENOMEM; @@@ -867,15 -815,9 +874,18 @@@ retval = execute_queues_cpsch(dqm, false); } + /* + * Unconditionally increment this counter, regardless of the queue's + * type or whether the queue is active. + */ + dqm-total_queue_count++; + + pr_debug(Total of %d queues are accountable so far\n, + dqm-total_queue_count); + + if (q-properties.type == KFD_QUEUE_TYPE_SDMA) + dqm-sdma_queue_count++; + out: mutex_unlock(dqm-lock); return retval; diff --cc drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h index 52035bf0c1cb,e7b17b28330e.. --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h @@@ -130,9 -143,10 +143,11 @@@ struct device_queue_manager struct list_headqueues; unsigned intprocesses_count; unsigned intqueue_count; + unsigned inttotal_queue_count; + unsigned intsdma_queue_count; unsigned intnext_pipe_to_allocate; unsigned int*allocated_queues; + unsigned intsdma_bitmap; unsigned intvmid_bitmap; uint64_tpipelines_addr; struct kfd_mem_obj *pipeline_mem; pgpjQ8vfkm0gD.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, On Thu, 22 Jan 2015 02:31:06 + (GMT) Dave Airlie wrote: > > btw I pushed a drm-next with all these fixed in it a little while ago > > we must be racing! Yeah, I tend to collect all the trees first thing in the morning (around 9 - 10 am my time) and then spend the day merging them. -- Cheers, Stephen Rothwells...@canb.auug.org.au pgpXrZ5p73Lct.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
> Hi Dave, > > Today's linux-next merge of the drm tree got a conflict in > drivers/gpu/drm/radeon/radeon_kfd.c between commit b64b8afcca9d > ("drm/amd: Fixing typos in kfd<->kgd interface") from Linus' tree and > commit a84a9903b588 ("drm/radeon: Implement SDMA interface functions") > from the drm tree. btw I pushed a drm-next with all these fixed in it a little while ago we must be racing! Dave. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/radeon/radeon_kfd.c between commit b64b8afcca9d ("drm/amd: Fixing typos in kfd<->kgd interface") from Linus' tree and commit a84a9903b588 ("drm/radeon: Implement SDMA interface functions") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/radeon/radeon_kfd.c index 8bf87f1203cc,cae11eefecf0.. --- a/drivers/gpu/drm/radeon/radeon_kfd.c +++ b/drivers/gpu/drm/radeon/radeon_kfd.c @@@ -71,8 -70,8 +70,8 @@@ static int kgd_init_pipeline(struct kgd static int kgd_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id, uint32_t queue_id, uint32_t __user *wptr); - + static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd); -static bool kgd_hqd_is_occupies(struct kgd_dev *kgd, uint64_t queue_address, +static bool kgd_hqd_is_occupied(struct kgd_dev *kgd, uint64_t queue_address, uint32_t pipe_id, uint32_t queue_id); static int kgd_hqd_destroy(struct kgd_dev *kgd, uint32_t reset_type, @@@ -92,8 -92,11 +92,11 @@@ static const struct kfd2kgd_calls kfd2k .init_memory = kgd_init_memory, .init_pipeline = kgd_init_pipeline, .hqd_load = kgd_hqd_load, + .hqd_sdma_load = kgd_hqd_sdma_load, - .hqd_is_occupies = kgd_hqd_is_occupies, + .hqd_is_occupied = kgd_hqd_is_occupied, + .hqd_sdma_is_occupied = kgd_hqd_sdma_is_occupied, .hqd_destroy = kgd_hqd_destroy, + .hqd_sdma_destroy = kgd_hqd_sdma_destroy, .get_fw_version = get_fw_version }; @@@ -533,7 -528,46 +544,46 @@@ static int kgd_hqd_load(struct kgd_dev return 0; } + static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd) + { + struct cik_sdma_rlc_registers *m; + uint32_t sdma_base_addr; + + m = get_sdma_mqd(mqd); + sdma_base_addr = get_sdma_base_addr(m); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_VIRTUAL_ADDR, + m->sdma_rlc_virtual_addr); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_BASE, + m->sdma_rlc_rb_base); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_BASE_HI, + m->sdma_rlc_rb_base_hi); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_RPTR_ADDR_LO, + m->sdma_rlc_rb_rptr_addr_lo); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_RPTR_ADDR_HI, + m->sdma_rlc_rb_rptr_addr_hi); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_DOORBELL, + m->sdma_rlc_doorbell); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_CNTL, + m->sdma_rlc_rb_cntl); + + return 0; + } + -static bool kgd_hqd_is_occupies(struct kgd_dev *kgd, uint64_t queue_address, +static bool kgd_hqd_is_occupied(struct kgd_dev *kgd, uint64_t queue_address, uint32_t pipe_id, uint32_t queue_id) { uint32_t act; pgprzEYjbcvrU.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/amd/include/kgd_kfd_interface.h between commit b64b8afcca9d ("drm/amd: Fixing typos in kfd<->kgd interface") from Linus' tree and commit 85ea7d07e1ec ("drm/amd: Add SDMA functions to kfd-->kgd interface") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/amd/include/kgd_kfd_interface.h index 96a512208fad,cd3878fe6f77.. --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h @@@ -183,7 -182,9 +182,9 @@@ struct kfd2kgd_calls int (*hqd_load)(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id, uint32_t queue_id, uint32_t __user *wptr); + int (*hqd_sdma_load)(struct kgd_dev *kgd, void *mqd); + - bool (*hqd_is_occupies)(struct kgd_dev *kgd, uint64_t queue_address, + bool (*hqd_is_occupied)(struct kgd_dev *kgd, uint64_t queue_address, uint32_t pipe_id, uint32_t queue_id); int (*hqd_destroy)(struct kgd_dev *kgd, uint32_t reset_type, pgpTJNAX0B9bg.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/amd/amdkfd/kfd_priv.h between commit 6ee0ad2a7f27 ("drm/amdkfd: Drop interrupt SW ring buffer") from Linus' tree and commit 36b5c08f099a ("drm/amdkfd: Add gtt sa related data to kfd_dev struct") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/amd/amdkfd/kfd_priv.h index b3dc13c83169,a79c21781d3b.. --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h @@@ -135,6 -143,21 +143,14 @@@ struct kfd_dev struct kgd2kfd_shared_resources shared_resources; + void *gtt_mem; + uint64_t gtt_start_gpu_addr; + void *gtt_start_cpu_ptr; + void *gtt_sa_bitmap; + struct mutex gtt_sa_lock; + unsigned int gtt_sa_chunk_size; + unsigned int gtt_sa_num_of_chunks; + - void *interrupt_ring; - size_t interrupt_ring_size; - atomic_t interrupt_ring_rptr; - atomic_t interrupt_ring_wptr; - struct work_struct interrupt_work; - spinlock_t interrupt_lock; - /* QCM Device instance */ struct device_queue_manager *dqm; pgpbU1okG0ddg.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/radeon/radeon_kfd.c between commit b64b8afcca9d (drm/amd: Fixing typos in kfd-kgd interface) from Linus' tree and commit a84a9903b588 (drm/radeon: Implement SDMA interface functions) from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/radeon/radeon_kfd.c index 8bf87f1203cc,cae11eefecf0.. --- a/drivers/gpu/drm/radeon/radeon_kfd.c +++ b/drivers/gpu/drm/radeon/radeon_kfd.c @@@ -71,8 -70,8 +70,8 @@@ static int kgd_init_pipeline(struct kgd static int kgd_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id, uint32_t queue_id, uint32_t __user *wptr); - + static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd); -static bool kgd_hqd_is_occupies(struct kgd_dev *kgd, uint64_t queue_address, +static bool kgd_hqd_is_occupied(struct kgd_dev *kgd, uint64_t queue_address, uint32_t pipe_id, uint32_t queue_id); static int kgd_hqd_destroy(struct kgd_dev *kgd, uint32_t reset_type, @@@ -92,8 -92,11 +92,11 @@@ static const struct kfd2kgd_calls kfd2k .init_memory = kgd_init_memory, .init_pipeline = kgd_init_pipeline, .hqd_load = kgd_hqd_load, + .hqd_sdma_load = kgd_hqd_sdma_load, - .hqd_is_occupies = kgd_hqd_is_occupies, + .hqd_is_occupied = kgd_hqd_is_occupied, + .hqd_sdma_is_occupied = kgd_hqd_sdma_is_occupied, .hqd_destroy = kgd_hqd_destroy, + .hqd_sdma_destroy = kgd_hqd_sdma_destroy, .get_fw_version = get_fw_version }; @@@ -533,7 -528,46 +544,46 @@@ static int kgd_hqd_load(struct kgd_dev return 0; } + static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd) + { + struct cik_sdma_rlc_registers *m; + uint32_t sdma_base_addr; + + m = get_sdma_mqd(mqd); + sdma_base_addr = get_sdma_base_addr(m); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_VIRTUAL_ADDR, + m-sdma_rlc_virtual_addr); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_BASE, + m-sdma_rlc_rb_base); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_BASE_HI, + m-sdma_rlc_rb_base_hi); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_RPTR_ADDR_LO, + m-sdma_rlc_rb_rptr_addr_lo); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_RPTR_ADDR_HI, + m-sdma_rlc_rb_rptr_addr_hi); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_DOORBELL, + m-sdma_rlc_doorbell); + + write_register(kgd, + sdma_base_addr + SDMA0_RLC0_RB_CNTL, + m-sdma_rlc_rb_cntl); + + return 0; + } + -static bool kgd_hqd_is_occupies(struct kgd_dev *kgd, uint64_t queue_address, +static bool kgd_hqd_is_occupied(struct kgd_dev *kgd, uint64_t queue_address, uint32_t pipe_id, uint32_t queue_id) { uint32_t act; pgprzEYjbcvrU.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/amd/amdkfd/kfd_priv.h between commit 6ee0ad2a7f27 (drm/amdkfd: Drop interrupt SW ring buffer) from Linus' tree and commit 36b5c08f099a (drm/amdkfd: Add gtt sa related data to kfd_dev struct) from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/amd/amdkfd/kfd_priv.h index b3dc13c83169,a79c21781d3b.. --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h @@@ -135,6 -143,21 +143,14 @@@ struct kfd_dev struct kgd2kfd_shared_resources shared_resources; + void *gtt_mem; + uint64_t gtt_start_gpu_addr; + void *gtt_start_cpu_ptr; + void *gtt_sa_bitmap; + struct mutex gtt_sa_lock; + unsigned int gtt_sa_chunk_size; + unsigned int gtt_sa_num_of_chunks; + - void *interrupt_ring; - size_t interrupt_ring_size; - atomic_t interrupt_ring_rptr; - atomic_t interrupt_ring_wptr; - struct work_struct interrupt_work; - spinlock_t interrupt_lock; - /* QCM Device instance */ struct device_queue_manager *dqm; pgpbU1okG0ddg.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/amd/include/kgd_kfd_interface.h between commit b64b8afcca9d (drm/amd: Fixing typos in kfd-kgd interface) from Linus' tree and commit 85ea7d07e1ec (drm/amd: Add SDMA functions to kfd--kgd interface) from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/amd/include/kgd_kfd_interface.h index 96a512208fad,cd3878fe6f77.. --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h @@@ -183,7 -182,9 +182,9 @@@ struct kfd2kgd_calls int (*hqd_load)(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id, uint32_t queue_id, uint32_t __user *wptr); + int (*hqd_sdma_load)(struct kgd_dev *kgd, void *mqd); + - bool (*hqd_is_occupies)(struct kgd_dev *kgd, uint64_t queue_address, + bool (*hqd_is_occupied)(struct kgd_dev *kgd, uint64_t queue_address, uint32_t pipe_id, uint32_t queue_id); int (*hqd_destroy)(struct kgd_dev *kgd, uint32_t reset_type, pgpTJNAX0B9bg.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/radeon/radeon_kfd.c between commit b64b8afcca9d (drm/amd: Fixing typos in kfd-kgd interface) from Linus' tree and commit a84a9903b588 (drm/radeon: Implement SDMA interface functions) from the drm tree. btw I pushed a drm-next with all these fixed in it a little while ago we must be racing! Dave. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, On Thu, 22 Jan 2015 02:31:06 + (GMT) Dave Airlie airl...@linux.ie wrote: btw I pushed a drm-next with all these fixed in it a little while ago we must be racing! Yeah, I tend to collect all the trees first thing in the morning (around 9 - 10 am my time) and then spend the day merging them. -- Cheers, Stephen Rothwells...@canb.auug.org.au pgpXrZ5p73Lct.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/radeon/radeon_cs.c between commit 86b276385c6a ("drm/radeon: sync all BOs involved in a CS v2") from Linus' tree and commit 975700d2cc84 ("drm/radeon: split semaphore and sync object handling v2") from the drm tree. I fixed it up (I think - see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/radeon/radeon_cs.c index 6f377de099f9,75f22e5e999f.. --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@@ -251,19 -251,22 +251,20 @@@ static int radeon_cs_get_ring(struct ra static int radeon_cs_sync_rings(struct radeon_cs_parser *p) { - int i, r = 0; + struct radeon_cs_reloc *reloc; + int r; - for (i = 0; i < p->nrelocs; i++) { + list_for_each_entry(reloc, >validated, tv.head) { struct reservation_object *resv; - if (!p->relocs[i].robj) - continue; - - resv = p->relocs[i].robj->tbo.resv; + resv = reloc->robj->tbo.resv; - r = radeon_semaphore_sync_resv(p->rdev, p->ib.semaphore, resv, - reloc->tv.shared); + r = radeon_sync_resv(p->rdev, >ib.sync, resv, - p->relocs[i].tv.shared); ++ reloc->tv.shared); + if (r) - break; + return r; } - return r; + return 0; } /* XXX: note that this is called from the legacy UMS CS ioctl as well */ pgpilYgd9GqK3.pgp Description: OpenPGP digital signature
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/nouveau/nouveau_drm.c between commit 8b62c8c6df08 ("nouveau: move the hotplug ignore to correct place") from Linus' tree and commit 7bb6d4428d3d ("drm/nouveau: move the (far too many...) different s/r paths to the same place") from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/nouveau/nouveau_drm.c index 62b97c4eef8d,afb93bb72f97.. --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@@ -667,7 -647,30 +647,29 @@@ nouveau_do_resume(struct drm_device *de return 0; } - int nouveau_pmops_resume(struct device *dev) + int + nouveau_pmops_suspend(struct device *dev) + { + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + int ret; + + if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF || + drm_dev->switch_power_state == DRM_SWITCH_POWER_DYNAMIC_OFF) + return 0; + + ret = nouveau_do_suspend(drm_dev, false); + if (ret) + return ret; + + pci_save_state(pdev); + pci_disable_device(pdev); - pci_ignore_hotplug(pdev); + pci_set_power_state(pdev, PCI_D3hot); + return 0; + } + + int + nouveau_pmops_resume(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct drm_device *drm_dev = pci_get_drvdata(pdev); @@@ -701,6 -706,105 +705,106 @@@ nouveau_pmops_thaw(struct device *dev return nouveau_do_resume(drm_dev, false); } + static int + nouveau_pmops_runtime_suspend(struct device *dev) + { + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + int ret; + + if (nouveau_runtime_pm == 0) { + pm_runtime_forbid(dev); + return -EBUSY; + } + + /* are we optimus enabled? */ + if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) { + DRM_DEBUG_DRIVER("failing to power off - not optimus\n"); + pm_runtime_forbid(dev); + return -EBUSY; + } + + nv_debug_level(SILENT); + drm_kms_helper_poll_disable(drm_dev); + vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_OFF); + nouveau_switcheroo_optimus_dsm(); + ret = nouveau_do_suspend(drm_dev, true); + pci_save_state(pdev); + pci_disable_device(pdev); ++ pci_ignore_hotplug(pdev); + pci_set_power_state(pdev, PCI_D3cold); + drm_dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF; + return ret; + } + + static int + nouveau_pmops_runtime_resume(struct device *dev) + { + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + struct nvif_device *device = _drm(drm_dev)->device; + int ret; + + if (nouveau_runtime_pm == 0) + return -EINVAL; + + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + ret = pci_enable_device(pdev); + if (ret) + return ret; + pci_set_master(pdev); + + ret = nouveau_do_resume(drm_dev, true); + drm_kms_helper_poll_enable(drm_dev); + /* do magic */ + nvif_mask(device, 0x88488, (1 << 25), (1 << 25)); + vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_ON); + drm_dev->switch_power_state = DRM_SWITCH_POWER_ON; + nv_debug_level(NORMAL); + return ret; + } + + static int + nouveau_pmops_runtime_idle(struct device *dev) + { + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + struct nouveau_drm *drm = nouveau_drm(drm_dev); + struct drm_crtc *crtc; + + if (nouveau_runtime_pm == 0) { + pm_runtime_forbid(dev); + return -EBUSY; + } + + /* are we optimus enabled? */ + if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) { + DRM_DEBUG_DRIVER("failing to power off - not optimus\n"); + pm_runtime_forbid(dev); + return -EBUSY; + } + + /* if we have a hdmi audio device - make sure it has a driver loaded */ + if (drm->hdmi_device) { + if (!drm->hdmi_device->driver) { + DRM_DEBUG_DRIVER("failing to power off - no HDMI audio driver loaded\n"); + pm_runtime_mark_last_busy(dev); + return -EBUSY; + } + } + + list_for_each_entry(crtc, >dev->mode_config.crtc_list, head) { + if (crtc->enabled) { + DRM_DEBUG_DRIVER("failing to power off - crtc active\n"); + return -EBUSY; + } +
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/nouveau/nouveau_drm.c between commit 8b62c8c6df08 (nouveau: move the hotplug ignore to correct place) from Linus' tree and commit 7bb6d4428d3d (drm/nouveau: move the (far too many...) different s/r paths to the same place) from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/nouveau/nouveau_drm.c index 62b97c4eef8d,afb93bb72f97.. --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@@ -667,7 -647,30 +647,29 @@@ nouveau_do_resume(struct drm_device *de return 0; } - int nouveau_pmops_resume(struct device *dev) + int + nouveau_pmops_suspend(struct device *dev) + { + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + int ret; + + if (drm_dev-switch_power_state == DRM_SWITCH_POWER_OFF || + drm_dev-switch_power_state == DRM_SWITCH_POWER_DYNAMIC_OFF) + return 0; + + ret = nouveau_do_suspend(drm_dev, false); + if (ret) + return ret; + + pci_save_state(pdev); + pci_disable_device(pdev); - pci_ignore_hotplug(pdev); + pci_set_power_state(pdev, PCI_D3hot); + return 0; + } + + int + nouveau_pmops_resume(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct drm_device *drm_dev = pci_get_drvdata(pdev); @@@ -701,6 -706,105 +705,106 @@@ nouveau_pmops_thaw(struct device *dev return nouveau_do_resume(drm_dev, false); } + static int + nouveau_pmops_runtime_suspend(struct device *dev) + { + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + int ret; + + if (nouveau_runtime_pm == 0) { + pm_runtime_forbid(dev); + return -EBUSY; + } + + /* are we optimus enabled? */ + if (nouveau_runtime_pm == -1 !nouveau_is_optimus() !nouveau_is_v1_dsm()) { + DRM_DEBUG_DRIVER(failing to power off - not optimus\n); + pm_runtime_forbid(dev); + return -EBUSY; + } + + nv_debug_level(SILENT); + drm_kms_helper_poll_disable(drm_dev); + vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_OFF); + nouveau_switcheroo_optimus_dsm(); + ret = nouveau_do_suspend(drm_dev, true); + pci_save_state(pdev); + pci_disable_device(pdev); ++ pci_ignore_hotplug(pdev); + pci_set_power_state(pdev, PCI_D3cold); + drm_dev-switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF; + return ret; + } + + static int + nouveau_pmops_runtime_resume(struct device *dev) + { + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + struct nvif_device *device = nouveau_drm(drm_dev)-device; + int ret; + + if (nouveau_runtime_pm == 0) + return -EINVAL; + + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + ret = pci_enable_device(pdev); + if (ret) + return ret; + pci_set_master(pdev); + + ret = nouveau_do_resume(drm_dev, true); + drm_kms_helper_poll_enable(drm_dev); + /* do magic */ + nvif_mask(device, 0x88488, (1 25), (1 25)); + vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_ON); + drm_dev-switch_power_state = DRM_SWITCH_POWER_ON; + nv_debug_level(NORMAL); + return ret; + } + + static int + nouveau_pmops_runtime_idle(struct device *dev) + { + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + struct nouveau_drm *drm = nouveau_drm(drm_dev); + struct drm_crtc *crtc; + + if (nouveau_runtime_pm == 0) { + pm_runtime_forbid(dev); + return -EBUSY; + } + + /* are we optimus enabled? */ + if (nouveau_runtime_pm == -1 !nouveau_is_optimus() !nouveau_is_v1_dsm()) { + DRM_DEBUG_DRIVER(failing to power off - not optimus\n); + pm_runtime_forbid(dev); + return -EBUSY; + } + + /* if we have a hdmi audio device - make sure it has a driver loaded */ + if (drm-hdmi_device) { + if (!drm-hdmi_device-driver) { + DRM_DEBUG_DRIVER(failing to power off - no HDMI audio driver loaded\n); + pm_runtime_mark_last_busy(dev); + return -EBUSY; + } + } + + list_for_each_entry(crtc, drm-dev-mode_config.crtc_list, head) { + if (crtc-enabled) { + DRM_DEBUG_DRIVER(failing to power off - crtc active\n); + return -EBUSY; + } + } +
linux-next: manual merge of the drm tree with Linus' tree
Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/radeon/radeon_cs.c between commit 86b276385c6a (drm/radeon: sync all BOs involved in a CS v2) from Linus' tree and commit 975700d2cc84 (drm/radeon: split semaphore and sync object handling v2) from the drm tree. I fixed it up (I think - see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/radeon/radeon_cs.c index 6f377de099f9,75f22e5e999f.. --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@@ -251,19 -251,22 +251,20 @@@ static int radeon_cs_get_ring(struct ra static int radeon_cs_sync_rings(struct radeon_cs_parser *p) { - int i, r = 0; + struct radeon_cs_reloc *reloc; + int r; - for (i = 0; i p-nrelocs; i++) { + list_for_each_entry(reloc, p-validated, tv.head) { struct reservation_object *resv; - if (!p-relocs[i].robj) - continue; - - resv = p-relocs[i].robj-tbo.resv; + resv = reloc-robj-tbo.resv; - r = radeon_semaphore_sync_resv(p-rdev, p-ib.semaphore, resv, - reloc-tv.shared); + r = radeon_sync_resv(p-rdev, p-ib.sync, resv, - p-relocs[i].tv.shared); ++ reloc-tv.shared); + if (r) - break; + return r; } - return r; + return 0; } /* XXX: note that this is called from the legacy UMS CS ioctl as well */ pgpilYgd9GqK3.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the drm tree with Linus' tree
On Mon, Nov 17, 2014 at 02:11:58PM +1100, Stephen Rothwell wrote: > * PGP Signed by an unknown key > > Hi Dave, > > Today's linux-next merge of the drm tree got a conflict in > drivers/gpu/drm/tegra/dc.c between commit 8ff64c17f3be ("drm/tegra: dc: > Add missing call to drm_vblank_on()") from Linus' tree and commits > 205d48edee84 ("drm/tegra: dc: Factor out DC, window and cursor commit") > and c7679306a923 ("drm/tegra: dc: Universal plane support") from the > drm tree. > > I fixed it up (see below) and can carry the fix as necessary (no action > is required). > > -- > Cheers, > Stephen Rothwells...@canb.auug.org.au > > diff --cc drivers/gpu/drm/tegra/dc.c > index 054a79f143ae,b957908aec73.. > --- a/drivers/gpu/drm/tegra/dc.c > +++ b/drivers/gpu/drm/tegra/dc.c > @@@ -751,7 -906,8 +906,8 @@@ static void tegra_crtc_disable(struct d > } > } > > -drm_vblank_off(drm, dc->pipe); > +drm_crtc_vblank_off(crtc); > + tegra_dc_commit(dc); > } > > static bool tegra_crtc_mode_fixup(struct drm_crtc *crtc, > @@@ -934,15 -1090,9 +1090,9 @@@ static void tegra_crtc_prepare(struct d > static void tegra_crtc_commit(struct drm_crtc *crtc) > { > struct tegra_dc *dc = to_tegra_dc(crtc); > - unsigned long value; > - > - value = GENERAL_UPDATE | WIN_A_UPDATE; > - tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL); > - > - value = GENERAL_ACT_REQ | WIN_A_ACT_REQ; > - tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL); > > -drm_vblank_post_modeset(crtc->dev, dc->pipe); > +drm_crtc_vblank_on(crtc); > + tegra_dc_commit(dc); > } > > static void tegra_crtc_load_lut(struct drm_crtc *crtc) Looks good. Thanks, Thierry pgpslgAhELMhK.pgp Description: PGP signature
Re: linux-next: manual merge of the drm tree with Linus' tree
On Mon, Nov 17, 2014 at 02:11:58PM +1100, Stephen Rothwell wrote: * PGP Signed by an unknown key Hi Dave, Today's linux-next merge of the drm tree got a conflict in drivers/gpu/drm/tegra/dc.c between commit 8ff64c17f3be (drm/tegra: dc: Add missing call to drm_vblank_on()) from Linus' tree and commits 205d48edee84 (drm/tegra: dc: Factor out DC, window and cursor commit) and c7679306a923 (drm/tegra: dc: Universal plane support) from the drm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc drivers/gpu/drm/tegra/dc.c index 054a79f143ae,b957908aec73.. --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@@ -751,7 -906,8 +906,8 @@@ static void tegra_crtc_disable(struct d } } -drm_vblank_off(drm, dc-pipe); +drm_crtc_vblank_off(crtc); + tegra_dc_commit(dc); } static bool tegra_crtc_mode_fixup(struct drm_crtc *crtc, @@@ -934,15 -1090,9 +1090,9 @@@ static void tegra_crtc_prepare(struct d static void tegra_crtc_commit(struct drm_crtc *crtc) { struct tegra_dc *dc = to_tegra_dc(crtc); - unsigned long value; - - value = GENERAL_UPDATE | WIN_A_UPDATE; - tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL); - - value = GENERAL_ACT_REQ | WIN_A_ACT_REQ; - tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL); -drm_vblank_post_modeset(crtc-dev, dc-pipe); +drm_crtc_vblank_on(crtc); + tegra_dc_commit(dc); } static void tegra_crtc_load_lut(struct drm_crtc *crtc) Looks good. Thanks, Thierry pgpslgAhELMhK.pgp Description: PGP signature