Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 May 2010 05:44:57 +0200
From:      Giovanni Trematerra <giovanni.trematerra@gmail.com>
To:        Demelier David <demelier.david@gmail.com>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: Kernel panic when unpluggin AC adaptor
Message-ID:  <AANLkTilcNzzLt2GUPbL_Vqjspzx5a-oem1oZpKAYqoN8@mail.gmail.com>
In-Reply-To: <1273257226.1671.3.camel@malikania.fr>
References:  <4DEBDE2C-C0D2-469D-AC42-DD5027926424@FreeBSD.org> <i2i4e6cba831005051407keabbe871tf70749b80276298f@mail.gmail.com> <h2mb3954bba1005060127t619952f4k63ed35a4c6800a0b@mail.gmail.com> <m2l4e6cba831005060216zae79a16bw1d4671ca79294a0c@mail.gmail.com> <i2ub3954bba1005061103ya3dabb7dw2d60d3aab712ed47@mail.gmail.com> <v2tb3954bba1005070134x3cca53c1vc67e5557e680061d@mail.gmail.com> <i2j4e6cba831005070159qa3df06ccw925073a05a1057f7@mail.gmail.com> <20100507120843.GA1738@Melon.malikania.fr> <k2u4e6cba831005070922vfc3bcf18i59551da3b40317a@mail.gmail.com> <1273257226.1671.3.camel@malikania.fr>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
On Fri, May 7, 2010 at 8:33 PM, Demelier David <demelier.david@gmail.com> wrote:
> Le Vendredi 07 mai 2010 ŕ 18:22 +0200, Giovanni Trematerra a écrit :
>> On Fri, May 7, 2010 at 2:08 PM, Demelier David <demelier.david@gmail.com> wrote:
>> > Hi,
>> >        I noticed that pluggin the AC adaptor when I boot without it does not
>> >        panic. It only panic when removing it.
>> >
>> >        Maybe that could help ?
>> >
>>
>> Good to know. The problem lies somewhere when performance state change.
>> In your case it happens when you remove AC adaptor. Let's hope someone on
>> acpi@ ml comes up with a good idea.
>>
>
> Okay so for the moment no change, I'll wait for someone with an idea
> that could solve my problem. For me because the panic only happens when
> changing profile from ac plugged -> ac unplugged (and not the reverse) I
> would think it's a cpu related acpi issue.
>

I looked deeper and it seems to me that when you unplug the AC
adapter, acpi_cpu_notify calls acpi_cpu_cx_cst that try to allocate a
new cx_ptr->p_lvlx  via acpi_PkgGas.
If acpi_PkgGas set cx_ptr->p_lvlx to NULL for any reasons you'll have
the panic that you reported.
A solution would be to set acpi_cpu_hook to NULL so acpi_cpu_idle won't call it.
I need some time to have a patch because of the possible race between
acpi_cpu_notify and
acpi_cpu_idle during set acpi_cpu_hook to NULL.
if you have time and want panic your system you could try the attached
patch, just to be
sure that we catch it.

Thanks

--
Gianni

[-- Attachment #2 --]
Index: sys/dev/acpica/acpi_cpu.c
===================================================================
--- sys/dev/acpica/acpi_cpu.c	(revision 207947)
+++ sys/dev/acpica/acpi_cpu.c	(working copy)
@@ -609,7 +609,9 @@ acpi_cpu_generic_cx_probe(struct acpi_cpu_softc *s
 	    cx_ptr->trans_lat = AcpiGbl_FADT.C2Latency;
 	    cx_ptr++;
 	    sc->cpu_cx_count++;
-	}
+	} else
+		panic("%s: Cannot allocate resource %d for C3 state", __func__, 
+		    cx_ptr->res_type);
     }
     if (sc->cpu_p_blk_len < 6)
 	return;
@@ -625,7 +627,9 @@ acpi_cpu_generic_cx_probe(struct acpi_cpu_softc *s
 	    cx_ptr->trans_lat = AcpiGbl_FADT.C3Latency;
 	    cx_ptr++;
 	    sc->cpu_cx_count++;
-	}
+	} else
+		panic("%s: Cannot allocate resource %d for C3 state", __func__, 
+		    cx_ptr->res_type);
     }
 }
 
@@ -732,7 +736,8 @@ acpi_cpu_cx_cst(struct acpi_cpu_softc *sc)
 			     cx_ptr->trans_lat));
 	    cx_ptr++;
 	    sc->cpu_cx_count++;
-	}
+	} else
+		panic("Got it! acpi_PkgGas set p_lvlx to NULL");
     }
     AcpiOsFree(buf.Pointer);
 

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTilcNzzLt2GUPbL_Vqjspzx5a-oem1oZpKAYqoN8>