Enable A20 using KBC for some MSI laptops to fix S3 resume
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 13 lines · H. Peter Anvin
Quoted 12 lines · Ondrej Zary
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.
Also add kernel parameter to easily activate this quirk on any system.
Only compile tested. The original patch was tested with EX600 and PR200.
Quoted 7 lines
Quoted 1 line
Are we guaranteed that this executes *before* the keyboard driver initializes? If not, this needs to use the i8042 interface in the input subsystem or at least acquire
i8042_lock.-hpa
The code is called in:
start_kernel()->setup_arch()->acpi_boot_table_init()
I think that it's before any drivers are initialized.
Signature · 1 line
Ondrej Zary
Quoted 20 lines · Ondrej Zary
Quoted 19 lines · H. Peter Anvin
Quoted 5 lines · Ondrej Zary
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.
Also add kernel parameter to easily activate this quirk on any system.
Only compile tested. The original patch was tested with EX600 and PR200.
Are we guaranteed that this executes *before* the keyboard driver initializes? If not, this needs to use the i8042 interface in the input subsystem or at least acquire
i8042_lock.
Quoted 7 lines
Quoted 1 line
-hpa
The code is called in:
start_kernel()->setup_arch()->acpi_boot_table_init()I think that it's before any drivers are initialized.
Yes, that is very early indeed. Could you please, however, put in a comment that this is safe specifically because it is invoked long before the i8042 driver can possibly initialize?
-hpa