Enable A20 using KBC for some MSI laptops to fix S3 resume
PATCH 1/1 Enable A20 using KBC for some MSI laptops to fix S3 resume
Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to enable A20 line but resume code assumes that KBC was used.
The laptop will not resume from S3 otherwise but powers off after a while and then powers on again stuck with a blank screen.
Fix it by enabling A20 using KBC. Affected laptop list and DMI data are from bug reports at Ubuntu Launchpad.
Tested with EX600 and PR200.
Fixes https://bugzilla.kernel.org/show_bug.cgi?id=12878
arch/x86/kernel/acpi/boot.c +68 -0
@@ -1349,6 +1349,20 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) }/* +* Enable A20 line using KBC even if it's already enabled using other method. +* This is needed for some MSI laptops to resume from S3. +*/ +static int __init a20_enable_kbc (const struct dmi_system_id *d) +{ +printk (KERN_NOTICE "%s detected: enabling A20 using KBC\n" , d->ident); +outb (0xd1 ,0x64 );/* Command write */ +outb (0xdf ,0x60 );/* A20 on */ +outb (0xff ,0x64 );/* Null command, but UHCI wants it */ + +return 0 ; +} + +/* * If your system is blacklisted here, but you find that acpi=force * works for you, please contact [email protected] */
@@ -1423,6 +1437,60 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), }, }, +/* +* Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to +* enable A20 line but resume code assumes that KBC was used. +* The laptop will not resume from S3 otherwise but powers off +* after a while and then powers on again stuck with a blank screen. +*/ + { + .callback = a20_enable_kbc, + .ident = "MSI EX600 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook EX600"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI EX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "EX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI GX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "GX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR201 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR201"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR601 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR601"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI PR200 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook PR200"), + }, + }, {} };
Signature · 1 line
Ondrej Zary
Quoted 5 lines · On Wednesday 24 of October 2012 08:47:52 Ondrej Zary wrote:
Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to enable A20 line but resume code assumes that KBC was used.
The laptop will not resume from S3 otherwise but powers off after a while and then powers on again stuck with a blank screen.
Quoted 8 lines
Fix it by enabling A20 using KBC. Affected laptop list and DMI data are from bug reports at Ubuntu Launchpad.
Tested with EX600 and PR200.
Fixes https://bugzilla.kernel.org/show_bug.cgi?id=12878
Signed-off-by Ondrej Zary <[email protected]>
Quoted 87 lines
arch/x86/kernel/acpi/boot.c +68
-0@@ -1349,6 +1349,20 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) }/* +* Enable A20 line using KBC even if it's already enabled using other method. +* This is needed for some MSI laptops to resume from S3. +*/ +static int __init a20_enable_kbc (const struct dmi_system_id *d) +{ +printk (KERN_NOTICE "%s detected: enabling A20 using KBC\n" , d->ident); +outb (0xd1 ,0x64 );/* Command write */ +outb (0xdf ,0x60 );/* A20 on */ +outb (0xff ,0x64 );/* Null command, but UHCI wants it */ + +return 0 ; +} + +/* * If your system is blacklisted here, but you find that acpi=force * works for you, please contact [email protected] */ @@ -1423,6 +1437,60 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), }, }, +/* +* Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to +* enable A20 line but resume code assumes that KBC was used. +* The laptop will not resume from S3 otherwise but powers off +* after a while and then powers on again stuck with a blank screen. +*/ + { + .callback = a20_enable_kbc, + .ident = "MSI EX600 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook EX600"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI EX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "EX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI GX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "GX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR201 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR201"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR601 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR601"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI PR200 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook PR200"), + }, + }, {} };
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
H. Peter Anvin
reviewerMinor concern: it should do the wait for ready before sending each command.
Quoted 114 lines · Rafael J. Wysocki
Quoted 1 line · On Wednesday 24 of October 2012 08:47:52 Ondrej Zary wrote:
Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to
enable A20
Quoted 2 lines
line but resume code assumes that KBC was used.
The laptop will not resume from S3 otherwise but powers off after awhile
Quoted 3 lines
and then powers on again stuck with a blank screen.
Fix it by enabling A20 using KBC. Affected laptop list and DMI data
are from
Quoted 7 lines
bug reports at Ubuntu Launchpad.
Tested with EX600 and PR200.
Fixes https://bugzilla.kernel.org/show_bug.cgi?id=12878
Signed-off-by Ondrej Zary <[email protected]>arch/x86/kernel/acpi/boot.c static int __init
Quoted 3 lines
arch/x86/kernel/acpi/boot.c +0
-0@@ -1349,6 +1349,20 @@ static int __init
dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)arch/x86/kernel/acpi/boot.c static int __init · line 1352
Quoted 4 lines
arch/x86/kernel/acpi/boot.c +1
-0}/* +* Enable A20 line using KBC even if it's already enabled using other method.
arch/x86/kernel/acpi/boot.c static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
Quoted 5 lines
arch/x86/kernel/acpi/boot.c +5
-0+* This is needed for some MSI laptops to resume from S3. +*/ +static int __init a20_enable_kbc (const struct dmi_system_id *d) +{ + printk(KERN_NOTICE "%s detected: enabling A20 using KBC\n",
d->ident);arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata
Quoted 12 lines
arch/x86/kernel/acpi/boot.c +8
-0+outb (0xd1 ,0x64 );/* Command write */ +outb (0xdf ,0x60 );/* A20 on */ +outb (0xff ,0x64 );/* Null command, but UHCI wants it */ + +return 0 ; +} + +/* * If your system is blacklisted here, but you find that acpi=force * works for you, please contact [email protected] */ @@ -1423,6 +1437,60 @@ static struct dmi_system_id __initdataacpi_dmi_table[] = {
arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata acpi_dmi_table[] = {
Quoted 5 lines
arch/x86/kernel/acpi/boot.c +2
-0DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), }, }, +/* +* Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to
arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata acpi_dmi_table[] = {
Quoted 3 lines
arch/x86/kernel/acpi/boot.c +3
-0+* enable A20 line but resume code assumes that KBC was used. +* The laptop will not resume from S3 otherwise but powers off +* after a while and then powers on again stuck with a blank screen.
Quoted 55 lines
arch/x86/kernel/acpi/boot.c +49
-0+*/ + { + .callback = a20_enable_kbc, + .ident = "MSI EX600 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook EX600"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI EX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "EX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI GX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "GX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR201 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR201"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR601 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR601"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI PR200 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook PR200"), + }, + }, {} };
Signature · 1 line
Sent from my mobile phone. Please excuse brevity and lack of formatting.
Quoted 1 line · On Wednesday 24 October 2012 21:36:04 H. Peter Anvin wrote:
Minor concern: it should do the wait for ready before sending each command.
It was a hack and then I forgot to add the waits... Should I redo the patch? I'll not be able to test it as I have to return the machine.
Quoted 128 lines
Quoted 127 lines · Rafael J. Wysocki
Quoted 1 line · On Wednesday 24 of October 2012 08:47:52 Ondrej Zary wrote:
Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to
enable A20
Quoted 2 lines
line but resume code assumes that KBC was used.
The laptop will not resume from S3 otherwise but powers off after awhile
Quoted 3 lines
and then powers on again stuck with a blank screen.
Fix it by enabling A20 using KBC. Affected laptop list and DMI data
are from
Quoted 7 lines
bug reports at Ubuntu Launchpad.
Tested with EX600 and PR200.
Fixes https://bugzilla.kernel.org/show_bug.cgi?id=12878
Signed-off-by Ondrej Zary <[email protected]>arch/x86/kernel/acpi/boot.c static int __init
Quoted 3 lines
arch/x86/kernel/acpi/boot.c +0
-0@@ -1349,6 +1349,20 @@ static int __init
dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)arch/x86/kernel/acpi/boot.c static int __init · line 1352
Quoted 4 lines
arch/x86/kernel/acpi/boot.c +1
-0}/* +* Enable A20 line using KBC even if it's already enabled using other method.
arch/x86/kernel/acpi/boot.c static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
Quoted 5 lines
arch/x86/kernel/acpi/boot.c +5
-0+* This is needed for some MSI laptops to resume from S3. +*/ +static int __init a20_enable_kbc (const struct dmi_system_id *d) +{ + printk(KERN_NOTICE "%s detected: enabling A20 using KBC\n",
d->ident);arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata
Quoted 12 lines
arch/x86/kernel/acpi/boot.c +8
-0+outb (0xd1 ,0x64 );/* Command write */ +outb (0xdf ,0x60 );/* A20 on */ +outb (0xff ,0x64 );/* Null command, but UHCI wants it */ + +return 0 ; +} + +/* * If your system is blacklisted here, but you find that acpi=force * works for you, please contact [email protected] */ @@ -1423,6 +1437,60 @@ static struct dmi_system_id __initdataacpi_dmi_table[] = {
arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata acpi_dmi_table[] = {
Quoted 5 lines
arch/x86/kernel/acpi/boot.c +2
-0DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), }, }, +/* +* Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to
arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata acpi_dmi_table[] = {
Quoted 3 lines
arch/x86/kernel/acpi/boot.c +3
-0+* enable A20 line but resume code assumes that KBC was used. +* The laptop will not resume from S3 otherwise but powers off +* after a while and then powers on again stuck with a blank screen.
Quoted 51 lines
arch/x86/kernel/acpi/boot.c +49
-0+*/ + { + .callback = a20_enable_kbc, + .ident = "MSI EX600 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook EX600"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI EX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "EX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI GX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "GX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR201 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR201"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR601 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR601"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI PR200 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook PR200"), + }, + }, {} };
Signature · 1 line
Ondrej Zary
H. Peter Anvin
reviewerProbably should.
Quoted 140 lines · Ondrej Zary
Quoted 1 line · On Wednesday 24 October 2012 21:36:04 H. Peter Anvin wrote:
Minor concern: it should do the wait for ready before sending each
command.
It was a hack and then I forgot to add the waits... Should I redo the patch?
I'll not be able to test it as I have to return the machine.Quoted 8 lines
Quoted 7 lines · Rafael J. Wysocki
Quoted 1 line · On Wednesday 24 of October 2012 08:47:52 Ondrej Zary wrote:
Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to
enable A20
Quoted 2 lines
line but resume code assumes that KBC was used.
The laptop will not resume from S3 otherwise but powers off aftera
Quoted 6 lines
Quoted 6 lines
while
Quoted 3 lines
and then powers on again stuck with a blank screen.
Fix it by enabling A20 using KBC. Affected laptop list and DMI
data
Quoted 34 lines
Quoted 34 lines
are from
Quoted 7 lines
bug reports at Ubuntu Launchpad.
Tested with EX600 and PR200.
Fixes https://bugzilla.kernel.org/show_bug.cgi?id=12878
Signed-off-by Ondrej Zary <[email protected]>arch/x86/kernel/acpi/boot.c static int __init
Quoted 3 lines
arch/x86/kernel/acpi/boot.c +0
-0@@ -1349,6 +1349,20 @@ static int __init
dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)arch/x86/kernel/acpi/boot.c static int __init · line 1352
Quoted 4 lines
arch/x86/kernel/acpi/boot.c +1
-0}/* +* Enable A20 line using KBC even if it's already enabled using other method.
arch/x86/kernel/acpi/boot.c static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
Quoted 5 lines
arch/x86/kernel/acpi/boot.c +5
-0+* This is needed for some MSI laptops to resume from S3. +*/ +static int __init a20_enable_kbc (const struct dmi_system_id *d) +{ + printk(KERN_NOTICE "%s detected: enabling A20 using KBC\n",
d->ident);Quoted 9 lines
Quoted 9 lines
arch/x86/kernel/acpi/boot.c static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
Quoted 9 lines
arch/x86/kernel/acpi/boot.c +8
-0+outb (0xd1 ,0x64 );/* Command write */ +outb (0xdf ,0x60 );/* A20 on */ +outb (0xff ,0x64 );/* Null command, but UHCI wants it */ + +return 0 ; +} + +/* * If your system is blacklisted here, but you find that acpi=force
Quoted 11 lines
Quoted 11 lines
arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata
Quoted 3 lines
arch/x86/kernel/acpi/boot.c +0
-0* works for you, please contact [email protected] */ @@ -1423,6 +1437,60 @@ static struct dmi_system_id __initdataacpi_dmi_table[] = {
arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata acpi_dmi_table[] = {
Quoted 5 lines
arch/x86/kernel/acpi/boot.c +2
-0DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), }, }, +/* +* Some MSI laptop BIOSes are broken - INT 15h code uses port 92h
Quoted 60 lines
Quoted 60 lines
to
arch/x86/kernel/acpi/boot.c static struct dmi_system_id __initdata acpi_dmi_table[] = {
Quoted 3 lines
arch/x86/kernel/acpi/boot.c +3
-0+* enable A20 line but resume code assumes that KBC was used. +* The laptop will not resume from S3 otherwise but powers off +* after a while and then powers on again stuck with a blank screen.
Quoted 51 lines
arch/x86/kernel/acpi/boot.c +49
-0+*/ + { + .callback = a20_enable_kbc, + .ident = "MSI EX600 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook EX600"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI EX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "EX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI GX700 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "GX700"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR201 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR201"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI VR601 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR601"), + }, + }, + { + .callback = a20_enable_kbc, + .ident = "MSI PR200 Laptop", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), + DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook PR200"), + }, + }, {} };
Signature · 1 line
Sent from my mobile phone. Please excuse brevity and lack of formatting.
Quoted 1 line · On Wed, 24 Oct 2012 12:36:04 -0700 "H. Peter Anvin" <[email protected]> wrote:
Minor concern: it should do the wait for ready before sending each command.
Can we get a command line to do this quirk too - it strikes me that if the MSIs rely upon it then it may be something Windows always does so will be useful to try on other problem machines as an experiment.
Quoted 8 lines · Alan Cox
Quoted 1 line · On Wed, 24 Oct 2012 12:36:04 -0700 "H. Peter Anvin" <[email protected]> wrote:
Minor concern: it should do the wait for ready before sending each command.
Can we get a command line to do this quirk too - it strikes me that if the MSIs rely upon it then it may be something Windows always does so will be useful to try on other problem machines as an experiment.
I agree, one has to keep in mind the age-old question "how does Windows work?" since it surely has no such quirk. I'd say we're sometimes too quick to add these DMI quirks when a more general solution would be somehow figure out how the Linux behavior differs from what Windows is doing.
H. Peter Anvin
reviewerMy guess is that Windows explicitly enables A20 on resume. We should do that too, really... with the current heavily unified realmode code it should be easy - let me hack up a patch in the morning.
Quoted 18 lines · Robert Hancock
Quoted 4 lines · Alan Cox
Quoted 1 line · On Wed, 24 Oct 2012 12:36:04 -0700 "H. Peter Anvin" <[email protected]> wrote:
Minor concern: it should do the wait for ready before sending each
command.
Quoted 2 lines
Can we get a command line to do this quirk too - it strikes me that
if
Quoted 2 lines
the MSIs rely upon it then it may be something Windows always does so will be useful to try on other problem machines as an experiment.
I agree, one has to keep in mind the age-old question "how does Windows
work?" since it surely has no such quirk. I'd say we're sometimes too quick to add these DMI quirks when a more general solution would be somehow figure out how the Linux behavior differs from what Windows is doing.
Signature · 1 line
Sent from my mobile phone. Please excuse brevity and lack of formatting.
Quoted 3 lines · H. Peter Anvin
My guess is that Windows explicitly enables A20 on resume. We should do that too, really... with the current heavily unified realmode code it should be easy - let me hack up a patch in the morning.
Neither s3_beep nor s3_leds (this patch:
https://lists.ubuntu.com/archives/kernel-team/2011-May/015621.html ) worked for me so I thing that BIOS breaks on resume before we can do anything.
Quoted 22 lines
Quoted 21 lines · Robert Hancock
Quoted 4 lines · Alan Cox
On Wed, 24 Oct 2012 12:36:04 -0700
Quoted 1 line · H. Peter Anvin
Minor concern: it should do the wait for ready before sending each
command.
Quoted 1 line
Can we get a command line to do this quirk too - it strikes me that
if
Quoted 2 lines
the MSIs rely upon it then it may be something Windows always does so will be useful to try on other problem machines as an experiment.
I agree, one has to keep in mind the age-old question "how does Windows
work?" since it surely has no such quirk. I'd say we're sometimes too quick to add these DMI quirks when a more general solution would be somehow figure out how the Linux behavior differs from what Windows is doing.
Signature · 1 line
Ondrej Zary