提交 a67b8887 编写于 作者: F Florian Mickler 提交者: Dave Airlie

vga_switcheroo: don't toggle-switch devices

If the requested device is already active, ignore the request.

This restores the original behaviour of the interface. The change was
probably an unintended side effect of

commit 66b37c67 vga_switcheroo: split switching into two stages

which did not take into account to duplicate the !active check in the split-off
stage2.

Fix this by factoring that check out of stage1 into the debugfs_write routine.

References: https://bugzilla.kernel.org/show_bug.cgi?id=34252Reported-by: NIgor Murzov <e-mail@date.by>
Tested-by: NIgor Murzov <e-mail@date.by>
Signed-off-by: NFlorian Mickler <florian@mickler.org>
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 3a8ab79e
...@@ -219,9 +219,6 @@ static int vga_switchto_stage1(struct vga_switcheroo_client *new_client) ...@@ -219,9 +219,6 @@ static int vga_switchto_stage1(struct vga_switcheroo_client *new_client)
int i; int i;
struct vga_switcheroo_client *active = NULL; struct vga_switcheroo_client *active = NULL;
if (new_client->active == true)
return 0;
for (i = 0; i < VGA_SWITCHEROO_MAX_CLIENTS; i++) { for (i = 0; i < VGA_SWITCHEROO_MAX_CLIENTS; i++) {
if (vgasr_priv.clients[i].active == true) { if (vgasr_priv.clients[i].active == true) {
active = &vgasr_priv.clients[i]; active = &vgasr_priv.clients[i];
...@@ -372,6 +369,9 @@ vga_switcheroo_debugfs_write(struct file *filp, const char __user *ubuf, ...@@ -372,6 +369,9 @@ vga_switcheroo_debugfs_write(struct file *filp, const char __user *ubuf,
goto out; goto out;
} }
if (client->active == true)
goto out;
/* okay we want a switch - test if devices are willing to switch */ /* okay we want a switch - test if devices are willing to switch */
can_switch = true; can_switch = true;
for (i = 0; i < VGA_SWITCHEROO_MAX_CLIENTS; i++) { for (i = 0; i < VGA_SWITCHEROO_MAX_CLIENTS; i++) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册