Re: [Intel-gfx] [REGRESSION] i915: No HDMI output with 4.4
Hi, Ville. 13.02.2016 01:23, Ville Syrjälä wrote: Few other ideas: - Was the monitor sleeping when you tried this? Can you maybe push some button on it and then immediately run the intel_reg read command again? Nope. It just goes to sleep mode after (I suppose) drm module is loaded. Before module gets loaded monitor displays console as it should and does not sleep. However, I've tried to switch monitor inputs as well as pushing power button with no luck. - Do you have another monitor to try? - Do you have another cable to try? Will find that. - Maybe the pullup/down on the hpd line is misconfigured or something. Any chance of updating the BIOS on the machine? === Base Board Information Manufacturer: ASUSTeK COMPUTER INC. Product Name: H61M-K BIOS Information Vendor: American Megatrends Inc. Version: 0801 Release Date: 07/21/2014 === 0801 is the latest available for this board. - What does 'intel_reg read 0xc2000 0xc2004 0xc2020' say? === (0x000c2000): 0x (0x000c2004): 0x0001 (0x000c2020): 0x60004000 === - The spec claims the TMDS vs. SDVO select has something to do with hpd generation. I can't see any difference on my IVB though, so not sure it's really true. What does 'intel_reg read 0xe1140 0xe1150 0xe1160' tell us? === HDMIB (0x000e1140): 0x0018 (disabled pipe A 8bpc SDVO DVI audio disabled +vsync +hsync non-detected) HDMIC (0x000e1150): 0x0804 (disabled pipe A 8bpc TMDS DVI audio disabled -vsync -hsync detected) HDMID (0x000e1160): 0x0018 (disabled pipe A 8bpc SDVO DVI audio disabled +vsync +hsync non-detected) === Let's try these anyway (with the cable plugged in): intel_reg write 0xe1140 0x0 intel_reg write 0xe1150 0x0 intel_reg write 0xe1160 0x0 sleep 1 intel_reg read 0xc4000 intel_reg write 0xe1140 0x800 intel_reg write 0xe1150 0x800 intel_reg write 0xe1160 0x800 sleep 1 intel_reg read 0xc4000 intel_reg write 0xe1140 0x800800 intel_reg write 0xe1150 0x800800 intel_reg write 0xe1160 0x800800 sleep 1 intel_reg read 0xc4000 intel_reg write 0xe1140 0x80 intel_reg write 0xe1150 0x80 intel_reg write 0xe1160 0x80 sleep 1 intel_reg read 0xc4000 Same output for all 4 sets of commands: === (0x000c4000): 0x === Regards, Oleksandr. ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCHv2 4/4] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT
Hi Ville, >-Original Message- >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com] >Sent: Friday, February 12, 2016 10:43 PM >To: R, Durgadoss>Cc: intel-gfx@lists.freedesktop.org; Conselvan De Oliveira, Ander > >Subject: Re: [Intel-gfx] [PATCHv2 4/4] drm/i915/dp: Enable Upfront link >training for typeC DP support on >BXT > >On Mon, Feb 01, 2016 at 07:27:53PM +0530, Durgadoss R wrote: >> To support USB type C alternate DP mode, the display driver needs to >> know the number of lanes required by the DP panel as well as number >> of lanes that can be supported by the type-C cable. Sometimes, the >> type-C cable may limit the bandwidth even if Panel can support >> more lanes. To address these scenarios, the display driver will >> start link training with max lanes, and if that fails, the driver >> falls back to x2 lanes; and repeats this procedure for all >> bandwidth/lane configurations. >> >> * Since link training is done before modeset only the port >> (and not pipe/planes) and its associated PLLs are enabled. >> * On DP hotplug: Directly start link training on the crtc >> associated with the DP encoder. >> * On Connected boot scenarios: When booted with an LFP and a DP, >> typically, BIOS brings up DP. In these cases, we disable the >> crtc, do upfront link training and then re-enable it back. >> * All local changes made for upfront link training are reset >> to their previous values once it is done; so that the >> subsequent modeset is not aware of these changes. > >Glancing over this stuff, it doesn't look all that good on the locking >front. Mainly there doesn't seem to locking. > >In general I'm not really convinced upfront link training is a very good >idea if it needs a pipe. What happens if we fail to find a free pipe? > >I'd be much happier about this if we could make do without a pipe at We actually don't enable/disable the pipe. We need the crtc structures because values like port clock/link bw/dpll hw state are stored in crtc->config structures. This is why we had to touch crtc related data structures. Ander has pulled the dpll_hw_states out of crtc structures and made them independent. With this, things should improve.. I need to try this implementation to see if we can/can't completely get away with modifying crtc structures. >least on some modern platforms and actually limit the feature to >those platforms. PLLs are another concern, but I think modern platforms >often have some kind of way to always get the standard DP frequencies >from eg. the LCPLL. > >If we do go with the "hope you find a free pipe" approach, then it >really needs to do that atomic locking stuff right. Otherwise I'd expect Yes, we missed it. Ander pointed out the place where we need this locking. So, we will re-work this. Thanks, Durga >fireworks when someone plugs in a display while there's modeset >happening. > >-- >Ville Syrjälä >Intel OTC ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCHv2 2/4] drm/i915: Make finding unused crtc as a generic function
>-Original Message- >From: Ander Conselvan De Oliveira [mailto:conselv...@gmail.com] >Sent: Friday, February 12, 2016 10:23 PM >To: R, Durgadoss; intel-gfx@lists.freedesktop.org >Subject: Re: [Intel-gfx] [PATCHv2 2/4] drm/i915: Make finding unused crtc as a >generic function > >On Mon, 2016-02-01 at 19:27 +0530, Durgadoss R wrote: >> Looping over the crtc list and finding an unused crtc >> has users other than load_detect(). > >Which other users? If there are other users they should be converted in this >patch. If the use will only come in a future patch, please make that clear in >the commit message. Thanks for the comments, Will update this patch with comments, And send as part of next version. Thanks, Durga > >> Hence move it to >> a common function so that we can re-use the logic. >> >> Signed-off-by: Durgadoss R >> --- >> drivers/gpu/drm/i915/intel_display.c | 37 >> ++- >> - >> drivers/gpu/drm/i915/intel_drv.h | 1 + >> 2 files changed, 24 insertions(+), 14 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/intel_display.c >> b/drivers/gpu/drm/i915/intel_display.c >> index 92cd5c6..af50e61 100644 >> --- a/drivers/gpu/drm/i915/intel_display.c >> +++ b/drivers/gpu/drm/i915/intel_display.c >> @@ -10417,6 +10417,27 @@ static int intel_modeset_setup_plane_state(struct >> drm_atomic_state *state, >> return 0; >> } >> >> +struct drm_crtc *intel_get_unused_crtc(struct drm_encoder *encoder) >> +{ > >This function is exported, so it needs some kernel doc. > >> +struct drm_crtc *possible_crtc; >> +struct drm_crtc *crtc = NULL; >> +struct drm_device *dev = encoder->dev; >> +int i = -1; >> + >> +for_each_crtc(dev, possible_crtc) { >> +i++; >> +if (!(encoder->possible_crtcs & (1 << i))) >> +continue; >> +if (possible_crtc->state->enable) >> +continue; >> + >> +crtc = possible_crtc; >> +break; >> +} >> + >> +return crtc; >> +} >> + >> bool intel_get_load_detect_pipe(struct drm_connector *connector, >> struct drm_display_mode *mode, >> struct intel_load_detect_pipe *old, >> @@ -10425,7 +10446,6 @@ bool intel_get_load_detect_pipe(struct drm_connector >> *connector, >> struct intel_crtc *intel_crtc; >> struct intel_encoder *intel_encoder = >> intel_attached_encoder(connector); >> -struct drm_crtc *possible_crtc; >> struct drm_encoder *encoder = _encoder->base; >> struct drm_crtc *crtc = NULL; >> struct drm_device *dev = encoder->dev; >> @@ -10434,7 +10454,7 @@ bool intel_get_load_detect_pipe(struct drm_connector >> *connector, >> struct drm_atomic_state *state = NULL; >> struct drm_connector_state *connector_state; >> struct intel_crtc_state *crtc_state; >> -int ret, i = -1; >> +int ret; >> >> DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n", >>connector->base.id, connector->name, >> @@ -10476,21 +10496,10 @@ retry: >> return true; >> } >> >> -/* Find an unused one (if possible) */ >> -for_each_crtc(dev, possible_crtc) { >> -i++; >> -if (!(encoder->possible_crtcs & (1 << i))) >> -continue; >> -if (possible_crtc->state->enable) >> -continue; >> - >> -crtc = possible_crtc; >> -break; >> -} >> - >> /* >> * If we didn't find an unused CRTC, don't use any. >> */ >> +crtc = intel_get_unused_crtc(encoder); > >The comment above looks out of place now. It is pretty obvious anyway, so maybe >just delete it. > >With those fixed, this is > >Reviewed-by: Ander Conselvan de Oliveira > > if (!crtc) { >> DRM_DEBUG_KMS("no pipe available for load-detect\n"); >> goto fail; >> diff --git a/drivers/gpu/drm/i915/intel_drv.h >> b/drivers/gpu/drm/i915/intel_drv.h >> index c7a6e32..9fe7c4b 100644 >> --- a/drivers/gpu/drm/i915/intel_drv.h >> +++ b/drivers/gpu/drm/i915/intel_drv.h >> @@ -1106,6 +1106,7 @@ bool intel_get_load_detect_pipe(struct drm_connector >> *connector, >> void intel_release_load_detect_pipe(struct drm_connector *connector, >> struct intel_load_detect_pipe *old, >> struct drm_modeset_acquire_ctx *ctx); >> +struct drm_crtc *intel_get_unused_crtc(struct drm_encoder *encoder); >> int intel_pin_and_fence_fb_obj(struct drm_plane *plane, >> struct drm_framebuffer *fb, >> const struct drm_plane_state *plane_state); ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCHv2 4/4] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT
>-Original Message- >From: Ander Conselvan De Oliveira [mailto:conselv...@gmail.com] >Sent: Friday, February 12, 2016 10:13 PM >To: R, Durgadoss; intel-gfx@lists.freedesktop.org >Subject: Re: [Intel-gfx] [PATCHv2 4/4] drm/i915/dp: Enable Upfront link >training for typeC DP support on >BXT > >On Mon, 2016-02-01 at 19:27 +0530, Durgadoss R wrote: >> To support USB type C alternate DP mode, the display driver needs to >> know the number of lanes required by the DP panel as well as number >> of lanes that can be supported by the type-C cable. Sometimes, the >> type-C cable may limit the bandwidth even if Panel can support >> more lanes. To address these scenarios, the display driver will >> start link training with max lanes, and if that fails, the driver >> falls back to x2 lanes; and repeats this procedure for all >> bandwidth/lane configurations. >> >> * Since link training is done before modeset only the port >> (and not pipe/planes) and its associated PLLs are enabled. >> * On DP hotplug: Directly start link training on the crtc >> associated with the DP encoder. >> * On Connected boot scenarios: When booted with an LFP and a DP, >> typically, BIOS brings up DP. In these cases, we disable the >> crtc, do upfront link training and then re-enable it back. >> * All local changes made for upfront link training are reset >> to their previous values once it is done; so that the >> subsequent modeset is not aware of these changes. >> > >Please always include a changelog when sending a new version of a patch. Sure, will add it in the next version. > >> Signed-off-by: Durgadoss R >> --- >> drivers/gpu/drm/i915/intel_ddi.c | 102 + >> drivers/gpu/drm/i915/intel_display.c | 38 ++- >> drivers/gpu/drm/i915/intel_dp.c | 122 >> ++ >> - >> drivers/gpu/drm/i915/intel_drv.h | 10 +++ >> 4 files changed, 270 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/intel_ddi.c >> b/drivers/gpu/drm/i915/intel_ddi.c >> index 3fb9a03..cc5cad5 100644 >> --- a/drivers/gpu/drm/i915/intel_ddi.c >> +++ b/drivers/gpu/drm/i915/intel_ddi.c >> @@ -3217,6 +3217,108 @@ intel_ddi_init_hdmi_connector(struct >> intel_digital_port *intel_dig_port) >> return connector; >> } >> >> +static void intel_ddi_commit_upfront_pll_config(struct intel_dp *intel_dp, >> +struct intel_shared_dpll *pll) >> +{ >> +struct intel_shared_dpll_config tmp_config; >> + >> +/* >> + * The shared_dpll_config is computed in intel_get_shared_dpll(). >> + * It is committed to 'pll->config' here to be used in >> + * intel_enable/disable_shared_dpll functions. Before committing. >> + * save the existing config, so that once upfront link training is >> + * done, the original value of 'pll->config' can be restored. >> + */ >> +tmp_config = pll->config; >> +pll->config = intel_dp->upfront_pll_config; >> +intel_dp->upfront_pll_config = tmp_config; >> +} >> + >> +static struct intel_shared_dpll *intel_ddi_select_upfront_pll_config( >> +struct intel_dp *intel_dp, struct intel_crtc *crtc) >> +{ >> +if (!intel_ddi_pll_select(crtc, crtc->config)) >> +return NULL; >> + >> +return intel_crtc_to_shared_dpll(crtc); >> +} >> + >> +static void intel_ddi_clear_upfront_pll_config(struct intel_dp *intel_dp, >> +struct intel_shared_dpll *pll) >> +{ >> +pll->config = intel_dp->upfront_pll_config; >> +} >> + > >The shared pll interface is really getting in the way here. And BXT plls aren't >even shared. We are jumping through hoops to get the pll that matches the given >encoder and to call the code that calculates the dpll_hw_state based on the DP >link rate. I'd like to get that interface fixed but I reckon it will be tricky >to find something that works for all the platforms we support. That's the next >thing on my todo list. > >If we have to live with some intermediary solution, I think it would be better >to (almost) completely bypass the shared dpll stuff. First we would need to >split bxt_ddi_pll_sel() so that we would have a function that takes the link >bandwidth and spits out a dpll_hw_state without looking at crtc_state. Then we >would just take the right pll based on dig_port->port, make sure it is not >being >used and program it with the hw state we get from that new function. > >I wrote a patch to do that split. With it, the PLL enable logic in the upfront >link train logic would look a bit like below. There is some potential for >problems with the state checker, but it should be fine as long as the old dpll This is similar to what we had in the earlier version except the ddi_pll_select split.. I moved it this way because we wanted all the dpll functionality within the dpll interfaces. But yes, as you said, we could not get the whole thing cleaner.
Re: [Intel-gfx] 4.3.3 / skylake / dual graphics: multiple CSR errors at boot from i915 driver
From SKL, i915 will try to load DMC firmware when system is starting up. You can find it from 01.org. Personally, it looks without the firmware, the system is also able to work, except a lot warnings. :) On 02/13/16 08:42, Marc MERLIN wrote: I'm testing a new thinkpad skylake based P70 with dual graphics legolas:~# lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Device 191b (rev 06) 01:00.0 VGA compatible controller: NVIDIA Corporation GM107GLM [Quadro M600M] (rev a2) I'm getting these warnings at boot, although X11 seems to come up ok. Should I worry about them? WARNING: CPU: 4 PID: 101 at drivers/gpu/drm/i915/intel_csr.c:458 assert_csr_loaded+0x2e/0xbe() CSR is not loaded. Modules linked in: rtsx_pci_ms(+) snd_hda_intel rtsx_pci_sdmmc memstick iTCO_wdt iTCO_vendor_support snd_hda_codec snd_hda_core snd_hwdep snd_pcm_oss snd_mixer_oss intel_rapl snd_pcm iosf_mbi thinkpad_acpi x86_pkg_temp_thermal nvram intel_powerclamp coretemp snd_seq_midi snd_seq_midi_event kvm_intel snd_rawmidi kvm snd_seq crct10dif_pclmul crc32_pclmul snd_seq_device ttm snd_timer iwlwifi microcode input_leds snd nvidiafb xhci_pci psmouse pcspkr vgastate serio_raw xhci_hcd cfg80211 i2c_i801 rtsx_pci sg soundcore fb_ddc wmi(+) usbcore rfkill battery ac tpm_crb(+) usb_common tpm fjes evdev shpchp processor sata_sil24 r8169 mii fuse fan raid456 multipath mmc_block mmc_core dm_crypt dm_mod async_raid6_recov async_pq async_xor async_memcpy async_tx blowfish_x86_64 blowfish_common ecb xts crc32c_intel aesni_intel e1000e aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd ptp pps_core thermal CPU: 4 PID: 101 Comm: kworker/4:1 Not tainted 4.3.3-amd64-i915-volpreempt-20150421 #2 Hardware name: LENOVO 20ERCTO1WW/20ERCTO1WW, BIOS N1DET41W (1.15 ) 12/31/2015 ahci :00:17.0: port does not support device sleep Workqueue: events azx_probe_work [snd_hda_intel] 88087aebbc48 8134150e 88087aebbc90 88087aebbc80 8105aa29 8146f5ee 88087ad5 81cd81d0 300f 88087ad45800 88087aebbce8 Call Trace: [] dump_stack+0x44/0x55 [] warn_slowpath_common+0x99/0xb2 [] ? assert_csr_loaded+0x2e/0xbe [] warn_slowpath_fmt+0x48/0x50 [] ? mutex_lock+0x12/0x2f [] ? mutex_unlock+0x16/0x18 [] assert_csr_loaded+0x2e/0xbe [] skl_set_power_well+0x198/0x7df [] skl_power_well_enable+0x13/0x15 [] intel_display_power_get+0x9e/0xc9 [] i915_audio_component_get_power+0x1e/0x20 [] snd_hdac_display_power+0x91/0xf1 [snd_hda_core] [] azx_probe_continue+0xa9/0x654 [snd_hda_intel] [] ? finish_task_switch+0xb0/0x13b [] azx_probe_work+0x15/0x17 [snd_hda_intel] [] process_one_work+0x15b/0x260 [] worker_thread+0x1f0/0x29d [] ? rescuer_thread+0x281/0x281 [] ? rescuer_thread+0x281/0x281 [] kthread+0xa5/0xad [] ? kthread_parkme+0x24/0x24 [] ret_from_fork+0x3f/0x70 [] ? kthread_parkme+0x24/0x24 ---[ end trace 904c3d98e9b53001 ]--- [ cut here ] WARNING: CPU: 4 PID: 101 at drivers/gpu/drm/i915/intel_csr.c:461 assert_csr_loaded+0x8c/0xbe() CSR SSP Base Not fine Modules linked in: rtsx_pci_ms(+) snd_hda_intel rtsx_pci_sdmmc memstick iTCO_wdt iTCO_vendor_support snd_hda_codec snd_hda_core snd_hwdep snd_pcm_oss snd_mixer_oss intel_rapl snd_pcm iosf_mbi thinkpad_acpi x86_pkg_temp_thermal nvram intel_powerclamp coretemp snd_seq_midi snd_seq_midi_event kvm_intel snd_rawmidi kvm snd_seq crct10dif_pclmul crc32_pclmul snd_seq_device ttm snd_timer iwlwifi microcode input_leds snd nvidiafb xhci_pci psmouse pcspkr vgastate serio_raw xhci_hcd cfg80211 i2c_i801 rtsx_pci sg soundcore fb_ddc wmi(+) usbcore rfkill battery ac tpm_crb(+) usb_common tpm fjes evdev shpchp processor sata_sil24 r8169 mii fuse fan raid456 multipath mmc_block mmc_core dm_crypt dm_mod async_raid6_recov async_pq async_xor async_memcpy async_tx blowfish_x86_64 blowfish_common ecb xts crc32c_intel aesni_intel e1000e aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd ptp pps_core thermal CPU: 4 PID: 101 Comm: kworker/4:1 Tainted: GW 4.3.3-amd64-i915-volpreempt-20150421 #2 Hardware name: LENOVO 20ERCTO1WW/20ERCTO1WW, BIOS N1DET41W (1.15 ) 12/31/2015 Workqueue: events azx_probe_work [snd_hda_intel] 88087aebbc48 8134150e 88087aebbc90 88087aebbc80 8105aa29 8146f64c 88087ad5 81cd81d0 300f 88087ad45800 88087aebbce8 Call Trace: [] dump_stack+0x44/0x55 [] warn_slowpath_common+0x99/0xb2 [] ? assert_csr_loaded+0x8c/0xbe [] warn_slowpath_fmt+0x48/0x50 [] ? gen9_read32+0x1b4/0x1c2 [] assert_csr_loaded+0x8c/0xbe [] skl_set_power_well+0x198/0x7df [] skl_power_well_enable+0x13/0x15 [] intel_display_power_get+0x9e/0xc9 [] i915_audio_component_get_power+0x1e/0x20 [] snd_hdac_display_power+0x91/0xf1 [snd_hda_core] [] azx_probe_continue+0xa9/0x654 [snd_hda_intel] [] ? finish_task_switch+0xb0/0x13b []
[Intel-gfx] [Regression report] Weekly regression report WW07
WW07 Regression report. Last week's regressions +---+--+-+---+ | BugId | Summary |Created on |Bisect | +---+--+-+---+ | 94079 | [BAT regression] snd-hda blows up in module | 2016-02-10 16:27:26 |No | +---+--+-+---+ Previous regressions +---+--+-+---+ | BugId | Summary |Created on |Bisect | +---+--+-+---+ | 93971 | video framerate performance regression with | 2016-02-02 20:11:02 |No | | 93802 | [IVB bisected] switching to tty1 causes fifo | 2016-01-20 20:48:09 |Yes| | 93698 | [BAT BYT regression] WARNING Unclaimed reg | 2016-01-13 13:29:56 |No | | 93640 | [BAT ILK SNB IVB bisected] Fifo underruns si | 2016-01-08 08:43:33 |Yes| | 93608 | bisected: i915 SNB modeset crash in ac9b8236 | 2016-01-06 15:40:51 |Yes| | 93509 | [SNB] [4.4 regression] vblank wait timed out | 2015-12-26 10:54:43 |No | | 93393 | Regression for Skylake modesetting in kernel | 2015-12-16 07:27:52 |No | | 93263 | 945GM regression since 4.3 | 2015-12-05 17:55:50 |No | | 93122 | [SNB BAT IGT regression] pm_rpm started skip | 2015-11-26 13:35:39 |No | | 92972 | Black screen on Intel NUC hardware (i915) po | 2015-11-16 21:54:43 |No | | 92655 | [i915] LVDS screen half garbled. unable to b | 2015-10-23 20:42:24 |Yes| | 92575 | [4.2 regression] Massive graphics corruption | 2015-10-21 17:27:09 |No | | 92502 | [SKL] [Regression] igt/kms_flip/2x-flip-vs-e | 2015-10-16 15:44:30 |No | | 92414 | [Intel-gfx] As of kernel 4.3-rc1 system will | 2015-10-10 17:26:57 |Yes| | 92237 | Horrible noise (audio) via DisplayPort [regr | 2015-10-02 09:07:52 |No | | 92096 | regression/bug introduced by commit [0e572fe | 2015-09-24 02:07:37 |No | | 92083 | [regression] [git pull] drm for 4.3 | 2015-09-23 03:31:34 |No | | 92050 | [regression]/bug introduced by commit [0e572 | 2015-09-19 19:12:23 |No | | 91974 | [bisected] unrecoverable black screen after | 2015-09-11 09:33:35 |Yes| | 91959 | [865g 3.19 regression] Desktop image is dist | 2015-09-10 13:32:37 |No | | 91952 | [Bisected Regression] Blank screen from boot | 2015-09-10 01:24:00 |Yes| | 91844 | [HSW Regression] intel_do_flush_locked faile | 2015-09-02 00:06:09 |No | | 91378 | [hsw dp regression] 06ea66b6 (5.4GHz link cl | 2015-07-17 21:55:21 |No | | 90994 | [BDW regression] pm_rpm subtests fail and gi | 2015-06-16 18:30:52 |No | | 90808 | [BDW Bisected]igt/gem_ctx_param_basic/invali | 2015-06-02 03:07:02 |Yes| | 90732 | [BDW/BSW Bisected]igt/gem_reloc_vs_gpu/forke | 2015-05-29 02:19:26 |Yes| | 90368 | [SNB BSW SKL] bisected igt/kms_3d has hardco | 2015-05-08 07:28:55 |Yes| | 90134 | [BSW Bisected]GFXBench3_gl_driver/GFXBench3_ | 2015-04-22 05:07:28 |Yes| | 90112 | [BSW bisected] OglGSCloth/Lightsmark/CS/ Por | 2015-04-20 07:25:42 |Yes| | 89872 | [ HSW Bisected ] VGA was white screen when r | 2015-04-02 11:30:59 |Yes| | 89728 | [HSW/BDW/BSW/BYT bisected] igt / pm_rps / re | 2015-03-23 10:01:57 |Yes| | 89632 | [i965 regression]igt/kms_universal_plane/uni | 2015-03-18 06:45:02 |No | | 89629 | [i965 regression]igt/kms_rotation_crc/sprite | 2015-03-18 06:10:53 |No | | 89334 | [945 regression] 4.0-rc1 kernel GPU hang: e | 2015-02-26 08:05:08 |No | | 88439 | [BDW Bisected]igt/gem_reloc_vs_gpu/forked-fa | 2015-01-15 06:02:18 |Yes| | 88124 | i915: regression: after DP connected monitor | 2015-01-15 06:02:18 |No | | 87726 | [BDW Bisected] OglDrvCtx performance reduced | 2014-12-26 01:21:55 |Yes| | 87725 | [BDW Bisected] OglBatch7 performance reduced | 2014-12-26 01:03:12 |Yes| | 87662 | [ALL 3.18 Bisected] DVI --rotation inverted | 2014-12-24 03:13:20 |Yes| | 87131 | [PNV regression] igt/gem_exec_lut_handle tak | 2014-12-09 03:06:30 |No | | 84974 | [VLV eDP-LVDS bisected] powerdomains: Screen | 2014-10-14 05:11:02 |Yes| | 84855 | [ILK regression]igt kms_rotation_crc/sprite- | 2014-10-10 03:21:52 |No | | 81537 | [snb dp regression] dp retry forever due to | 2014-07-19 14:51:21 |No | | 72782 | [945GM bisected] screen blank on S3 resume o | 2013-12-17 10:02:50 |Yes| +---+--+-+---+ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] Updated drm-intel-testing
Hi all, New -testing cycle with cool stuff: - lots and lots of fbc work from Paulo - max pixel clock checks from Mika Kahola - prep work for nv12 offset handling from Ville - piles of small fixes and refactorings all around Happy testing! Cheers, Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v10 3/4] drm/i915: Set aux.dev to the drm_connector device, instead of drm_device.
On Fri, Feb 12, 2016 at 10:28:28PM +0200, Imre Deak wrote: > On Thu, 2016-01-21 at 15:10 -0800, Rafael Antognolli wrote: > > So far, the i915 driver and some other drivers set it to the > > drm_device, > > which doesn't allow one to know which DP a given aux channel is > > related > > to. Changing this to be the drm_connector provides proper nesting, > > still > > allowing one to get the drm_device from it. Some drivers already set > > it > > to the drm_connector. > > > > This also removes the need to add a sysfs link for the i2c device > > under > > the connector, as it will already be there. > > Yes, having the i2c-dev only at one place under the connector is more > logical and what we want imo. It's an ABI change but if other drivers > already have it in this way then I assume it's fine. For HDMI > connectors we still have them under the drm_device (and there is no > symlink for them under the connector device) but this was inconsistent > already before this patch and can be fixed up later. > > Adding Jani, in case he has comments on this. > > Below one more comment: > > > v9: > > - As a side effect, drm_dp_aux_unregister() must be called before > > intel_connector_unregister(), as both the aux.dev and the i2c > > adapter > > dev are children of the drm_connector device now. Calling > > drm_dp_aux_unregister() before prevents them from being destroyed > > twice. > > > > v10: > > - move aux_fini() to connector_unregister(), instead of moving > > drm_dp_aux_unregister() outside of connector_register(). > > > > Signed-off-by: Rafael Antognolli> > --- > > drivers/gpu/drm/i915/intel_dp.c | 18 ++ > > 1 file changed, 2 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_dp.c > > b/drivers/gpu/drm/i915/intel_dp.c > > index e2bea710..da704c6 100644 > > --- a/drivers/gpu/drm/i915/intel_dp.c > > +++ b/drivers/gpu/drm/i915/intel_dp.c > > @@ -1188,7 +1188,6 @@ intel_dp_aux_fini(struct intel_dp *intel_dp) > > static int > > intel_dp_aux_init(struct intel_dp *intel_dp, struct intel_connector > > *connector) > > { > > - struct drm_device *dev = intel_dp_to_dev(intel_dp); > > struct intel_digital_port *intel_dig_port = > > dp_to_dig_port(intel_dp); > > enum port port = intel_dig_port->port; > > int ret; > > @@ -1199,7 +1198,7 @@ intel_dp_aux_init(struct intel_dp *intel_dp, > > struct intel_connector *connector) > > if (!intel_dp->aux.name) > > return -ENOMEM; > > > > - intel_dp->aux.dev = dev->dev; > > + intel_dp->aux.dev = connector->base.kdev; > > intel_dp->aux.transfer = intel_dp_aux_transfer; > > > > DRM_DEBUG_KMS("registering %s bus for %s\n", > > @@ -1214,16 +1213,6 @@ intel_dp_aux_init(struct intel_dp *intel_dp, > > struct intel_connector *connector) > > return ret; > > } > > > > - ret = sysfs_create_link(>base.kdev->kobj, > > - _dp->aux.ddc.dev.kobj, > > - intel_dp->aux.ddc.dev.kobj.name); > > - if (ret < 0) { > > - DRM_ERROR("sysfs_create_link() for %s failed > > (%d)\n", > > - intel_dp->aux.name, ret); > > - intel_dp_aux_fini(intel_dp); > > - return ret; > > - } > > - > > return 0; > > } > > > > @@ -1232,9 +1221,7 @@ intel_dp_connector_unregister(struct > > intel_connector *intel_connector) > > { > > struct intel_dp *intel_dp = > > intel_attached_dp(_connector->base); > > > > - if (!intel_connector->mst_port) > > - sysfs_remove_link(_connector->base.kdev->kobj, > > - intel_dp->aux.ddc.dev.kobj.name); > > + intel_dp_aux_fini(intel_dp); > > Hrm, the mst_port check seems to have been misplaced at some point, > this function isn't called for virtual MST connectors. So I think it's > fine to remove it. The patch looks ok: > > Reviewed-by: Imre Deak Added to drm-misc, thanks. -Daniel > > > intel_connector_unregister(intel_connector); > > } > > > > @@ -4868,7 +4855,6 @@ void intel_dp_encoder_destroy(struct > > drm_encoder *encoder) > > struct intel_digital_port *intel_dig_port = > > enc_to_dig_port(encoder); > > struct intel_dp *intel_dp = _dig_port->dp; > > > > - intel_dp_aux_fini(intel_dp); > > intel_dp_mst_encoder_cleanup(intel_dig_port); > > if (is_edp(intel_dp)) { > > cancel_delayed_work_sync(_dp->panel_vdd_work); > ___ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v5 10/12] drm/i915: Defer probe if gmux is present but its driver isn't
On Sun, Feb 14, 2016 at 1:10 PM, Lukas Wunnerwrote: > /** > + * vga_switcheroo_client_probe_defer() - whether to defer probing a given GPU > + * @pdev: pci device of GPU > + * > + * Determine whether any prerequisites are not fulfilled to probe a given > GPU. I'd phrase this as "Determine whether the vgaswitcheroor support is fully loaded" and drop the GPU part - it could be needed by snd drivers eventually too. > + * DRM drivers should invoke this early on in their ->probe callback and > return > + * %-EPROBE_DEFER if it evaluates to %true. The GPU need not be registered > with > + * vga_switcheroo_register_client() beforehand. s/need not/must not/ ... is your native language German by any chance? Aside from that ... should vga_switcheroo_register_client call this helper instead directly and return the appropriate -EDEFER_PROBE error? I realize for some drivers it might be way too late to unrol from that point on, but e.g. i915 already uses -EDEFER_PROBE. And calling it unconditionally will make sure that it's easier to notice when people forget this. So maybe call it both from the register functions, and export as a separate hook? And for i915 we should be able to remove that early check entirely. > + * > + * Return: %false unless one of the following applies: > + * > + * * On pre-retina MacBook Pros, the apple-gmux driver is needed to > temporarily > + * switch DDC to the inactive GPU so that it can probe the panel's EDID. > + * Therefore return %true if gmux is built into the machine, @pdev is the > + * inactive GPU and the apple-gmux driver has not registered its handler > + * flags, signifying it has not yet loaded or has not finished > initializing. I think the apple-specific comment here should be a separate comment right above the if condition below - it doesn't explain the interface, only one specific case. And we might grow more of those. -Daniel > + */ > +bool vga_switcheroo_client_probe_defer(struct pci_dev *pdev) > +{ > + if (apple_gmux_present() && pdev != vga_default_device() && > + !vgasr_priv.handler_flags) > + return true; > + > + return false; > +} > +EXPORT_SYMBOL(vga_switcheroo_client_probe_defer); > + -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v5 10/12] drm/i915: Defer probe if gmux is present but its driver isn't
Hi, On Tue, Feb 09, 2016 at 10:04:01AM +0100, Daniel Vetter wrote: > On Mon, Jan 11, 2016 at 08:09:20PM +0100, Lukas Wunner wrote: [...] > > @@ -967,6 +970,15 @@ static int i915_pci_probe(struct pci_dev *pdev, const > > struct pci_device_id *ent) > > if (PCI_FUNC(pdev->devfn)) > > return -ENODEV; > > > > + /* > > +* apple-gmux is needed on dual GPU MacBook Pro > > +* to probe the panel if we're the inactive GPU. > > +*/ > > + if (IS_ENABLED(CONFIG_VGA_ARB) && IS_ENABLED(CONFIG_VGA_SWITCHEROO) && > > + apple_gmux_present() && pdev != vga_default_device() && > > + !vga_switcheroo_handler_flags()) > > + return -EPROBE_DEFER; > > I pulled in all patches to drm-misc, but this here is imo ugly and needs > to be polished a bit. What about adding a vga_switcheroo_ready() function > which contains this check (and might in the future contain even more > checks)? Then i915/radeon/nouveau would just have a simple > > if (!vga_switcheroo_ready()) > return -EPROBE_DEFER; > > and instead of duplicating the same comment 3 times we could have it once > in one place. Plus some neat kerneldoc for this new helper to describe how > it's supposed to be used. Plus better encapsulation of concepts. > > Can you pls follow up with a patch/series to do that? You're right, this is indeed much better. It also allows me to drop the IS_ENABLED(CONFIG_VGA_ARB) and IS_ENABLED(CONFIG_VGA_SWITCHEROO) checks. A patch follows below after the scissors. The name vga_switcheroo_ready() was already taken by a static function in vga_switcheroo.c, so I've named it vga_switcheroo_client_probe_defer(). If anyone has a suggestion for a better name I'll be happy to amend the patch. I've switched all three drivers to the new helper within the same patch but will gladly spin this out into one patch per driver if preferred. Thank you! Lukas -- >8 -- Subject: [PATCH] vga_switcheroo: Allow clients to determine whether to defer probing So far we've got one condition when DRM drivers need to defer probing on a dual GPU system and it's coded separately into each of the relevant drivers. As suggested by Daniel Vetter, deduplicate that code in the drivers and move it to a new vga_switcheroo helper. This yields better encapsulation of concepts and lets us add further checks in a central place. (The existing check pertains to pre-retina MacBook Pros and an additional check is expected to be needed for retinas.) Cc: Daniel VetterCc: Ben Skeggs Cc: Alex Deucher Signed-off-by: Lukas Wunner --- drivers/gpu/drm/i915/i915_drv.c | 10 +- drivers/gpu/drm/nouveau/nouveau_drm.c | 10 +- drivers/gpu/drm/radeon/radeon_drv.c | 10 +- drivers/gpu/vga/vga_switcheroo.c | 28 include/linux/vga_switcheroo.h| 2 ++ 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 44912ec..80cfd73 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -35,11 +35,9 @@ #include "i915_trace.h" #include "intel_drv.h" -#include #include #include #include -#include #include #include @@ -972,13 +970,7 @@ static int i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (PCI_FUNC(pdev->devfn)) return -ENODEV; - /* -* apple-gmux is needed on dual GPU MacBook Pro -* to probe the panel if we're the inactive GPU. -*/ - if (IS_ENABLED(CONFIG_VGA_ARB) && IS_ENABLED(CONFIG_VGA_SWITCHEROO) && - apple_gmux_present() && pdev != vga_default_device() && - !vga_switcheroo_handler_flags()) + if (vga_switcheroo_client_probe_defer(pdev)) return -EPROBE_DEFER; return drm_get_pci_dev(pdev, ent, ); diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index bb8498c..9141bcd 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -22,13 +22,11 @@ * Authors: Ben Skeggs */ -#include #include #include #include #include #include -#include #include #include "drmP.h" @@ -314,13 +312,7 @@ static int nouveau_drm_probe(struct pci_dev *pdev, bool boot = false; int ret; - /* -* apple-gmux is needed on dual GPU MacBook Pro -* to probe the panel if we're the inactive GPU. -*/ - if (IS_ENABLED(CONFIG_VGA_ARB) && IS_ENABLED(CONFIG_VGA_SWITCHEROO) && - apple_gmux_present() && pdev != vga_default_device() && - !vga_switcheroo_handler_flags()) + if (vga_switcheroo_client_probe_defer(pdev)) return -EPROBE_DEFER; /* remove conflicting drivers (vesafb, efifb etc) */ diff --git a/drivers/gpu/drm/radeon/radeon_drv.c
[Intel-gfx] [PATCH i-g-t] Update MAINTAINERS file.
Signed-off-by: Marius Vlad--- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 7825e1e..58f9efb 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1,2 +1,2 @@ Daniel Vetter -Thomas Wood +Marius Vlad -- 2.7.0 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx