ACPICA version 20180531 released
by Moore, Robert
31 May 2018. Summary of changes for version 20180531:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident Subsystem:
Implemented additional support to help ensure that a DSDT or SSDT is fully loaded even if errors are incurred during the load. The majority of the problems that are seen is the failure of individual AML operators that occur during execution of any module-level code (MLC) existing in the table. This support adds a mechanism to abort the current ASL statement (AML opcode), emit an error message, and to simply move on to the next opcode -- instead of aborting the entire table load. This is different than the execution of a control method where the entire method is aborted upon any error. The goal is to perform a very "best effort" to load the ACPI tables. The most common MLC errors that have been seen in the field are direct references to unresolved ASL/AML symbols (referenced directly without the use of the CondRefOf operator to validate the symbol). This new ACPICA behavior is now compatible with other ACPI implementations.
Interpreter: The Unload AML operator is no longer supported for the reasons below. An AE_NOT_IMPLEMENTED exception is returned.
1) A correct implementation on at least some hosts may not be possible.
2) Other ACPI implementations do not correctly/fully support it.
3) It requires host device driver support which is not known to exist.
(To properly support namespace unload out from underneath.)
4) This AML operator has never been seen in the field.
Parser: Added a debug option to dump AML parse sub-trees as they are being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is ACPI_DB_PARSE_TREES.
Debugger: Reduced the verbosity for errors incurred during table load and module-level code execution.
Completed an investigation into adding a namespace node "owner list" instead of the current "owner ID" associated with namespace nodes. This list would link together all nodes that are owned by an individual control method. The purpose would be to enhance control method execution by speeding up cleanup during method exit (all namespace nodes created by a method are deleted upon method termination.) Currently, the entire namespace must be searched for matching owner IDs if (and only if) the method creates named objects outside of the local scope. However, by far the most common case is that methods create objects locally, not outside the method scope. There is already an ACPICA optimization in place that only searches the entire namespace in the rare case of a method creating objects elsewhere in the namespace. Therefore, it is felt that the overhead of adding an additional pointer to each namespace node to implement the owner list makes this feature unnecessary.
2) iASL Compiler/Disassembler and Tools:
iASL, Disassembler, and Template generator: Implemented support for Revision D of the IORT table. Adds a new subtable that is used to specify SMMUv3 PMCGs. rmurphy-arm.
Disassembler: Restored correct table header validation for the "special" ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI table header and must be special-cased. This was a regression that has been present for apparently a long time.
AcpiExec: Reduced verbosity of the local exception handler implemented within acpiexec. This handler is invoked by ACPICA upon any exceptions generated during control method execution. A new option was added: -vh restores the original verbosity level if desired.
AcpiExec: Changed the default base from decimal to hex for the -x option (set debug level). This simplifies the use of this option and matches the behavior of the corresponding iASL -x option.
AcpiExec: Restored a force-exit on multiple control-c (sigint) interrupts. This allows program termination even if other issues cause the control-c to fail.
ASL test suite (ASLTS): Added tests for the recently implemented package element resolution mechanism that allows forward references to named objects from individual package elements (this mechanism provides compatibility with other ACPI implementations.)
2 years, 9 months
Re: [Devel] [PATCH v7 0/3] acpi: apei: Drop panic() on fatal errors policy
by Rafael J. Wysocki
On Fri, May 25, 2018 at 5:53 PM, Alexandru Gagniuc <mr.nuke.me(a)gmail.com> wrote:
> FFS (firmware-first) handling through APEI seems to have developed a
> policy to panic() on any fatal errors. This policy is completely
> independent of the non-FFS case. It is also inconsistent with how the
> native error handlers, a number of which will recover the system from
> fatal errors.
>
> The purpose of this series is to obsolete this idiotic policy, with
> the motivation to enable identical handling of PCIe errors to native
> reporting.
>
>
> Rafael, this is copypaste from the previous patch series. I suspect
> you might have missed it last time, because you asked questions which
> were answered here. I've included it so you don't have to go digging
> old emails:
I didn't miss it, but I didn't like your answers.
Anyway, as a rule, no GHES/APEI patches are applied without an ACK
from either Boris or Tony, so you need to talk to them about the
patches.
Thanks,
Rafael
2 years, 9 months
Re: [Devel] [pm:bleeding-edge 126/127] drivers/base/power/domain.c:2434:47: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long int'
by Rafael J. Wysocki
On Thursday, May 24, 2018 12:33:15 PM CEST Viresh Kumar wrote:
> On 24-05-18, 18:25, kbuild test robot wrote:
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
> > head: 34ae5d53ec5963e3f2967fcd12bae44decbfc4c0
> > commit: 07cebb5e726d519b7de0373ade62465c2ebdd355 [126/127] PM / domains: Return 0 on error from of_genpd_opp_to_performance_state()
> > config: x86_64-randconfig-x019-201820 (attached as .config)
> > compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
> > reproduce:
> > git checkout 07cebb5e726d519b7de0373ade62465c2ebdd355
> > # save the attached .config to linux build tree
> > make ARCH=x86_64
> >
> > All warnings (new ones prefixed by >>):
> >
> > drivers/base/power/domain.c: In function 'of_genpd_opp_to_performance_state':
> > >> drivers/base/power/domain.c:2434:47: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long int' [-Wformat=]
> > dev_err(dev, "Failed to find required OPP: %d\n", PTR_ERR(opp));
> > ~^ ~~~~~~~~~~~~
> > %ld
> >
> > vim +2434 drivers/base/power/domain.c
>
> Sent a fix for that. Thanks.
I've replaced the original with this, thanks!
2 years, 9 months
[pm:bleeding-edge 126/127] drivers/base/power/domain.c:2434:47: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long int'
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
head: 34ae5d53ec5963e3f2967fcd12bae44decbfc4c0
commit: 07cebb5e726d519b7de0373ade62465c2ebdd355 [126/127] PM / domains: Return 0 on error from of_genpd_opp_to_performance_state()
config: x86_64-randconfig-x019-201820 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
git checkout 07cebb5e726d519b7de0373ade62465c2ebdd355
# save the attached .config to linux build tree
make ARCH=x86_64
All warnings (new ones prefixed by >>):
drivers/base/power/domain.c: In function 'of_genpd_opp_to_performance_state':
>> drivers/base/power/domain.c:2434:47: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long int' [-Wformat=]
dev_err(dev, "Failed to find required OPP: %d\n", PTR_ERR(opp));
~^ ~~~~~~~~~~~~
%ld
vim +2434 drivers/base/power/domain.c
2399
2400 /**
2401 * of_genpd_opp_to_performance_state- Gets performance state of device's
2402 * power domain corresponding to a DT node's "required-opps" property.
2403 *
2404 * @dev: Device for which the performance-state needs to be found.
2405 * @opp_node: DT node where the "required-opps" property is present. This can be
2406 * the device node itself (if it doesn't have an OPP table) or a node
2407 * within the OPP table of a device (if device has an OPP table).
2408 * @state: Pointer to return performance state.
2409 *
2410 * Returns performance state corresponding to the "required-opps" property of
2411 * a DT node. This calls platform specific genpd->opp_to_performance_state()
2412 * callback to translate power domain OPP to performance state.
2413 *
2414 * Returns performance state on success and 0 on failure.
2415 */
2416 unsigned int of_genpd_opp_to_performance_state(struct device *dev,
2417 struct device_node *opp_node)
2418 {
2419 struct generic_pm_domain *genpd;
2420 struct dev_pm_opp *opp;
2421 int state = 0;
2422
2423 genpd = dev_to_genpd(dev);
2424 if (IS_ERR(genpd))
2425 return 0;
2426
2427 if (unlikely(!genpd->set_performance_state))
2428 return 0;
2429
2430 genpd_lock(genpd);
2431
2432 opp = of_dev_pm_opp_find_required_opp(&genpd->dev, opp_node);
2433 if (IS_ERR(opp)) {
> 2434 dev_err(dev, "Failed to find required OPP: %d\n", PTR_ERR(opp));
2435 goto unlock;
2436 }
2437
2438 state = genpd->opp_to_performance_state(genpd, opp);
2439 dev_pm_opp_put(opp);
2440
2441 unlock:
2442 genpd_unlock(genpd);
2443
2444 return state;
2445 }
2446 EXPORT_SYMBOL_GPL(of_genpd_opp_to_performance_state);
2447
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
2 years, 9 months
[PATCH v12 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 V11:
Address James's comments, thanks James
1. Align the struct of kvm_vcpu_events to 64 bytes
2. Avoid exposing the stale ESR value in the kvm_arm_vcpu_get_events()
3. Change variables 'injected' name to 'serror_pending' in the kvm_arm_vcpu_set_events()
4. Change to sizeof(events) from sizeof(struct kvm_vcpu_events) in kvm_arch_vcpu_ioctl()
5. Update the patches commit message and document description
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 | 42 ++++++++++++++++++++++++++--
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 | 13 +++++++++
arch/arm64/kernel/traps.c | 4 +++
arch/arm64/kvm/guest.c | 36 ++++++++++++++++++++++++
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, 234 insertions(+), 4 deletions(-)
--
1.9.1
2 years, 9 months
Re: [Devel] [PATCH 1/3] thinkpad_acpi: add support for inhibit_charge
by Andy Shevchenko
On Mon, May 14, 2018 at 12:46 PM, Christoph Böhmwalder
<christoph(a)boehmwalder.at> wrote:
> On Sun, May 13, 2018 at 05:29:37PM +0200, Ognjen Galic wrote:
>> Lenovo ThinkPad systems support the prevention of
>> battery charging via a manual override called Inhibit Charge.
>>
>> This patch adds support for that attribute and exposes it via the
>> battery ACPI driver in the generic location:
>>
>> /sys/class/power_supply/BATX/inhibit_charge
>> + /* When setting inhbitit charge, we set a default vaulue of
>
> This comment does not adhere to the Linux coding style
While you are right in principle, the whole driver is so old and uses
this style. So, for such cases we, as maintainers, prefer less
deviation work, i.e. keeping the
style is a good thing to do.
>> + /* The only valid values are 1 and 0 */
>> + if (value != 0 && value != 1)
>
> I'm not sure, but maybe `if (value < 2)` is better here?
Since it's about integer-as-a-boolean, test for bit 0 would be
sufficient, i.e. ~BIT(0). Though, I find this form not so readable
since the input comes actually from the user.
It would be nice to have just kstrtobool() called instead for such
options, but see above. It would need a (huge) refactoring of the
driver first.
--
With Best Regards,
Andy Shevchenko
2 years, 9 months
Re: [Devel] PROBLEM: "ACPI Error: Method parse/execution failed" and "ACPI BIOS Error (bug): Failure looking up" related
by Andy Shevchenko
On Sun, May 13, 2018 at 5:20 PM, Jeffrin Thalakkottoor
<jeffrin(a)rajagiritech.edu.in> wrote:
> hello ,
>
> the error from "dmesg -l err" related ...
>
> ------------------------------------------------------------------------------------------------->
>
> [ 1.709950] ACPI BIOS Error (bug): Failure looking up
> [\_SB.PCI0.LPCB.HEC.ECWT], AE_NOT_FOUND (20180313/psargs-330)
> [ 1.710045] ACPI Error: Method parse/execution failed
> \_TZ.FN00._ON, AE_NOT_FOUND (20180313/psparse-516)
> [ 1.710208] ACPI BIOS Error (bug): Failure looking up
> [\_SB.PCI0.LPCB.HEC.ECWT], AE_NOT_FOUND (20180313/psargs-330)
> [ 1.710267] ACPI Error: Method parse/execution failed
> \_TZ.FN00._ON, AE_NOT_FOUND (20180313/psparse-516)
> [ 1.710338] acpi PNP0C0B:00: Failed to set initial power state
> [ 1.710846] ACPI BIOS Error (bug): Failure looking up
> [\_SB.PCI0.LPCB.HEC.ECRD], AE_NOT_FOUND (20180313/psargs-330)
> [ 1.710938] ACPI Error: Method parse/execution failed
> \_TZ.TZ00._TMP, AE_NOT_FOUND (20180313/psparse-516)
> [ 1.711588] ACPI BIOS Error (bug): Failure looking up
> [\_SB.PCI0.LPCB.HEC.ECRD], AE_NOT_FOUND (20180313/psargs-330)
> [ 1.711681] ACPI Error: Method parse/execution failed
> \_TZ.TZ00._TMP, AE_NOT_FOUND (20180313/psparse-516)
> [ 1.711960] ACPI BIOS Error (bug): Failure looking up
> [\_SB.PCI0.LPCB.HEC.ECRD], AE_NOT_FOUND (20180313/psargs-330)
> [ 1.712054] ACPI Error: Method parse/execution failed
> \_TZ.TZ01._TMP, AE_NOT_FOUND (20180313/psparse-516)
> [ 1.712471] ACPI BIOS Error (bug): Failure looking up
> [\_SB.PCI0.LPCB.HEC.ECRD], AE_NOT_FOUND (20180313/psargs-330)
> [ 1.712552] ACPI Error: Method parse/execution failed
> \_TZ.TZ01._TMP, AE_NOT_FOUND (20180313/psparse-516)
>
> ----------------------------------------------------------------------------------------------------->
>
Is there any regressions or change in behaviour due to which these
messages are printed out? If so, which regressions you are pointing
out?
>
>
> $awk -f scripts/ver_linux
> If some fields are empty or look unusual you may have an old version.
> Compare to the current minimal requirements in Documentation/Changes.
>
> Linux debian 4.17.0-rc4+ #24 SMP Sat May 12 19:26:27 IST 2018 x86_64 GNU/Linux
>
> GNU Make 4.2.1
> Binutils 2.30
> Util-linux 2.31.1
> Mount 2.31.1
> Linux C Library 2.27
> Dynamic linker (ldd) 2.27
> readlink: missing operand
> Try 'readlink --help' for more information.
> Procps 3.3.14
> Kbd 2.0.4
> Console-tools 2.0.4
> Sh-utils 8.28
> Udev 238
> Modules Loaded ac acpi_pad acpi_thermal_rel ahci autofs4 battery
> binfmt_misc bluetooth bnep btbcm btintel btrfs btrtl btusb button
> cdrom cfg80211 cmac coretemp cpuid crc32c_intel crc32_pclmul
> crct10dif_pclmul cryptd drm drm_kms_helper ecdh_generic efi_pstore
> efivarfs efivars ehci_hcd ehci_pci evdev fan fat fuse
> ghash_clmulni_intel hid hp_wireless hp_wmi i2c_algo_bit i2c_hid
> i2c_i801 i915 int3400_thermal int340x_thermal_zone intel_cstate
> intel_pch_thermal intel_powerclamp intel_rapl intel_rapl_perf
> intel_soc_dts_iosf intel_uncore ip_tables irqbypass
> iTCO_vendor_support iTCO_wdt joydev kvm kvm_intel libahci libata
> libcrc32c loop lp lpc_ich media mei mei_me mfd_core mii nls_ascii
> nls_cp437 parport parport_pc pcspkr ppdev processor_thermal_device
> psmouse r8169 raid6_pq rfcomm rfkill scsi_mod sd_mod serio_raw sg
> shpchp snd snd_hda_codec snd_hda_codec_generic snd_hda_codec_hdmi
> snd_hda_codec_realtek snd_hda_core snd_hda_intel snd_hwdep snd_pcm
> snd_timer soundcore sparse_keymap sr_mod sunrpc thermal usbcore
> uvcvideo vfat video videobuf2_common videobuf2_memops videobuf2_v4l2
> videobuf2_vmalloc videodev wl wmi wmi_bmof x86_pkg_temp_thermal xfs
> xhci_hcd xhci_pci xor x_tables xxhash zstd_compress zstd_decompress
>
>
> $uname -a
> Linux debian 4.17.0-rc4+ #24 SMP Sat May 12 19:26:27 IST 2018 x86_64 GNU/Linux
> $
>
> Reported-by: Jeffrin Jose T <jeffrin(a)rajagiritech.edu.in>
>
> --
> software engineer
> rajagiri school of engineering and technology
--
With Best Regards,
Andy Shevchenko
2 years, 9 months
Re: [Devel] [PATCH 2/2] ACPICA: Convert acpi_gbl_hardware lock back to an acpi_raw_spinlock
by Rafael J. Wysocki
On Wednesday, April 25, 2018 4:28:27 PM CEST Sebastian Andrzej Siewior 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/1360765565.23152.5.camel@gandalf.local.home
> Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
> [bigeasy: shorten the backtrace, use the type acpi_raw_spinlock incl.
> accessor]
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
Applied along with the [1/2], thanks!
2 years, 9 months
ACPICA version 20180508 released
by Moore, Robert
8 May 2018. Summary of changes for version 20180508:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Completed the new (recently deployed) package resolution mechanism for the Load and LoadTable ASL/AML operators. This fixes a regression that was introduced in version 20180209 that could result in an AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table (SSDT) that contains package objects.
2) iASL Compiler/Disassembler and Tools:
AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 1 MB. This change allows for table offsets within the acpidump file to be up to 8 characters. These changes are backwards compatible with existing acpidump files.
2 years, 9 months