|
@@ -516,10 +516,12 @@ static int __devinit uvesafb_vbe_getmodes(struct uvesafb_ktask *task,
|
|
|
|
|
|
err = uvesafb_exec(task);
|
|
err = uvesafb_exec(task);
|
|
if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
|
|
if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
|
|
- printk(KERN_ERR "uvesafb: Getting mode info block "
|
|
|
|
|
|
+ printk(KERN_WARNING "uvesafb: Getting mode info block "
|
|
"for mode 0x%x failed (eax=0x%x, err=%d)\n",
|
|
"for mode 0x%x failed (eax=0x%x, err=%d)\n",
|
|
*mode, (u32)task->t.regs.eax, err);
|
|
*mode, (u32)task->t.regs.eax, err);
|
|
- return -EINVAL;
|
|
|
|
|
|
+ mode++;
|
|
|
|
+ par->vbe_modes_cnt--;
|
|
|
|
+ continue;
|
|
}
|
|
}
|
|
|
|
|
|
mib = task->buf;
|
|
mib = task->buf;
|
|
@@ -548,7 +550,10 @@ static int __devinit uvesafb_vbe_getmodes(struct uvesafb_ktask *task,
|
|
mib->depth = mib->bits_per_pixel;
|
|
mib->depth = mib->bits_per_pixel;
|
|
}
|
|
}
|
|
|
|
|
|
- return 0;
|
|
|
|
|
|
+ if (par->vbe_modes_cnt > 0)
|
|
|
|
+ return 0;
|
|
|
|
+ else
|
|
|
|
+ return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|