Re: [Devel] [PATCH 1/1] tools: power/acpi, revert to LD = gcc
by Rafael J. Wysocki
On Tuesday, April 24, 2018 9:43:44 AM CEST Jiri Slaby wrote:
> Commit 7ed1c1901fe5 (tools: fix cross-compile var clobbering) removed
> setting of LD to $(CROSS_COMPILE)gcc. This broke build of acpica
> (acpidump) in power/acpi:
> ld: unrecognized option '-D_LINUX'
>
> The tools pass CFLAGS to the linker (incl. -D_LINUX), so revert this
> particular change and let LD be $(CC) again. Note that the old behaviour
> was a bit different, it used $(CROSS_COMPILE)gcc which was eliminated by
> the commit 7ed1c1901fe5. We use $(CC) for that reason.
>
> Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
> Cc: Martin Kelly <martin(a)martingkelly.com>
> Cc: "Rafael J. Wysocki" <rjw(a)rjwysocki.net>
> Cc: Len Brown <lenb(a)kernel.org>
> Cc: Robert Moore <robert.moore(a)intel.com>
> Cc: Erik Schmauss <erik.schmauss(a)intel.com>
> Cc: linux-acpi(a)vger.kernel.org
> Cc: devel(a)acpica.org
> ---
> tools/power/acpi/Makefile.config | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tools/power/acpi/Makefile.config b/tools/power/acpi/Makefile.config
> index 2cccbba64418..f304be71c278 100644
> --- a/tools/power/acpi/Makefile.config
> +++ b/tools/power/acpi/Makefile.config
> @@ -56,6 +56,7 @@ INSTALL_SCRIPT = ${INSTALL_PROGRAM}
> # to compile vs uClibc, that can be done here as well.
> CROSS = #/usr/i386-linux-uclibc/usr/bin/i386-uclibc-
> CROSS_COMPILE ?= $(CROSS)
> +LD = $(CC)
> HOSTCC = gcc
>
> # check if compiler option is supported
>
Applied, thanks!
4 years, 2 months
ACPICA version 20180427 released
by Moore, Robert
27 April 2018. Summary of changes for version 20180427:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Debugger: Added support for Package objects in the "Test Objects" command. This command walks the entire namespace and evaluates all named data objects (Integers, Strings, Buffers, and now Packages).
Improved error messages for the namespace root node. Originally, the root was referred to by the confusing string "\___". This has been replaced by "Namespace Root" for clarification.
Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin Ian King <colin.king(a)canonical.com>.
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented support to detect and flag illegal forward references. For compatibility with other ACPI implementations, these references are now illegal at the root level of the DSDT or SSDTs. Forward references have always been illegal within control methods. This change should not affect existing ASL/AML code because of the fact that these references have always been illegal in the other ACPI implementation.
iASL: Added error messages for the case where a table OEM ID and OEM TABLE ID strings are longer than the ACPI-defined length. Previously, these strings were simply silently truncated.
iASL: Enhanced the -tc option (which creates an AML hex file in C, suitable for import into a firmware project):
1) Create a unique name for the table, to simplify use of multiple SSDTs.
2) Add a protection #ifdef in the file, similar to a .h header file.
With assistance from Sami Mujawar, sami.mujawar(a)arm.com and Evan Lloyd, evan.lloyd(a)arm.com
AcpiExec: Added a new option, -df, to disable the local fault handler. This is useful during debugging, where it may be desired to drop into a debugger on a fault.
4 years, 2 months
Re: [Devel] [RFC PATCH v3 3/3] acpi: apei: Warn when GHES marks correctable errors as "fatal"
by Moore, Robert
> -----Original Message-----
> From: Alex G. [mailto:[email protected]]
> Sent: Thursday, April 26, 2018 10:48 AM
> To: Borislav Petkov <bp(a)alien8.de>
> Cc: linux-acpi(a)vger.kernel.org; linux-edac(a)vger.kernel.org; Rafael J.
> Wysocki <rjw(a)rjwysocki.net>; Len Brown <lenb(a)kernel.org>; Luck, Tony
> <tony.luck(a)intel.com>; Mauro Carvalho Chehab <mchehab(a)kernel.org>;
> Moore, Robert <robert.moore(a)intel.com>; Schmauss, Erik
> <erik.schmauss(a)intel.com>; Tyler Baicar <tbaicar(a)codeaurora.org>; Will
> Deacon <will.deacon(a)arm.com>; James Morse <james.morse(a)arm.com>; Shiju
> Jose <shiju.jose(a)huawei.com>; Jonathan (Zhixiong) Zhang
> <zjzhang(a)codeaurora.org>; Dongjiu Geng <gengdongjiu(a)huawei.com>; linux-
> kernel(a)vger.kernel.org; devel(a)acpica.org
> Subject: Re: [RFC PATCH v3 3/3] acpi: apei: Warn when GHES marks
> correctable errors as "fatal"
>
> On 04/26/2018 06:20 AM, Borislav Petkov wrote:
> > Pasting the same comment from last time since you missed it:
> >
> > "No, I don't want any of that crap issuing stuff in dmesg and then
> > people opening bugs and running around and trying to replace hardware.
> >
> > We either can handle the error and log a normal record somewhere
Usually nobody looks at these, it seems to me. On windows, ACPI errors just go into the bit bucket.
or we
> > cannot and explode.
This of course would be more windows behavior.
> > The complaining about the FW doesn't bring shit."
We seem to get down to more of a philosophical problem. Basically, just ignore errors or report them somewhere where they will be actually seen. Or, just crash.
>
> " Borislav, if you don't like the third patch in the series, feel free
> to leave it out. THings will work beautifully with or without it."
>
> :)
4 years, 2 months
Re: [Devel] [PATCH 1/2] ACPICA: provide abstraction for raw_spinlock_t
by Rafael J. Wysocki
On Wed, Apr 25, 2018 at 4:28 PM, Sebastian Andrzej Siewior
<bigeasy(a)linutronix.de> wrote:
> Provide a new lock type acpi_raw_spinlock which is implemented as
> raw_spinlock_t on Linux. This type should be used in code which covers
> small areas of code and disables interrupts only for short time even on
> a realtime OS.
> There is a fallback to spinlock_t if an OS does not provide an
> implementation for acpi_raw_spinlock.
>
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
Thanks for the update!
I think I can apply this series, but first I need to discuss sorting
it out upstream with Bob and Erik.
> ---
> include/acpi/acpiosxf.h | 21 +++++++++++++++++++++
> include/acpi/actypes.h | 4 ++++
> include/acpi/platform/aclinux.h | 5 +++++
> include/acpi/platform/aclinuxex.h | 30 ++++++++++++++++++++++++++++++
> 4 files changed, 60 insertions(+)
>
> diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h
> index 540d35f06ad6..eb1f21af7556 100644
> --- a/include/acpi/acpiosxf.h
> +++ b/include/acpi/acpiosxf.h
> @@ -97,6 +97,27 @@ acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock handle);
> void acpi_os_release_lock(acpi_spinlock handle, acpi_cpu_flags flags);
> #endif
>
> +/*
> + * RAW spinlock primitives. If the OS does not provide them, fallback to
> + * spinlock primitives
> + */
> +#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_raw_lock
> +# define acpi_os_create_raw_lock(out_handle) acpi_os_create_lock(out_handle)
> +#endif
> +
> +#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_raw_lock
> +# define acpi_os_delete_raw_lock(handle) acpi_os_delete_lock(handle)
> +#endif
> +
> +#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_raw_lock
> +# define acpi_os_acquire_raw_lock(handle) acpi_os_acquire_lock(handle)
> +#endif
> +
> +#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_raw_lock
> +# define acpi_os_release_raw_lock(handle, flags) \
> + acpi_os_release_lock(handle, flags)
> +#endif
> +
> /*
> * Semaphore primitives
> */
> diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
> index 1c530f95dc34..2b1bafa197c0 100644
> --- a/include/acpi/actypes.h
> +++ b/include/acpi/actypes.h
> @@ -245,6 +245,10 @@ typedef u64 acpi_physical_address;
> #define acpi_spinlock void *
> #endif
>
> +#ifndef acpi_raw_spinlock
> +#define acpi_raw_spinlock acpi_spinlock
> +#endif
> +
> #ifndef acpi_semaphore
> #define acpi_semaphore void *
> #endif
> diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
> index a0b232703302..7451b3bca83a 100644
> --- a/include/acpi/platform/aclinux.h
> +++ b/include/acpi/platform/aclinux.h
> @@ -102,6 +102,7 @@
>
> #define acpi_cache_t struct kmem_cache
> #define acpi_spinlock spinlock_t *
> +#define acpi_raw_spinlock raw_spinlock_t *
> #define acpi_cpu_flags unsigned long
>
> /* Use native linux version of acpi_os_allocate_zeroed */
> @@ -119,6 +120,10 @@
> #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object
> #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id
> #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
> +#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_raw_lock
> +#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_raw_lock
> +#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_raw_lock
> +#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_raw_lock
>
> /*
> * OSL interfaces used by debugger/disassembler
> diff --git a/include/acpi/platform/aclinuxex.h b/include/acpi/platform/aclinuxex.h
> index 7e81475fe034..d754a1b12721 100644
> --- a/include/acpi/platform/aclinuxex.h
> +++ b/include/acpi/platform/aclinuxex.h
> @@ -90,6 +90,36 @@ static inline acpi_thread_id acpi_os_get_thread_id(void)
> lock ? AE_OK : AE_NO_MEMORY; \
> })
>
> +
> +#define acpi_os_create_raw_lock(__handle) \
> + ({ \
> + raw_spinlock_t *lock = ACPI_ALLOCATE(sizeof(*lock)); \
> + if (lock) { \
> + *(__handle) = lock; \
> + raw_spin_lock_init(*(__handle)); \
> + } \
> + lock ? AE_OK : AE_NO_MEMORY; \
> + })
> +
> +static inline acpi_cpu_flags acpi_os_acquire_raw_lock(acpi_raw_spinlock lockp)
> +{
> + acpi_cpu_flags flags;
> +
> + raw_spin_lock_irqsave(lockp, flags);
> + return flags;
> +}
> +
> +static inline void acpi_os_release_raw_lock(acpi_raw_spinlock lockp,
> + acpi_cpu_flags flags)
> +{
> + raw_spin_unlock_irqrestore(lockp, flags);
> +}
> +
> +static inline void acpi_os_delete_raw_lock(acpi_raw_spinlock handle)
> +{
> + ACPI_FREE(handle);
> +}
> +
> static inline u8 acpi_os_readable(void *pointer, acpi_size length)
> {
> return TRUE;
> --
> 2.17.0
>
4 years, 2 months
Re: [Devel] [RFC PATCH] ACPICA: Convert acpi_gbl_hardware lock back to a raw_spinlock_t
by Rafael J. Wysocki
On Wednesday, April 25, 2018 10:57:58 AM CEST Sebastian Andrzej Siewior wrote:
> On 2018-04-24 22:55:20 [+0200], Rafael J. Wysocki wrote:
> > > diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
> > > index a0b232703302..38eaa3235210 100644
> > > --- a/include/acpi/platform/aclinux.h
> > > +++ b/include/acpi/platform/aclinux.h
> > > @@ -102,6 +102,7 @@
> > >
> > > #define acpi_cache_t struct kmem_cache
> > > #define acpi_spinlock spinlock_t *
> > > +#define acpi_raw_spinlock raw_spinlock_t *
> >
> > I would prefer to redefine acpi_spinlock as raw_spinlock_t and then
> > acpi_os_acquire/release_lock() as
> > raw_spin_lock_irqsave/unlock_irqrestore(), respectively.
>
> I would rather not convert all current ACPI spinlock_t into
> raw_spinlock_t. Only those which are required to.
I'm actually not 100% sure right now (as a rule things like this come up
when you are not expecting them :-)), but IIRC there are assumptions
regarding at least some of the ACPICA locks as being real spinlocks.
They need to be reviewed from this angle and the code in question is
far from straightforward.
> I don't know if there is anything special about acpi_gbl_hardware_lock
> but we have other raw locks already (like erst_lock or c3_lock).
> I could come up with something like acpi_os_acquire_rawlock() if you
> prefer this instead.
That might work, but the other OSes using ACPICA don't actually have a "raw
spinlock" concept, so this should just fall back to acpi_os_acquire_lock()
if the OS doesn't implement the "raw" thing separately.
4 years, 2 months
Re: [Devel] [RFC PATCH] ACPICA: Convert acpi_gbl_hardware lock back to a raw_spinlock_t
by Rafael J. Wysocki
On Tue, Apr 24, 2018 at 6:02 PM, Sebastian Andrzej Siewior
<bigeasy(a)linutronix.de> wrote:
> From: Steven Rostedt <rostedt(a)goodmis.org>
>
> We hit the following bug with -RT:
>
> |BUG: scheduling while atomic: swapper/7/0/0x00000002
> |Pid: 0, comm: swapper/7 Not tainted 3.6.11-rt28.19.el6rt.x86_64.debug #1
> |Call Trace:
> | rt_spin_lock+0x16/0x40
> | __schedule_bug+0x67/0x90
> | __schedule+0x793/0x7a0
> | acpi_os_acquire_lock+0x1f/0x23
> | acpi_write_bit_register+0x33/0xb0
> | rt_spin_lock_slowlock+0xe5/0x2f0
> | acpi_idle_enter_bm+0x8a/0x28e
> …
> As the acpi code disables interrupts in acpi_idle_enter_bm, and calls
> code that grabs the acpi lock, it causes issues as the lock is currently
> in RT a sleeping lock.
>
> The lock was converted from a raw to a sleeping lock due to some
> previous issues, and tests that showed it didn't seem to matter.
> Unfortunately, it did matter for one of our boxes.
>
> This patch converts the lock back to a raw lock. I've run this code on a
> few of my own machines, one being my laptop that uses the acpi quite
> extensively. I've been able to suspend and resume without issues.
>
> [ tglx: Made the change exclusive for acpi_gbl_hardware_lock ]
>
> Signed-off-by: Steven Rostedt <rostedt(a)goodmis.org>
> Cc: John Kacur <jkacur(a)gmail.com>
> Cc: Clark Williams <clark(a)redhat.com>
> Link: http://lkml.kernel.org/r/[email protected]
>
> Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
> [bigeasy: shorten the backtrace]
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
> ---
> drivers/acpi/acpica/acglobal.h | 2 +-
> drivers/acpi/acpica/hwregs.c | 4 ++--
> drivers/acpi/acpica/hwxface.c | 4 ++--
> drivers/acpi/acpica/utmutex.c | 4 ++--
> include/acpi/platform/aclinux.h | 14 ++++++++++++++
> 5 files changed, 21 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h
> index 0bc550072a21..1e6204518496 100644
> --- a/drivers/acpi/acpica/acglobal.h
> +++ b/drivers/acpi/acpica/acglobal.h
> @@ -82,7 +82,7 @@ ACPI_GLOBAL(u8, acpi_gbl_global_lock_pending);
> * interrupt level
> */
> ACPI_GLOBAL(acpi_spinlock, acpi_gbl_gpe_lock); /* For GPE data structs and registers */
> -ACPI_GLOBAL(acpi_spinlock, acpi_gbl_hardware_lock); /* For ACPI H/W except GPE registers */
> +ACPI_GLOBAL(acpi_raw_spinlock, acpi_gbl_hardware_lock); /* For ACPI H/W except GPE registers */
> ACPI_GLOBAL(acpi_spinlock, acpi_gbl_reference_count_lock);
>
> /* Mutex for _OSI support */
> diff --git a/drivers/acpi/acpica/hwregs.c b/drivers/acpi/acpica/hwregs.c
> index 27a86ad55b58..4c792f3e6135 100644
> --- a/drivers/acpi/acpica/hwregs.c
> +++ b/drivers/acpi/acpica/hwregs.c
> @@ -390,14 +390,14 @@ acpi_status acpi_hw_clear_acpi_status(void)
> ACPI_BITMASK_ALL_FIXED_STATUS,
> ACPI_FORMAT_UINT64(acpi_gbl_xpm1a_status.address)));
>
> - lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock);
> + raw_spin_lock_irqsave(acpi_gbl_hardware_lock, lock_flags);
>
> /* Clear the fixed events in PM1 A/B */
>
> status = acpi_hw_register_write(ACPI_REGISTER_PM1_STATUS,
> ACPI_BITMASK_ALL_FIXED_STATUS);
>
> - acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags);
> + raw_spin_unlock_irqrestore(acpi_gbl_hardware_lock, lock_flags);
>
> if (ACPI_FAILURE(status)) {
> goto exit;
> diff --git a/drivers/acpi/acpica/hwxface.c b/drivers/acpi/acpica/hwxface.c
> index 5d1396870bd0..8efeae8f3a8d 100644
> --- a/drivers/acpi/acpica/hwxface.c
> +++ b/drivers/acpi/acpica/hwxface.c
> @@ -227,7 +227,7 @@ acpi_status acpi_write_bit_register(u32 register_id, u32 value)
> return_ACPI_STATUS(AE_BAD_PARAMETER);
> }
>
> - lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock);
> + raw_spin_lock_irqsave(acpi_gbl_hardware_lock, lock_flags);
>
> /*
> * At this point, we know that the parent register is one of the
> @@ -288,7 +288,7 @@ acpi_status acpi_write_bit_register(u32 register_id, u32 value)
>
> unlock_and_exit:
>
> - acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags);
> + raw_spin_unlock_irqrestore(acpi_gbl_hardware_lock, lock_flags);
> return_ACPI_STATUS(status);
> }
>
> diff --git a/drivers/acpi/acpica/utmutex.c b/drivers/acpi/acpica/utmutex.c
> index d2d93e388f40..2e465e6a0ab6 100644
> --- a/drivers/acpi/acpica/utmutex.c
> +++ b/drivers/acpi/acpica/utmutex.c
> @@ -52,7 +52,7 @@ acpi_status acpi_ut_mutex_initialize(void)
> return_ACPI_STATUS (status);
> }
>
> - status = acpi_os_create_lock (&acpi_gbl_hardware_lock);
> + status = acpi_os_create_raw_lock(&acpi_gbl_hardware_lock);
> if (ACPI_FAILURE (status)) {
> return_ACPI_STATUS (status);
> }
> @@ -109,7 +109,7 @@ void acpi_ut_mutex_terminate(void)
> /* Delete the spinlocks */
>
> acpi_os_delete_lock(acpi_gbl_gpe_lock);
> - acpi_os_delete_lock(acpi_gbl_hardware_lock);
> + acpi_os_delete_raw_lock(acpi_gbl_hardware_lock);
> acpi_os_delete_lock(acpi_gbl_reference_count_lock);
>
> /* Delete the reader/writer lock */
> diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
> index a0b232703302..38eaa3235210 100644
> --- a/include/acpi/platform/aclinux.h
> +++ b/include/acpi/platform/aclinux.h
> @@ -102,6 +102,7 @@
>
> #define acpi_cache_t struct kmem_cache
> #define acpi_spinlock spinlock_t *
> +#define acpi_raw_spinlock raw_spinlock_t *
I would prefer to redefine acpi_spinlock as raw_spinlock_t and then
acpi_os_acquire/release_lock() as
raw_spin_lock_irqsave/unlock_irqrestore(), respectively.
> #define acpi_cpu_flags unsigned long
>
> /* Use native linux version of acpi_os_allocate_zeroed */
> @@ -120,6 +121,19 @@
> #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id
> #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
>
> +#define acpi_os_create_raw_lock(__handle) \
> +({ \
> + raw_spinlock_t *lock = ACPI_ALLOCATE(sizeof(*lock)); \
> + \
> + if (lock) { \
> + *(__handle) = lock; \
> + raw_spin_lock_init(*(__handle)); \
> + } \
> + lock ? AE_OK : AE_NO_MEMORY; \
> +})
> +
> +#define acpi_os_delete_raw_lock(__handle) kfree(__handle)
> +
> /*
> * OSL interfaces used by debugger/disassembler
> */
> --
4 years, 2 months
[pm:bleeding-edge 7/10] drivers/acpi/button.c:659:0: error: unterminated argument list invoking macro "module_driver"
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
head: 834d804571470ca0b77a69243c54dbb9384e321d
commit: 0d8588c92566455f14214188bc7803ea63ab463d [7/10] ACPI / button: make module loadable when booted in non-ACPI mode
config: i386-randconfig-x014-201816 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
git checkout 0d8588c92566455f14214188bc7803ea63ab463d
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
>> drivers/acpi/button.c:659:0: error: unterminated argument list invoking macro "module_driver"
module_driver(acpi_button_driver, __acpi_bus_register_driver,
>> drivers/acpi/button.c:659:1: error: expected '=', ',', ';', 'asm' or '__attribute__' at end of input
module_driver(acpi_button_driver, __acpi_bus_register_driver,
^~~~~~~~~~~~~
drivers/acpi/button.c:653:13: warning: '__acpi_bus_unregister_driver' defined but not used [-Wunused-function]
static void __acpi_bus_unregister_driver(struct acpi_driver *driver)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/acpi/button.c:638:12: warning: '__acpi_bus_register_driver' defined but not used [-Wunused-function]
static int __acpi_bus_register_driver(struct acpi_driver *driver)
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/acpi/button.c:109:27: warning: 'acpi_button_driver' defined but not used [-Wunused-variable]
static struct acpi_driver acpi_button_driver = {
^~~~~~~~~~~~~~~~~~
vim +/module_driver +659 drivers/acpi/button.c
658
> 659 module_driver(acpi_button_driver, __acpi_bus_register_driver,
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
4 years, 2 months
Re: [Devel] [RFC PATCH v2 3/4] acpi: apei: Do not panic() when correctable errors are marked as fatal.
by James Morse
Hi Alex,
(I haven't read through all this yet, just on this one:)
On 04/19/2018 03:57 PM, Alex G. wrote:
> Maybe it's better move the AER handling to NMI/IRQ context, since
> ghes_handle_aer() is only scheduling the real AER andler, and is irq
> safe. I'm scratching my head about why we're messing with IRQ work from
> NMI context, instead of just scheduling a regular handler to take care
> of things.
We can't touch schedule_work_on() from NMI context as it takes spinlocks and
disables interrupts. (see __queue_work()) The NMI may have interrupted
IRQ-context code
that was already holding the same locks.
IRQ-work behaves differently, it uses an llist for the work and an arch
code hook
to raise a self-IPI.
Thanks,
James
4 years, 2 months
[PATCH v11 0/4] set VSESR_EL2 by user space and support NOTIFY_SEI notification
by Dongjiu Geng
1. Detect whether KVM can set set guest SError syndrome
2. Support to Set VSESR_EL2 and inject SError by user space.
3. Support live migration to keep SError pending state and VSESR_EL2 value.
4. ACPI 6.1 adds support for NOTIFY_SEI as a GHES notification mechanism, so support this
notification in software, KVM or kernel ARCH code call handle_guest_sei() to let ACP driver
to handle this notification.
Change since V10:
Address James's comments, thanks James
1. Merge the helper function with the user.
2. Move the ISS_MASK into pend_guest_serror() to clear top bits
3. Make kvm_vcpu_events struct align to 4 bytes
4. Add something check in the kvm_arm_vcpu_set_events()
5. Check kvm_arm_vcpu_get/set_events()'s return value.
6. Initialise kvm_vcpu_events to 0 so that padding transferred to user-space doesn't
contain kernel stack.
Dongjiu Geng (4):
arm64: KVM: export the capability to set guest SError syndrome
arm/arm64: KVM: Add KVM_GET/SET_VCPU_EVENTS
ACPI / APEI: Add SEI notification type support for ARMv8
arm64: handle NOTIFY_SEI notification by the APEI driver
Documentation/virtual/kvm/api.txt | 39 ++++++++++++++++++++++++--
arch/arm/include/asm/kvm_host.h | 6 ++++
arch/arm/kvm/guest.c | 12 ++++++++
arch/arm64/include/asm/kvm_emulate.h | 5 ++++
arch/arm64/include/asm/kvm_host.h | 7 +++++
arch/arm64/include/asm/system_misc.h | 1 +
arch/arm64/include/uapi/asm/kvm.h | 12 ++++++++
arch/arm64/kernel/traps.c | 4 +++
arch/arm64/kvm/guest.c | 31 +++++++++++++++++++++
arch/arm64/kvm/inject_fault.c | 7 ++++-
arch/arm64/kvm/reset.c | 4 +++
arch/arm64/mm/fault.c | 10 +++++++
drivers/acpi/apei/Kconfig | 15 ++++++++++
drivers/acpi/apei/ghes.c | 53 ++++++++++++++++++++++++++++++++++++
include/acpi/ghes.h | 1 +
include/uapi/linux/kvm.h | 1 +
virt/kvm/arm/arm.c | 21 ++++++++++++++
17 files changed, 226 insertions(+), 3 deletions(-)
--
1.9.1
4 years, 2 months
[acpica] watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [swapper:1]
by Fengguang Wu
Hello,
FYI this soft lockup happens in mainline kernel 4.17.0-rc1.
It at least dates back to v4.1 .
It occurs in 8 out of 9 boots.
[ 59.276648] osst :I: Tape driver with OnStream support version 0.99.4
[ 59.276648] osst :I: $Id: osst.c,v 1.73 2005/01/01 21:13:34 wriede Exp $
[ 59.493429] Rounding down aligned max_sectors from 4294967295 to 4294967288
[ 59.538489] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
[ 59.551970] e1000: Copyright (c) 1999-2006 Intel Corporation.
[ 84.192080] watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [swapper:1]
[ 84.192080] Modules linked in:
[ 84.192080] irq event stamp: 3978566
[ 84.192080] hardirqs last enabled at (3978565): [<ffffffff88145038>] __slab_alloc+0x48/0x80
[ 84.192080] hardirqs last disabled at (3978566): [<ffffffff898008ac>] interrupt_entry+0xac/0xc0:
interrupt_entry at arch/x86/entry/entry_64.S:627
[ 84.192080] softirqs last enabled at (3978494): [<ffffffff89a0045b>] __do_softirq+0x45b/0x5e5
[ 84.192080] softirqs last disabled at (3978487): [<ffffffff87ed30be>] irq_exit+0x12e/0x160:
invoke_softirq at kernel/softirq.c:365
(inlined by) irq_exit at kernel/softirq.c:405
[ 84.192080] CPU: 0 PID: 1 Comm: swapper Not tainted 4.17.0-rc1 #259
[ 84.192080] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
[ 84.192080] RIP: 0010:__slab_alloc+0x4d/0x80
[ 84.192080] RSP: 0000:ffff88001709f088 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff13
[ 84.192080] RAX: 0000000000000007 RBX: 0000000000000246 RCX: 0000000000000018
[ 84.192080] RDX: 0000000000000000 RSI: ffff880017092f48 RDI: 0000000000000246
[ 84.192080] RBP: ffff88000abc5008 R08: 0000000000000001 R09: 0000000000000000
[ 84.192080] R10: 0000000000000000 R11: 0000000000000000 R12: 00000000014080c0
[ 84.192080] R13: ffffffff8898e7d1 R14: ffff88001c48ab00 R15: ffff8800168fe034
[ 84.192080] FS: 0000000000000000(0000) GS:ffffffff8a457000(0000) knlGS:0000000000000000
[ 84.192080] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 84.192080] CR2: 0000000000000000 CR3: 0000000012a25001 CR4: 00000000000206f0
[ 84.192080] Call Trace:
[ 84.192080] ? acpi_ut_create_generic_state+0x54/0x8c:
acpi_ut_create_generic_state at drivers/acpi/acpica/utstate.c:91
[ 84.192080] kmem_cache_alloc+0xeb/0x120:
slab_alloc_node at mm/slub.c:2707
(inlined by) slab_alloc at mm/slub.c:2749
(inlined by) kmem_cache_alloc at mm/slub.c:2754
[ 84.192080] acpi_ut_create_generic_state+0x54/0x8c:
acpi_ut_create_generic_state at drivers/acpi/acpica/utstate.c:91
[ 84.192080] acpi_ut_create_update_state+0xe/0x9c:
acpi_ut_create_update_state at drivers/acpi/acpica/utstate.c:166
[ 84.192080] acpi_ut_create_update_state_and_push+0x13/0x31:
acpi_ut_create_update_state_and_push at drivers/acpi/acpica/utmisc.c:172
[ 84.192080] acpi_ut_update_object_reference+0x253/0x433:
acpi_ut_update_object_reference at drivers/acpi/acpica/utdelete.c:549
[ 84.192080] ? acpi_ut_update_ref_count+0x8b3/0x8b3:
acpi_ut_update_object_reference at drivers/acpi/acpica/utdelete.c:467
[ 84.192080] ? sched_clock_cpu+0x71/0x80:
__preempt_count_sub at arch/x86/include/asm/preempt.h:81
(inlined by) sched_clock_cpu at kernel/sched/clock.c:363
[ 84.192080] acpi_ds_do_implicit_return+0xbd/0xca:
acpi_ds_do_implicit_return at drivers/acpi/acpica/dsutils.c:117
[ 84.192080] acpi_ds_is_result_used+0x63/0x2be:
acpi_ds_is_result_used at drivers/acpi/acpica/dsutils.c:168
[ 84.192080] acpi_ds_delete_result_if_not_used+0x8c/0xde:
acpi_ds_delete_result_if_not_used at drivers/acpi/acpica/dsutils.c:321
[ 84.192080] ? acpi_ds_is_result_used+0x2be/0x2be:
acpi_ds_delete_result_if_not_used at drivers/acpi/acpica/dsutils.c:306
[ 84.192080] ? acpi_ds_result_push+0x108/0x277:
acpi_ds_result_stack_push at drivers/acpi/acpica/dswstate.c:208
(inlined by) acpi_ds_result_push at drivers/acpi/acpica/dswstate.c:128
[ 84.192080] acpi_ds_exec_end_op+0xb9d/0xbef:
acpi_ds_exec_end_op at drivers/acpi/acpica/dswexec.c:719
[ 84.192080] ? acpi_ds_exec_begin_op+0x3f8/0x3f8:
acpi_ds_exec_end_op at drivers/acpi/acpica/dswexec.c:325
[ 84.192080] acpi_ps_parse_loop+0x1095/0x112d:
acpi_ps_parse_loop at drivers/acpi/acpica/psloop.c:644
[ 84.192080] ? acpi_ps_get_next_arg+0x9f6/0x9f6:
acpi_ps_parse_loop at drivers/acpi/acpica/psloop.c:414
[ 84.192080] ? trace_hardirqs_on_caller+0x3e4/0x550:
__trace_hardirqs_on_caller at kernel/locking/lockdep.c:2836
(inlined by) trace_hardirqs_on_caller at kernel/locking/lockdep.c:2883
[ 84.192080] ? kmem_cache_alloc+0xb1/0x120:
slab_post_alloc_hook at mm/slab.h:444
(inlined by) slab_alloc_node at mm/slub.c:2741
(inlined by) slab_alloc at mm/slub.c:2749
(inlined by) kmem_cache_alloc at mm/slub.c:2754
[ 84.192080] acpi_ps_parse_aml+0x1e0/0x6a6:
acpi_ps_parse_aml at drivers/acpi/acpica/psparse.c:475
[ 84.192080] acpi_ps_execute_method+0x48d/0x4ea:
acpi_ps_execute_method at drivers/acpi/acpica/psxface.c:187
[ 84.192080] ? acpi_ut_acquire_mutex+0x6c/0x10a:
acpi_ut_acquire_mutex at drivers/acpi/acpica/utmutex.c:243
[ 84.192080] acpi_ns_evaluate+0x663/0x8a9:
acpi_ns_evaluate at drivers/acpi/acpica/nseval.c:204
[ 84.192080] ? acpi_ut_evaluate_object+0x74/0x337:
kmem_cache_alloc_trace at include/linux/slab.h:415
(inlined by) kmalloc at include/linux/slab.h:512
(inlined by) kzalloc at include/linux/slab.h:701
(inlined by) acpi_os_allocate_zeroed at include/acpi/platform/aclinuxex.h:57
(inlined by) acpi_ut_evaluate_object at drivers/acpi/acpica/uteval.c:50
[ 84.192080] acpi_ut_evaluate_object+0xe9/0x337:
acpi_ut_evaluate_object at drivers/acpi/acpica/uteval.c:61
[ 84.192080] acpi_rs_get_prt_method_data+0x74/0xca:
acpi_rs_get_prt_method_data at drivers/acpi/acpica/rsutils.c:448
[ 84.192080] ? acpi_rs_set_resource_source+0x154/0x154:
acpi_rs_get_prt_method_data at drivers/acpi/acpica/rsutils.c:435
[ 84.192080] ? acpi_rs_validate_parameters+0x63/0x96:
acpi_rs_validate_parameters at drivers/acpi/acpica/rsxface.c:90
[ 84.192080] acpi_get_irq_routing_table+0x76/0xad:
acpi_get_irq_routing_table at drivers/acpi/acpica/rsxface.c:124
[ 84.192080] ? acpi_rs_match_vendor_resource+0x2ea/0x2ea:
acpi_get_irq_routing_table at drivers/acpi/acpica/rsxface.c:124
[ 84.192080] ? deref_stack_reg+0x31/0x100:
deref_stack_reg at arch/x86/kernel/unwind_orc.c:316
[ 84.192080] ? deref_stack_reg+0xc7/0x100:
deref_stack_reg at arch/x86/kernel/unwind_orc.c:320 (discriminator 2)
[ 84.192080] acpi_pci_irq_find_prt_entry+0x166/0xbf0:
acpi_pci_irq_find_prt_entry at drivers/acpi/pci_irq.c:235
[ 84.192080] ? sched_clock_local+0x88/0xb0
[ 84.192080] ? acpi_penalize_sci_irq+0x30/0x30:
acpi_pci_irq_find_prt_entry at drivers/acpi/pci_irq.c:221
[ 84.192080] acpi_pci_irq_lookup+0x7e/0x640:
acpi_pci_irq_lookup at drivers/acpi/pci_irq.c:319
[ 84.192080] ? _raw_spin_unlock_irqrestore+0x2d/0x60:
arch_local_irq_restore at arch/x86/include/asm/paravirt.h:783
(inlined by) __raw_spin_unlock_irqrestore at include/linux/spinlock_api_smp.h:160
(inlined by) _raw_spin_unlock_irqrestore at kernel/locking/spinlock.c:184
[ 84.192080] ? acpi_pci_irq_find_prt_entry+0xbf0/0xbf0:
acpi_pci_irq_lookup at drivers/acpi/pci_irq.c:312
[ 84.192080] ? pci_conf1_read+0xa3/0x1f0:
pci_conf1_read at arch/x86/pci/direct.c:50
[ 84.192080] acpi_pci_irq_enable+0x1a1/0x520:
acpi_pci_irq_enable at drivers/acpi/pci_irq.c:439
[ 84.192080] ? acpi_pci_irq_lookup+0x640/0x640:
acpi_pci_irq_enable at drivers/acpi/pci_irq.c:409
[ 84.192080] ? pci_enable_resources+0x7f/0x240:
pci_enable_resources at drivers/pci/setup-res.c:461
[ 84.192080] ? pci_resize_resource+0x350/0x350:
pci_enable_resources at drivers/pci/setup-res.c:456
[ 84.192080] do_pci_enable_device+0xda/0x180:
do_pci_enable_device at drivers/pci/pci.c:1316
[ 84.192080] ? pci_load_and_free_saved_state+0xa0/0xa0:
do_pci_enable_device at drivers/pci/pci.c:1301
[ 84.192080] ? find_held_lock+0x3e/0x1c0:
find_held_lock at kernel/locking/lockdep.c:3536
[ 84.192080] ? __lock_is_held+0xb5/0x140:
__lock_is_held at kernel/locking/lockdep.c:3740
[ 84.192080] pci_enable_device_flags+0x248/0x360:
pci_enable_device_flags at drivers/pci/pci.c:1405
[ 84.192080] ? pci_enable_bridge+0x1e0/0x1e0:
pci_enable_device_flags at drivers/pci/pci.c:1372
[ 84.192080] e1000_probe+0x172/0x3a60:
e1000_probe at drivers/net/ethernet/intel/e1000/e1000_main.c:970
[ 84.192080] ? sched_clock_local+0x88/0xb0
[ 84.192080] ? e1000_io_slot_reset+0x120/0x120:
e1000_probe at drivers/net/ethernet/intel/e1000/e1000_main.c:947
[ 84.192080] ? lock_downgrade+0x5b0/0x5b0:
lock_release at kernel/locking/lockdep.c:3929
[ 84.192080] ? _raw_spin_unlock_irqrestore+0x2d/0x60:
arch_local_irq_restore at arch/x86/include/asm/paravirt.h:783
(inlined by) __raw_spin_unlock_irqrestore at include/linux/spinlock_api_smp.h:160
(inlined by) _raw_spin_unlock_irqrestore at kernel/locking/spinlock.c:184
[ 84.192080] ? trace_hardirqs_on_caller+0x3e4/0x550:
__trace_hardirqs_on_caller at kernel/locking/lockdep.c:2836
(inlined by) trace_hardirqs_on_caller at kernel/locking/lockdep.c:2883
[ 84.192080] pci_device_probe+0x268/0x460:
local_pci_probe at drivers/pci/pci-driver.c:305
(inlined by) pci_call_probe at drivers/pci/pci-driver.c:358
(inlined by) __pci_device_probe at drivers/pci/pci-driver.c:383
(inlined by) pci_device_probe at drivers/pci/pci-driver.c:423
[ 84.192080] driver_probe_device+0x545/0x800:
really_probe at drivers/base/dd.c:449
(inlined by) driver_probe_device at drivers/base/dd.c:590
[ 84.192080] __driver_attach+0x136/0x170:
__driver_attach at drivers/base/dd.c:824
[ 84.192080] ? driver_probe_device+0x800/0x800:
__driver_attach at drivers/base/dd.c:794
[ 84.192080] bus_for_each_dev+0x122/0x1d0:
bus_for_each_dev at drivers/base/bus.c:310
[ 84.192080] ? lock_downgrade+0x5b0/0x5b0:
lock_release at kernel/locking/lockdep.c:3929
[ 84.192080] ? store_drivers_autoprobe+0x130/0x130:
bus_for_each_dev at drivers/base/bus.c:300
[ 84.192080] bus_add_driver+0x42a/0x5c0:
bus_add_driver at drivers/base/bus.c:668
[ 84.192080] ? cavium_ptp_driver_init+0x15/0x15:
e1000_init_module at drivers/net/ethernet/intel/e1000/e1000_main.c:250
[ 84.192080] driver_register+0x182/0x3a0:
driver_register at drivers/base/driver.c:167
[ 84.192080] ? cavium_ptp_driver_init+0x15/0x15:
e1000_init_module at drivers/net/ethernet/intel/e1000/e1000_main.c:250
[ 84.192080] e1000_init_module+0x43/0x75:
e1000_init_module at drivers/net/ethernet/intel/e1000/e1000_main.c:257
[ 84.192080] do_one_initcall+0x97/0x230:
do_trace_initcall_finish at init/main.c:867
(inlined by) do_one_initcall at init/main.c:884
[ 84.192080] ? parameq+0xf0/0xf0:
parse_args at kernel/params.c:173
[ 84.192080] ? initcall_blacklisted+0x150/0x150:
do_one_initcall at init/main.c:874
[ 84.192080] ? __wake_up_common+0x4e0/0x4e0:
__wake_up_common_lock at kernel/sched/wait.c:109
[ 84.192080] ? lock_downgrade+0x5b0/0x5b0:
lock_release at kernel/locking/lockdep.c:3929
[ 84.192080] kernel_init_freeable+0x25f/0x2fb:
do_initcall_level at init/main.c:951
(inlined by) do_initcalls at init/main.c:959
(inlined by) do_basic_setup at init/main.c:977
(inlined by) kernel_init_freeable at init/main.c:1127
[ 84.192080] ? rest_init+0x150/0x150:
kernel_init at init/main.c:1050
[ 84.192080] kernel_init+0xa/0x110:
kernel_init at init/main.c:1055
[ 84.192080] ? rest_init+0x150/0x150:
kernel_init at init/main.c:1050
[ 84.192080] ret_from_fork+0x24/0x30:
ret_from_fork at arch/x86/entry/entry_64.S:418
[ 84.192080] Code: 44 00 00 e8 16 54 e1 ff 48 89 ef 4c 89 f1 4c 89 ea 44 89 e6 e8 d5 fb ff ff f6 c7 02 48 89 c5 74 1b e8 88 51 e1 ff 48 89 df 57 9d <0f> 1f 44 00 00 5b 48 89 e8 5d 41 5c 41 5d 41 5e c3 48 89 df 57
[ 84.192080] Kernel panic - not syncing: softlockup: hung tasks
[ 84.192080] CPU: 0 PID: 1 Comm: swapper Tainted: G L 4.17.0-rc1 #259
[ 84.192080] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
[ 84.192080] Call Trace:
[ 84.192080] <IRQ>
[ 84.192080] panic+0x1a8/0x2e3:
panic at kernel/panic.c:195
[ 84.192080] ? refcount_error_report+0x28d/0x28d:
panic at kernel/panic.c:136
[ 84.192080] watchdog_timer_fn+0x248/0x250:
watchdog_timer_fn at kernel/watchdog.c:428
[ 84.192080] ? softlockup_update_smpboot_threads+0x80/0x80:
watchdog_timer_fn at kernel/watchdog.c:340
[ 84.192080] __hrtimer_run_queues+0x1b5/0x480
[ 84.192080] hrtimer_run_queues+0x85/0xa0:
hrtimer_run_queues at kernel/time/hrtimer.c:1621
[ 84.192080] run_local_timers+0x5/0x50:
run_local_timers at kernel/time/timer.c:1706
[ 84.192080] update_process_times+0x1b/0x50:
update_process_times at kernel/time/timer.c:1636
[ 84.192080] tick_periodic+0x46/0x140
[ 84.192080] tick_handle_periodic+0x29/0x90:
clockevent_state_oneshot at include/linux/clockchips.h:152
(inlined by) tick_handle_periodic at kernel/time/tick-common.c:116
[ 84.192080] smp_apic_timer_interrupt+0x77/0xc0:
exiting_irq at arch/x86/include/asm/apic.h:525
(inlined by) smp_apic_timer_interrupt at arch/x86/kernel/apic/apic.c:1052
[ 84.192080] apic_timer_interrupt+0xf/0x20:
apic_timer_interrupt at arch/x86/entry/entry_64.S:863
[ 84.192080] </IRQ>
[ 84.192080] RIP: 0010:__slab_alloc+0x4d/0x80
[ 84.192080] RSP: 0000:ffff88001709f088 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff13
[ 84.192080] RAX: 0000000000000007 RBX: 0000000000000246 RCX: 0000000000000018
[ 84.192080] RDX: 0000000000000000 RSI: ffff880017092f48 RDI: 0000000000000246
[ 84.192080] RBP: ffff88000abc5008 R08: 0000000000000001 R09: 0000000000000000
[ 84.192080] R10: 0000000000000000 R11: 0000000000000000 R12: 00000000014080c0
[ 84.192080] R13: ffffffff8898e7d1 R14: ffff88001c48ab00 R15: ffff8800168fe034
[ 84.192080] ? acpi_ut_create_generic_state+0x54/0x8c:
acpi_ut_create_generic_state at drivers/acpi/acpica/utstate.c:91
[ 84.192080] kmem_cache_alloc+0xeb/0x120:
slab_alloc_node at mm/slub.c:2707
(inlined by) slab_alloc at mm/slub.c:2749
(inlined by) kmem_cache_alloc at mm/slub.c:2754
[ 84.192080] acpi_ut_create_generic_state+0x54/0x8c:
acpi_ut_create_generic_state at drivers/acpi/acpica/utstate.c:91
[ 84.192080] acpi_ut_create_update_state+0xe/0x9c:
acpi_ut_create_update_state at drivers/acpi/acpica/utstate.c:166
[ 84.192080] acpi_ut_create_update_state_and_push+0x13/0x31:
acpi_ut_create_update_state_and_push at drivers/acpi/acpica/utmisc.c:172
[ 84.192080] acpi_ut_update_object_reference+0x253/0x433:
acpi_ut_update_object_reference at drivers/acpi/acpica/utdelete.c:549
[ 84.192080] ? acpi_ut_update_ref_count+0x8b3/0x8b3:
acpi_ut_update_object_reference at drivers/acpi/acpica/utdelete.c:467
[ 84.192080] ? sched_clock_cpu+0x71/0x80:
__preempt_count_sub at arch/x86/include/asm/preempt.h:81
(inlined by) sched_clock_cpu at kernel/sched/clock.c:363
[ 84.192080] acpi_ds_do_implicit_return+0xbd/0xca:
acpi_ds_do_implicit_return at drivers/acpi/acpica/dsutils.c:117
[ 84.192080] acpi_ds_is_result_used+0x63/0x2be:
acpi_ds_is_result_used at drivers/acpi/acpica/dsutils.c:168
[ 84.192080] acpi_ds_delete_result_if_not_used+0x8c/0xde:
acpi_ds_delete_result_if_not_used at drivers/acpi/acpica/dsutils.c:321
[ 84.192080] ? acpi_ds_is_result_used+0x2be/0x2be:
acpi_ds_delete_result_if_not_used at drivers/acpi/acpica/dsutils.c:306
[ 84.192080] ? acpi_ds_result_push+0x108/0x277:
acpi_ds_result_stack_push at drivers/acpi/acpica/dswstate.c:208
(inlined by) acpi_ds_result_push at drivers/acpi/acpica/dswstate.c:128
[ 84.192080] acpi_ds_exec_end_op+0xb9d/0xbef:
acpi_ds_exec_end_op at drivers/acpi/acpica/dswexec.c:719
[ 84.192080] ? acpi_ds_exec_begin_op+0x3f8/0x3f8:
acpi_ds_exec_end_op at drivers/acpi/acpica/dswexec.c:325
[ 84.192080] acpi_ps_parse_loop+0x1095/0x112d:
acpi_ps_parse_loop at drivers/acpi/acpica/psloop.c:644
[ 84.192080] ? acpi_ps_get_next_arg+0x9f6/0x9f6:
acpi_ps_parse_loop at drivers/acpi/acpica/psloop.c:414
[ 84.192080] ? trace_hardirqs_on_caller+0x3e4/0x550:
__trace_hardirqs_on_caller at kernel/locking/lockdep.c:2836
(inlined by) trace_hardirqs_on_caller at kernel/locking/lockdep.c:2883
[ 84.192080] ? kmem_cache_alloc+0xb1/0x120:
slab_post_alloc_hook at mm/slab.h:444
(inlined by) slab_alloc_node at mm/slub.c:2741
(inlined by) slab_alloc at mm/slub.c:2749
(inlined by) kmem_cache_alloc at mm/slub.c:2754
[ 84.192080] acpi_ps_parse_aml+0x1e0/0x6a6:
acpi_ps_parse_aml at drivers/acpi/acpica/psparse.c:475
[ 84.192080] acpi_ps_execute_method+0x48d/0x4ea:
acpi_ps_execute_method at drivers/acpi/acpica/psxface.c:187
[ 84.192080] ? acpi_ut_acquire_mutex+0x6c/0x10a:
acpi_ut_acquire_mutex at drivers/acpi/acpica/utmutex.c:243
[ 84.192080] acpi_ns_evaluate+0x663/0x8a9:
acpi_ns_evaluate at drivers/acpi/acpica/nseval.c:204
[ 84.192080] ? acpi_ut_evaluate_object+0x74/0x337:
kmem_cache_alloc_trace at include/linux/slab.h:415
(inlined by) kmalloc at include/linux/slab.h:512
(inlined by) kzalloc at include/linux/slab.h:701
(inlined by) acpi_os_allocate_zeroed at include/acpi/platform/aclinuxex.h:57
(inlined by) acpi_ut_evaluate_object at drivers/acpi/acpica/uteval.c:50
[ 84.192080] acpi_ut_evaluate_object+0xe9/0x337:
acpi_ut_evaluate_object at drivers/acpi/acpica/uteval.c:61
[ 84.192080] acpi_rs_get_prt_method_data+0x74/0xca:
acpi_rs_get_prt_method_data at drivers/acpi/acpica/rsutils.c:448
[ 84.192080] ? acpi_rs_set_resource_source+0x154/0x154:
acpi_rs_get_prt_method_data at drivers/acpi/acpica/rsutils.c:435
[ 84.192080] ? acpi_rs_validate_parameters+0x63/0x96:
acpi_rs_validate_parameters at drivers/acpi/acpica/rsxface.c:90
[ 84.192080] acpi_get_irq_routing_table+0x76/0xad:
acpi_get_irq_routing_table at drivers/acpi/acpica/rsxface.c:124
[ 84.192080] ? acpi_rs_match_vendor_resource+0x2ea/0x2ea:
acpi_get_irq_routing_table at drivers/acpi/acpica/rsxface.c:124
[ 84.192080] ? deref_stack_reg+0x31/0x100:
deref_stack_reg at arch/x86/kernel/unwind_orc.c:316
[ 84.192080] ? deref_stack_reg+0xc7/0x100:
deref_stack_reg at arch/x86/kernel/unwind_orc.c:320 (discriminator 2)
[ 84.192080] acpi_pci_irq_find_prt_entry+0x166/0xbf0:
acpi_pci_irq_find_prt_entry at drivers/acpi/pci_irq.c:235
[ 84.192080] ? sched_clock_local+0x88/0xb0
[ 84.192080] ? acpi_penalize_sci_irq+0x30/0x30:
acpi_pci_irq_find_prt_entry at drivers/acpi/pci_irq.c:221
[ 84.192080] acpi_pci_irq_lookup+0x7e/0x640:
acpi_pci_irq_lookup at drivers/acpi/pci_irq.c:319
[ 84.192080] ? _raw_spin_unlock_irqrestore+0x2d/0x60:
arch_local_irq_restore at arch/x86/include/asm/paravirt.h:783
(inlined by) __raw_spin_unlock_irqrestore at include/linux/spinlock_api_smp.h:160
(inlined by) _raw_spin_unlock_irqrestore at kernel/locking/spinlock.c:184
[ 84.192080] ? acpi_pci_irq_find_prt_entry+0xbf0/0xbf0:
acpi_pci_irq_lookup at drivers/acpi/pci_irq.c:312
[ 84.192080] ? pci_conf1_read+0xa3/0x1f0:
pci_conf1_read at arch/x86/pci/direct.c:50
[ 84.192080] acpi_pci_irq_enable+0x1a1/0x520:
acpi_pci_irq_enable at drivers/acpi/pci_irq.c:439
[ 84.192080] ? acpi_pci_irq_lookup+0x640/0x640:
acpi_pci_irq_enable at drivers/acpi/pci_irq.c:409
[ 84.192080] ? pci_enable_resources+0x7f/0x240:
pci_enable_resources at drivers/pci/setup-res.c:461
[ 84.192080] ? pci_resize_resource+0x350/0x350:
pci_enable_resources at drivers/pci/setup-res.c:456
[ 84.192080] do_pci_enable_device+0xda/0x180:
do_pci_enable_device at drivers/pci/pci.c:1316
[ 84.192080] ? pci_load_and_free_saved_state+0xa0/0xa0:
do_pci_enable_device at drivers/pci/pci.c:1301
[ 84.192080] ? find_held_lock+0x3e/0x1c0:
find_held_lock at kernel/locking/lockdep.c:3536
[ 84.192080] ? __lock_is_held+0xb5/0x140:
__lock_is_held at kernel/locking/lockdep.c:3740
[ 84.192080] pci_enable_device_flags+0x248/0x360:
pci_enable_device_flags at drivers/pci/pci.c:1405
[ 84.192080] ? pci_enable_bridge+0x1e0/0x1e0:
pci_enable_device_flags at drivers/pci/pci.c:1372
[ 84.192080] e1000_probe+0x172/0x3a60:
e1000_probe at drivers/net/ethernet/intel/e1000/e1000_main.c:970
[ 84.192080] ? sched_clock_local+0x88/0xb0
[ 84.192080] ? e1000_io_slot_reset+0x120/0x120:
e1000_probe at drivers/net/ethernet/intel/e1000/e1000_main.c:947
[ 84.192080] ? lock_downgrade+0x5b0/0x5b0:
lock_release at kernel/locking/lockdep.c:3929
[ 84.192080] ? _raw_spin_unlock_irqrestore+0x2d/0x60:
arch_local_irq_restore at arch/x86/include/asm/paravirt.h:783
(inlined by) __raw_spin_unlock_irqrestore at include/linux/spinlock_api_smp.h:160
(inlined by) _raw_spin_unlock_irqrestore at kernel/locking/spinlock.c:184
[ 84.192080] ? trace_hardirqs_on_caller+0x3e4/0x550:
__trace_hardirqs_on_caller at kernel/locking/lockdep.c:2836
(inlined by) trace_hardirqs_on_caller at kernel/locking/lockdep.c:2883
[ 84.192080] pci_device_probe+0x268/0x460:
local_pci_probe at drivers/pci/pci-driver.c:305
(inlined by) pci_call_probe at drivers/pci/pci-driver.c:358
(inlined by) __pci_device_probe at drivers/pci/pci-driver.c:383
(inlined by) pci_device_probe at drivers/pci/pci-driver.c:423
[ 84.192080] driver_probe_device+0x545/0x800:
really_probe at drivers/base/dd.c:449
(inlined by) driver_probe_device at drivers/base/dd.c:590
[ 84.192080] __driver_attach+0x136/0x170:
__driver_attach at drivers/base/dd.c:824
[ 84.192080] ? driver_probe_device+0x800/0x800:
__driver_attach at drivers/base/dd.c:794
[ 84.192080] bus_for_each_dev+0x122/0x1d0:
bus_for_each_dev at drivers/base/bus.c:310
[ 84.192080] ? lock_downgrade+0x5b0/0x5b0:
lock_release at kernel/locking/lockdep.c:3929
[ 84.192080] ? store_drivers_autoprobe+0x130/0x130:
bus_for_each_dev at drivers/base/bus.c:300
[ 84.192080] bus_add_driver+0x42a/0x5c0:
bus_add_driver at drivers/base/bus.c:668
[ 84.192080] ? cavium_ptp_driver_init+0x15/0x15:
e1000_init_module at drivers/net/ethernet/intel/e1000/e1000_main.c:250
[ 84.192080] driver_register+0x182/0x3a0:
driver_register at drivers/base/driver.c:167
[ 84.192080] ? cavium_ptp_driver_init+0x15/0x15:
e1000_init_module at drivers/net/ethernet/intel/e1000/e1000_main.c:250
[ 84.192080] e1000_init_module+0x43/0x75:
e1000_init_module at drivers/net/ethernet/intel/e1000/e1000_main.c:257
[ 84.192080] do_one_initcall+0x97/0x230:
do_trace_initcall_finish at init/main.c:867
(inlined by) do_one_initcall at init/main.c:884
[ 84.192080] ? parameq+0xf0/0xf0:
parse_args at kernel/params.c:173
[ 84.192080] ? initcall_blacklisted+0x150/0x150:
do_one_initcall at init/main.c:874
[ 84.192080] ? __wake_up_common+0x4e0/0x4e0:
__wake_up_common_lock at kernel/sched/wait.c:109
[ 84.192080] ? lock_downgrade+0x5b0/0x5b0:
lock_release at kernel/locking/lockdep.c:3929
[ 84.192080] kernel_init_freeable+0x25f/0x2fb:
do_initcall_level at init/main.c:951
(inlined by) do_initcalls at init/main.c:959
(inlined by) do_basic_setup at init/main.c:977
(inlined by) kernel_init_freeable at init/main.c:1127
Attached the full dmesg, kconfig and reproduce scripts.
Thanks,
Fengguang
4 years, 2 months