All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ondrej Zary <linux@rainbow-software.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Enable A20 using KBC for some MSI laptops to fix S3 resume
Date: Wed, 24 Oct 2012 21:56:42 +0200	[thread overview]
Message-ID: <201210242156.43233.linux@rainbow-software.org> (raw)
In-Reply-To: <5e64035c-9ee0-4e76-a348-d4f9f6c7b198@email.android.com>

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.

> "Rafael J. Wysocki" <rjw@sisk.pl> wrote:
> >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.
> >>
> >> 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 <linux@rainbow-software.org>
> >
> >Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >
> >> --- a/arch/x86/kernel/acpi/boot.c
> >> +++ b/arch/x86/kernel/acpi/boot.c
> >> @@ -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 linux-acpi@vger.kernel.org
> >>   */
> >> @@ -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"),
> >> +		     },
> >> +	 },
> >>  	{}
> >>  };


-- 
Ondrej Zary

  reply	other threads:[~2012-10-24 19:57 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-24  6:47 [PATCH] Enable A20 using KBC for some MSI laptops to fix S3 resume Ondrej Zary
2012-10-24 19:01 ` Rafael J. Wysocki
2012-10-24 19:36   ` H. Peter Anvin
2012-10-24 19:56     ` Ondrej Zary [this message]
2012-10-24 20:03       ` H. Peter Anvin
2012-10-24 20:09     ` Alan Cox
2012-10-26  4:31       ` Robert Hancock
2012-10-26  4:44         ` H. Peter Anvin
2012-10-26  6:20           ` Ondrej Zary

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201210242156.43233.linux@rainbow-software.org \
    --to=linux@rainbow-software.org \
    --cc=hpa@zytor.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@sisk.pl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.