* [PATCH] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF @ 2015-04-19 21:05 Radek Dostal 2015-04-20 5:26 ` [PATCHv2] " Radek Dostal 0 siblings, 1 reply; 54+ messages in thread From: Radek Dostal @ 2015-04-19 21:05 UTC (permalink / raw) To: airlied; +Cc: dri-devel, linux-kernel, Radek Dostal commit eaf99c749d43 ("drm: Perform cmdline mode parsing during connector initialisation") breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA) when "video=HDMI-A-1:1280x720@60" is specified on the command line. The reason is newly added mode '"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6' , which is added by function drm_helper_probe_add_cmdline_mode (introduced in above mentioned commit). This mode causes TV to go black and show "No signal" message. When cmdline_mode is set, it is preferred to use matching mode obtained from EDID, than mode calculated by function drm_mode_create_from_cmdline_mode Signed-off-by: Radek Dostal <rd@radekdostal.com> --- drivers/gpu/drm/drm_fb_helper.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index cac4229..72d6ed0 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1284,6 +1284,7 @@ struct drm_display_mode *drm_pick_cmdline_mode(struct drm_fb_helper_connector *f { struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; + bool prefer_non_userdef; bool prefer_non_interlace; cmdline_mode = &fb_helper_conn->connector->cmdline_mode; @@ -1296,6 +1297,7 @@ struct drm_display_mode *drm_pick_cmdline_mode(struct drm_fb_helper_connector *f if (cmdline_mode->rb || cmdline_mode->margins) goto create_mode; + prefer_non_userdef = true; prefer_non_interlace = !cmdline_mode->interlace; again: list_for_each_entry(mode, &fb_helper_conn->connector->modes, head) { @@ -1312,6 +1314,9 @@ again: if (cmdline_mode->interlace) { if (!(mode->flags & DRM_MODE_FLAG_INTERLACE)) continue; + } else if (prefer_non_userdef) { + if (mode->type & DRM_MODE_TYPE_USERDEF) + continue; } else if (prefer_non_interlace) { if (mode->flags & DRM_MODE_FLAG_INTERLACE) continue; @@ -1319,6 +1324,11 @@ again: return mode; } + if (prefer_non_userdef) { + prefer_non_userdef = true; + goto again; + } + if (prefer_non_interlace) { prefer_non_interlace = false; goto again; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-19 21:05 [PATCH] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF Radek Dostal @ 2015-04-20 5:26 ` Radek Dostal 2015-04-20 9:09 ` Chris Wilson 2015-04-20 12:26 ` [PATCH] drm: Only create a cmdline mode if no probed modes match Chris Wilson 0 siblings, 2 replies; 54+ messages in thread From: Radek Dostal @ 2015-04-20 5:26 UTC (permalink / raw) To: airlied; +Cc: dri-devel, linux-kernel, Radek Dostal commit eaf99c749d43 ("drm: Perform cmdline mode parsing during connector initialisation") breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA) when "video=HDMI-A-1:1280x720@60" is specified on the command line. The reason is newly added mode '"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6' , which is added by function drm_helper_probe_add_cmdline_mode (introduced in above mentioned commit). This mode causes TV to go black and show "No signal" message. When cmdline_mode is set, it is preferred to use matching mode obtained from EDID, than mode calculated by function drm_mode_create_from_cmdline_mode Signed-off-by: Radek Dostal <rd@radekdostal.com> --- v2: fixed if (prefer_non_userdef) condition, which was causing infinite loop before. drivers/gpu/drm/drm_fb_helper.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index cac4229..fac425e 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1284,6 +1284,7 @@ struct drm_display_mode *drm_pick_cmdline_mode(struct drm_fb_helper_connector *f { struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; + bool prefer_non_userdef; bool prefer_non_interlace; cmdline_mode = &fb_helper_conn->connector->cmdline_mode; @@ -1296,6 +1297,7 @@ struct drm_display_mode *drm_pick_cmdline_mode(struct drm_fb_helper_connector *f if (cmdline_mode->rb || cmdline_mode->margins) goto create_mode; + prefer_non_userdef = true; prefer_non_interlace = !cmdline_mode->interlace; again: list_for_each_entry(mode, &fb_helper_conn->connector->modes, head) { @@ -1312,6 +1314,9 @@ again: if (cmdline_mode->interlace) { if (!(mode->flags & DRM_MODE_FLAG_INTERLACE)) continue; + } else if (prefer_non_userdef) { + if (mode->type & DRM_MODE_TYPE_USERDEF) + continue; } else if (prefer_non_interlace) { if (mode->flags & DRM_MODE_FLAG_INTERLACE) continue; @@ -1319,6 +1324,11 @@ again: return mode; } + if (prefer_non_userdef) { + prefer_non_userdef = false; + goto again; + } + if (prefer_non_interlace) { prefer_non_interlace = false; goto again; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 5:26 ` [PATCHv2] " Radek Dostal @ 2015-04-20 9:09 ` Chris Wilson 2015-04-20 12:26 ` [PATCH] drm: Only create a cmdline mode if no probed modes match Chris Wilson 1 sibling, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 9:09 UTC (permalink / raw) To: Radek Dostal; +Cc: airlied, dri-devel, linux-kernel On Mon, Apr 20, 2015 at 07:26:33AM +0200, Radek Dostal wrote: > commit eaf99c749d43 ("drm: Perform cmdline mode parsing during connector > initialisation") breaks HDMI output on BeagleBone Black with LG TV > (model 19LS4R-ZA) when "video=HDMI-A-1:1280x720@60" is specified on > the command line. > > The reason is newly added mode > '"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6' > , which is added by function drm_helper_probe_add_cmdline_mode (introduced > in above mentioned commit). This mode causes TV to go black and show "No > signal" message. > > When cmdline_mode is set, it is preferred to use matching mode obtained > from EDID, than mode calculated by function > drm_mode_create_from_cmdline_mode The EDID modes should be earlier in the list, and so higher priority than the cmdline mode. The only instance I see that breaking down is if the mode gets created by drm_pick_cmdline_mode, i.e. diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index cac422916c7a..d55c2de6a99f 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1327,7 +1327,7 @@ again: create_mode: mode = drm_mode_create_from_cmdline_mode(fb_helper_conn->connector->dev, cmdline_mode); - list_add(&mode->head, &fb_helper_conn->connector->modes); + list_add_tail(&mode->head, &fb_helper_conn->connector->modes); return mode; } EXPORT_SYMBOL(drm_pick_cmdline_mode); Can you please print the matching modes and trace where the userdef mode gets added before the EDID modes? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF @ 2015-04-20 9:09 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 9:09 UTC (permalink / raw) To: Radek Dostal; +Cc: linux-kernel, dri-devel On Mon, Apr 20, 2015 at 07:26:33AM +0200, Radek Dostal wrote: > commit eaf99c749d43 ("drm: Perform cmdline mode parsing during connector > initialisation") breaks HDMI output on BeagleBone Black with LG TV > (model 19LS4R-ZA) when "video=HDMI-A-1:1280x720@60" is specified on > the command line. > > The reason is newly added mode > '"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6' > , which is added by function drm_helper_probe_add_cmdline_mode (introduced > in above mentioned commit). This mode causes TV to go black and show "No > signal" message. > > When cmdline_mode is set, it is preferred to use matching mode obtained > from EDID, than mode calculated by function > drm_mode_create_from_cmdline_mode The EDID modes should be earlier in the list, and so higher priority than the cmdline mode. The only instance I see that breaking down is if the mode gets created by drm_pick_cmdline_mode, i.e. diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index cac422916c7a..d55c2de6a99f 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1327,7 +1327,7 @@ again: create_mode: mode = drm_mode_create_from_cmdline_mode(fb_helper_conn->connector->dev, cmdline_mode); - list_add(&mode->head, &fb_helper_conn->connector->modes); + list_add_tail(&mode->head, &fb_helper_conn->connector->modes); return mode; } EXPORT_SYMBOL(drm_pick_cmdline_mode); Can you please print the matching modes and trace where the userdef mode gets added before the EDID modes? -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 9:09 ` Chris Wilson (?) @ 2015-04-20 9:36 ` Radek Dostál 2015-04-20 9:46 ` Chris Wilson -1 siblings, 1 reply; 54+ messages in thread From: Radek Dostál @ 2015-04-20 9:36 UTC (permalink / raw) To: Chris Wilson, airlied, dri-devel, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1463 bytes --] Hi Chris, On 04/20/2015 11:09 AM, Chris Wilson wrote: > The EDID modes should be earlier in the list, and so higher priority > than the cmdline mode. The only instance I see that breaking down is if > the mode gets created by drm_pick_cmdline_mode, i.e. indeed at the beginning the command line mode is added to the end of the list, but later on it seems to me that all modes are reordered based on the resolution and clock and than mode generated by drm_helper_probe_add_cmdline_mode gets upper in the list as it has higher clock value. Please see attached output of dmesg. Additionally I am attaching the output with commit eaf99c749d43 reverted, where you can see that the mode "1280x720@60 with pixel clock 74440" is not even added to the list. > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index cac422916c7a..d55c2de6a99f 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -1327,7 +1327,7 @@ again: > create_mode: > mode = drm_mode_create_from_cmdline_mode(fb_helper_conn->connector->dev, > cmdline_mode); > - list_add(&mode->head, &fb_helper_conn->connector->modes); > + list_add_tail(&mode->head, &fb_helper_conn->connector->modes); > return mode; > } > EXPORT_SYMBOL(drm_pick_cmdline_mode); I am pretty sure, this will not help as in my case it never makes it to create_mode. Thanks, Radek [-- Attachment #2: dmesg --] [-- Type: text/plain, Size: 32725 bytes --] Booting Linux on physical CPU 0x0 Initializing cgroup subsys cpuset Initializing cgroup subsys cpu Initializing cgroup subsys cpuacct Linux version 4.0.0-next-20150415-00001-g47d4e2d-dirty (rdostal@rdostal-desktop) (gcc version 4.7.2 (GCC) ) #40 SMP Sun Apr 19 20:43:46 CEST 2015 CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine model: TI AM335x BeagleBone Black earlycon: no match for ttyO0,115200n8 cma: Reserved 16 MiB at 0x9e000000 Memory policy: Data cache writeback On node 0 totalpages: 130816 free_area_init_node: node 0, pgdat c09bbe40, node_mem_map dfa71000 Normal zone: 1152 pages used for memmap Normal zone: 0 pages reserved Normal zone: 130816 pages, LIFO batch:31 CPU: All CPU(s) started in SVC mode. AM335X ES2.1 (sgx neon ) PERCPU: Embedded 13 pages/cpu @dfa19000 s23040 r8192 d22016 u53248 pcpu-alloc: s23040 r8192 d22016 u53248 alloc=13*4096 pcpu-alloc: [0] 0 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 129664 Kernel command line: console=ttyO0,115200n8 video=HDMI-A-1:1280x720@60 consoleblank=0 debug drm.debug=0xf root=/dev/nfs nfsroot=10.1.14.92:/srv/nfs/bone,nolock rw ip=dhcp PID hash table entries: 2048 (order: 1, 8192 bytes) Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 483232K/523264K available (6467K kernel code, 745K rwdata, 2304K rodata, 444K init, 8221K bss, 23648K reserved, 16384K cma-reserved, 0K highmem) Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xe0800000 - 0xff000000 ( 488 MB) lowmem : 0xc0000000 - 0xe0000000 ( 512 MB) pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) modules : 0xbf000000 - 0xbfe00000 ( 14 MB) .text : 0xc0008000 - 0xc0898f9c (8772 kB) .init : 0xc0899000 - 0xc0908000 ( 444 kB) .data : 0xc0908000 - 0xc09c2650 ( 746 kB) .bss : 0xc09c5000 - 0xc11cc710 (8222 kB) Running RCU self tests Hierarchical RCU implementation. RCU lockdep checking is enabled. Additional per-CPU info printed with stalls. RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1. RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 NR_IRQS:16 nr_irqs:16 16 IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts OMAP clockevent source: timer2 at 24000000 Hz sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns OMAP clocksource: timer1 at 24000000 Hz Console: colour dummy device 80x30 Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar ... MAX_LOCKDEP_SUBCLASSES: 8 ... MAX_LOCK_DEPTH: 48 ... MAX_LOCKDEP_KEYS: 8191 ... CLASSHASH_SIZE: 4096 ... MAX_LOCKDEP_ENTRIES: 32768 ... MAX_LOCKDEP_CHAINS: 65536 ... CHAINHASH_SIZE: 32768 memory used by lock dependency info: 5167 kB per task-struct memory footprint: 1152 bytes Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736) pid_max: default: 32768 minimum: 301 Security Framework initialized Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) Initializing cgroup subsys blkio Initializing cgroup subsys memory Initializing cgroup subsys devices Initializing cgroup subsys freezer Initializing cgroup subsys perf_event CPU: Testing write buffer coherency: ok CPU0: thread -1, cpu 0, socket -1, mpidr 0 Setting up static identity map for 0x80008280 - 0x800082f0 Brought up 1 CPUs SMP: Total of 1 processors activated (996.14 BogoMIPS). CPU: All CPU(s) started in SVC mode. devtmpfs: initialized VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 omap_hwmod: tptc0 using broken dt data from edma omap_hwmod: tptc1 using broken dt data from edma omap_hwmod: tptc2 using broken dt data from edma omap_hwmod: debugss: _wait_target_disable failed clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns pinctrl core: initialized pinctrl subsystem NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations cpuidle: using governor ladder cpuidle: using governor menu gpiochip_add: registered GPIOs 0 to 31 on device: gpio OMAP GPIO hardware version 0.1 gpiochip_add: registered GPIOs 32 to 63 on device: gpio gpiochip_add: registered GPIOs 64 to 95 on device: gpio gpiochip_add: registered GPIOs 96 to 127 on device: gpio No ATAGs? hw-breakpoint: debug architecture 0x4 unsupported. edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator@0[0]' SCSI subsystem initialized libata version 3.00 loaded. omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe Switched to clocksource timer1 NET: Registered protocol family 2 TCP established hash table entries: 4096 (order: 2, 16384 bytes) TCP bind hash table entries: 4096 (order: 5, 147456 bytes) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 2, 20480 bytes) UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. CPU PMU: Failed to parse <no-node>/interrupt-affinity[0] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available futex hash table entries: 256 (order: 2, 16384 bytes) audit: initializing netlink subsys (disabled) audit: type=2000 audit(0.480:1): initialized VFS: Disk quotas dquot_6.6.0 VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) NFS: Registering the id_resolver key type Key type id_resolver registered Key type id_legacy registered jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568 Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled omap_uart 44e09000.serial: no wakeirq for uart0 of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@44e09000[0]' 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 154, base_baud = 3000000) is a OMAP UART0 console [ttyO0] enabled [drm] Initialized drm 1.1.0 20060810 [drm:tilcdc_drm_init] init slave hdmi: could not get i2c [drm:tda998x_init] brd: module loaded loop: module loaded mtdoops: mtd device (mtddev=name/number) must be supplied mousedev: PS/2 mouse device common for all mice i2c /dev entries driver Driver 'mmcblk' needs updating - please use bus_type methods omap_hsmmc 48060000.mmc: GPIO lookup for consumer cd omap_hsmmc 48060000.mmc: using device tree for GPIO lookup of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/mmc@48060000[0]' - status (0) omap_hsmmc 48060000.mmc: Got CD GPIO omap_hsmmc 48060000.mmc: GPIO lookup for consumer wp omap_hsmmc 48060000.mmc: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@48060000[0]' of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@48060000[0]' omap_hsmmc 48060000.mmc: using lookup tables for GPIO lookup omap_hsmmc 48060000.mmc: lookup for GPIO wp failed omap_hsmmc 481d8000.mmc: GPIO lookup for consumer cd omap_hsmmc 481d8000.mmc: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/mmc@481d8000[0]' of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/mmc@481d8000[0]' omap_hsmmc 481d8000.mmc: using lookup tables for GPIO lookup omap_hsmmc 481d8000.mmc: lookup for GPIO cd failed omap_hsmmc 481d8000.mmc: GPIO lookup for consumer wp omap_hsmmc 481d8000.mmc: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@481d8000[0]' of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@481d8000[0]' omap_hsmmc 481d8000.mmc: using lookup tables for GPIO lookup omap_hsmmc 481d8000.mmc: lookup for GPIO wp failed mmc0: host does not support reading read-only switch, assuming write-enable ledtrig-cpu: registered to indicate activity on CPUs oprofile: using arm/armv7 Initializing XFRM netlink socket NET: Registered protocol family 17 NET: Registered protocol family 15 Key type dns_resolver registered omap_voltage_late_init: Voltage driver support not added sr_dev_init: No voltage domain specified for smartreflex0. Cannot initialize sr_dev_init: No voltage domain specified for smartreflex1. Cannot initialize ThumbEE CPU extension supported. Registering SWP/SWPB emulation handler SmartReflex Class3 initialized mmc0: new high speed SDHC card at address 1234 mmcblk0: mmc0:1234 SA04G 3.63 GiB mmcblk0: p1 p2 tps65217 0-0024: TPS65217 ID 0xe version 1.2 omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz [drm:drm_platform_init] [drm:drm_get_platform_dev] mmc1: MAN_BKOPS_EN bit is not set [drm:drm_minor_register] [drm:drm_minor_register] new minor registered 64 [drm:drm_minor_register] [drm:drm_minor_register] [drm:drm_minor_register] new minor registered 0 [drm:tilcdc_load] Maximum Bandwidth Value 78643200 [drm:tilcdc_load] Maximum Horizontal Pixel Width Value 2048pixels [drm:tilcdc_load] Maximum Pixel Clock Value 126000KHz [drm:modeset_init] loading module: slave mmc1: new high speed MMC card at address 0001 mmcblk1: mmc1:0001 MMC04G 3.60 GiB mmcblk1boot0: mmc1:0001 MMC04G partition 1 2.00 MiB mmcblk1boot1: mmc1:0001 MMC04G partition 2 2.00 MiB mmcblk1: p1 p2 tda998x 0-0070: found TDA19988 [drm:drm_connector_get_cmdline_mode] cmdline mode for connector HDMI-A-1 1280x720@60Hz [drm:drm_sysfs_connector_add] adding "HDMI-A-1" to sysfs [drm:drm_sysfs_hotplug_event] generating hotplug event [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [drm] No driver support for vblank timestamp query. [drm:drm_irq_install] irq=171 [drm:tilcdc_load] slave: preferred_bpp: 16 [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] status updated from 3 to 1 [drm:tilcdc_crtc_mode_valid] Processing mode 1440x900@60 with pixel clock 106500 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@50 with pixel clock 74250 [drm:tilcdc_crtc_mode_valid] Processing mode 720x576@50 with pixel clock 27000 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74250 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x1024@60 with pixel clock 108000 [drm:tilcdc_crtc_mode_valid] Processing mode 800x600@60 with pixel clock 40000 [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25200 [drm:tilcdc_crtc_mode_valid] Processing mode 1024x768@60 with pixel clock 65000 [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25175 [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27000 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74176 [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27027 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74440 [drm:drm_mode_debug_printmodeline] Modeline 23:"1920x1080i" 60 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 24:"1920x1080i" 50 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 32:"720x480i" 0 13500 720 739 801 858 480 488 494 525 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 33:"720x576i" 0 13500 720 732 795 864 576 580 586 625 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x576i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 41:"1920x1080i" 60 74176 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 44:"720x480i" 60 13513 720 739 801 858 480 488 494 525 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] probed modes : [drm:drm_mode_debug_printmodeline] Modeline 22:"1440x900" 60 106500 1440 1520 1672 1904 900 903 909 934 0x48 0x6 [drm:drm_mode_debug_printmodeline] Modeline 28:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 49:"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6 [drm:drm_mode_debug_printmodeline] Modeline 27:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 42:"1280x720" 60 74176 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 25:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 31:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 29:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 26:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 46:"720x480" 60 27027 720 736 798 858 480 489 495 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 35:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 30:"640x480" 60 25200 640 656 752 800 480 490 492 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 34:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa [drm:drm_setup_crtcs] [drm:drm_enable_connectors] connector 20 enabled? yes [drm:drm_target_preferred] looking for cmdline mode on connector 20 [drm:drm_target_preferred] found mode 1280x720 [drm:drm_setup_crtcs] picking CRTCs for 2048x2048 config [drm:drm_setup_crtcs] desired mode 1280x720 set on crtc 18 (0,0) [drm:drm_fbdev_cma_create] surface width(1280), height(720) and bpp(16) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] crtc has no fb, full mode set [drm:drm_crtc_helper_set_config] modes are different, full mode set [drm:drm_mode_debug_printmodeline] Modeline 0:"" 0 0 0 0 0 0 0 0 0 0 0x0 0x0 [drm:drm_mode_debug_printmodeline] Modeline 23:"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6 [drm:drm_crtc_helper_set_config] encoder changed, full mode switch [drm:drm_crtc_helper_set_config] crtc changed, full mode switch [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_crtc_helper_set_config] attempting to set mode from userspace [drm:drm_mode_debug_printmodeline] Modeline 23:"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6 [drm:drm_crtc_helper_set_mode] [CRTC:18] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74440 [drm:tilcdc_crtc_mode_set] 1280x720, hbp=192, hfp=56, hsw=136, vbp=22, vfp=1, vsw=3 [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (1) [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (2) [drm:tilcdc_crtc_update_clk] lcd_clk=148878048, mode clock=74440, div=1 [drm:tilcdc_crtc_update_clk] fck=148878048, dpll_disp_ck=148878048 [drm:drm_crtc_helper_set_mode] [ENCODER:19:TMDS-19] set [MODE:23:1280x720] [drm:drm_calc_timestamping_constants] crtc 18: hwmode: htotal 1664, vtotal 746, vdisplay 720 [drm:drm_calc_timestamping_constants] crtc 18: clock 74440 kHz framedur 16675765 linedur 22353, pixeldur 13 [drm:drm_crtc_helper_set_config] Setting connector DPMS state to on [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] set DPMS on [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (3) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) Console: switching to colour frame buffer device 160x45 [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) tilcdc 4830e000.lcdc: fb0: frame buffer device tilcdc 4830e000.lcdc: registered panic notifier [drm] Initialized tilcdc 1.0.0 20121205 on minor 0 davinci_mdio 4a101000.mdio: davinci mdio revision 1.6 davinci_mdio 4a101000.mdio: detected phy mask fffffffe libphy: 4a101000.mdio: probed davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720 cpsw 4a100000.ethernet: Detected MACID = 78:a5:04:c8:db:ba hctosys: unable to open rtc device (rtc0) sr_init: No PMIC hook to init smartreflex sr_init: platform driver register failed for SR net eth0: initializing cpsw version 1.12 (0) net eth0: phy found : id is : 0x7c0f1 libphy: PHY 4a101000.mdio:01 not found net eth0: phy 4a101000.mdio:01 not found on slave 1 cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off Sending DHCP requests ., OK IP-Config: Got DHCP answer from 10.1.14.1, my address is 10.1.14.102 IP-Config: Complete: device=eth0, hwaddr=78:a5:04:c8:db:ba, ipaddr=10.1.14.102, mask=255.255.255.0, gw=10.1.14.1 host=10.1.14.102, domain=, nis-domain=(none) bootserver=0.0.0.0, rootserver=10.1.14.92, rootpath=, mtu=1492 nameserver0=10.1.14.1 VFS: Mounted root (nfs filesystem) on device 0:16. devtmpfs: mounted Freeing unused kernel memory: 444K (c0899000 - c0908000) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) udevd[76]: starting version 182 of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@2[0]' - status (0) of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@3[0]' - status (0) of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@4[0]' - status (0) of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@5[0]' - status (0) random: nonblocking pool is initialized omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec omap_rtc 44e3e000.rtc: already running omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0 am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup am335x-phy-driver 47401300.usb-phy: lookup for GPIO reset failed am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup am335x-phy-driver 47401300.usb-phy: lookup for GPIO vbus-detect failed 47401300.usb-phy supply vcc not found, using dummy regulator am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer reset am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup am335x-phy-driver 47401b00.usb-phy: lookup for GPIO reset failed am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer vbus-detect am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup am335x-phy-driver 47401b00.usb-phy: lookup for GPIO vbus-detect failed 47401b00.usb-phy supply vcc not found, using dummy regulator omap_rng 48310000.rng: OMAP Random Number Generator ver. 20 [drm:drm_sysfs_hotplug_event] generating hotplug event [drm:drm_fb_helper_hotplug_event] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74440 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74250 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74176 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@50 with pixel clock 74250 [drm:tilcdc_crtc_mode_valid] Processing mode 800x600@60 with pixel clock 40000 [drm:tilcdc_crtc_mode_valid] Processing mode 720x576@50 with pixel clock 27000 [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27027 [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27000 [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25200 [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25175 [drm:drm_mode_debug_printmodeline] Modeline 22:"1440x900" 60 106500 1440 1520 1672 1904 900 903 909 934 0x48 0x6 [drm:drm_mode_prune_invalid] Not using 1440x900 mode: VIRTUAL_X [drm:drm_mode_debug_printmodeline] Modeline 28:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5 [drm:drm_mode_prune_invalid] Not using 1280x1024 mode: VIRTUAL_Y [drm:drm_mode_debug_printmodeline] Modeline 31:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [drm:drm_mode_prune_invalid] Not using 1024x768 mode: VIRTUAL_Y [drm:drm_mode_debug_printmodeline] Modeline 33:"1920x1080i" 60 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [drm:drm_mode_debug_printmodeline] Modeline 36:"1920x1080i" 50 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [drm:drm_mode_debug_printmodeline] Modeline 45:"720x480i" 0 13500 720 739 801 858 480 488 494 525 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 47:"720x576i" 0 13500 720 732 795 864 576 580 586 625 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x576i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 56:"1920x1080i" 60 74176 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [drm:drm_mode_debug_printmodeline] Modeline 59:"720x480i" 60 13513 720 739 801 858 480 488 494 525 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] probed modes : [drm:drm_mode_debug_printmodeline] Modeline 49:"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6 [drm:drm_mode_debug_printmodeline] Modeline 27:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 42:"1280x720" 60 74176 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 25:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 29:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 26:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 46:"720x480" 60 27027 720 736 798 858 480 489 495 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 35:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 30:"640x480" 60 25200 640 656 752 800 480 490 492 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 34:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa [drm:drm_setup_crtcs] [drm:drm_enable_connectors] connector 20 enabled? yes [drm:drm_target_preferred] looking for cmdline mode on connector 20 [drm:drm_target_preferred] found mode 1280x720 [drm:drm_setup_crtcs] picking CRTCs for 2048x2048 config [drm:drm_setup_crtcs] desired mode 1280x720 set on crtc 18 (0,0) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) FAT-fs (mmcblk0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1 usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: MUSB HDRC host driver usb usb1: Manufacturer: Linux 4.0.0-next-20150415-00001-g47d4e2d-dirty musb-hcd usb usb1: SerialNumber: musb-hdrc.1.auto FAT-fs (mmcblk0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected FAT-fs (mmcblk1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! usb 1-1: new low-speed USB device number 2 using musb-hdrc usb 1-1: New USB device found, idVendor=046a, idProduct=0011 usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 usbcore: registered new interface driver usbhid usbhid: USB HID core driver usbcore: registered new interface driver usbkbd input: HID 046a:0011 as /devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb1/1-1/1-1:1.0/0003:046A:0011.0001/input/input0 hid-generic 0003:046A:0011.0001: input: USB HID v1.11 Keyboard [HID 046a:0011] on usb-musb-hdrc.1.auto-1/input0 EXT4-fs (mmcblk1p2): Unrecognized mount option "iocharset=utf8" or missing value EXT4-fs (mmcblk0p2): Unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1boot1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT3-fs (mmcblk1p2): error: unrecognized mount option "iocharset=utf8" or missing value EXT3-fs (mmcblk0p2): error: unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1boot0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk0p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk0p1): IO charset utf8 not found FAT-fs (mmcblk1p1): IO charset utf8 not found FAT-fs (mmcblk1boot1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT3-fs (mmcblk1p2): error: unrecognized mount option "iocharset=utf8" or missing value EXT3-fs (mmcblk0p2): error: unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT4-fs (mmcblk1p2): Unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1boot0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT4-fs (mmcblk0p2): Unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk0p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1p1): IO charset utf8 not found FAT-fs (mmcblk0p1): IO charset utf8 not found EXT4-fs (mmcblk1p2): recovery complete EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null) EXT4-fs (mmcblk0p2): recovery complete EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. NET: Registered protocol family 10 Bluetooth: Core ver 2.20 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [-- Attachment #3: with-revert --] [-- Type: text/plain, Size: 32343 bytes --] Booting Linux on physical CPU 0x0 Initializing cgroup subsys cpuset Initializing cgroup subsys cpu Initializing cgroup subsys cpuacct Linux version 4.0.0-next-20150415-00002-g2c43ac4-dirty (rdostal@rdostal-desktop) (gcc version 4.7.2 (GCC) ) #41 SMP Sun Apr 19 20:50:50 CEST 2015 CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine model: TI AM335x BeagleBone Black earlycon: no match for ttyO0,115200n8 cma: Reserved 16 MiB at 0x9e000000 Memory policy: Data cache writeback On node 0 totalpages: 130816 free_area_init_node: node 0, pgdat c09bbe40, node_mem_map dfa71000 Normal zone: 1152 pages used for memmap Normal zone: 0 pages reserved Normal zone: 130816 pages, LIFO batch:31 CPU: All CPU(s) started in SVC mode. AM335X ES2.1 (sgx neon ) PERCPU: Embedded 13 pages/cpu @dfa19000 s23040 r8192 d22016 u53248 pcpu-alloc: s23040 r8192 d22016 u53248 alloc=13*4096 pcpu-alloc: [0] 0 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 129664 Kernel command line: console=ttyO0,115200n8 video=HDMI-A-1:1280x720@60 consoleblank=0 debug drm.debug=0xf root=/dev/nfs nfsroot=10.1.14.92:/srv/nfs/bone,nolock rw ip=dhcp PID hash table entries: 2048 (order: 1, 8192 bytes) Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 483232K/523264K available (6467K kernel code, 745K rwdata, 2304K rodata, 444K init, 8221K bss, 23648K reserved, 16384K cma-reserved, 0K highmem) Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xe0800000 - 0xff000000 ( 488 MB) lowmem : 0xc0000000 - 0xe0000000 ( 512 MB) pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) modules : 0xbf000000 - 0xbfe00000 ( 14 MB) .text : 0xc0008000 - 0xc0898f9c (8772 kB) .init : 0xc0899000 - 0xc0908000 ( 444 kB) .data : 0xc0908000 - 0xc09c2650 ( 746 kB) .bss : 0xc09c5000 - 0xc11cc710 (8222 kB) Running RCU self tests Hierarchical RCU implementation. RCU lockdep checking is enabled. Additional per-CPU info printed with stalls. RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1. RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 NR_IRQS:16 nr_irqs:16 16 IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts OMAP clockevent source: timer2 at 24000000 Hz sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns OMAP clocksource: timer1 at 24000000 Hz Console: colour dummy device 80x30 Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar ... MAX_LOCKDEP_SUBCLASSES: 8 ... MAX_LOCK_DEPTH: 48 ... MAX_LOCKDEP_KEYS: 8191 ... CLASSHASH_SIZE: 4096 ... MAX_LOCKDEP_ENTRIES: 32768 ... MAX_LOCKDEP_CHAINS: 65536 ... CHAINHASH_SIZE: 32768 memory used by lock dependency info: 5167 kB per task-struct memory footprint: 1152 bytes Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736) pid_max: default: 32768 minimum: 301 Security Framework initialized Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) Initializing cgroup subsys blkio Initializing cgroup subsys memory Initializing cgroup subsys devices Initializing cgroup subsys freezer Initializing cgroup subsys perf_event CPU: Testing write buffer coherency: ok CPU0: thread -1, cpu 0, socket -1, mpidr 0 Setting up static identity map for 0x80008280 - 0x800082f0 Brought up 1 CPUs SMP: Total of 1 processors activated (996.14 BogoMIPS). CPU: All CPU(s) started in SVC mode. devtmpfs: initialized VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 omap_hwmod: tptc0 using broken dt data from edma omap_hwmod: tptc1 using broken dt data from edma omap_hwmod: tptc2 using broken dt data from edma omap_hwmod: debugss: _wait_target_disable failed clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns pinctrl core: initialized pinctrl subsystem NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations cpuidle: using governor ladder cpuidle: using governor menu gpiochip_add: registered GPIOs 0 to 31 on device: gpio OMAP GPIO hardware version 0.1 gpiochip_add: registered GPIOs 32 to 63 on device: gpio gpiochip_add: registered GPIOs 64 to 95 on device: gpio gpiochip_add: registered GPIOs 96 to 127 on device: gpio No ATAGs? hw-breakpoint: debug architecture 0x4 unsupported. edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator@0[0]' SCSI subsystem initialized libata version 3.00 loaded. omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe Switched to clocksource timer1 NET: Registered protocol family 2 TCP established hash table entries: 4096 (order: 2, 16384 bytes) TCP bind hash table entries: 4096 (order: 5, 147456 bytes) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 2, 20480 bytes) UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. CPU PMU: Failed to parse <no-node>/interrupt-affinity[0] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available futex hash table entries: 256 (order: 2, 16384 bytes) audit: initializing netlink subsys (disabled) audit: type=2000 audit(0.480:1): initialized VFS: Disk quotas dquot_6.6.0 VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) NFS: Registering the id_resolver key type Key type id_resolver registered Key type id_legacy registered jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568 Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled omap_uart 44e09000.serial: no wakeirq for uart0 of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@44e09000[0]' 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 154, base_baud = 3000000) is a OMAP UART0 console [ttyO0] enabled [drm] Initialized drm 1.1.0 20060810 [drm:tilcdc_drm_init] init slave hdmi: could not get i2c [drm:tda998x_init] brd: module loaded loop: module loaded mtdoops: mtd device (mtddev=name/number) must be supplied mousedev: PS/2 mouse device common for all mice i2c /dev entries driver Driver 'mmcblk' needs updating - please use bus_type methods omap_hsmmc 48060000.mmc: GPIO lookup for consumer cd omap_hsmmc 48060000.mmc: using device tree for GPIO lookup of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/mmc@48060000[0]' - status (0) omap_hsmmc 48060000.mmc: Got CD GPIO omap_hsmmc 48060000.mmc: GPIO lookup for consumer wp omap_hsmmc 48060000.mmc: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@48060000[0]' of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@48060000[0]' omap_hsmmc 48060000.mmc: using lookup tables for GPIO lookup omap_hsmmc 48060000.mmc: lookup for GPIO wp failed omap_hsmmc 481d8000.mmc: GPIO lookup for consumer cd omap_hsmmc 481d8000.mmc: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/mmc@481d8000[0]' of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/mmc@481d8000[0]' omap_hsmmc 481d8000.mmc: using lookup tables for GPIO lookup omap_hsmmc 481d8000.mmc: lookup for GPIO cd failed omap_hsmmc 481d8000.mmc: GPIO lookup for consumer wp omap_hsmmc 481d8000.mmc: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@481d8000[0]' of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@481d8000[0]' omap_hsmmc 481d8000.mmc: using lookup tables for GPIO lookup omap_hsmmc 481d8000.mmc: lookup for GPIO wp failed mmc0: host does not support reading read-only switch, assuming write-enable ledtrig-cpu: registered to indicate activity on CPUs oprofile: using arm/armv7 Initializing XFRM netlink socket NET: Registered protocol family 17 NET: Registered protocol family 15 Key type dns_resolver registered omap_voltage_late_init: Voltage driver support not added sr_dev_init: No voltage domain specified for smartreflex0. Cannot initialize sr_dev_init: No voltage domain specified for smartreflex1. Cannot initialize ThumbEE CPU extension supported. Registering SWP/SWPB emulation handler SmartReflex Class3 initialized mmc0: new high speed SDHC card at address 1234 mmcblk0: mmc0:1234 SA04G 3.63 GiB mmcblk0: p1 p2 tps65217 0-0024: TPS65217 ID 0xe version 1.2 omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz [drm:drm_platform_init] [drm:drm_get_platform_dev] mmc1: MAN_BKOPS_EN bit is not set [drm:drm_minor_register] [drm:drm_minor_register] new minor registered 64 [drm:drm_minor_register] [drm:drm_minor_register] [drm:drm_minor_register] new minor registered 0 [drm:tilcdc_load] Maximum Bandwidth Value 78643200 [drm:tilcdc_load] Maximum Horizontal Pixel Width Value 2048pixels [drm:tilcdc_load] Maximum Pixel Clock Value 126000KHz [drm:modeset_init] loading module: slave mmc1: new high speed MMC card at address 0001 mmcblk1: mmc1:0001 MMC04G 3.60 GiB mmcblk1boot0: mmc1:0001 MMC04G partition 1 2.00 MiB mmcblk1boot1: mmc1:0001 MMC04G partition 2 2.00 MiB mmcblk1: p1 p2 tda998x 0-0070: found TDA19988 [drm:drm_sysfs_connector_add] adding "HDMI-A-1" to sysfs [drm:drm_sysfs_hotplug_event] generating hotplug event [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [drm] No driver support for vblank timestamp query. [drm:drm_irq_install] irq=171 [drm:tilcdc_load] slave: preferred_bpp: 16 [drm:drm_fb_helper_parse_command_line] cmdline mode for connector HDMI-A-1 1280x720@60Hz [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] status updated from 3 to 1 [drm:tilcdc_crtc_mode_valid] Processing mode 1440x900@60 with pixel clock 106500 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@50 with pixel clock 74250 [drm:tilcdc_crtc_mode_valid] Processing mode 720x576@50 with pixel clock 27000 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74250 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x1024@60 with pixel clock 108000 [drm:tilcdc_crtc_mode_valid] Processing mode 800x600@60 with pixel clock 40000 [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25200 [drm:tilcdc_crtc_mode_valid] Processing mode 1024x768@60 with pixel clock 65000 [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25175 [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27000 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74176 [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27027 [drm:drm_mode_debug_printmodeline] Modeline 23:"1920x1080i" 60 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 24:"1920x1080i" 50 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 32:"720x480i" 0 13500 720 739 801 858 480 488 494 525 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 33:"720x576i" 0 13500 720 732 795 864 576 580 586 625 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x576i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 41:"1920x1080i" 60 74176 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 44:"720x480i" 60 13513 720 739 801 858 480 488 494 525 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] probed modes : [drm:drm_mode_debug_printmodeline] Modeline 22:"1440x900" 60 106500 1440 1520 1672 1904 900 903 909 934 0x48 0x6 [drm:drm_mode_debug_printmodeline] Modeline 28:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 27:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 42:"1280x720" 60 74176 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 25:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 31:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 29:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 26:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 46:"720x480" 60 27027 720 736 798 858 480 489 495 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 35:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 30:"640x480" 60 25200 640 656 752 800 480 490 492 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 34:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa [drm:drm_setup_crtcs] [drm:drm_enable_connectors] connector 20 enabled? yes [drm:drm_target_preferred] looking for cmdline mode on connector 20 [drm:drm_target_preferred] found mode 1280x720 [drm:drm_setup_crtcs] picking CRTCs for 2048x2048 config [drm:drm_setup_crtcs] desired mode 1280x720 set on crtc 18 (0,0) [drm:drm_fbdev_cma_create] surface width(1280), height(720) and bpp(16) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] crtc has no fb, full mode set [drm:drm_crtc_helper_set_config] modes are different, full mode set [drm:drm_mode_debug_printmodeline] Modeline 0:"" 0 0 0 0 0 0 0 0 0 0 0x0 0x0 [drm:drm_mode_debug_printmodeline] Modeline 23:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_crtc_helper_set_config] encoder changed, full mode switch [drm:drm_crtc_helper_set_config] crtc changed, full mode switch [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_crtc_helper_set_config] attempting to set mode from userspace [drm:drm_mode_debug_printmodeline] Modeline 23:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_crtc_helper_set_mode] [CRTC:18] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74250 [drm:tilcdc_crtc_mode_set] 1280x720, hbp=220, hfp=110, hsw=40, vbp=20, vfp=5, vsw=5 [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (1) [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (2) [drm:tilcdc_crtc_update_clk] lcd_clk=148500000, mode clock=74250, div=2 [drm:tilcdc_crtc_update_clk] fck=148500000, dpll_disp_ck=148500000 [drm:drm_crtc_helper_set_mode] [ENCODER:19:TMDS-19] set [MODE:23:1280x720] [drm:drm_calc_timestamping_constants] crtc 18: hwmode: htotal 1650, vtotal 750, vdisplay 720 [drm:drm_calc_timestamping_constants] crtc 18: clock 74250 kHz framedur 16666666 linedur 22222, pixeldur 13 [drm:drm_crtc_helper_set_config] Setting connector DPMS state to on [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] set DPMS on [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (3) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) Console: switching to colour frame buffer device 160x45 [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) tilcdc 4830e000.lcdc: fb0: frame buffer device tilcdc 4830e000.lcdc: registered panic notifier [drm] Initialized tilcdc 1.0.0 20121205 on minor 0 davinci_mdio 4a101000.mdio: davinci mdio revision 1.6 davinci_mdio 4a101000.mdio: detected phy mask fffffffe libphy: 4a101000.mdio: probed davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720 cpsw 4a100000.ethernet: Detected MACID = 78:a5:04:c8:db:ba hctosys: unable to open rtc device (rtc0) sr_init: No PMIC hook to init smartreflex sr_init: platform driver register failed for SR net eth0: initializing cpsw version 1.12 (0) net eth0: phy found : id is : 0x7c0f1 libphy: PHY 4a101000.mdio:01 not found net eth0: phy 4a101000.mdio:01 not found on slave 1 cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off Sending DHCP requests ., OK IP-Config: Got DHCP answer from 10.1.14.1, my address is 10.1.14.102 IP-Config: Complete: device=eth0, hwaddr=78:a5:04:c8:db:ba, ipaddr=10.1.14.102, mask=255.255.255.0, gw=10.1.14.1 host=10.1.14.102, domain=, nis-domain=(none) bootserver=0.0.0.0, rootserver=10.1.14.92, rootpath=, mtu=1492 nameserver0=10.1.14.1 VFS: Mounted root (nfs filesystem) on device 0:16. devtmpfs: mounted Freeing unused kernel memory: 444K (c0899000 - c0908000) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) udevd[76]: starting version 182 of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@2[0]' - status (0) of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@3[0]' - status (0) of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@4[0]' - status (0) of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@5[0]' - status (0) omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec random: nonblocking pool is initialized omap_rtc 44e3e000.rtc: already running omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0 am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup am335x-phy-driver 47401300.usb-phy: lookup for GPIO reset failed am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup am335x-phy-driver 47401300.usb-phy: lookup for GPIO vbus-detect failed 47401300.usb-phy supply vcc not found, using dummy regulator am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer reset am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup am335x-phy-driver 47401b00.usb-phy: lookup for GPIO reset failed am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer vbus-detect am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup am335x-phy-driver 47401b00.usb-phy: lookup for GPIO vbus-detect failed 47401b00.usb-phy supply vcc not found, using dummy regulator omap_rng 48310000.rng: OMAP Random Number Generator ver. 20 [drm:drm_sysfs_hotplug_event] generating hotplug event [drm:drm_fb_helper_hotplug_event] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74250 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74176 [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@50 with pixel clock 74250 [drm:tilcdc_crtc_mode_valid] Processing mode 800x600@60 with pixel clock 40000 [drm:tilcdc_crtc_mode_valid] Processing mode 720x576@50 with pixel clock 27000 [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27027 [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27000 [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25200 [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25175 [drm:drm_mode_debug_printmodeline] Modeline 22:"1440x900" 60 106500 1440 1520 1672 1904 900 903 909 934 0x48 0x6 [drm:drm_mode_prune_invalid] Not using 1440x900 mode: VIRTUAL_X [drm:drm_mode_debug_printmodeline] Modeline 28:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5 [drm:drm_mode_prune_invalid] Not using 1280x1024 mode: VIRTUAL_Y [drm:drm_mode_debug_printmodeline] Modeline 31:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [drm:drm_mode_prune_invalid] Not using 1024x768 mode: VIRTUAL_Y [drm:drm_mode_debug_printmodeline] Modeline 33:"1920x1080i" 60 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [drm:drm_mode_debug_printmodeline] Modeline 36:"1920x1080i" 50 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [drm:drm_mode_debug_printmodeline] Modeline 45:"720x480i" 0 13500 720 739 801 858 480 488 494 525 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 47:"720x576i" 0 13500 720 732 795 864 576 580 586 625 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x576i mode: NO_INTERLACE [drm:drm_mode_debug_printmodeline] Modeline 55:"1920x1080i" 60 74176 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [drm:drm_mode_debug_printmodeline] Modeline 58:"720x480i" 60 13513 720 739 801 858 480 488 494 525 0x40 0x101a [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] probed modes : [drm:drm_mode_debug_printmodeline] Modeline 27:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 42:"1280x720" 60 74176 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 25:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 29:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [drm:drm_mode_debug_printmodeline] Modeline 26:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 46:"720x480" 60 27027 720 736 798 858 480 489 495 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 35:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 30:"640x480" 60 25200 640 656 752 800 480 490 492 525 0x40 0xa [drm:drm_mode_debug_printmodeline] Modeline 34:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa [drm:drm_setup_crtcs] [drm:drm_enable_connectors] connector 20 enabled? yes [drm:drm_target_preferred] looking for cmdline mode on connector 20 [drm:drm_target_preferred] found mode 1280x720 [drm:drm_setup_crtcs] picking CRTCs for 2048x2048 config [drm:drm_setup_crtcs] desired mode 1280x720 set on crtc 18 (0,0) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) FAT-fs (mmcblk0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1 usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: MUSB HDRC host driver usb usb1: Manufacturer: Linux 4.0.0-next-20150415-00002-g2c43ac4-dirty musb-hcd usb usb1: SerialNumber: musb-hdrc.1.auto hub 1-0:1.0: USB hub found FAT-fs (mmcblk0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! hub 1-0:1.0: 1 port detected FAT-fs (mmcblk1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! usb 1-1: new low-speed USB device number 2 using musb-hdrc usb 1-1: New USB device found, idVendor=046a, idProduct=0011 usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 usbcore: registered new interface driver usbhid usbhid: USB HID core driver usbcore: registered new interface driver usbkbd input: HID 046a:0011 as /devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb1/1-1/1-1:1.0/0003:046A:0011.0001/input/input0 hid-generic 0003:046A:0011.0001: input: USB HID v1.11 Keyboard [HID 046a:0011] on usb-musb-hdrc.1.auto-1/input0 FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT4-fs (mmcblk1p2): Unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT4-fs (mmcblk0p2): Unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1boot0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT3-fs (mmcblk1p2): error: unrecognized mount option "iocharset=utf8" or missing value EXT3-fs (mmcblk0p2): error: unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1boot1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk0p1): IO charset utf8 not found FAT-fs (mmcblk1p1): IO charset utf8 not found FAT-fs (mmcblk0p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1boot0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT3-fs (mmcblk1p2): error: unrecognized mount option "iocharset=utf8" or missing value EXT3-fs (mmcblk0p2): error: unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT4-fs (mmcblk1p2): Unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1boot1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! EXT4-fs (mmcblk0p2): Unrecognized mount option "iocharset=utf8" or missing value FAT-fs (mmcblk1p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk0p1): IO charset utf8 not found FAT-fs (mmcblk0p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! FAT-fs (mmcblk1p1): IO charset utf8 not found EXT4-fs (mmcblk1p2): recovery complete EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null) EXT4-fs (mmcblk0p2): recovery complete EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. NET: Registered protocol family 10 Bluetooth: Core ver 2.20 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [drm:drm_crtc_helper_set_config] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 9:36 ` Radek Dostál @ 2015-04-20 9:46 ` Chris Wilson 2015-04-20 9:58 ` Chris Wilson 0 siblings, 1 reply; 54+ messages in thread From: Chris Wilson @ 2015-04-20 9:46 UTC (permalink / raw) To: Radek Dostál; +Cc: airlied, dri-devel, linux-kernel On Mon, Apr 20, 2015 at 11:36:04AM +0200, Radek Dostál wrote: > Hi Chris, > > On 04/20/2015 11:09 AM, Chris Wilson wrote: > > The EDID modes should be earlier in the list, and so higher priority > > than the cmdline mode. The only instance I see that breaking down is if > > the mode gets created by drm_pick_cmdline_mode, i.e. > > indeed at the beginning the command line mode is added to the end of the > list, but later on it seems to me that all modes are reordered based on > the resolution and clock and than mode generated by > drm_helper_probe_add_cmdline_mode gets upper in the list as it has > higher clock value. Please see attached output of dmesg. Ah thanks, drm_mode_sort()! diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 213b11e..9c8357f 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -1127,6 +1127,7 @@ static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head ((a->type & DRM_MODE_TYPE_PREFERRED) != 0); if (diff) return diff; + diff = b->hdisplay * b->vdisplay - a->hdisplay * a->vdisplay; if (diff) return diff; @@ -1136,7 +1137,16 @@ static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head return diff; diff = b->clock - a->clock; - return diff; + if (diff) + return diff; + + /* sort user-defined modes after reported modes of same resolution */ + diff = ((a->type & DRM_MODE_TYPE_USERDEF) != 0) - + ((b->type & DRM_MODE_TYPE_USERDEF) != 0); + if (diff) + return diff; + + return 0; } Perhaps? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 9:46 ` Chris Wilson @ 2015-04-20 9:58 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 9:58 UTC (permalink / raw) To: Radek Dostál, airlied, dri-devel, linux-kernel On Mon, Apr 20, 2015 at 10:46:08AM +0100, Chris Wilson wrote: > On Mon, Apr 20, 2015 at 11:36:04AM +0200, Radek Dostál wrote: > > Hi Chris, > > > > On 04/20/2015 11:09 AM, Chris Wilson wrote: > > > The EDID modes should be earlier in the list, and so higher priority > > > than the cmdline mode. The only instance I see that breaking down is if > > > the mode gets created by drm_pick_cmdline_mode, i.e. > > > > indeed at the beginning the command line mode is added to the end of the > > list, but later on it seems to me that all modes are reordered based on > > the resolution and clock and than mode generated by > > drm_helper_probe_add_cmdline_mode gets upper in the list as it has > > higher clock value. Please see attached output of dmesg. > > Ah thanks, drm_mode_sort()! > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 213b11e..9c8357f 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1127,6 +1127,7 @@ static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head > ((a->type & DRM_MODE_TYPE_PREFERRED) != 0); > if (diff) > return diff; > + > diff = b->hdisplay * b->vdisplay - a->hdisplay * a->vdisplay; > if (diff) > return diff; > @@ -1136,7 +1137,16 @@ static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head > return diff; > > diff = b->clock - a->clock; > - return diff; > + if (diff) > + return diff; > + > + /* sort user-defined modes after reported modes of same resolution */ > + diff = ((a->type & DRM_MODE_TYPE_USERDEF) != 0) - > + ((b->type & DRM_MODE_TYPE_USERDEF) != 0); > + if (diff) > + return diff; Hmm, so that should be before the clock comparison as well to fix your example. Not as neat. The other idea I was considering was not adding the GTF cmdline mode if the probed modes already contain one of a matching resolution. The goal here is to also not present a mode to userspace that is invalid. -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF @ 2015-04-20 9:58 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 9:58 UTC (permalink / raw) To: Radek Dostál, airlied, dri-devel, linux-kernel On Mon, Apr 20, 2015 at 10:46:08AM +0100, Chris Wilson wrote: > On Mon, Apr 20, 2015 at 11:36:04AM +0200, Radek Dostál wrote: > > Hi Chris, > > > > On 04/20/2015 11:09 AM, Chris Wilson wrote: > > > The EDID modes should be earlier in the list, and so higher priority > > > than the cmdline mode. The only instance I see that breaking down is if > > > the mode gets created by drm_pick_cmdline_mode, i.e. > > > > indeed at the beginning the command line mode is added to the end of the > > list, but later on it seems to me that all modes are reordered based on > > the resolution and clock and than mode generated by > > drm_helper_probe_add_cmdline_mode gets upper in the list as it has > > higher clock value. Please see attached output of dmesg. > > Ah thanks, drm_mode_sort()! > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 213b11e..9c8357f 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1127,6 +1127,7 @@ static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head > ((a->type & DRM_MODE_TYPE_PREFERRED) != 0); > if (diff) > return diff; > + > diff = b->hdisplay * b->vdisplay - a->hdisplay * a->vdisplay; > if (diff) > return diff; > @@ -1136,7 +1137,16 @@ static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head > return diff; > > diff = b->clock - a->clock; > - return diff; > + if (diff) > + return diff; > + > + /* sort user-defined modes after reported modes of same resolution */ > + diff = ((a->type & DRM_MODE_TYPE_USERDEF) != 0) - > + ((b->type & DRM_MODE_TYPE_USERDEF) != 0); > + if (diff) > + return diff; Hmm, so that should be before the clock comparison as well to fix your example. Not as neat. The other idea I was considering was not adding the GTF cmdline mode if the probed modes already contain one of a matching resolution. The goal here is to also not present a mode to userspace that is invalid. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 9:58 ` Chris Wilson (?) @ 2015-04-20 10:38 ` Radek Dostál 2015-04-20 10:48 ` Chris Wilson -1 siblings, 1 reply; 54+ messages in thread From: Radek Dostál @ 2015-04-20 10:38 UTC (permalink / raw) To: Chris Wilson, airlied, dri-devel, linux-kernel Hi Chris, On 04/20/2015 11:58 AM, Chris Wilson wrote: > Hmm, so that should be before the clock comparison as well to fix your > example. Not as neat. indeed that is required. > The other idea I was considering was not adding the GTF cmdline mode if > the probed modes already contain one of a matching resolution. The goal > here is to also not present a mode to userspace that is invalid. Unfortunately you can not do that. I already tried. At the time when drm_helper_probe_add_cmdline_mode is called EDID informations are not yet available. Only option would be to remove the GTF cmdline mode, when matching mode is found in EDID. Thanks, Radek ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 10:38 ` Radek Dostál @ 2015-04-20 10:48 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 10:48 UTC (permalink / raw) To: Radek Dostál; +Cc: airlied, dri-devel, linux-kernel On Mon, Apr 20, 2015 at 12:38:25PM +0200, Radek Dostál wrote: > Hi Chris, > > On 04/20/2015 11:58 AM, Chris Wilson wrote: > > Hmm, so that should be before the clock comparison as well to fix your > > example. Not as neat. > > indeed that is required. > > > The other idea I was considering was not adding the GTF cmdline mode if > > the probed modes already contain one of a matching resolution. The goal > > here is to also not present a mode to userspace that is invalid. > > Unfortunately you can not do that. I already tried. At the time when > drm_helper_probe_add_cmdline_mode is called EDID informations are not > yet available. My understanding is that it should be. fb_helper.initial_config does a probe first, and the intel_fb_initial_config() should only keep the active mode. > Only option would be to remove the GTF cmdline mode, when matching mode > is found in EDID. So basically diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 6350387..9212bec 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -79,13 +79,29 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified) { + if (mode->vrefresh != cmdline_mode->refresh) + continue; + } + + return 0; + } + mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; is not sufficient? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF @ 2015-04-20 10:48 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 10:48 UTC (permalink / raw) To: Radek Dostál; +Cc: linux-kernel, dri-devel On Mon, Apr 20, 2015 at 12:38:25PM +0200, Radek Dostál wrote: > Hi Chris, > > On 04/20/2015 11:58 AM, Chris Wilson wrote: > > Hmm, so that should be before the clock comparison as well to fix your > > example. Not as neat. > > indeed that is required. > > > The other idea I was considering was not adding the GTF cmdline mode if > > the probed modes already contain one of a matching resolution. The goal > > here is to also not present a mode to userspace that is invalid. > > Unfortunately you can not do that. I already tried. At the time when > drm_helper_probe_add_cmdline_mode is called EDID informations are not > yet available. My understanding is that it should be. fb_helper.initial_config does a probe first, and the intel_fb_initial_config() should only keep the active mode. > Only option would be to remove the GTF cmdline mode, when matching mode > is found in EDID. So basically diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 6350387..9212bec 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -79,13 +79,29 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified) { + if (mode->vrefresh != cmdline_mode->refresh) + continue; + } + + return 0; + } + mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; is not sufficient? -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 10:48 ` Chris Wilson (?) @ 2015-04-20 10:57 ` Radek Dostál 2015-04-20 11:00 ` Chris Wilson -1 siblings, 1 reply; 54+ messages in thread From: Radek Dostál @ 2015-04-20 10:57 UTC (permalink / raw) To: Chris Wilson, airlied, dri-devel, linux-kernel Hi Chris, On 04/20/2015 12:48 PM, Chris Wilson wrote: >> Unfortunately you can not do that. I already tried. At the time when >> > drm_helper_probe_add_cmdline_mode is called EDID informations are not >> > yet available. > My understanding is that it should be. fb_helper.initial_config does a > probe first, and the intel_fb_initial_config() should only keep the > active mode. uff, sorry I am not sure that I follow here - I am not that familiar with the whole subsystem. >> > Only option would be to remove the GTF cmdline mode, when matching mode >> > is found in EDID. > So basically > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 6350387..9212bec 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -79,13 +79,29 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified) { > + if (mode->vrefresh != cmdline_mode->refresh) > + continue; > + } > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > > > is not sufficient? indeed, this was my first idea how to fix this problem, but at the time drm_helper_probe_add_cmdline_mode is called connector->modes is empty => the GTF cmdline mode is still added. Thanks, Radek ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 10:57 ` Radek Dostál @ 2015-04-20 11:00 ` Chris Wilson 2015-04-20 11:20 ` Radek Dostál 0 siblings, 1 reply; 54+ messages in thread From: Chris Wilson @ 2015-04-20 11:00 UTC (permalink / raw) To: Radek Dostál; +Cc: airlied, dri-devel, linux-kernel On Mon, Apr 20, 2015 at 12:57:33PM +0200, Radek Dostál wrote: > Hi Chris, > > On 04/20/2015 12:48 PM, Chris Wilson wrote: > >> Unfortunately you can not do that. I already tried. At the time when > >> > drm_helper_probe_add_cmdline_mode is called EDID informations are not > >> > yet available. > > My understanding is that it should be. fb_helper.initial_config does a > > probe first, and the intel_fb_initial_config() should only keep the > > active mode. > > uff, sorry I am not sure that I follow here - I am not that familiar > with the whole subsystem. > > >> > Only option would be to remove the GTF cmdline mode, when matching mode > >> > is found in EDID. > > So basically > > > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > > index 6350387..9212bec 100644 > > --- a/drivers/gpu/drm/drm_probe_helper.c > > +++ b/drivers/gpu/drm/drm_probe_helper.c > > @@ -79,13 +79,29 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > > { > > + struct drm_cmdline_mode *cmdline_mode; > > struct drm_display_mode *mode; > > > > - if (!connector->cmdline_mode.specified) > > + cmdline_mode = &connector->cmdline_mode; > > + if (!cmdline_mode->specified) > > return 0; > > > > + /* Only add a GTF mode if we find no matching probed modes */ > > + list_for_each_entry(mode, &connector->modes, head) { > > + if (mode->hdisplay != cmdline_mode->xres || > > + mode->vdisplay != cmdline_mode->yres) > > + continue; > > + > > + if (cmdline_mode->refresh_specified) { > > + if (mode->vrefresh != cmdline_mode->refresh) > > + continue; > > + } > > + > > + return 0; > > + } > > + > > mode = drm_mode_create_from_cmdline_mode(connector->dev, > > - &connector->cmdline_mode); > > + cmdline_mode); > > if (mode == NULL) > > return 0; > > > > > > > > is not sufficient? > > indeed, this was my first idea how to fix this problem, but at the time > drm_helper_probe_add_cmdline_mode is called connector->modes is empty => > the GTF cmdline mode is still added. Can you do a WARN_ON(list_empty(&connector->modes)) here to see at what point we set up the invalid GTF mode? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 11:00 ` Chris Wilson @ 2015-04-20 11:20 ` Radek Dostál 2015-04-20 11:44 ` Chris Wilson 0 siblings, 1 reply; 54+ messages in thread From: Radek Dostál @ 2015-04-20 11:20 UTC (permalink / raw) To: Chris Wilson, airlied, dri-devel, linux-kernel [-- Attachment #1: Type: text/plain, Size: 366 bytes --] Hi Chris, On 04/20/2015 01:00 PM, Chris Wilson wrote: > Can you do a WARN_ON(list_empty(&connector->modes)) here to see at what > point we set up the invalid GTF mode? sure please see attached patch adding WARN_ON and corresponding output of dmesg. As mentioned in the original commit, the mode is indeed added in drm_helper_probe_add_cmdline_mode. Thanks, Radek [-- Attachment #2: dmesg --] [-- Type: text/plain, Size: 42487 bytes --] [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 4.0.0-next-20150415-00001-g47d4e2d-dirty (rdostal@rdostal-desktop) (gcc version 4.7.2 (GCC) ) #51 SMP Mon Apr 20 13:16:00 CEST 2015 [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] Machine model: TI AM335x BeagleBone Black [ 0.000000] earlycon: no match for ttyO0,115200n8 [ 0.000000] cma: Reserved 16 MiB at 0x9e000000 [ 0.000000] Memory policy: Data cache writeback [ 0.000000] On node 0 totalpages: 130816 [ 0.000000] free_area_init_node: node 0, pgdat c09bbe40, node_mem_map dfa71000 [ 0.000000] Normal zone: 1152 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 130816 pages, LIFO batch:31 [ 0.000000] CPU: All CPU(s) started in SVC mode. [ 0.000000] AM335X ES2.1 (sgx neon ) [ 0.000000] PERCPU: Embedded 13 pages/cpu @dfa19000 s23040 r8192 d22016 u53248 [ 0.000000] pcpu-alloc: s23040 r8192 d22016 u53248 alloc=13*4096 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 129664 [ 0.000000] Kernel command line: console=ttyO0,115200n8 video=HDMI-A-1:1280x720@60 consoleblank=0 debug drm.debug=0xf root=/dev/nfs nfsroot=10.1.14.92:/srv/nfs/bone,nolock rw ip=dhcp [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Memory: 483232K/523264K available (6467K kernel code, 745K rwdata, 2304K rodata, 444K init, 8221K bss, 23648K reserved, 16384K cma-reserved, 0K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xe0800000 - 0xff000000 ( 488 MB) [ 0.000000] lowmem : 0xc0000000 - 0xe0000000 ( 512 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc0898f9c (8772 kB) [ 0.000000] .init : 0xc0899000 - 0xc0908000 ( 444 kB) [ 0.000000] .data : 0xc0908000 - 0xc09c2650 ( 746 kB) [ 0.000000] .bss : 0xc09c5000 - 0xc11cc710 (8222 kB) [ 0.000000] Running RCU self tests [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU lockdep checking is enabled. [ 0.000000] Additional per-CPU info printed with stalls. [ 0.000000] RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts [ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz [ 0.000015] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns [ 0.000038] clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000084] OMAP clocksource: timer1 at 24000000 Hz [ 0.000894] Console: colour dummy device 80x30 [ 0.000951] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.000960] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.000968] ... MAX_LOCK_DEPTH: 48 [ 0.000976] ... MAX_LOCKDEP_KEYS: 8191 [ 0.000983] ... CLASSHASH_SIZE: 4096 [ 0.000991] ... MAX_LOCKDEP_ENTRIES: 32768 [ 0.000998] ... MAX_LOCKDEP_CHAINS: 65536 [ 0.001005] ... CHAINHASH_SIZE: 32768 [ 0.001013] memory used by lock dependency info: 5167 kB [ 0.001021] per task-struct memory footprint: 1152 bytes [ 0.001048] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736) [ 0.078839] pid_max: default: 32768 minimum: 301 [ 0.079202] Security Framework initialized [ 0.079370] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.079386] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.082365] Initializing cgroup subsys blkio [ 0.082410] Initializing cgroup subsys memory [ 0.082503] Initializing cgroup subsys devices [ 0.082604] Initializing cgroup subsys freezer [ 0.082722] Initializing cgroup subsys perf_event [ 0.082792] CPU: Testing write buffer coherency: ok [ 0.084268] CPU0: thread -1, cpu 0, socket -1, mpidr 0 [ 0.084391] Setting up static identity map for 0x80008280 - 0x800082f0 [ 0.088629] Brought up 1 CPUs [ 0.088654] SMP: Total of 1 processors activated (996.14 BogoMIPS). [ 0.088664] CPU: All CPU(s) started in SVC mode. [ 0.092334] devtmpfs: initialized [ 0.094733] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 [ 0.134712] omap_hwmod: tptc0 using broken dt data from edma [ 0.135150] omap_hwmod: tptc1 using broken dt data from edma [ 0.135569] omap_hwmod: tptc2 using broken dt data from edma [ 0.143887] omap_hwmod: debugss: _wait_target_disable failed [ 0.199347] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.201903] pinctrl core: initialized pinctrl subsystem [ 0.234936] NET: Registered protocol family 16 [ 0.241379] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.243608] cpuidle: using governor ladder [ 0.243637] cpuidle: using governor menu [ 0.251376] gpiochip_add: registered GPIOs 0 to 31 on device: gpio [ 0.252237] OMAP GPIO hardware version 0.1 [ 0.253666] gpiochip_add: registered GPIOs 32 to 63 on device: gpio [ 0.255626] gpiochip_add: registered GPIOs 64 to 95 on device: gpio [ 0.257426] gpiochip_add: registered GPIOs 96 to 127 on device: gpio [ 0.271465] No ATAGs? [ 0.271499] hw-breakpoint: debug architecture 0x4 unsupported. [ 0.314258] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver [ 0.315027] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator@0[0]' [ 0.318489] SCSI subsystem initialized [ 0.319487] libata version 3.00 loaded. [ 0.320600] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe [ 0.324951] Switched to clocksource timer1 [ 0.477269] NET: Registered protocol family 2 [ 0.479273] TCP established hash table entries: 4096 (order: 2, 16384 bytes) [ 0.479464] TCP bind hash table entries: 4096 (order: 5, 147456 bytes) [ 0.480823] TCP: Hash tables configured (established 4096 bind 4096) [ 0.481061] UDP hash table entries: 256 (order: 2, 20480 bytes) [ 0.481255] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) [ 0.482249] NET: Registered protocol family 1 [ 0.483992] RPC: Registered named UNIX socket transport module. [ 0.484015] RPC: Registered udp transport module. [ 0.484025] RPC: Registered tcp transport module. [ 0.484034] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.486220] CPU PMU: Failed to parse <no-node>/interrupt-affinity[0] [ 0.486368] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available [ 0.490786] futex hash table entries: 256 (order: 2, 16384 bytes) [ 0.491106] audit: initializing netlink subsys (disabled) [ 0.491380] audit: type=2000 audit(0.480:1): initialized [ 0.496397] VFS: Disk quotas dquot_6.6.0 [ 0.496552] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.499018] NFS: Registering the id_resolver key type [ 0.499427] Key type id_resolver registered [ 0.499442] Key type id_legacy registered [ 0.499638] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. [ 0.504636] io scheduler noop registered [ 0.504668] io scheduler deadline registered [ 0.504720] io scheduler cfq registered (default) [ 0.506956] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568 [ 0.509371] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.515348] omap_uart 44e09000.serial: no wakeirq for uart0 [ 0.515380] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@44e09000[0]' [ 0.516022] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 154, base_baud = 3000000) is a OMAP UART0 [ 1.310988] console [ttyO0] enabled [ 1.317030] [drm] Initialized drm 1.1.0 20060810 [ 1.321873] [drm:tilcdc_drm_init] init [ 1.326774] slave hdmi: could not get i2c [ 1.331778] [drm:tda998x_init] [ 1.363673] brd: module loaded [ 1.385723] loop: module loaded [ 1.391423] mtdoops: mtd device (mtddev=name/number) must be supplied [ 1.403628] mousedev: PS/2 mouse device common for all mice [ 1.409601] i2c /dev entries driver [ 1.413575] Driver 'mmcblk' needs updating - please use bus_type methods [ 1.421837] omap_hsmmc 48060000.mmc: GPIO lookup for consumer cd [ 1.428212] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup [ 1.435099] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/mmc@48060000[0]' - status (0) [ 1.445503] omap_hsmmc 48060000.mmc: Got CD GPIO [ 1.450335] omap_hsmmc 48060000.mmc: GPIO lookup for consumer wp [ 1.456643] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup [ 1.463465] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@48060000[0]' [ 1.473030] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@48060000[0]' [ 1.482501] omap_hsmmc 48060000.mmc: using lookup tables for GPIO lookup [ 1.489679] omap_hsmmc 48060000.mmc: lookup for GPIO wp failed [ 1.536496] omap_hsmmc 481d8000.mmc: GPIO lookup for consumer cd [ 1.542788] omap_hsmmc 481d8000.mmc: using device tree for GPIO lookup [ 1.549701] of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/mmc@481d8000[0]' [ 1.559270] of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/mmc@481d8000[0]' [ 1.568740] omap_hsmmc 481d8000.mmc: using lookup tables for GPIO lookup [ 1.575766] omap_hsmmc 481d8000.mmc: lookup for GPIO cd failed [ 1.581863] omap_hsmmc 481d8000.mmc: GPIO lookup for consumer wp [ 1.588157] omap_hsmmc 481d8000.mmc: using device tree for GPIO lookup [ 1.594998] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@481d8000[0]' [ 1.604535] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@481d8000[0]' [ 1.614001] omap_hsmmc 481d8000.mmc: using lookup tables for GPIO lookup [ 1.621023] omap_hsmmc 481d8000.mmc: lookup for GPIO wp failed [ 1.662906] mmc0: host does not support reading read-only switch, assuming write-enable [ 1.671917] ledtrig-cpu: registered to indicate activity on CPUs [ 1.679433] oprofile: using arm/armv7 [ 1.684129] Initializing XFRM netlink socket [ 1.688871] NET: Registered protocol family 17 [ 1.693595] NET: Registered protocol family 15 [ 1.698661] Key type dns_resolver registered [ 1.703392] omap_voltage_late_init: Voltage driver support not added [ 1.710107] sr_dev_init: No voltage domain specified for smartreflex0. Cannot initialize [ 1.718585] sr_dev_init: No voltage domain specified for smartreflex1. Cannot initialize [ 1.728185] ThumbEE CPU extension supported. [ 1.732689] Registering SWP/SWPB emulation handler [ 1.737795] SmartReflex Class3 initialized [ 1.743118] mmc0: new high speed SDHC card at address 1234 [ 1.751262] mmcblk0: mmc0:1234 SA04G 3.63 GiB [ 1.760695] mmcblk0: p1 p2 [ 1.811087] tps65217 0-0024: TPS65217 ID 0xe version 1.2 [ 1.816866] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz [ 1.824009] [drm:drm_platform_init] [ 1.827832] [drm:drm_get_platform_dev] [ 1.833008] mmc1: MAN_BKOPS_EN bit is not set [ 1.837978] [drm:drm_minor_register] [ 1.844507] [drm:drm_minor_register] new minor registered 64 [ 1.850539] [drm:drm_minor_register] [ 1.854363] [drm:drm_minor_register] [ 1.859268] [drm:drm_minor_register] new minor registered 0 [ 1.865667] [drm:tilcdc_load] Maximum Bandwidth Value 78643200 [ 1.871769] [drm:tilcdc_load] Maximum Horizontal Pixel Width Value 2048pixels [ 1.879277] [drm:tilcdc_load] Maximum Pixel Clock Value 126000KHz [ 1.886719] [drm:modeset_init] loading module: slave [ 1.898278] mmc1: new high speed MMC card at address 0001 [ 1.905860] mmcblk1: mmc1:0001 MMC04G 3.60 GiB [ 1.911147] mmcblk1boot0: mmc1:0001 MMC04G partition 1 2.00 MiB [ 1.917979] mmcblk1boot1: mmc1:0001 MMC04G partition 2 2.00 MiB [ 1.926622] mmcblk1: p1 p2 [ 2.029312] tda998x 0-0070: found TDA19988 [ 2.035358] [drm:drm_connector_get_cmdline_mode] cmdline mode for connector HDMI-A-1 1280x720@60Hz [ 2.045971] [drm:drm_sysfs_connector_add] adding "HDMI-A-1" to sysfs [ 2.052617] [drm:drm_sysfs_hotplug_event] generating hotplug event [ 2.059310] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 2.066256] [drm] No driver support for vblank timestamp query. [ 2.072638] [drm:drm_irq_install] irq=171 [ 2.077143] [drm:tilcdc_load] slave: preferred_bpp: 16 [ 2.082566] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] [ 2.092776] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] status updated from 3 to 1 [ 2.149705] RADEK drm_helper_probe_add_cmdline_mode [ 2.154629] ------------[ cut here ]------------ [ 2.159704] WARNING: CPU: 0 PID: 6 at drivers/gpu/drm/drm_probe_helper.c:93 drm_helper_probe_single_connector_modes_merge_bits+0x250/0x484() [ 2.172889] Modules linked in: [ 2.176112] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 4.0.0-next-20150415-00001-g47d4e2d-dirty #51 [ 2.185758] Hardware name: Generic AM33XX (Flattened Device Tree) [ 2.192130] Workqueue: deferwq deferred_probe_work_func [ 2.197635] [<c00164e4>] (unwind_backtrace) from [<c0012a24>] (show_stack+0x10/0x14) [ 2.205752] [<c0012a24>] (show_stack) from [<c061a400>] (dump_stack+0x80/0x9c) [ 2.213301] [<c061a400>] (dump_stack) from [<c003ffe4>] (warn_slowpath_common+0x78/0xb4) [ 2.221777] [<c003ffe4>] (warn_slowpath_common) from [<c004003c>] (warn_slowpath_null+0x1c/0x24) [ 2.230980] [<c004003c>] (warn_slowpath_null) from [<c03dc650>] (drm_helper_probe_single_connector_modes_merge_bits+0x250/0x484) [ 2.243092] [<c03dc650>] (drm_helper_probe_single_connector_modes_merge_bits) from [<c03e44cc>] (drm_fb_helper_probe_connector_modes+0x4c/0x6c) [ 2.256561] [<c03e44cc>] (drm_fb_helper_probe_connector_modes) from [<c03e6610>] (drm_fb_helper_initial_config+0x34/0x40c) [ 2.268120] [<c03e6610>] (drm_fb_helper_initial_config) from [<c03e6c74>] (drm_fbdev_cma_init+0x80/0x10c) [ 2.278142] [<c03e6c74>] (drm_fbdev_cma_init) from [<c0409430>] (tilcdc_load+0x3ac/0x5d8) [ 2.286711] [<c0409430>] (tilcdc_load) from [<c03ef9d8>] (drm_dev_register+0xa4/0x104) [ 2.295005] [<c03ef9d8>] (drm_dev_register) from [<c03f13e4>] (drm_platform_init+0x40/0xd0) [ 2.303733] [<c03f13e4>] (drm_platform_init) from [<c0411154>] (platform_drv_probe+0x48/0xa4) [ 2.312663] [<c0411154>] (platform_drv_probe) from [<c040fbe4>] (driver_probe_device+0x1c4/0x26c) [ 2.321953] [<c040fbe4>] (driver_probe_device) from [<c040e264>] (bus_for_each_drv+0x44/0x8c) [ 2.330880] [<c040e264>] (bus_for_each_drv) from [<c040f9e8>] (device_attach+0x74/0x8c) [ 2.339262] [<c040f9e8>] (device_attach) from [<c040f0f4>] (bus_probe_device+0x88/0xb0) [ 2.347644] [<c040f0f4>] (bus_probe_device) from [<c040f4dc>] (deferred_probe_work_func+0x60/0x90) [ 2.357036] [<c040f4dc>] (deferred_probe_work_func) from [<c005786c>] (process_one_work+0x1b4/0x4b0) [ 2.366602] [<c005786c>] (process_one_work) from [<c0057cf0>] (worker_thread+0x154/0x470) [ 2.375174] [<c0057cf0>] (worker_thread) from [<c005d56c>] (kthread+0xd4/0xf0) [ 2.382727] [<c005d56c>] (kthread) from [<c000f6d0>] (ret_from_fork+0x14/0x24) [ 2.390291] ---[ end trace 433cefa55ca7d60b ]--- [ 2.395233] [drm:tilcdc_crtc_mode_valid] Processing mode 1440x900@60 with pixel clock 106500 [ 2.404047] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@50 with pixel clock 74250 [ 2.412793] [drm:tilcdc_crtc_mode_valid] Processing mode 720x576@50 with pixel clock 27000 [ 2.421445] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74250 [ 2.430187] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x1024@60 with pixel clock 108000 [ 2.439111] [drm:tilcdc_crtc_mode_valid] Processing mode 800x600@60 with pixel clock 40000 [ 2.447762] [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25200 [ 2.456413] [drm:tilcdc_crtc_mode_valid] Processing mode 1024x768@60 with pixel clock 65000 [ 2.465155] [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25175 [ 2.473785] [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27000 [ 2.482436] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74176 [ 2.491178] [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27027 [ 2.499829] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74440 [ 2.508578] [drm:drm_mode_debug_printmodeline] Modeline 23:"1920x1080i" 60 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [ 2.520854] [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [ 2.528608] [drm:drm_mode_debug_printmodeline] Modeline 24:"1920x1080i" 50 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15 [ 2.540885] [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [ 2.548638] [drm:drm_mode_debug_printmodeline] Modeline 32:"720x480i" 0 13500 720 739 801 858 480 488 494 525 0x40 0x101a [ 2.560097] [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [ 2.567669] [drm:drm_mode_debug_printmodeline] Modeline 33:"720x576i" 0 13500 720 732 795 864 576 580 586 625 0x40 0x101a [ 2.579130] [drm:drm_mode_prune_invalid] Not using 720x576i mode: NO_INTERLACE [ 2.586702] [drm:drm_mode_debug_printmodeline] Modeline 41:"1920x1080i" 60 74176 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [ 2.598977] [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: NO_INTERLACE [ 2.606730] [drm:drm_mode_debug_printmodeline] Modeline 44:"720x480i" 60 13513 720 739 801 858 480 488 494 525 0x40 0x101a [ 2.618281] [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [ 2.625856] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] probed modes : [ 2.636056] [drm:drm_mode_debug_printmodeline] Modeline 22:"1440x900" 60 106500 1440 1520 1672 1904 900 903 909 934 0x48 0x6 [ 2.647794] [drm:drm_mode_debug_printmodeline] Modeline 28:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5 [ 2.659984] [drm:drm_mode_debug_printmodeline] Modeline 49:"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6 [ 2.671630] [drm:drm_mode_debug_printmodeline] Modeline 27:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [ 2.683276] [drm:drm_mode_debug_printmodeline] Modeline 42:"1280x720" 60 74176 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [ 2.694923] [drm:drm_mode_debug_printmodeline] Modeline 25:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5 [ 2.706569] [drm:drm_mode_debug_printmodeline] Modeline 31:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [ 2.718214] [drm:drm_mode_debug_printmodeline] Modeline 29:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [ 2.729497] [drm:drm_mode_debug_printmodeline] Modeline 26:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa [ 2.740689] [drm:drm_mode_debug_printmodeline] Modeline 46:"720x480" 60 27027 720 736 798 858 480 489 495 525 0x40 0xa [ 2.751882] [drm:drm_mode_debug_printmodeline] Modeline 35:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa [ 2.763074] [drm:drm_mode_debug_printmodeline] Modeline 30:"640x480" 60 25200 640 656 752 800 480 490 492 525 0x40 0xa [ 2.774266] [drm:drm_mode_debug_printmodeline] Modeline 34:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa [ 2.785456] [drm:drm_setup_crtcs] [ 2.789015] [drm:drm_enable_connectors] connector 20 enabled? yes [ 2.795402] [drm:drm_target_preferred] looking for cmdline mode on connector 20 [ 2.803034] [drm:drm_target_preferred] found mode 1280x720 [ 2.808781] [drm:drm_setup_crtcs] picking CRTCs for 2048x2048 config [ 2.815444] [drm:drm_setup_crtcs] desired mode 1280x720 set on crtc 18 (0,0) [ 2.822822] [drm:drm_fbdev_cma_create] surface width(1280), height(720) and bpp(16) [ 2.839004] [drm:drm_crtc_helper_set_config] [ 2.839016] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 2.839032] [drm:drm_crtc_helper_set_config] crtc has no fb, full mode set [ 2.839040] [drm:drm_crtc_helper_set_config] modes are different, full mode set [ 2.839052] [drm:drm_mode_debug_printmodeline] Modeline 0:"" 0 0 0 0 0 0 0 0 0 0 0x0 0x0 [ 2.839064] [drm:drm_mode_debug_printmodeline] Modeline 23:"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6 [ 2.839071] [drm:drm_crtc_helper_set_config] encoder changed, full mode switch [ 2.839077] [drm:drm_crtc_helper_set_config] crtc changed, full mode switch [ 2.839084] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 2.839091] [drm:drm_crtc_helper_set_config] attempting to set mode from userspace [ 2.839101] [drm:drm_mode_debug_printmodeline] Modeline 23:"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6 [ 2.839141] [drm:drm_crtc_helper_set_mode] [CRTC:18] [ 2.839155] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74440 [ 2.839360] [drm:tilcdc_crtc_mode_set] 1280x720, hbp=192, hfp=56, hsw=136, vbp=22, vfp=1, vsw=3 [ 2.839384] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (1) [ 2.839394] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (2) [ 2.840544] [drm:tilcdc_crtc_update_clk] lcd_clk=148878048, mode clock=74440, div=1 [ 2.840560] [drm:tilcdc_crtc_update_clk] fck=148878048, dpll_disp_ck=148878048 [ 2.840610] [drm:drm_crtc_helper_set_mode] [ENCODER:19:TMDS-19] set [MODE:23:1280x720] [ 2.896205] [drm:drm_calc_timestamping_constants] crtc 18: hwmode: htotal 1664, vtotal 746, vdisplay 720 [ 2.896214] [drm:drm_calc_timestamping_constants] crtc 18: clock 74440 kHz framedur 16675765 linedur 22353, pixeldur 13 [ 2.896234] [drm:drm_crtc_helper_set_config] Setting connector DPMS state to on [ 2.896242] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] set DPMS on [ 2.896259] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (3) [ 2.896437] [drm:drm_crtc_helper_set_config] [ 2.896447] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 2.896468] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 2.896479] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 2.896487] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 2.902619] Console: switching to colour frame buffer device 160x45 [ 2.902652] [drm:drm_crtc_helper_set_config] [ 2.902660] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 2.902674] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 2.902684] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 2.902691] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 3.178555] tilcdc 4830e000.lcdc: fb0: frame buffer device [ 3.184376] tilcdc 4830e000.lcdc: registered panic notifier [ 3.190310] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0 [ 3.254868] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6 [ 3.261254] davinci_mdio 4a101000.mdio: detected phy mask fffffffe [ 3.270934] libphy: 4a101000.mdio: probed [ 3.275276] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720 [ 3.286094] cpsw 4a100000.ethernet: Detected MACID = 78:a5:04:c8:db:ba [ 3.296012] hctosys: unable to open rtc device (rtc0) [ 3.301313] sr_init: No PMIC hook to init smartreflex [ 3.306936] sr_init: platform driver register failed for SR [ 3.333849] net eth0: initializing cpsw version 1.12 (0) [ 3.341963] net eth0: phy found : id is : 0x7c0f1 [ 3.347056] libphy: PHY 4a101000.mdio:01 not found [ 3.352063] net eth0: phy 4a101000.mdio:01 not found on slave 1 [ 6.415546] cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx [ 6.434875] Sending DHCP requests ., OK [ 6.455371] IP-Config: Got DHCP answer from 10.1.14.1, my address is 10.1.14.167 [ 6.464180] IP-Config: Complete: [ 6.467692] device=eth0, hwaddr=78:a5:04:c8:db:ba, ipaddr=10.1.14.167, mask=255.255.255.0, gw=10.1.14.1 [ 6.477985] host=10.1.14.167, domain=sue.net, nis-domain=(none) [ 6.484620] bootserver=0.0.0.0, rootserver=10.1.14.92, rootpath= [ 6.491186] nameserver0=10.1.14.1 [ 6.519241] VFS: Mounted root (nfs filesystem) on device 0:16. [ 6.527680] devtmpfs: mounted [ 6.531497] Freeing unused kernel memory: 444K (c0899000 - c0908000) [ 7.106128] [drm:drm_crtc_helper_set_config] [ 7.106142] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 7.106170] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 7.106183] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 7.106190] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 7.762854] udevd[76]: starting version 182 [ 8.338014] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@2[0]' - status (0) [ 8.349153] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@3[0]' - status (0) [ 8.359529] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@4[0]' - status (0) [ 8.369450] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@5[0]' - status (0) [ 8.708143] random: nonblocking pool is initialized [ 8.785760] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec [ 8.794092] omap_rtc 44e3e000.rtc: already running [ 8.925051] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0 [ 9.015739] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset [ 9.023308] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup [ 9.031251] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' [ 9.042656] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' [ 9.053973] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup [ 9.062004] am335x-phy-driver 47401300.usb-phy: lookup for GPIO reset failed [ 9.069393] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect [ 9.077500] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup [ 9.085340] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' [ 9.097258] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' [ 9.109082] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup [ 9.117102] am335x-phy-driver 47401300.usb-phy: lookup for GPIO vbus-detect failed [ 9.125105] 47401300.usb-phy supply vcc not found, using dummy regulator [ 9.135711] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer reset [ 9.143276] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup [ 9.151166] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' [ 9.162548] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' [ 9.173834] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup [ 9.181858] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO reset failed [ 9.189246] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer vbus-detect [ 9.197354] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup [ 9.205203] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' [ 9.217122] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' [ 9.228948] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup [ 9.236967] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO vbus-detect failed [ 9.244949] 47401b00.usb-phy supply vcc not found, using dummy regulator [ 10.013176] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20 [ 13.208361] [drm:drm_sysfs_hotplug_event] generating hotplug event [ 13.215381] [drm:drm_fb_helper_hotplug_event] [ 13.220029] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] [ 14.414426] RADEK drm_helper_probe_add_cmdline_mode [ 14.419704] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74440 [ 14.428677] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74250 [ 14.437433] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@60 with pixel clock 74176 [ 14.446180] [drm:tilcdc_crtc_mode_valid] Processing mode 1280x720@50 with pixel clock 74250 [ 14.454923] [drm:tilcdc_crtc_mode_valid] Processing mode 800x600@60 with pixel clock 40000 [ 14.463553] [drm:tilcdc_crtc_mode_valid] Processing mode 720x576@50 with pixel clock 27000 [ 14.472205] [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27027 [ 14.480858] [drm:tilcdc_crtc_mode_valid] Processing mode 720x480@60 with pixel clock 27000 [ 14.489511] [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25200 [ 14.498164] [drm:tilcdc_crtc_mode_valid] Processing mode 640x480@60 with pixel clock 25175 [ 14.506823] [drm:drm_mode_debug_printmodeline] Modeline 22:"1440x900" 60 106500 1440 1520 1672 1904 900 903 909 934 0x48 0x6 [ 14.518625] [drm:drm_mode_prune_invalid] Not using 1440x900 mode: VIRTUAL_X [ 14.525950] [drm:drm_mode_debug_printmodeline] Modeline 28:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5 [ 14.538141] [drm:drm_mode_prune_invalid] Not using 1280x1024 mode: VIRTUAL_Y [ 14.545534] [drm:drm_mode_debug_printmodeline] Modeline 31:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [ 14.557177] [drm:drm_mode_prune_invalid] Not using 1024x768 mode: VIRTUAL_Y [ 14.564457] [drm:drm_mode_debug_printmodeline] Modeline 33:"1920x1080i" 60 74250 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [ 14.576736] [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [ 14.584197] [drm:drm_mode_debug_printmodeline] Modeline 36:"1920x1080i" 50 74250 1920 2448 2492 2640 1080 1084 1094 1125 0x40 0x15 [ 14.596474] [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [ 14.603934] [drm:drm_mode_debug_printmodeline] Modeline 45:"720x480i" 0 13500 720 739 801 858 480 488 494 525 0x40 0x101a [ 14.615394] [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [ 14.622945] [drm:drm_mode_debug_printmodeline] Modeline 47:"720x576i" 0 13500 720 732 795 864 576 580 586 625 0x40 0x101a [ 14.634405] [drm:drm_mode_prune_invalid] Not using 720x576i mode: NO_INTERLACE [ 14.641977] [drm:drm_mode_debug_printmodeline] Modeline 56:"1920x1080i" 60 74176 1920 2008 2052 2200 1080 1084 1094 1125 0x40 0x15 [ 14.654254] [drm:drm_mode_prune_invalid] Not using 1920x1080i mode: VIRTUAL_X [ 14.661737] [drm:drm_mode_debug_printmodeline] Modeline 59:"720x480i" 60 13513 720 739 801 858 480 488 494 525 0x40 0x101a [ 14.673288] [drm:drm_mode_prune_invalid] Not using 720x480i mode: NO_INTERLACE [ 14.680862] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:20:HDMI-A-1] probed modes : [ 14.691060] [drm:drm_mode_debug_printmodeline] Modeline 49:"1280x720" 60 74440 1280 1336 1472 1664 720 721 724 746 0x20 0x6 [ 14.702716] [drm:drm_mode_debug_printmodeline] Modeline 27:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [ 14.714428] [drm:drm_mode_debug_printmodeline] Modeline 42:"1280x720" 60 74176 1280 1390 1430 1650 720 725 730 750 0x40 0x5 [ 14.726089] [drm:drm_mode_debug_printmodeline] Modeline 25:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5 [ 14.737740] [drm:drm_mode_debug_printmodeline] Modeline 29:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [ 14.749026] [drm:drm_mode_debug_printmodeline] Modeline 26:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa [ 14.760220] [drm:drm_mode_debug_printmodeline] Modeline 46:"720x480" 60 27027 720 736 798 858 480 489 495 525 0x40 0xa [ 14.771414] [drm:drm_mode_debug_printmodeline] Modeline 35:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa [ 14.782608] [drm:drm_mode_debug_printmodeline] Modeline 30:"640x480" 60 25200 640 656 752 800 480 490 492 525 0x40 0xa [ 14.793802] [drm:drm_mode_debug_printmodeline] Modeline 34:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa [ 14.805142] [drm:drm_setup_crtcs] [ 14.808707] [drm:drm_enable_connectors] connector 20 enabled? yes [ 14.815293] [drm:drm_target_preferred] looking for cmdline mode on connector 20 [ 14.822931] [drm:drm_target_preferred] found mode 1280x720 [ 14.828722] [drm:drm_setup_crtcs] picking CRTCs for 2048x2048 config [ 14.835395] [drm:drm_setup_crtcs] desired mode 1280x720 set on crtc 18 (0,0) [ 14.842844] [drm:drm_crtc_helper_set_config] [ 14.847428] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 14.855917] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 14.863770] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 14.870342] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 17.299113] FAT-fs (mmcblk0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 17.316247] FAT-fs (mmcblk1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 18.168497] usbcore: registered new interface driver usbfs [ 18.175070] usbcore: registered new interface driver hub [ 18.180870] usbcore: registered new device driver usb [ 18.997570] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) [ 19.008692] musb-hdrc: MHDRC RTL version 2.0 [ 19.013244] musb-hdrc: setup fifo_mode 4 [ 19.017380] musb-hdrc: 28/31 max ep, 16384/16384 memory [ 19.029051] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) [ 19.040164] musb-hdrc: MHDRC RTL version 2.0 [ 19.044716] musb-hdrc: setup fifo_mode 4 [ 19.048860] musb-hdrc: 28/31 max ep, 16384/16384 memory [ 19.055103] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver [ 19.062035] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1 [ 19.904427] FAT-fs (mmcblk1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 19.918079] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 19.925312] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 19.932858] usb usb1: Product: MUSB HDRC host driver [ 19.938094] usb usb1: Manufacturer: Linux 4.0.0-next-20150415-00001-g47d4e2d-dirty musb-hcd [ 19.946843] usb usb1: SerialNumber: musb-hdrc.1.auto [ 19.970678] FAT-fs (mmcblk0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 20.002558] hub 1-0:1.0: USB hub found [ 20.040218] hub 1-0:1.0: 1 port detected [ 22.291809] EXT4-fs (mmcblk0p2): Unrecognized mount option "iocharset=utf8" or missing value [ 22.349414] EXT4-fs (mmcblk1p2): Unrecognized mount option "iocharset=utf8" or missing value [ 22.386244] EXT3-fs (mmcblk0p2): error: unrecognized mount option "iocharset=utf8" or missing value [ 22.411439] FAT-fs (mmcblk1boot1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 22.445717] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 22.461485] FAT-fs (mmcblk1boot0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 22.474172] EXT3-fs (mmcblk1p2): error: unrecognized mount option "iocharset=utf8" or missing value [ 22.487631] FAT-fs (mmcblk1p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 22.511718] FAT-fs (mmcblk0p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 22.533243] FAT-fs (mmcblk1p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 22.645164] FAT-fs (mmcblk0p1): IO charset utf8 not found [ 22.657532] FAT-fs (mmcblk1p1): IO charset utf8 not found [ 22.986826] FAT-fs (mmcblk1boot1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 23.008142] EXT3-fs (mmcblk0p2): error: unrecognized mount option "iocharset=utf8" or missing value [ 23.052767] FAT-fs (mmcblk1boot0): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 23.093945] EXT3-fs (mmcblk1p2): error: unrecognized mount option "iocharset=utf8" or missing value [ 23.129922] EXT4-fs (mmcblk0p2): Unrecognized mount option "iocharset=utf8" or missing value [ 23.150505] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 23.169708] FAT-fs (mmcblk1p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 23.223000] EXT4-fs (mmcblk1p2): Unrecognized mount option "iocharset=utf8" or missing value [ 23.253594] FAT-fs (mmcblk0p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 23.353217] FAT-fs (mmcblk1p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! [ 23.415292] FAT-fs (mmcblk0p1): IO charset utf8 not found [ 23.432718] FAT-fs (mmcblk1p1): IO charset utf8 not found [ 25.017685] EXT4-fs (mmcblk0p2): recovery complete [ 25.023408] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 25.051297] EXT4-fs (mmcblk1p2): recovery complete [ 25.056518] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null) [ 25.161833] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. [ 25.199457] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. [ 29.411489] NET: Registered protocol family 10 [ 31.107064] Bluetooth: Core ver 2.20 [ 31.111040] NET: Registered protocol family 31 [ 31.115815] Bluetooth: HCI device and connection manager initialized [ 31.123028] Bluetooth: HCI socket layer initialized [ 31.128249] Bluetooth: L2CAP socket layer initialized [ 31.133914] Bluetooth: SCO socket layer initialized [ 31.601002] [drm:drm_crtc_helper_set_config] [ 31.601019] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 31.601047] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 31.601060] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 31.601066] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 31.601096] [drm:drm_crtc_helper_set_config] [ 31.601102] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 31.601113] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 31.601121] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 31.601127] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 31.601220] [drm:drm_crtc_helper_set_config] [ 31.601228] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 31.601239] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 31.601247] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 31.601253] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 32.246482] [drm:drm_crtc_helper_set_config] [ 32.246499] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 32.246526] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 32.246539] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 32.246546] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 35.248208] [drm:drm_crtc_helper_set_config] [ 35.248222] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 35.248249] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 35.248261] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 35.248268] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 35.346545] [drm:drm_crtc_helper_set_config] [ 35.346563] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 35.346593] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 35.346605] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 35.346611] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [ 35.346645] [drm:drm_crtc_helper_set_config] [ 35.346652] [drm:drm_crtc_helper_set_config] [CRTC:18] [FB:24] #connectors=1 (x y) (0 0) [ 35.346663] [drm:drm_crtc_helper_set_config] [CONNECTOR:20:HDMI-A-1] to [CRTC:18] [ 35.346671] [drm:drm_framebuffer_reference] ddccddc0: FB ID: 24 (4) [ 35.346677] [drm:drm_framebuffer_unreference] ddccddc0: FB ID: 24 (5) [-- Attachment #3: patch --] [-- Type: text/plain, Size: 969 bytes --] diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index cac4229..d3a8ef4 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1325,6 +1325,8 @@ again: } create_mode: + printk("RADEK drm_pick_cmdline_mode"); + WARN_ON(list_empty(&fb_helper_conn->connector->modes)); mode = drm_mode_create_from_cmdline_mode(fb_helper_conn->connector->dev, cmdline_mode); list_add(&mode->head, &fb_helper_conn->connector->modes); diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 6350387..c91acf1 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -89,6 +89,8 @@ static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) if (mode == NULL) return 0; + printk("RADEK drm_helper_probe_add_cmdline_mode"); + WARN_ON(list_empty(&connector->modes)); drm_mode_probed_add(connector, mode); return 1; } ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 11:20 ` Radek Dostál @ 2015-04-20 11:44 ` Chris Wilson 2015-04-20 12:00 ` Radek Dostál 0 siblings, 1 reply; 54+ messages in thread From: Chris Wilson @ 2015-04-20 11:44 UTC (permalink / raw) To: Radek Dostál; +Cc: airlied, dri-devel, linux-kernel On Mon, Apr 20, 2015 at 01:20:05PM +0200, Radek Dostál wrote: > Hi Chris, > > On 04/20/2015 01:00 PM, Chris Wilson wrote: > > Can you do a WARN_ON(list_empty(&connector->modes)) here to see at what > > point we set up the invalid GTF mode? > > sure please see attached patch adding WARN_ON and corresponding output > of dmesg. As mentioned in the original commit, the mode is indeed added > in drm_helper_probe_add_cmdline_mode. Ah, maybe this on top of the previous try: diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 88f5a74..5d22ca0 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -87,7 +87,7 @@ static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) return 0; /* Only add a GTF mode if we find no matching probed modes */ - list_for_each_entry(mode, &connector->modes, head) { + list_for_each_entry(mode, &connector->probed_modes, head) { if (mode->hdisplay != cmdline_mode->xres || mode->vdisplay != cmdline_mode->yres) continue; @@ -211,7 +211,8 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect mode_flags |= DRM_MODE_FLAG_3D_MASK; list_for_each_entry(mode, &connector->modes, head) { - mode->status = drm_mode_validate_basic(mode); + if (mode->status == MODE_OK) + mode->status = drm_mode_validate_basic(mode); if (mode->status == MODE_OK) mode->status = drm_mode_validate_size(mode, maxX, maxY -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF 2015-04-20 11:44 ` Chris Wilson @ 2015-04-20 12:00 ` Radek Dostál 0 siblings, 0 replies; 54+ messages in thread From: Radek Dostál @ 2015-04-20 12:00 UTC (permalink / raw) To: Chris Wilson, airlied, dri-devel, linux-kernel Hi Chris, On 04/20/2015 01:44 PM, Chris Wilson wrote: > Ah, maybe this on top of the previous try: > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 88f5a74..5d22ca0 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -87,7 +87,7 @@ static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > return 0; > > /* Only add a GTF mode if we find no matching probed modes */ > - list_for_each_entry(mode, &connector->modes, head) { > + list_for_each_entry(mode, &connector->probed_modes, head) { > if (mode->hdisplay != cmdline_mode->xres || > mode->vdisplay != cmdline_mode->yres) > continue; > @@ -211,7 +211,8 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > mode_flags |= DRM_MODE_FLAG_3D_MASK; > > list_for_each_entry(mode, &connector->modes, head) { > - mode->status = drm_mode_validate_basic(mode); > + if (mode->status == MODE_OK) > + mode->status = drm_mode_validate_basic(mode); > > if (mode->status == MODE_OK) > mode->status = drm_mode_validate_size(mode, maxX, maxY perfect - this seems to work :) Radek ^ permalink raw reply [flat|nested] 54+ messages in thread
* [PATCH] drm: Only create a cmdline mode if no probed modes match 2015-04-20 5:26 ` [PATCHv2] " Radek Dostal 2015-04-20 9:09 ` Chris Wilson @ 2015-04-20 12:26 ` Chris Wilson 2015-04-20 13:06 ` Radek Dostál 2016-06-01 9:34 ` Chris Wilson 1 sibling, 2 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 12:26 UTC (permalink / raw) To: dri-devel; +Cc: Daniel Vetter, stable, Radek Dostál, Dave Airlie The intention of using video=<connector>:<mode: is primarily to select the user's preferred resolution at startup. Currently we always create a GTF mode irrespective of whether the monitor has a native mode at the desired resolution. This has the issue that we may then select the fake GTF mode rather the native mode during fb_helper->inital_config() and so on a non-GTF monitor we then end up with a loss of signal. Oops. This invalid fake mode would also be exported to userspace, who potentially may make the same mistake. To avoid this issue, we filter out the added command line mode if we detect the desired resolution (and clock if specified) amongst the probed modes. This fixes the immediate problem of adding a duplicate mode, but perhaps more generically we should avoid adding a GTF mode if the monitor has an EDID that is not GTF-compatible... A second issue sneaked into this patch is to add the cmdline mode mode ahead of the absolute fallback 1024x768 mode. That is if the user has specified a mode that we create as a fallback, we do not need to add a second unused fallback mode. Fixes regression from commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 6 10:08:32 2014 +0200 drm: Perform cmdline mode parsing during connector initialisation that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). Reported-by: Radek Dostál <rd@radekdostal.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Radek Dostál <rd@radekdostal.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: dri-devel@lists.freedesktop.org Cc: Julia Lemire <jlemire@matrox.com> Cc: Dave Airlie <airlied@redhat.com> Cc: stable@vger.kernel.org --- drivers/gpu/drm/drm_probe_helper.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 63503879a676..b4b61cc4168e 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -79,16 +79,33 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->probed_modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified) { + if (mode->vrefresh != cmdline_mode->refresh) + continue; + } + + mode->status = MODE_BAD; + break; + } + drm_mode_probed_add(connector, mode); return 1; } @@ -179,9 +196,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect count = (*connector_funcs->get_modes)(connector); } + count += drm_helper_probe_add_cmdline_mode(connector); if (count == 0 && connector->status == connector_status_connected) count = drm_add_modes_noedid(connector, 1024, 768); - count += drm_helper_probe_add_cmdline_mode(connector); if (count == 0) goto prune; @@ -195,7 +212,8 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect mode_flags |= DRM_MODE_FLAG_3D_MASK; list_for_each_entry(mode, &connector->modes, head) { - mode->status = drm_mode_validate_basic(mode); + if (mode->status != MODE_BAD) + mode->status = drm_mode_validate_basic(mode); if (mode->status == MODE_OK) mode->status = drm_mode_validate_size(mode, maxX, maxY); -- 2.1.4 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCH] drm: Only create a cmdline mode if no probed modes match 2015-04-20 12:26 ` [PATCH] drm: Only create a cmdline mode if no probed modes match Chris Wilson @ 2015-04-20 13:06 ` Radek Dostál 2015-04-20 13:16 ` Chris Wilson 2015-04-20 13:28 ` [PATCH v2] " Chris Wilson 2016-06-01 9:34 ` Chris Wilson 1 sibling, 2 replies; 54+ messages in thread From: Radek Dostál @ 2015-04-20 13:06 UTC (permalink / raw) To: Chris Wilson, dri-devel Cc: Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable [-- Attachment #1: Type: text/plain, Size: 2238 bytes --] Hi Chris, On 04/20/2015 02:26 PM, Chris Wilson wrote: > The intention of using video=<connector>:<mode: is primarily to select > the user's preferred resolution at startup. Currently we always create a > GTF mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > GTF mode rather the native mode during fb_helper->inital_config() and so > on a non-GTF monitor we then end up with a loss of signal. Oops. This > invalid fake mode would also be exported to userspace, who potentially > may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible... > > A second issue sneaked into this patch is to add the cmdline mode mode > ahead of the absolute fallback 1024x768 mode. That is if the user has > specified a mode that we create as a fallback, we do not need to add a > second unused fallback mode. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > Reported-by: Radek Dostál <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dostál <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org NAKed-by: Radek Dostál <rd@radekdostal.com> sorry to let you know, but this patch does NOT work :( Attached is the original.patch which you provided previously and it did work, but one of the last minute changes had to break it :( I hope you will find the issue soon, Radek [-- Attachment #2: original.patch --] [-- Type: text/x-patch, Size: 1709 bytes --] diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 6350387..2168be0 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -79,13 +79,30 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->probed_modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified) { + if (mode->vrefresh != cmdline_mode->refresh) + continue; + } + + return 0; + } + + mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; @@ -195,7 +212,8 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect mode_flags |= DRM_MODE_FLAG_3D_MASK; list_for_each_entry(mode, &connector->modes, head) { - mode->status = drm_mode_validate_basic(mode); + if (mode->status == MODE_OK) + mode->status = drm_mode_validate_basic(mode); if (mode->status == MODE_OK) mode->status = drm_mode_validate_size(mode, maxX, maxY); ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCH] drm: Only create a cmdline mode if no probed modes match 2015-04-20 13:06 ` Radek Dostál @ 2015-04-20 13:16 ` Chris Wilson 2015-04-20 13:28 ` [PATCH v2] " Chris Wilson 1 sibling, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 13:16 UTC (permalink / raw) To: Radek Dostál Cc: dri-devel, Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Mon, Apr 20, 2015 at 03:06:30PM +0200, Radek Dostál wrote: > Hi Chris, > > On 04/20/2015 02:26 PM, Chris Wilson wrote: > > The intention of using video=<connector>:<mode: is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > GTF mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > GTF mode rather the native mode during fb_helper->inital_config() and so > > on a non-GTF monitor we then end up with a loss of signal. Oops. This > > invalid fake mode would also be exported to userspace, who potentially > > may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible... > > > > A second issue sneaked into this patch is to add the cmdline mode mode > > ahead of the absolute fallback 1024x768 mode. That is if the user has > > specified a mode that we create as a fallback, we do not need to add a > > second unused fallback mode. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > Reported-by: Radek Dostál <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dostál <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > NAKed-by: Radek Dostál <rd@radekdostal.com> > > sorry to let you know, but this patch does NOT work :( Attached is the > original.patch which you provided previously and it did work, but one of > the last minute changes had to break it :( The original patch relied on the MODE_UNVERIFIED being retained by the unwanted cmdline mode. This patch relies on overwriting the existing unwanted mode->status with MODE_BAD by drm_mode_connector_list_update(). I made that change because the first version would have deleted all user modes and not just our fake cmdline mode. Alternatively we could do a loop over the old modes, remove the fake then loops over probed modes and only add if it we don't match. Let's try that... -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* [PATCH v2] drm: Only create a cmdline mode if no probed modes match 2015-04-20 13:06 ` Radek Dostál 2015-04-20 13:16 ` Chris Wilson @ 2015-04-20 13:28 ` Chris Wilson 2015-04-20 13:41 ` Radek Dostál ` (2 more replies) 1 sibling, 3 replies; 54+ messages in thread From: Chris Wilson @ 2015-04-20 13:28 UTC (permalink / raw) To: dri-devel Cc: Chris Wilson, Radek Dostál, Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable The intention of using video=<connector>:<mode> is primarily to select the user's preferred resolution at startup. Currently we always create a new mode irrespective of whether the monitor has a native mode at the desired resolution. This has the issue that we may then select the fake mode rather the native mode during fb_helper->inital_config() and so if the fake mode is invalid we then end up with a loss of signal. Oops. This invalid fake mode would also be exported to userspace, who potentially may make the same mistake. To avoid this issue, we filter out the added command line mode if we detect the desired resolution (and clock if specified) amongst the probed modes. This fixes the immediate problem of adding a duplicate mode, but perhaps more generically we should avoid adding a GTF mode if the monitor has an EDID that is not GTF-compatible, or similarly for CVT. A second issue sneaked into this patch is to add the cmdline mode mode ahead of the absolute fallback 1024x768 mode. That is if the user has specified a mode that we create as a fallback, we do not need to add a second unused fallback mode. Fixes regression from commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 6 10:08:32 2014 +0200 drm: Perform cmdline mode parsing during connector initialisation that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). v2: Explicitly delete our earlier cmdline mode Reported-by: Radek Dostál <rd@radekdostal.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Radek Dostál <rd@radekdostal.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: dri-devel@lists.freedesktop.org Cc: Julia Lemire <jlemire@matrox.com> Cc: Dave Airlie <airlied@redhat.com> Cc: stable@vger.kernel.org --- drivers/gpu/drm/drm_modes.c | 2 +- drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 213b11ea69b5..13293e009990 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, if (!mode) return NULL; - mode->type |= DRM_MODE_TYPE_USERDEF; + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); return mode; } diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 63503879a676..2ad8aaf46318 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -79,13 +79,46 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->probed_modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified && + mode->vrefresh != cmdline_mode->refresh) + continue; + + /* Remove the existing fake mode */ + list_for_each_entry(mode, &connector->modes, head) { + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) + continue; + + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified && + mode->vrefresh != cmdline_mode->refresh) + continue; + + list_del(&mode->head); + drm_mode_destroy(connector->dev, mode); + break; + } + + return 0; + } + mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect count = (*connector_funcs->get_modes)(connector); } + count += drm_helper_probe_add_cmdline_mode(connector); if (count == 0 && connector->status == connector_status_connected) count = drm_add_modes_noedid(connector, 1024, 768); - count += drm_helper_probe_add_cmdline_mode(connector); if (count == 0) goto prune; -- 2.1.4 ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match 2015-04-20 13:28 ` [PATCH v2] " Chris Wilson @ 2015-04-20 13:41 ` Radek Dostál 2015-05-21 15:36 ` Chris Wilson 2015-05-22 6:22 ` Jani Nikula 2015-05-22 9:03 ` Ville Syrjälä 2 siblings, 1 reply; 54+ messages in thread From: Radek Dostál @ 2015-04-20 13:41 UTC (permalink / raw) To: Chris Wilson, dri-devel Cc: Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable On 04/20/2015 03:28 PM, Chris Wilson wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > A second issue sneaked into this patch is to add the cmdline mode mode > ahead of the absolute fallback 1024x768 mode. That is if the user has > specified a mode that we create as a fallback, we do not need to add a > second unused fallback mode. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > > Reported-by: Radek Dostál <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dostál <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org works now :) Tested-by: Radek Dostál <rd@radekdostal.com> Thanks, Radek ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match 2015-04-20 13:41 ` Radek Dostál @ 2015-05-21 15:36 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-05-21 15:36 UTC (permalink / raw) To: Radek Dostál Cc: dri-devel, Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Mon, Apr 20, 2015 at 03:41:48PM +0200, Radek Dost�l wrote: > On 04/20/2015 03:28 PM, Chris Wilson wrote: > > The intention of using video=<connector>:<mode> is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > new mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > mode rather the native mode during fb_helper->inital_config() and so > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > This invalid fake mode would also be exported to userspace, who > > potentially may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible, or similarly for > > CVT. > > > > A second issue sneaked into this patch is to add the cmdline mode mode > > ahead of the absolute fallback 1024x768 mode. That is if the user has > > specified a mode that we create as a fallback, we do not need to add a > > second unused fallback mode. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > v2: Explicitly delete our earlier cmdline mode > > > > Reported-by: Radek Dost�l <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dost�l <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > works now :) > > Tested-by: Radek Dost�l <rd@radekdostal.com> Daniel, Dave do either or you want to pick this up for your fixes tree? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match @ 2015-05-21 15:36 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-05-21 15:36 UTC (permalink / raw) To: Radek Dostál Cc: dri-devel, Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Mon, Apr 20, 2015 at 03:41:48PM +0200, Radek Dostál wrote: > On 04/20/2015 03:28 PM, Chris Wilson wrote: > > The intention of using video=<connector>:<mode> is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > new mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > mode rather the native mode during fb_helper->inital_config() and so > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > This invalid fake mode would also be exported to userspace, who > > potentially may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible, or similarly for > > CVT. > > > > A second issue sneaked into this patch is to add the cmdline mode mode > > ahead of the absolute fallback 1024x768 mode. That is if the user has > > specified a mode that we create as a fallback, we do not need to add a > > second unused fallback mode. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > v2: Explicitly delete our earlier cmdline mode > > > > Reported-by: Radek Dostál <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dostál <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > works now :) > > Tested-by: Radek Dostál <rd@radekdostal.com> Daniel, Dave do either or you want to pick this up for your fixes tree? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match 2015-04-20 13:28 ` [PATCH v2] " Chris Wilson @ 2015-05-22 6:22 ` Jani Nikula 2015-05-22 6:22 ` Jani Nikula 2015-05-22 9:03 ` Ville Syrjälä 2 siblings, 0 replies; 54+ messages in thread From: Jani Nikula @ 2015-05-22 6:22 UTC (permalink / raw) To: Chris Wilson, dri-devel Cc: Daniel Vetter, stable, Radek Dostál, Dave Airlie On Mon, 20 Apr 2015, Chris Wilson <chris@chris-wilson.co.uk> wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > A second issue sneaked into this patch is to add the cmdline mode mode > ahead of the absolute fallback 1024x768 mode. That is if the user has > specified a mode that we create as a fallback, we do not need to add a > second unused fallback mode. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > > Reported-by: Radek Dostál <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dostál <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/drm_modes.c | 2 +- > drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- > 2 files changed, 37 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 213b11ea69b5..13293e009990 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, > if (!mode) > return NULL; > > - mode->type |= DRM_MODE_TYPE_USERDEF; > + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; > drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); > return mode; > } > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 63503879a676..2ad8aaf46318 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -79,13 +79,46 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->probed_modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) > + continue; Would a drm_cmdline_mode_equal() or somesuch be helpful? There's two copies here, and another variant in drm_pick_cmdline_mode - which also checks interlace while this one doesn't - why? > + > + /* Remove the existing fake mode */ > + list_for_each_entry(mode, &connector->modes, head) { > + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) > + continue; > + > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) > + continue; > + > + list_del(&mode->head); > + drm_mode_destroy(connector->dev, mode); drm_mode_remove() > + break; > + } > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > count = (*connector_funcs->get_modes)(connector); > } > > + count += drm_helper_probe_add_cmdline_mode(connector); > if (count == 0 && connector->status == connector_status_connected) > count = drm_add_modes_noedid(connector, 1024, 768); > - count += drm_helper_probe_add_cmdline_mode(connector); Shouldn't this hunk be a separate patch? BR, Jani. > if (count == 0) > goto prune; > > -- > 2.1.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Jani Nikula, Intel Open Source Technology Center ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match @ 2015-05-22 6:22 ` Jani Nikula 0 siblings, 0 replies; 54+ messages in thread From: Jani Nikula @ 2015-05-22 6:22 UTC (permalink / raw) To: Chris Wilson, dri-devel Cc: Daniel Vetter, Dave Airlie, stable, Radek Dostál On Mon, 20 Apr 2015, Chris Wilson <chris@chris-wilson.co.uk> wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > A second issue sneaked into this patch is to add the cmdline mode mode > ahead of the absolute fallback 1024x768 mode. That is if the user has > specified a mode that we create as a fallback, we do not need to add a > second unused fallback mode. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > > Reported-by: Radek Dostál <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dostál <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/drm_modes.c | 2 +- > drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- > 2 files changed, 37 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 213b11ea69b5..13293e009990 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, > if (!mode) > return NULL; > > - mode->type |= DRM_MODE_TYPE_USERDEF; > + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; > drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); > return mode; > } > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 63503879a676..2ad8aaf46318 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -79,13 +79,46 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->probed_modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) > + continue; Would a drm_cmdline_mode_equal() or somesuch be helpful? There's two copies here, and another variant in drm_pick_cmdline_mode - which also checks interlace while this one doesn't - why? > + > + /* Remove the existing fake mode */ > + list_for_each_entry(mode, &connector->modes, head) { > + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) > + continue; > + > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) > + continue; > + > + list_del(&mode->head); > + drm_mode_destroy(connector->dev, mode); drm_mode_remove() > + break; > + } > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > count = (*connector_funcs->get_modes)(connector); > } > > + count += drm_helper_probe_add_cmdline_mode(connector); > if (count == 0 && connector->status == connector_status_connected) > count = drm_add_modes_noedid(connector, 1024, 768); > - count += drm_helper_probe_add_cmdline_mode(connector); Shouldn't this hunk be a separate patch? BR, Jani. > if (count == 0) > goto prune; > > -- > 2.1.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match 2015-04-20 13:28 ` [PATCH v2] " Chris Wilson @ 2015-05-22 9:03 ` Ville Syrjälä 2015-05-22 6:22 ` Jani Nikula 2015-05-22 9:03 ` Ville Syrjälä 2 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2015-05-22 9:03 UTC (permalink / raw) To: Chris Wilson Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Mon, Apr 20, 2015 at 02:28:56PM +0100, Chris Wilson wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > A second issue sneaked into this patch is to add the cmdline mode mode > ahead of the absolute fallback 1024x768 mode. That is if the user has > specified a mode that we create as a fallback, we do not need to add a > second unused fallback mode. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > > Reported-by: Radek Dost�l <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dost�l <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/drm_modes.c | 2 +- > drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- > 2 files changed, 37 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 213b11ea69b5..13293e009990 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, > if (!mode) > return NULL; > > - mode->type |= DRM_MODE_TYPE_USERDEF; > + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; Why do we need the DRIVER flag here? > drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); > return mode; > } > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 63503879a676..2ad8aaf46318 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -79,13 +79,46 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->probed_modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) > + continue; > + > + /* Remove the existing fake mode */ > + list_for_each_entry(mode, &connector->modes, head) { > + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) > + continue; Doesn't drm_mode_connector_list_update() kill it from the list eventually if there's no matching mode present on the probed_modes list? > + > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) > + continue; > + > + list_del(&mode->head); > + drm_mode_destroy(connector->dev, mode); > + break; > + } > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > count = (*connector_funcs->get_modes)(connector); > } > > + count += drm_helper_probe_add_cmdline_mode(connector); > if (count == 0 && connector->status == connector_status_connected) > count = drm_add_modes_noedid(connector, 1024, 768); > - count += drm_helper_probe_add_cmdline_mode(connector); Hmm. This means drm_add_modes_noedid() will never be called if the cmdline mode is present, and hence the mode list will only ever have that single mode user specified mode. Not sure if that can be considered a real problem or not. > if (count == 0) > goto prune; > > -- > 2.1.4 -- Ville Syrj�l� Intel OTC ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match @ 2015-05-22 9:03 ` Ville Syrjälä 0 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2015-05-22 9:03 UTC (permalink / raw) To: Chris Wilson Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Mon, Apr 20, 2015 at 02:28:56PM +0100, Chris Wilson wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > A second issue sneaked into this patch is to add the cmdline mode mode > ahead of the absolute fallback 1024x768 mode. That is if the user has > specified a mode that we create as a fallback, we do not need to add a > second unused fallback mode. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > > Reported-by: Radek Dostál <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dostál <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/drm_modes.c | 2 +- > drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- > 2 files changed, 37 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 213b11ea69b5..13293e009990 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, > if (!mode) > return NULL; > > - mode->type |= DRM_MODE_TYPE_USERDEF; > + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; Why do we need the DRIVER flag here? > drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); > return mode; > } > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 63503879a676..2ad8aaf46318 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -79,13 +79,46 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->probed_modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) > + continue; > + > + /* Remove the existing fake mode */ > + list_for_each_entry(mode, &connector->modes, head) { > + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) > + continue; Doesn't drm_mode_connector_list_update() kill it from the list eventually if there's no matching mode present on the probed_modes list? > + > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) > + continue; > + > + list_del(&mode->head); > + drm_mode_destroy(connector->dev, mode); > + break; > + } > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > count = (*connector_funcs->get_modes)(connector); > } > > + count += drm_helper_probe_add_cmdline_mode(connector); > if (count == 0 && connector->status == connector_status_connected) > count = drm_add_modes_noedid(connector, 1024, 768); > - count += drm_helper_probe_add_cmdline_mode(connector); Hmm. This means drm_add_modes_noedid() will never be called if the cmdline mode is present, and hence the mode list will only ever have that single mode user specified mode. Not sure if that can be considered a real problem or not. > if (count == 0) > goto prune; > > -- > 2.1.4 -- Ville Syrjälä Intel OTC ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match 2015-05-22 9:03 ` Ville Syrjälä @ 2015-05-22 9:54 ` Chris Wilson -1 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-05-22 9:54 UTC (permalink / raw) To: Ville Syrjälä Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Fri, May 22, 2015 at 12:03:27PM +0300, Ville Syrj�l� wrote: > On Mon, Apr 20, 2015 at 02:28:56PM +0100, Chris Wilson wrote: > > The intention of using video=<connector>:<mode> is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > new mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > mode rather the native mode during fb_helper->inital_config() and so > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > This invalid fake mode would also be exported to userspace, who > > potentially may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible, or similarly for > > CVT. > > > > A second issue sneaked into this patch is to add the cmdline mode mode > > ahead of the absolute fallback 1024x768 mode. That is if the user has > > specified a mode that we create as a fallback, we do not need to add a > > second unused fallback mode. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > v2: Explicitly delete our earlier cmdline mode > > > > Reported-by: Radek Dost�l <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dost�l <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/drm_modes.c | 2 +- > > drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- > > 2 files changed, 37 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > > index 213b11ea69b5..13293e009990 100644 > > --- a/drivers/gpu/drm/drm_modes.c > > +++ b/drivers/gpu/drm/drm_modes.c > > @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, > > if (!mode) > > return NULL; > > > > - mode->type |= DRM_MODE_TYPE_USERDEF; > > + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; > > Why do we need the DRIVER flag here? So we can differentiate it from an equivalent mode added by the user later on. > > + /* Remove the existing fake mode */ > > + list_for_each_entry(mode, &connector->modes, head) { > > + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) > > + continue; > > Doesn't drm_mode_connector_list_update() kill it from the list > eventually if there's no matching mode present on the > probed_modes list? Hmm, that's what I thought I tried at first. If I remember correctly we had to set mode->status in order to prune it since drm_mode_connector_list_update() itself doesn't do the deletion. Using the mode->status was problematic, and the simplest way to do delete the original cmdline mode was by explicitly removing it ourselves. > > @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > > count = (*connector_funcs->get_modes)(connector); > > } > > > > + count += drm_helper_probe_add_cmdline_mode(connector); > > if (count == 0 && connector->status == connector_status_connected) > > count = drm_add_modes_noedid(connector, 1024, 768); > > - count += drm_helper_probe_add_cmdline_mode(connector); > > Hmm. This means drm_add_modes_noedid() will never be called if the > cmdline mode is present, and hence the mode list will only ever have > that single mode user specified mode. Not sure if that can be considered > a real problem or not. I consider it to a real problem as it goes against my expectations as a user, that is if I specify a mode to use, I expect that mode to be used. Doesn't need to be in this patch though. -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match @ 2015-05-22 9:54 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2015-05-22 9:54 UTC (permalink / raw) To: Ville Syrjälä Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Fri, May 22, 2015 at 12:03:27PM +0300, Ville Syrjälä wrote: > On Mon, Apr 20, 2015 at 02:28:56PM +0100, Chris Wilson wrote: > > The intention of using video=<connector>:<mode> is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > new mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > mode rather the native mode during fb_helper->inital_config() and so > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > This invalid fake mode would also be exported to userspace, who > > potentially may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible, or similarly for > > CVT. > > > > A second issue sneaked into this patch is to add the cmdline mode mode > > ahead of the absolute fallback 1024x768 mode. That is if the user has > > specified a mode that we create as a fallback, we do not need to add a > > second unused fallback mode. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > v2: Explicitly delete our earlier cmdline mode > > > > Reported-by: Radek Dostál <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dostál <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/drm_modes.c | 2 +- > > drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- > > 2 files changed, 37 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > > index 213b11ea69b5..13293e009990 100644 > > --- a/drivers/gpu/drm/drm_modes.c > > +++ b/drivers/gpu/drm/drm_modes.c > > @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, > > if (!mode) > > return NULL; > > > > - mode->type |= DRM_MODE_TYPE_USERDEF; > > + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; > > Why do we need the DRIVER flag here? So we can differentiate it from an equivalent mode added by the user later on. > > + /* Remove the existing fake mode */ > > + list_for_each_entry(mode, &connector->modes, head) { > > + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) > > + continue; > > Doesn't drm_mode_connector_list_update() kill it from the list > eventually if there's no matching mode present on the > probed_modes list? Hmm, that's what I thought I tried at first. If I remember correctly we had to set mode->status in order to prune it since drm_mode_connector_list_update() itself doesn't do the deletion. Using the mode->status was problematic, and the simplest way to do delete the original cmdline mode was by explicitly removing it ourselves. > > @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > > count = (*connector_funcs->get_modes)(connector); > > } > > > > + count += drm_helper_probe_add_cmdline_mode(connector); > > if (count == 0 && connector->status == connector_status_connected) > > count = drm_add_modes_noedid(connector, 1024, 768); > > - count += drm_helper_probe_add_cmdline_mode(connector); > > Hmm. This means drm_add_modes_noedid() will never be called if the > cmdline mode is present, and hence the mode list will only ever have > that single mode user specified mode. Not sure if that can be considered > a real problem or not. I consider it to a real problem as it goes against my expectations as a user, that is if I specify a mode to use, I expect that mode to be used. Doesn't need to be in this patch though. -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match 2015-05-22 9:54 ` Chris Wilson @ 2015-05-22 11:30 ` Ville Syrjälä -1 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2015-05-22 11:30 UTC (permalink / raw) To: Chris Wilson, dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Fri, May 22, 2015 at 10:54:12AM +0100, Chris Wilson wrote: > On Fri, May 22, 2015 at 12:03:27PM +0300, Ville Syrj�l� wrote: > > On Mon, Apr 20, 2015 at 02:28:56PM +0100, Chris Wilson wrote: > > > The intention of using video=<connector>:<mode> is primarily to select > > > the user's preferred resolution at startup. Currently we always create a > > > new mode irrespective of whether the monitor has a native mode at the > > > desired resolution. This has the issue that we may then select the fake > > > mode rather the native mode during fb_helper->inital_config() and so > > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > > This invalid fake mode would also be exported to userspace, who > > > potentially may make the same mistake. > > > > > > To avoid this issue, we filter out the added command line mode if we > > > detect the desired resolution (and clock if specified) amongst the > > > probed modes. This fixes the immediate problem of adding a duplicate > > > mode, but perhaps more generically we should avoid adding a GTF mode if > > > the monitor has an EDID that is not GTF-compatible, or similarly for > > > CVT. > > > > > > A second issue sneaked into this patch is to add the cmdline mode mode > > > ahead of the absolute fallback 1024x768 mode. That is if the user has > > > specified a mode that we create as a fallback, we do not need to add a > > > second unused fallback mode. > > > > > > Fixes regression from > > > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > > > v2: Explicitly delete our earlier cmdline mode > > > > > > Reported-by: Radek Dost�l <rd@radekdostal.com> > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > > Cc: Radek Dost�l <rd@radekdostal.com> > > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > > Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com> > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > Cc: dri-devel@lists.freedesktop.org > > > Cc: Julia Lemire <jlemire@matrox.com> > > > Cc: Dave Airlie <airlied@redhat.com> > > > Cc: stable@vger.kernel.org > > > --- > > > drivers/gpu/drm/drm_modes.c | 2 +- > > > drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- > > > 2 files changed, 37 insertions(+), 4 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > > > index 213b11ea69b5..13293e009990 100644 > > > --- a/drivers/gpu/drm/drm_modes.c > > > +++ b/drivers/gpu/drm/drm_modes.c > > > @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, > > > if (!mode) > > > return NULL; > > > > > > - mode->type |= DRM_MODE_TYPE_USERDEF; > > > + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; > > > > Why do we need the DRIVER flag here? > > So we can differentiate it from an equivalent mode added by the user > later on. Users can't actually add modes to the connector mode list. > > > > + /* Remove the existing fake mode */ > > > + list_for_each_entry(mode, &connector->modes, head) { > > > + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) > > > + continue; > > > > Doesn't drm_mode_connector_list_update() kill it from the list > > eventually if there's no matching mode present on the > > probed_modes list? > > Hmm, that's what I thought I tried at first. If I remember correctly we > had to set mode->status in order to prune it since > drm_mode_connector_list_update() itself doesn't do the deletion. Using > the mode->status was problematic, and the simplest way to do delete the > original cmdline mode was by explicitly removing it ourselves. Oh right drm_mode_connector_list_update() only removes the duplicates. And the the mode->status handling is a bit strange. Not helped by the fact that MODE_OK is zero so all kzalloced modes start out as MODE_OK. While I was doing the mode santiy check stuff I did consider that I should change new modes to be MODE_UNVERIFIED by default, but I was feeling lazy and decided against it in the end. So yeah getting the normal prune mechanism to kill the mode would required some rework to the mode status->handling probably, so seems like a somewhat bigger effort. > > > > @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > > > count = (*connector_funcs->get_modes)(connector); > > > } > > > > > > + count += drm_helper_probe_add_cmdline_mode(connector); > > > if (count == 0 && connector->status == connector_status_connected) > > > count = drm_add_modes_noedid(connector, 1024, 768); > > > - count += drm_helper_probe_add_cmdline_mode(connector); > > > > Hmm. This means drm_add_modes_noedid() will never be called if the > > cmdline mode is present, and hence the mode list will only ever have > > that single mode user specified mode. Not sure if that can be considered > > a real problem or not. > > I consider it to a real problem as it goes against my expectations as a > user, that is if I specify a mode to use, I expect that mode to be used. > Doesn't need to be in this patch though. Yeah, I was just thinking it might be nice to have the other dmt modes still be on the list. But I don't really mind at this time since I try to avoid cables that don't connect the ddc pins. -- Ville Syrj�l� Intel OTC ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2] drm: Only create a cmdline mode if no probed modes match @ 2015-05-22 11:30 ` Ville Syrjälä 0 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2015-05-22 11:30 UTC (permalink / raw) To: Chris Wilson, dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Fri, May 22, 2015 at 10:54:12AM +0100, Chris Wilson wrote: > On Fri, May 22, 2015 at 12:03:27PM +0300, Ville Syrjälä wrote: > > On Mon, Apr 20, 2015 at 02:28:56PM +0100, Chris Wilson wrote: > > > The intention of using video=<connector>:<mode> is primarily to select > > > the user's preferred resolution at startup. Currently we always create a > > > new mode irrespective of whether the monitor has a native mode at the > > > desired resolution. This has the issue that we may then select the fake > > > mode rather the native mode during fb_helper->inital_config() and so > > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > > This invalid fake mode would also be exported to userspace, who > > > potentially may make the same mistake. > > > > > > To avoid this issue, we filter out the added command line mode if we > > > detect the desired resolution (and clock if specified) amongst the > > > probed modes. This fixes the immediate problem of adding a duplicate > > > mode, but perhaps more generically we should avoid adding a GTF mode if > > > the monitor has an EDID that is not GTF-compatible, or similarly for > > > CVT. > > > > > > A second issue sneaked into this patch is to add the cmdline mode mode > > > ahead of the absolute fallback 1024x768 mode. That is if the user has > > > specified a mode that we create as a fallback, we do not need to add a > > > second unused fallback mode. > > > > > > Fixes regression from > > > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > > > v2: Explicitly delete our earlier cmdline mode > > > > > > Reported-by: Radek Dostál <rd@radekdostal.com> > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > > Cc: Radek Dostál <rd@radekdostal.com> > > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > Cc: dri-devel@lists.freedesktop.org > > > Cc: Julia Lemire <jlemire@matrox.com> > > > Cc: Dave Airlie <airlied@redhat.com> > > > Cc: stable@vger.kernel.org > > > --- > > > drivers/gpu/drm/drm_modes.c | 2 +- > > > drivers/gpu/drm/drm_probe_helper.c | 39 +++++++++++++++++++++++++++++++++++--- > > > 2 files changed, 37 insertions(+), 4 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > > > index 213b11ea69b5..13293e009990 100644 > > > --- a/drivers/gpu/drm/drm_modes.c > > > +++ b/drivers/gpu/drm/drm_modes.c > > > @@ -1400,7 +1400,7 @@ drm_mode_create_from_cmdline_mode(struct drm_device *dev, > > > if (!mode) > > > return NULL; > > > > > > - mode->type |= DRM_MODE_TYPE_USERDEF; > > > + mode->type |= DRM_MODE_TYPE_USERDEF | DRM_MODE_TYPE_DRIVER; > > > > Why do we need the DRIVER flag here? > > So we can differentiate it from an equivalent mode added by the user > later on. Users can't actually add modes to the connector mode list. > > > > + /* Remove the existing fake mode */ > > > + list_for_each_entry(mode, &connector->modes, head) { > > > + if ((mode->type & (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) != (DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_USERDEF)) > > > + continue; > > > > Doesn't drm_mode_connector_list_update() kill it from the list > > eventually if there's no matching mode present on the > > probed_modes list? > > Hmm, that's what I thought I tried at first. If I remember correctly we > had to set mode->status in order to prune it since > drm_mode_connector_list_update() itself doesn't do the deletion. Using > the mode->status was problematic, and the simplest way to do delete the > original cmdline mode was by explicitly removing it ourselves. Oh right drm_mode_connector_list_update() only removes the duplicates. And the the mode->status handling is a bit strange. Not helped by the fact that MODE_OK is zero so all kzalloced modes start out as MODE_OK. While I was doing the mode santiy check stuff I did consider that I should change new modes to be MODE_UNVERIFIED by default, but I was feeling lazy and decided against it in the end. So yeah getting the normal prune mechanism to kill the mode would required some rework to the mode status->handling probably, so seems like a somewhat bigger effort. > > > > @@ -179,9 +212,9 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect > > > count = (*connector_funcs->get_modes)(connector); > > > } > > > > > > + count += drm_helper_probe_add_cmdline_mode(connector); > > > if (count == 0 && connector->status == connector_status_connected) > > > count = drm_add_modes_noedid(connector, 1024, 768); > > > - count += drm_helper_probe_add_cmdline_mode(connector); > > > > Hmm. This means drm_add_modes_noedid() will never be called if the > > cmdline mode is present, and hence the mode list will only ever have > > that single mode user specified mode. Not sure if that can be considered > > a real problem or not. > > I consider it to a real problem as it goes against my expectations as a > user, that is if I specify a mode to use, I expect that mode to be used. > Doesn't need to be in this patch though. Yeah, I was just thinking it might be nice to have the other dmt modes still be on the list. But I don't really mind at this time since I try to avoid cables that don't connect the ddc pins. -- Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 54+ messages in thread
* [PATCH v3] drm: Only create a cmdline mode if no probed modes match 2015-04-20 12:26 ` [PATCH] drm: Only create a cmdline mode if no probed modes match Chris Wilson @ 2016-06-01 9:34 ` Chris Wilson 2016-06-01 9:34 ` Chris Wilson 1 sibling, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-01 9:34 UTC (permalink / raw) To: dri-devel Cc: Chris Wilson, Radek Dostál, Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable The intention of using video=<connector>:<mode> is primarily to select the user's preferred resolution at startup. Currently we always create a new mode irrespective of whether the monitor has a native mode at the desired resolution. This has the issue that we may then select the fake mode rather the native mode during fb_helper->inital_config() and so if the fake mode is invalid we then end up with a loss of signal. Oops. This invalid fake mode would also be exported to userspace, who potentially may make the same mistake. To avoid this issue, we filter out the added command line mode if we detect the desired resolution (and clock if specified) amongst the probed modes. This fixes the immediate problem of adding a duplicate mode, but perhaps more generically we should avoid adding a GTF mode if the monitor has an EDID that is not GTF-compatible, or similarly for CVT. Fixes regression from commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 6 10:08:32 2014 +0200 drm: Perform cmdline mode parsing during connector initialisation that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). v2: Explicitly delete our earlier cmdline mode v3: Mode pruning should now be sufficient to delete stale cmdline modes Reported-by: Radek Dostál <rd@radekdostal.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Radek Dostál <rd@radekdostal.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: dri-devel@lists.freedesktop.org Cc: Julia Lemire <jlemire@matrox.com> Cc: Dave Airlie <airlied@redhat.com> Cc: stable@vger.kernel.org --- drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 0329080d7f7c..a705ed12c062 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->probed_modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified && + mode->vrefresh != cmdline_mode->refresh) + continue; + + return 0; + } + mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; -- 2.8.1 ^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v3] drm: Only create a cmdline mode if no probed modes match @ 2016-06-01 9:34 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-01 9:34 UTC (permalink / raw) To: dri-devel Cc: Daniel Vetter, Jesse Barnes, stable, Radek Dostál, Dave Airlie The intention of using video=<connector>:<mode> is primarily to select the user's preferred resolution at startup. Currently we always create a new mode irrespective of whether the monitor has a native mode at the desired resolution. This has the issue that we may then select the fake mode rather the native mode during fb_helper->inital_config() and so if the fake mode is invalid we then end up with a loss of signal. Oops. This invalid fake mode would also be exported to userspace, who potentially may make the same mistake. To avoid this issue, we filter out the added command line mode if we detect the desired resolution (and clock if specified) amongst the probed modes. This fixes the immediate problem of adding a duplicate mode, but perhaps more generically we should avoid adding a GTF mode if the monitor has an EDID that is not GTF-compatible, or similarly for CVT. Fixes regression from commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 6 10:08:32 2014 +0200 drm: Perform cmdline mode parsing during connector initialisation that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). v2: Explicitly delete our earlier cmdline mode v3: Mode pruning should now be sufficient to delete stale cmdline modes Reported-by: Radek Dostál <rd@radekdostal.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Radek Dostál <rd@radekdostal.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: dri-devel@lists.freedesktop.org Cc: Julia Lemire <jlemire@matrox.com> Cc: Dave Airlie <airlied@redhat.com> Cc: stable@vger.kernel.org --- drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 0329080d7f7c..a705ed12c062 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->probed_modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified && + mode->vrefresh != cmdline_mode->refresh) + continue; + + return 0; + } + mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; -- 2.8.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCH v3] drm: Only create a cmdline mode if no probed modes match 2016-06-01 9:34 ` Chris Wilson @ 2016-06-01 9:43 ` Ville Syrjälä -1 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2016-06-01 9:43 UTC (permalink / raw) To: Chris Wilson Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Wed, Jun 01, 2016 at 10:34:36AM +0100, Chris Wilson wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > v3: Mode pruning should now be sufficient to delete stale cmdline modes > > Reported-by: Radek Dost�l <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dost�l <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- > 1 file changed, 17 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 0329080d7f7c..a705ed12c062 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->probed_modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) I think we might not have .vrefresh populated for the probed modes. We update .vrefresh only for the modes left on the real mode list in the end. > + continue; > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > -- > 2.8.1 -- Ville Syrj�l� Intel OTC ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v3] drm: Only create a cmdline mode if no probed modes match @ 2016-06-01 9:43 ` Ville Syrjälä 0 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2016-06-01 9:43 UTC (permalink / raw) To: Chris Wilson Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Wed, Jun 01, 2016 at 10:34:36AM +0100, Chris Wilson wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > v3: Mode pruning should now be sufficient to delete stale cmdline modes > > Reported-by: Radek Dostál <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dostál <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- > 1 file changed, 17 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 0329080d7f7c..a705ed12c062 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->probed_modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified && > + mode->vrefresh != cmdline_mode->refresh) I think we might not have .vrefresh populated for the probed modes. We update .vrefresh only for the modes left on the real mode list in the end. > + continue; > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > -- > 2.8.1 -- Ville Syrjälä Intel OTC ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v3] drm: Only create a cmdline mode if no probed modes match 2016-06-01 9:43 ` Ville Syrjälä @ 2016-06-01 9:46 ` Chris Wilson -1 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-01 9:46 UTC (permalink / raw) To: Ville Syrjälä Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Wed, Jun 01, 2016 at 12:43:53PM +0300, Ville Syrj�l� wrote: > On Wed, Jun 01, 2016 at 10:34:36AM +0100, Chris Wilson wrote: > > The intention of using video=<connector>:<mode> is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > new mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > mode rather the native mode during fb_helper->inital_config() and so > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > This invalid fake mode would also be exported to userspace, who > > potentially may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible, or similarly for > > CVT. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > v2: Explicitly delete our earlier cmdline mode > > v3: Mode pruning should now be sufficient to delete stale cmdline modes > > > > Reported-by: Radek Dost�l <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dost�l <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- > > 1 file changed, 17 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > > index 0329080d7f7c..a705ed12c062 100644 > > --- a/drivers/gpu/drm/drm_probe_helper.c > > +++ b/drivers/gpu/drm/drm_probe_helper.c > > @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > > { > > + struct drm_cmdline_mode *cmdline_mode; > > struct drm_display_mode *mode; > > > > - if (!connector->cmdline_mode.specified) > > + cmdline_mode = &connector->cmdline_mode; > > + if (!cmdline_mode->specified) > > return 0; > > > > + /* Only add a GTF mode if we find no matching probed modes */ > > + list_for_each_entry(mode, &connector->probed_modes, head) { > > + if (mode->hdisplay != cmdline_mode->xres || > > + mode->vdisplay != cmdline_mode->yres) > > + continue; > > + > > + if (cmdline_mode->refresh_specified && > > + mode->vrefresh != cmdline_mode->refresh) > > I think we might not have .vrefresh populated for the probed modes. > We update .vrefresh only for the modes left on the real mode list in the > end. In that case, if cmdline_mode->refresh_specified keep and leave a comment suggesting we might be able to do better :) -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v3] drm: Only create a cmdline mode if no probed modes match @ 2016-06-01 9:46 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-01 9:46 UTC (permalink / raw) To: Ville Syrjälä Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Wed, Jun 01, 2016 at 12:43:53PM +0300, Ville Syrjälä wrote: > On Wed, Jun 01, 2016 at 10:34:36AM +0100, Chris Wilson wrote: > > The intention of using video=<connector>:<mode> is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > new mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > mode rather the native mode during fb_helper->inital_config() and so > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > This invalid fake mode would also be exported to userspace, who > > potentially may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible, or similarly for > > CVT. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > v2: Explicitly delete our earlier cmdline mode > > v3: Mode pruning should now be sufficient to delete stale cmdline modes > > > > Reported-by: Radek Dostál <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dostál <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- > > 1 file changed, 17 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > > index 0329080d7f7c..a705ed12c062 100644 > > --- a/drivers/gpu/drm/drm_probe_helper.c > > +++ b/drivers/gpu/drm/drm_probe_helper.c > > @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > > { > > + struct drm_cmdline_mode *cmdline_mode; > > struct drm_display_mode *mode; > > > > - if (!connector->cmdline_mode.specified) > > + cmdline_mode = &connector->cmdline_mode; > > + if (!cmdline_mode->specified) > > return 0; > > > > + /* Only add a GTF mode if we find no matching probed modes */ > > + list_for_each_entry(mode, &connector->probed_modes, head) { > > + if (mode->hdisplay != cmdline_mode->xres || > > + mode->vdisplay != cmdline_mode->yres) > > + continue; > > + > > + if (cmdline_mode->refresh_specified && > > + mode->vrefresh != cmdline_mode->refresh) > > I think we might not have .vrefresh populated for the probed modes. > We update .vrefresh only for the modes left on the real mode list in the > end. In that case, if cmdline_mode->refresh_specified keep and leave a comment suggesting we might be able to do better :) -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v3] drm: Only create a cmdline mode if no probed modes match 2016-06-01 9:43 ` Ville Syrjälä @ 2016-06-01 9:47 ` Chris Wilson -1 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-01 9:47 UTC (permalink / raw) To: Ville Syrjälä Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Wed, Jun 01, 2016 at 12:43:53PM +0300, Ville Syrj�l� wrote: > On Wed, Jun 01, 2016 at 10:34:36AM +0100, Chris Wilson wrote: > > The intention of using video=<connector>:<mode> is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > new mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > mode rather the native mode during fb_helper->inital_config() and so > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > This invalid fake mode would also be exported to userspace, who > > potentially may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible, or similarly for > > CVT. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > v2: Explicitly delete our earlier cmdline mode > > v3: Mode pruning should now be sufficient to delete stale cmdline modes > > > > Reported-by: Radek Dost�l <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dost�l <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- > > 1 file changed, 17 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > > index 0329080d7f7c..a705ed12c062 100644 > > --- a/drivers/gpu/drm/drm_probe_helper.c > > +++ b/drivers/gpu/drm/drm_probe_helper.c > > @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > > { > > + struct drm_cmdline_mode *cmdline_mode; > > struct drm_display_mode *mode; > > > > - if (!connector->cmdline_mode.specified) > > + cmdline_mode = &connector->cmdline_mode; > > + if (!cmdline_mode->specified) > > return 0; > > > > + /* Only add a GTF mode if we find no matching probed modes */ > > + list_for_each_entry(mode, &connector->probed_modes, head) { > > + if (mode->hdisplay != cmdline_mode->xres || > > + mode->vdisplay != cmdline_mode->yres) > > + continue; > > + > > + if (cmdline_mode->refresh_specified && > > + mode->vrefresh != cmdline_mode->refresh) > > I think we might not have .vrefresh populated for the probed modes. > We update .vrefresh only for the modes left on the real mode list in the > end. Or drm_mode_vrefresh() ? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v3] drm: Only create a cmdline mode if no probed modes match @ 2016-06-01 9:47 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-01 9:47 UTC (permalink / raw) To: Ville Syrjälä Cc: dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Wed, Jun 01, 2016 at 12:43:53PM +0300, Ville Syrjälä wrote: > On Wed, Jun 01, 2016 at 10:34:36AM +0100, Chris Wilson wrote: > > The intention of using video=<connector>:<mode> is primarily to select > > the user's preferred resolution at startup. Currently we always create a > > new mode irrespective of whether the monitor has a native mode at the > > desired resolution. This has the issue that we may then select the fake > > mode rather the native mode during fb_helper->inital_config() and so > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > This invalid fake mode would also be exported to userspace, who > > potentially may make the same mistake. > > > > To avoid this issue, we filter out the added command line mode if we > > detect the desired resolution (and clock if specified) amongst the > > probed modes. This fixes the immediate problem of adding a duplicate > > mode, but perhaps more generically we should avoid adding a GTF mode if > > the monitor has an EDID that is not GTF-compatible, or similarly for > > CVT. > > > > Fixes regression from > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > v2: Explicitly delete our earlier cmdline mode > > v3: Mode pruning should now be sufficient to delete stale cmdline modes > > > > Reported-by: Radek Dostál <rd@radekdostal.com> > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Radek Dostál <rd@radekdostal.com> > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: dri-devel@lists.freedesktop.org > > Cc: Julia Lemire <jlemire@matrox.com> > > Cc: Dave Airlie <airlied@redhat.com> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- > > 1 file changed, 17 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > > index 0329080d7f7c..a705ed12c062 100644 > > --- a/drivers/gpu/drm/drm_probe_helper.c > > +++ b/drivers/gpu/drm/drm_probe_helper.c > > @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > > { > > + struct drm_cmdline_mode *cmdline_mode; > > struct drm_display_mode *mode; > > > > - if (!connector->cmdline_mode.specified) > > + cmdline_mode = &connector->cmdline_mode; > > + if (!cmdline_mode->specified) > > return 0; > > > > + /* Only add a GTF mode if we find no matching probed modes */ > > + list_for_each_entry(mode, &connector->probed_modes, head) { > > + if (mode->hdisplay != cmdline_mode->xres || > > + mode->vdisplay != cmdline_mode->yres) > > + continue; > > + > > + if (cmdline_mode->refresh_specified && > > + mode->vrefresh != cmdline_mode->refresh) > > I think we might not have .vrefresh populated for the probed modes. > We update .vrefresh only for the modes left on the real mode list in the > end. Or drm_mode_vrefresh() ? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v3] drm: Only create a cmdline mode if no probed modes match 2016-06-01 9:47 ` Chris Wilson @ 2016-06-01 9:56 ` Ville Syrjälä -1 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2016-06-01 9:56 UTC (permalink / raw) To: Chris Wilson, dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Wed, Jun 01, 2016 at 10:47:51AM +0100, Chris Wilson wrote: > On Wed, Jun 01, 2016 at 12:43:53PM +0300, Ville Syrj�l� wrote: > > On Wed, Jun 01, 2016 at 10:34:36AM +0100, Chris Wilson wrote: > > > The intention of using video=<connector>:<mode> is primarily to select > > > the user's preferred resolution at startup. Currently we always create a > > > new mode irrespective of whether the monitor has a native mode at the > > > desired resolution. This has the issue that we may then select the fake > > > mode rather the native mode during fb_helper->inital_config() and so > > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > > This invalid fake mode would also be exported to userspace, who > > > potentially may make the same mistake. > > > > > > To avoid this issue, we filter out the added command line mode if we > > > detect the desired resolution (and clock if specified) amongst the > > > probed modes. This fixes the immediate problem of adding a duplicate > > > mode, but perhaps more generically we should avoid adding a GTF mode if > > > the monitor has an EDID that is not GTF-compatible, or similarly for > > > CVT. > > > > > > Fixes regression from > > > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > > > v2: Explicitly delete our earlier cmdline mode > > > v3: Mode pruning should now be sufficient to delete stale cmdline modes > > > > > > Reported-by: Radek Dost�l <rd@radekdostal.com> > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > > Cc: Radek Dost�l <rd@radekdostal.com> > > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > > Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com> > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > Cc: dri-devel@lists.freedesktop.org > > > Cc: Julia Lemire <jlemire@matrox.com> > > > Cc: Dave Airlie <airlied@redhat.com> > > > Cc: stable@vger.kernel.org > > > --- > > > drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- > > > 1 file changed, 17 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > > > index 0329080d7f7c..a705ed12c062 100644 > > > --- a/drivers/gpu/drm/drm_probe_helper.c > > > +++ b/drivers/gpu/drm/drm_probe_helper.c > > > @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > > > > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > > > { > > > + struct drm_cmdline_mode *cmdline_mode; > > > struct drm_display_mode *mode; > > > > > > - if (!connector->cmdline_mode.specified) > > > + cmdline_mode = &connector->cmdline_mode; > > > + if (!cmdline_mode->specified) > > > return 0; > > > > > > + /* Only add a GTF mode if we find no matching probed modes */ > > > + list_for_each_entry(mode, &connector->probed_modes, head) { > > > + if (mode->hdisplay != cmdline_mode->xres || > > > + mode->vdisplay != cmdline_mode->yres) > > > + continue; > > > + > > > + if (cmdline_mode->refresh_specified && > > > + mode->vrefresh != cmdline_mode->refresh) > > > > I think we might not have .vrefresh populated for the probed modes. > > We update .vrefresh only for the modes left on the real mode list in the > > end. > > Or drm_mode_vrefresh() ? That should work. -- Ville Syrj�l� Intel OTC ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v3] drm: Only create a cmdline mode if no probed modes match @ 2016-06-01 9:56 ` Ville Syrjälä 0 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2016-06-01 9:56 UTC (permalink / raw) To: Chris Wilson, dri-devel, Radek Dostál, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Wed, Jun 01, 2016 at 10:47:51AM +0100, Chris Wilson wrote: > On Wed, Jun 01, 2016 at 12:43:53PM +0300, Ville Syrjälä wrote: > > On Wed, Jun 01, 2016 at 10:34:36AM +0100, Chris Wilson wrote: > > > The intention of using video=<connector>:<mode> is primarily to select > > > the user's preferred resolution at startup. Currently we always create a > > > new mode irrespective of whether the monitor has a native mode at the > > > desired resolution. This has the issue that we may then select the fake > > > mode rather the native mode during fb_helper->inital_config() and so > > > if the fake mode is invalid we then end up with a loss of signal. Oops. > > > This invalid fake mode would also be exported to userspace, who > > > potentially may make the same mistake. > > > > > > To avoid this issue, we filter out the added command line mode if we > > > detect the desired resolution (and clock if specified) amongst the > > > probed modes. This fixes the immediate problem of adding a duplicate > > > mode, but perhaps more generically we should avoid adding a GTF mode if > > > the monitor has an EDID that is not GTF-compatible, or similarly for > > > CVT. > > > > > > Fixes regression from > > > > > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > > Author: Chris Wilson <chris@chris-wilson.co.uk> > > > Date: Wed Aug 6 10:08:32 2014 +0200 > > > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > > > v2: Explicitly delete our earlier cmdline mode > > > v3: Mode pruning should now be sufficient to delete stale cmdline modes > > > > > > Reported-by: Radek Dostál <rd@radekdostal.com> > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > > Cc: Radek Dostál <rd@radekdostal.com> > > > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > Cc: dri-devel@lists.freedesktop.org > > > Cc: Julia Lemire <jlemire@matrox.com> > > > Cc: Dave Airlie <airlied@redhat.com> > > > Cc: stable@vger.kernel.org > > > --- > > > drivers/gpu/drm/drm_probe_helper.c | 19 +++++++++++++++++-- > > > 1 file changed, 17 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > > > index 0329080d7f7c..a705ed12c062 100644 > > > --- a/drivers/gpu/drm/drm_probe_helper.c > > > +++ b/drivers/gpu/drm/drm_probe_helper.c > > > @@ -82,13 +82,28 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > > > > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > > > { > > > + struct drm_cmdline_mode *cmdline_mode; > > > struct drm_display_mode *mode; > > > > > > - if (!connector->cmdline_mode.specified) > > > + cmdline_mode = &connector->cmdline_mode; > > > + if (!cmdline_mode->specified) > > > return 0; > > > > > > + /* Only add a GTF mode if we find no matching probed modes */ > > > + list_for_each_entry(mode, &connector->probed_modes, head) { > > > + if (mode->hdisplay != cmdline_mode->xres || > > > + mode->vdisplay != cmdline_mode->yres) > > > + continue; > > > + > > > + if (cmdline_mode->refresh_specified && > > > + mode->vrefresh != cmdline_mode->refresh) > > > > I think we might not have .vrefresh populated for the probed modes. > > We update .vrefresh only for the modes left on the real mode list in the > > end. > > Or drm_mode_vrefresh() ? That should work. -- Ville Syrjälä Intel OTC ^ permalink raw reply [flat|nested] 54+ messages in thread
* [PATCH v4] drm: Only create a cmdline mode if no probed modes match 2016-06-01 9:43 ` Ville Syrjälä @ 2016-06-01 9:50 ` Chris Wilson -1 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-01 9:50 UTC (permalink / raw) To: dri-devel Cc: Chris Wilson, Radek Dostál, Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable The intention of using video=<connector>:<mode> is primarily to select the user's preferred resolution at startup. Currently we always create a new mode irrespective of whether the monitor has a native mode at the desired resolution. This has the issue that we may then select the fake mode rather the native mode during fb_helper->inital_config() and so if the fake mode is invalid we then end up with a loss of signal. Oops. This invalid fake mode would also be exported to userspace, who potentially may make the same mistake. To avoid this issue, we filter out the added command line mode if we detect the desired resolution (and clock if specified) amongst the probed modes. This fixes the immediate problem of adding a duplicate mode, but perhaps more generically we should avoid adding a GTF mode if the monitor has an EDID that is not GTF-compatible, or similarly for CVT. Fixes regression from commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 6 10:08:32 2014 +0200 drm: Perform cmdline mode parsing during connector initialisation that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). v2: Explicitly delete our earlier cmdline mode v3: Mode pruning should now be sufficient to delete stale cmdline modes v4: Compute the vrefresh for the probed mode Reported-by: Radek Dostál <rd@radekdostal.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Radek Dostál <rd@radekdostal.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: dri-devel@lists.freedesktop.org Cc: Julia Lemire <jlemire@matrox.com> Cc: Dave Airlie <airlied@redhat.com> Cc: stable@vger.kernel.org --- drivers/gpu/drm/drm_probe_helper.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 0329080d7f7c..a0df377d7d1c 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -82,13 +82,30 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->probed_modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified) { + /* The probed mode's vrefresh is set until later */ + if (drm_mode_vrefresh(mode) != cmdline_mode->refresh) + continue; + } + + return 0; + } + mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; -- 2.8.1 ^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v4] drm: Only create a cmdline mode if no probed modes match @ 2016-06-01 9:50 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-01 9:50 UTC (permalink / raw) To: dri-devel Cc: Daniel Vetter, Jesse Barnes, stable, Radek Dostál, Dave Airlie The intention of using video=<connector>:<mode> is primarily to select the user's preferred resolution at startup. Currently we always create a new mode irrespective of whether the monitor has a native mode at the desired resolution. This has the issue that we may then select the fake mode rather the native mode during fb_helper->inital_config() and so if the fake mode is invalid we then end up with a loss of signal. Oops. This invalid fake mode would also be exported to userspace, who potentially may make the same mistake. To avoid this issue, we filter out the added command line mode if we detect the desired resolution (and clock if specified) amongst the probed modes. This fixes the immediate problem of adding a duplicate mode, but perhaps more generically we should avoid adding a GTF mode if the monitor has an EDID that is not GTF-compatible, or similarly for CVT. Fixes regression from commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Aug 6 10:08:32 2014 +0200 drm: Perform cmdline mode parsing during connector initialisation that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). v2: Explicitly delete our earlier cmdline mode v3: Mode pruning should now be sufficient to delete stale cmdline modes v4: Compute the vrefresh for the probed mode Reported-by: Radek Dostál <rd@radekdostal.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Radek Dostál <rd@radekdostal.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: dri-devel@lists.freedesktop.org Cc: Julia Lemire <jlemire@matrox.com> Cc: Dave Airlie <airlied@redhat.com> Cc: stable@vger.kernel.org --- drivers/gpu/drm/drm_probe_helper.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 0329080d7f7c..a0df377d7d1c 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -82,13 +82,30 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) { + struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode; - if (!connector->cmdline_mode.specified) + cmdline_mode = &connector->cmdline_mode; + if (!cmdline_mode->specified) return 0; + /* Only add a GTF mode if we find no matching probed modes */ + list_for_each_entry(mode, &connector->probed_modes, head) { + if (mode->hdisplay != cmdline_mode->xres || + mode->vdisplay != cmdline_mode->yres) + continue; + + if (cmdline_mode->refresh_specified) { + /* The probed mode's vrefresh is set until later */ + if (drm_mode_vrefresh(mode) != cmdline_mode->refresh) + continue; + } + + return 0; + } + mode = drm_mode_create_from_cmdline_mode(connector->dev, - &connector->cmdline_mode); + cmdline_mode); if (mode == NULL) return 0; -- 2.8.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match 2016-06-01 9:50 ` Chris Wilson @ 2016-06-01 13:19 ` Alex Deucher -1 siblings, 0 replies; 54+ messages in thread From: Alex Deucher @ 2016-06-01 13:19 UTC (permalink / raw) To: Chris Wilson Cc: Maling list - DRI developers, Daniel Vetter, Jesse Barnes, for 3.8, Radek Dostál, Dave Airlie On Wed, Jun 1, 2016 at 5:50 AM, Chris Wilson <chris@chris-wilson.co.uk> wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > v3: Mode pruning should now be sufficient to delete stale cmdline modes > v4: Compute the vrefresh for the probed mode Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > > Reported-by: Radek Dostál <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dostál <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/drm_probe_helper.c | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 0329080d7f7c..a0df377d7d1c 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -82,13 +82,30 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->probed_modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified) { > + /* The probed mode's vrefresh is set until later */ > + if (drm_mode_vrefresh(mode) != cmdline_mode->refresh) > + continue; > + } > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > -- > 2.8.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match @ 2016-06-01 13:19 ` Alex Deucher 0 siblings, 0 replies; 54+ messages in thread From: Alex Deucher @ 2016-06-01 13:19 UTC (permalink / raw) To: Chris Wilson Cc: Daniel Vetter, Maling list - DRI developers, for 3.8, Jesse Barnes, Radek Dostál, Dave Airlie On Wed, Jun 1, 2016 at 5:50 AM, Chris Wilson <chris@chris-wilson.co.uk> wrote: > The intention of using video=<connector>:<mode> is primarily to select > the user's preferred resolution at startup. Currently we always create a > new mode irrespective of whether the monitor has a native mode at the > desired resolution. This has the issue that we may then select the fake > mode rather the native mode during fb_helper->inital_config() and so > if the fake mode is invalid we then end up with a loss of signal. Oops. > This invalid fake mode would also be exported to userspace, who > potentially may make the same mistake. > > To avoid this issue, we filter out the added command line mode if we > detect the desired resolution (and clock if specified) amongst the > probed modes. This fixes the immediate problem of adding a duplicate > mode, but perhaps more generically we should avoid adding a GTF mode if > the monitor has an EDID that is not GTF-compatible, or similarly for > CVT. > > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > v2: Explicitly delete our earlier cmdline mode > v3: Mode pruning should now be sufficient to delete stale cmdline modes > v4: Compute the vrefresh for the probed mode Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > > Reported-by: Radek Dostál <rd@radekdostal.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Radek Dostál <rd@radekdostal.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Cc: Julia Lemire <jlemire@matrox.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/drm_probe_helper.c | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 0329080d7f7c..a0df377d7d1c 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -82,13 +82,30 @@ drm_mode_validate_flag(const struct drm_display_mode *mode, > > static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > { > + struct drm_cmdline_mode *cmdline_mode; > struct drm_display_mode *mode; > > - if (!connector->cmdline_mode.specified) > + cmdline_mode = &connector->cmdline_mode; > + if (!cmdline_mode->specified) > return 0; > > + /* Only add a GTF mode if we find no matching probed modes */ > + list_for_each_entry(mode, &connector->probed_modes, head) { > + if (mode->hdisplay != cmdline_mode->xres || > + mode->vdisplay != cmdline_mode->yres) > + continue; > + > + if (cmdline_mode->refresh_specified) { > + /* The probed mode's vrefresh is set until later */ > + if (drm_mode_vrefresh(mode) != cmdline_mode->refresh) > + continue; > + } > + > + return 0; > + } > + > mode = drm_mode_create_from_cmdline_mode(connector->dev, > - &connector->cmdline_mode); > + cmdline_mode); > if (mode == NULL) > return 0; > > -- > 2.8.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match 2016-06-01 9:50 ` Chris Wilson (?) (?) @ 2016-06-02 9:38 ` Radek Dostál 2016-06-02 10:52 ` Chris Wilson -1 siblings, 1 reply; 54+ messages in thread From: Radek Dostál @ 2016-06-02 9:38 UTC (permalink / raw) To: Chris Wilson, dri-devel Cc: Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable On 06/01/2016 11:50 AM, Chris Wilson wrote: > Fixes regression from > > commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > Author: Chris Wilson<chris@chris-wilson.co.uk> > Date: Wed Aug 6 10:08:32 2014 +0200 > > drm: Perform cmdline mode parsing during connector initialisation > > that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). please remove this from the commit message. The original bug is no longer reproducible with 4.7-rc1 Thanks, Radek ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match 2016-06-02 9:38 ` Radek Dostál @ 2016-06-02 10:52 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-02 10:52 UTC (permalink / raw) To: Radek Dostál Cc: dri-devel, Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Thu, Jun 02, 2016 at 11:38:26AM +0200, Radek Dost�l wrote: > On 06/01/2016 11:50 AM, Chris Wilson wrote: > >Fixes regression from > > > >commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > >Author: Chris Wilson<chris@chris-wilson.co.uk> > >Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > >that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > please remove this from the commit message. The original bug is no > longer reproducible with 4.7-rc1 If there's no motivation for the patch anymore, it can just wither away in one of my old trees. Does anyone care about pruning the autogenerated video= mode if a probed one matches? Presumably, it is still visible to userspace and switching to it will cause the same issue as before? Or was it always a driver bug (failing to set the mode)? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match @ 2016-06-02 10:52 ` Chris Wilson 0 siblings, 0 replies; 54+ messages in thread From: Chris Wilson @ 2016-06-02 10:52 UTC (permalink / raw) To: Radek Dostál Cc: dri-devel, Jesse Barnes, Ville Syrjälä, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Thu, Jun 02, 2016 at 11:38:26AM +0200, Radek Dostál wrote: > On 06/01/2016 11:50 AM, Chris Wilson wrote: > >Fixes regression from > > > >commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > >Author: Chris Wilson<chris@chris-wilson.co.uk> > >Date: Wed Aug 6 10:08:32 2014 +0200 > > > > drm: Perform cmdline mode parsing during connector initialisation > > > >that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > please remove this from the commit message. The original bug is no > longer reproducible with 4.7-rc1 If there's no motivation for the patch anymore, it can just wither away in one of my old trees. Does anyone care about pruning the autogenerated video= mode if a probed one matches? Presumably, it is still visible to userspace and switching to it will cause the same issue as before? Or was it always a driver bug (failing to set the mode)? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match 2016-06-02 10:52 ` Chris Wilson @ 2016-06-02 11:30 ` Ville Syrjälä -1 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2016-06-02 11:30 UTC (permalink / raw) To: Chris Wilson, Radek Dostál, dri-devel, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Thu, Jun 02, 2016 at 11:52:17AM +0100, Chris Wilson wrote: > On Thu, Jun 02, 2016 at 11:38:26AM +0200, Radek Dost�l wrote: > > On 06/01/2016 11:50 AM, Chris Wilson wrote: > > >Fixes regression from > > > > > >commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > >Author: Chris Wilson<chris@chris-wilson.co.uk> > > >Date: Wed Aug 6 10:08:32 2014 +0200 > > > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > > >that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > please remove this from the commit message. The original bug is no > > longer reproducible with 4.7-rc1 > > If there's no motivation for the patch anymore, it can just wither away > in one of my old trees. > > Does anyone care about pruning the autogenerated video= mode if a probed > one matches? Presumably, it is still visible to userspace and switching > to it will cause the same issue as before? Or was it always a driver > bug (failing to set the mode)? IMO the patch makes total sense even if it's not needed for this particular bug. Feel free to add Reviewed-by: Ville Syrj�l� <ville.syrjala@linux.intel.com> -- Ville Syrj�l� Intel OTC ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match @ 2016-06-02 11:30 ` Ville Syrjälä 0 siblings, 0 replies; 54+ messages in thread From: Ville Syrjälä @ 2016-06-02 11:30 UTC (permalink / raw) To: Chris Wilson, Radek Dostál, dri-devel, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Thu, Jun 02, 2016 at 11:52:17AM +0100, Chris Wilson wrote: > On Thu, Jun 02, 2016 at 11:38:26AM +0200, Radek Dostál wrote: > > On 06/01/2016 11:50 AM, Chris Wilson wrote: > > >Fixes regression from > > > > > >commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > >Author: Chris Wilson<chris@chris-wilson.co.uk> > > >Date: Wed Aug 6 10:08:32 2014 +0200 > > > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > > >that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > please remove this from the commit message. The original bug is no > > longer reproducible with 4.7-rc1 > > If there's no motivation for the patch anymore, it can just wither away > in one of my old trees. > > Does anyone care about pruning the autogenerated video= mode if a probed > one matches? Presumably, it is still visible to userspace and switching > to it will cause the same issue as before? Or was it always a driver > bug (failing to set the mode)? IMO the patch makes total sense even if it's not needed for this particular bug. Feel free to add Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> -- Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match 2016-06-02 11:30 ` Ville Syrjälä @ 2016-06-02 11:35 ` Radek Dostál -1 siblings, 0 replies; 54+ messages in thread From: Radek Dostál @ 2016-06-02 11:35 UTC (permalink / raw) To: Ville Syrjälä, Chris Wilson, dri-devel, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On 06/02/2016 01:30 PM, Ville Syrj�l� wrote: > IMO the patch makes total sense even if it's not needed for this > particular bug. Feel free to add I agree and additionally can confirm, that with this patch BBB still works as expected with LG 19LS4R-ZA. Thanks, Radek ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match @ 2016-06-02 11:35 ` Radek Dostál 0 siblings, 0 replies; 54+ messages in thread From: Radek Dostál @ 2016-06-02 11:35 UTC (permalink / raw) To: Ville Syrjälä, Chris Wilson, dri-devel, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On 06/02/2016 01:30 PM, Ville Syrjälä wrote: > IMO the patch makes total sense even if it's not needed for this > particular bug. Feel free to add I agree and additionally can confirm, that with this patch BBB still works as expected with LG 19LS4R-ZA. Thanks, Radek ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match 2016-06-02 11:30 ` Ville Syrjälä @ 2016-06-02 13:12 ` Daniel Vetter -1 siblings, 0 replies; 54+ messages in thread From: Daniel Vetter @ 2016-06-02 13:12 UTC (permalink / raw) To: Ville Syrjälä Cc: Chris Wilson, Radek Dostál, dri-devel, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Thu, Jun 02, 2016 at 02:30:40PM +0300, Ville Syrj�l� wrote: > On Thu, Jun 02, 2016 at 11:52:17AM +0100, Chris Wilson wrote: > > On Thu, Jun 02, 2016 at 11:38:26AM +0200, Radek Dost�l wrote: > > > On 06/01/2016 11:50 AM, Chris Wilson wrote: > > > >Fixes regression from > > > > > > > >commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > > >Author: Chris Wilson<chris@chris-wilson.co.uk> > > > >Date: Wed Aug 6 10:08:32 2014 +0200 > > > > > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > > > > >that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > > > please remove this from the commit message. The original bug is no > > > longer reproducible with 4.7-rc1 > > > > If there's no motivation for the patch anymore, it can just wither away > > in one of my old trees. > > > > Does anyone care about pruning the autogenerated video= mode if a probed > > one matches? Presumably, it is still visible to userspace and switching > > to it will cause the same issue as before? Or was it always a driver > > bug (failing to set the mode)? > > IMO the patch makes total sense even if it's not needed for this > particular bug. Feel free to add > > Reviewed-by: Ville Syrj�l� <ville.syrjala@linux.intel.com> Agreed. I dropped the cc: stable and adjusted the commit message to explain the situation. Merged to drm-misc, thanks. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v4] drm: Only create a cmdline mode if no probed modes match @ 2016-06-02 13:12 ` Daniel Vetter 0 siblings, 0 replies; 54+ messages in thread From: Daniel Vetter @ 2016-06-02 13:12 UTC (permalink / raw) To: Ville Syrjälä Cc: Chris Wilson, Radek Dostál, dri-devel, Jesse Barnes, Daniel Vetter, Julia Lemire, Dave Airlie, stable On Thu, Jun 02, 2016 at 02:30:40PM +0300, Ville Syrjälä wrote: > On Thu, Jun 02, 2016 at 11:52:17AM +0100, Chris Wilson wrote: > > On Thu, Jun 02, 2016 at 11:38:26AM +0200, Radek Dostál wrote: > > > On 06/01/2016 11:50 AM, Chris Wilson wrote: > > > >Fixes regression from > > > > > > > >commit eaf99c749d43ae74ac7ffece5512f3c73f01dfd2 > > > >Author: Chris Wilson<chris@chris-wilson.co.uk> > > > >Date: Wed Aug 6 10:08:32 2014 +0200 > > > > > > > > drm: Perform cmdline mode parsing during connector initialisation > > > > > > > >that breaks HDMI output on BeagleBone Black with LG TV (model 19LS4R-ZA). > > > > > > please remove this from the commit message. The original bug is no > > > longer reproducible with 4.7-rc1 > > > > If there's no motivation for the patch anymore, it can just wither away > > in one of my old trees. > > > > Does anyone care about pruning the autogenerated video= mode if a probed > > one matches? Presumably, it is still visible to userspace and switching > > to it will cause the same issue as before? Or was it always a driver > > bug (failing to set the mode)? > > IMO the patch makes total sense even if it's not needed for this > particular bug. Feel free to add > > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Agreed. I dropped the cc: stable and adjusted the commit message to explain the situation. Merged to drm-misc, thanks. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 54+ messages in thread
end of thread, other threads:[~2016-06-02 13:12 UTC | newest] Thread overview: 54+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-04-19 21:05 [PATCH] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF Radek Dostal 2015-04-20 5:26 ` [PATCHv2] " Radek Dostal 2015-04-20 9:09 ` Chris Wilson 2015-04-20 9:09 ` Chris Wilson 2015-04-20 9:36 ` Radek Dostál 2015-04-20 9:46 ` Chris Wilson 2015-04-20 9:58 ` Chris Wilson 2015-04-20 9:58 ` Chris Wilson 2015-04-20 10:38 ` Radek Dostál 2015-04-20 10:48 ` Chris Wilson 2015-04-20 10:48 ` Chris Wilson 2015-04-20 10:57 ` Radek Dostál 2015-04-20 11:00 ` Chris Wilson 2015-04-20 11:20 ` Radek Dostál 2015-04-20 11:44 ` Chris Wilson 2015-04-20 12:00 ` Radek Dostál 2015-04-20 12:26 ` [PATCH] drm: Only create a cmdline mode if no probed modes match Chris Wilson 2015-04-20 13:06 ` Radek Dostál 2015-04-20 13:16 ` Chris Wilson 2015-04-20 13:28 ` [PATCH v2] " Chris Wilson 2015-04-20 13:41 ` Radek Dostál 2015-05-21 15:36 ` Chris Wilson 2015-05-21 15:36 ` Chris Wilson 2015-05-22 6:22 ` Jani Nikula 2015-05-22 6:22 ` Jani Nikula 2015-05-22 9:03 ` Ville Syrjälä 2015-05-22 9:03 ` Ville Syrjälä 2015-05-22 9:54 ` Chris Wilson 2015-05-22 9:54 ` Chris Wilson 2015-05-22 11:30 ` Ville Syrjälä 2015-05-22 11:30 ` Ville Syrjälä 2016-06-01 9:34 ` [PATCH v3] " Chris Wilson 2016-06-01 9:34 ` Chris Wilson 2016-06-01 9:43 ` Ville Syrjälä 2016-06-01 9:43 ` Ville Syrjälä 2016-06-01 9:46 ` Chris Wilson 2016-06-01 9:46 ` Chris Wilson 2016-06-01 9:47 ` Chris Wilson 2016-06-01 9:47 ` Chris Wilson 2016-06-01 9:56 ` Ville Syrjälä 2016-06-01 9:56 ` Ville Syrjälä 2016-06-01 9:50 ` [PATCH v4] " Chris Wilson 2016-06-01 9:50 ` Chris Wilson 2016-06-01 13:19 ` Alex Deucher 2016-06-01 13:19 ` Alex Deucher 2016-06-02 9:38 ` Radek Dostál 2016-06-02 10:52 ` Chris Wilson 2016-06-02 10:52 ` Chris Wilson 2016-06-02 11:30 ` Ville Syrjälä 2016-06-02 11:30 ` Ville Syrjälä 2016-06-02 11:35 ` Radek Dostál 2016-06-02 11:35 ` Radek Dostál 2016-06-02 13:12 ` Daniel Vetter 2016-06-02 13:12 ` Daniel Vetter
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.