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 66b37c6777
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=34252
Reported-by: Igor Murzov <e-mail@date.by>
Tested-by: Igor Murzov <e-mail@date.by>
Signed-off-by: Florian Mickler <florian@mickler.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Родитель
3a8ab79eae
Коммит
a67b8887ce
|
@ -219,9 +219,6 @@ static int vga_switchto_stage1(struct vga_switcheroo_client *new_client)
|
|||
int i;
|
||||
struct vga_switcheroo_client *active = NULL;
|
||||
|
||||
if (new_client->active == true)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < VGA_SWITCHEROO_MAX_CLIENTS; i++) {
|
||||
if (vgasr_priv.clients[i].active == true) {
|
||||
active = &vgasr_priv.clients[i];
|
||||
|
@ -372,6 +369,9 @@ vga_switcheroo_debugfs_write(struct file *filp, const char __user *ubuf,
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (client->active == true)
|
||||
goto out;
|
||||
|
||||
/* okay we want a switch - test if devices are willing to switch */
|
||||
can_switch = true;
|
||||
for (i = 0; i < VGA_SWITCHEROO_MAX_CLIENTS; i++) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче