All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

* [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 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

* 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.