From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-1?Q?=C9ric_Piel?= Subject: Re: BUG: using __this_cpu_write() in preemptible [00000000] code: systemd-udevd/497 Date: Tue, 15 Apr 2014 23:22:29 +0200 Message-ID: <534DA315.6040808@tremplin-utc.net> References: <87mwfn4gah.fsf@canonical.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <87mwfn4gah.fsf@canonical.com> Sender: linux-kernel-owner@vger.kernel.org To: Luis Henriques , Robert Moore , Lv Zheng , "Rafael J. Wysocki" , Len Brown Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-acpi@vger.kernel.org On 15/04/14 01:55, Luis Henriques wrote: >=20 > (Cc'ing both lis3lv02d and ACPI maintainers) >=20 > Since commit 188a81409ff7de1c5aae947a96356ddd8ff4aaa3 ("percpu: add > preemption checks to __this_cpu ops") I've been seeing the following: Hi, I've had a quick look at the lis3lv02d_acpi_read() (in drivers/platform/x86/hp_accel.c) and couldn't see anything obvious. It basically does: status =3D acpi_evaluate_integer(dev->handle, "ALRD", &args, &lret); Is there anything special to take care before calling acpi_evaluate_integer()? After having a look at some codes calling it nothing obvious either jumped to my eyes. >=20 > [ 10.485588] hp_accel: hardware type HPB64xx found > [ 10.485772] BUG: using __this_cpu_write() in preemptible [00000000= ] code: systemd-udevd/497 > [ 10.485777] caller is __this_cpu_preempt_check+0x13/0x20 > [ 10.485781] CPU: 3 PID: 497 Comm: systemd-udevd Tainted: G = W 3.15.0-rc1 #9 > [ 10.485783] Hardware name: Hewlett-Packard HP EliteBook 8470p/179B= , BIOS 68ICF Ver. F.02 04/27/2012 > [ 10.485785] ffffffff81a14db5 ffff88022c80b8e0 ffffffff81604ba4 00= 00000000000003 > [ 10.485789] ffff88022c80b908 ffffffff81313431 0000000000000000 00= 00000000000032 > [ 10.485793] 00000000000003e8 ffff88022c80b918 ffffffff81313473 ff= ff88022c80b928 > [ 10.485796] Call Trace: > [ 10.485802] [] dump_stack+0x4e/0x7a > [ 10.485805] [] check_preemption_disabled+0xe1/0= xf0 > [ 10.485808] [] __this_cpu_preempt_check+0x13/0x= 20 > [ 10.485813] [] touch_nmi_watchdog+0x28/0x40 > [ 10.485817] [] acpi_os_stall+0x37/0x40 > [ 10.485822] [] acpi_ex_system_do_stall+0x39/0x3= d > [ 10.485825] [] acpi_ex_opcode_1A_0T_0R+0x72/0xa= 3 > [ 10.485829] [] acpi_ds_exec_end_op+0xd0/0x3e8 > [ 10.485833] [] acpi_ps_parse_loop+0x51d/0x576 > [ 10.485836] [] acpi_ps_parse_aml+0x98/0x289 > [ 10.485839] [] acpi_ps_execute_method+0x1c1/0x2= 6c > [ 10.485843] [] acpi_ns_evaluate+0x1c1/0x258 > [ 10.485846] [] acpi_evaluate_object+0x126/0x22f > [ 10.485850] [] ? wake_up_klogd+0x52/0x70 > [ 10.485853] [] acpi_evaluate_integer+0x34/0x52 > [ 10.485858] [] lis3lv02d_acpi_read+0x59/0x70 [h= p_accel] > [ 10.485863] [] lis3lv02d_init_device+0x26/0xc00= [lis3lv02d] > [ 10.485866] [] ? acpi_walk_resources+0x77/0x8d > [ 10.485870] [] ? lis3lv02d_dmi_matched+0x35/0x4= 0 [hp_accel] > [ 10.485874] [] lis3lv02d_add+0xe1/0x1d0 [hp_acc= el] > [ 10.485878] [] acpi_device_probe+0x41/0xee > [ 10.485882] [] driver_probe_device+0xfd/0x240 > [ 10.485886] [] __driver_attach+0x93/0xa0 > [ 10.485889] [] ? __device_attach+0x40/0x40 > [ 10.485893] [] bus_for_each_dev+0x63/0xa0 > [ 10.485897] [] driver_attach+0x1e/0x20 > [ 10.485900] [] bus_add_driver+0x178/0x230 > [ 10.485904] [] ? 0xffffffffa001cfff > [ 10.485908] [] driver_register+0x64/0xf0 > [ 10.485911] [] ? 0xffffffffa001cfff > [ 10.485915] [] acpi_bus_register_driver+0x3b/0x= 43 > [ 10.485919] [] lis3lv02d_driver_init+0x10/0x100= 0 [hp_accel] > [ 10.485923] [] do_one_initcall+0x112/0x160 > [ 10.485927] [] ? set_memory_nx+0x43/0x50 > [ 10.485932] [] load_module+0x1b20/0x22f0 > [ 10.485936] [] ? ref_module+0x120/0x120 > [ 10.485940] [] ? copy_module_from_fd.isra.46+0x= 10a/0x160 > [ 10.485944] [] SyS_finit_module+0x7e/0x80 > [ 10.485949] [] system_call_fastpath+0x1a/0x1f >=20 > Before this BUG, I also have the following, which doesn't seem relate= d > (but I may be wrong): : I also agree with you this second stack dump is probably unrelated :-) Cheers, =C9ric