From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752602AbbDEOnb (ORCPT ); Sun, 5 Apr 2015 10:43:31 -0400 Received: from lb1-smtp-cloud3.xs4all.net ([194.109.24.22]:52090 "EHLO lb1-smtp-cloud3.xs4all.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751878AbbDEOn3 (ORCPT ); Sun, 5 Apr 2015 10:43:29 -0400 Message-ID: <55214A0D.9000404@xs4all.nl> Date: Sun, 05 Apr 2015 16:43:25 +0200 From: Jim Bos User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Linux Kernel Mailing List CC: jiang.liu@linux.intel.com, tglx@linutronix.de Subject: ACPI events broken on non-SMP since 3.16 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, Since around 3.16 ACPI events aren't working on a single processor system, I found this on an old Dell laptop Pentium-M and on AMD geode board. By ACPI events I mean, acpid (via netlink) and acpi_listen doesn't give anything when pressing ACPI power button. Simply 'nosmp' on recent kernel on modern 2-core Celeron system also stops acpid from working. Note that booting an SMP kernel with single core isn't enough to break this, smp really needs to be disabled by 'nosmp' or running it on a older motherboard without I/O apic ('smbboot: SMP disabled' in dmesg). With some problems managed to bisect this using VirtualBox guest, which allows to to specify number of CPU's and having yes/no an I/O Apic. It bisects to this commit which unfortunately doesn't revert cleanly on latest 4.0-rcX: commit 16ee7b3dcc56be14b9a813612cff2cc2339cdced Author: Jiang Liu Date: Mon Jun 9 16:20:04 2014 +0800 x86, irq: Simplify the way to handle ISA IRQ On startup, setup_IO_APIC_irqs() will program all IOAPIC pins for ISA IRQs. Later when mp_map_pin_to_irq() is called, it just returns ISA IRQ number without programming corresponding IOAPIC pin. This patch consolidates the way to program IOAPIC pins for both ISA and non-ISA IRQs into mp_map_pin_to_irq() as below: 1) For ISA IRQs, mp_irqs array is used to map IOAPIC pin to IRQ and mp_irqdomain_map() is used to actually program the pin. 2) For non-ISA IRQs, irqdomain is used to map IOAPIC pin to IRQ, and mp_irqdomain_map() is also used to actually program the pin. Any ideas ? _ Jim