kern/171137: NDIS causing PANIC
Glen Barber
gjb at FreeBSD.org
Tue Aug 28 11:00:29 UTC 2012
The following reply was made to PR kern/171137; it has been noted by GNATS.
From: Glen Barber <gjb at FreeBSD.org>
To: Mike Manilone <crtmike at gmx.us>
Cc: freebsd-gnats-submit at FreeBSD.org
Subject: Re: kern/171137: NDIS causing PANIC
Date: Tue, 28 Aug 2012 06:58:15 -0400
--JYK4vJDZwFMowpUq
Content-Type: multipart/mixed; boundary="T4sUOijqQbZv57TR"
Content-Disposition: inline
--T4sUOijqQbZv57TR
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Tue, Aug 28, 2012 at 10:00:07AM +0000, Mike Manilone wrote:
> >Environment:
> System: FreeBSD bsd.laptop.mike 9.1-RC1 FreeBSD 9.1-RC1 #0: Tue Aug 14 04=
:25:06 UTC 2012 root at farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC a=
md64
>=20
> >Description:
> NDIS is causing a lot of panic to me. I'm using the BCM4313=20
> driver. And I *did* follow the instructions on the PC-BSD wiki.
> I can't stand the stability. I'm looking forward this bug=20
> could be fixed before FreeBSD 9.1-RELEASE.
> =09
> I don't know how to grab the output from the panic screen. But
> I remembered that it's a page fault. (12)
> >How-To-Repeat:
> 1) reboot the machine, sometimes crash
> 2) /etc/rc.d/netif restart, panic immediately.
>=20
Hi,
Can you please apply the attached patch to
/usr/src/sys/compat/ndis/subr_hal.c and rebuild your kernel and report
back?
Regards,
Glen
--T4sUOijqQbZv57TR
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="ndis-race-fix.diff.txt"
Content-Transfer-Encoding: quoted-printable
Index: compat/ndis/subr_hal.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- compat/ndis/subr_hal.c (revision 239770)
+++ compat/ndis/subr_hal.c (working copy)
@@ -392,16 +392,18 @@
{
uint8_t oldirql;
=20
+ sched_pin();
oldirql =3D KeGetCurrentIrql();
=20
/* I am so going to hell for this. */
if (oldirql > irql)
- panic("IRQL_NOT_LESS_THAN");
+ panic("IRQL_NOT_LESS_THAN_OR_EQUAL");
=20
- if (oldirql !=3D DISPATCH_LEVEL) {
- sched_pin();
+ if (oldirql !=3D DISPATCH_LEVEL)=20
mtx_lock(&disp_lock[curthread->td_oncpu]);
- }
+ else
+ sched_unpin();=09
+
/*printf("RAISE IRQL: %d %d\n", irql, oldirql);*/
=20
return (oldirql);
--T4sUOijqQbZv57TR--
--JYK4vJDZwFMowpUq
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)
iQEcBAEBCAAGBQJQPKRHAAoJEFJPDDeguUajR7MH/iYY+OHnZXsUNCkMUgDzGO4k
Fw3RIfJqvmRIebOZc5wVT7zyG2ZkSRdpGtHnwyhAOjAJMBwHh/1Tg6CorOylvn6M
paspIkVfHTreqHzqkuRPmSqME25cVupkFBRs+tZxgXC2L40GL+/3SZ4+e1uv+arj
X6yFHfPU6nXoYROwRWeYxY2U/dBieOZWR9S0iEIv6vAiJFbR8bL/1bbRWwbuyhC0
0GuhpaJlqMB6zmuXMY/c/WQQtQMX8JF1bxHpr31yIK9NUoe6boC2lB0UywYgPpZE
7C8kqXhCqjXGY2VMmbEfb2GiHG2lYxEHGnVhlTF1M/sdFjLi2RFa459GmYVX990=
=9Ntv
-----END PGP SIGNATURE-----
--JYK4vJDZwFMowpUq--
More information about the freebsd-bugs
mailing list