17 Apr, 2019

3 commits

  • commit 4abb951b73ff0a8a979113ef185651aa3c8da19b upstream.

    The table load process omitted adding the operation region address
    range to the global list. This omission is problematic because the OS
    queries the global list to check for address range conflicts before
    deciding which drivers to load. This commit may result in warning
    messages that look like the following:

    [ 7.871761] ACPI Warning: system_IO range 0x00000428-0x0000042F conflicts with op_region 0x00000400-0x0000047F (\PMIO) (20180531/utaddress-213)
    [ 7.871769] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver

    However, these messages do not signify regressions. It is a result of
    properly adding address ranges within the global address list.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200011
    Tested-by: Jean-Marc Lenoir
    Signed-off-by: Erik Schmauss
    Cc: All applicable
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Erik Schmauss
     
  • commit c5781ffbbd4f742a58263458145fe7f0ac01d9e0 upstream.

    ACPICA commit b233720031a480abd438f2e9c643080929d144c3

    ASL operation_regions declare a range of addresses that it uses. In a
    perfect world, the range of addresses should be used exclusively by
    the AML interpreter. The OS can use this information to decide which
    drivers to load so that the AML interpreter and device drivers use
    different regions of memory.

    During table load, the address information is added to a global
    address range list. Each node in this list contains an address range
    as well as a namespace node of the operation_region. This list is
    deleted at ACPI shutdown.

    Unfortunately, ASL operation_regions can be declared inside of control
    methods. Although this is not recommended, modern firmware contains
    such code. New module level code changes unintentionally removed the
    functionality of adding and removing nodes to the global address
    range list.

    A few months ago, support for adding addresses has been re-
    implemented. However, the removal of the address range list was
    missed and resulted in some systems to crash due to the address list
    containing bogus namespace nodes from operation_regions declared in
    control methods. In order to fix the crash, this change removes
    dynamic operation_regions after control method termination.

    Link: https://github.com/acpica/acpica/commit/b2337200
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=202475
    Fixes: 4abb951b73ff ("ACPICA: AML interpreter: add region addresses in global list during initialization")
    Reported-by: Michael J Gruber
    Signed-off-by: Erik Schmauss
    Signed-off-by: Bob Moore
    Cc: 4.20+ # 4.20+
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Erik Schmauss
     
  • commit c8b1917c8987a6fa3695d479b4d60fbbbc3e537b upstream.

    Commit 18996f2db918 ("ACPICA: Events: Stop unconditionally clearing
    ACPI IRQs during suspend/resume") was added to stop clearing event
    status bits unconditionally in the system-wide suspend and resume
    paths. This was done because of an issue with a laptop lid appaering
    to be closed even when it was used to wake up the system from suspend
    (see https://bugzilla.kernel.org/show_bug.cgi?id=196249), which
    happened because event status bits were cleared unconditionally on
    system resume. Though this change fixed the issue in the resume path,
    it introduced regressions in a few suspend paths.

    First regression was reported and fixed in the S5 entry path by commit
    fa85015c0d95 ("ACPICA: Clear status of all events when entering S5").
    Next regression was reported and fixed for all legacy sleep paths by
    commit f317c7dc12b7 ("ACPICA: Clear status of all events when entering
    sleep states"). However, there still is a suspend-to-idle regression,
    since suspend-to-idle does not follow the legacy sleep paths.

    In the suspend-to-idle case, wakeup is enabled as part of device
    suspend. If the status bits of wakeup GPEs are set when they are
    enabled, it causes a premature system wakeup to occur.

    To address that problem, partially revert commit 18996f2db918 to
    restore GPE status bits clearing before the GPE is enabled in
    acpi_ev_enable_gpe().

    Fixes: 18996f2db918 ("ACPICA: Events: Stop unconditionally clearing ACPI IRQs during suspend/resume")
    Signed-off-by: Furquan Shaikh
    Cc: 4.17+ # 4.17+
    [ rjw: Subject & changelog ]
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Furquan Shaikh
     

06 Apr, 2019

2 commits

  • [ Upstream commit d693c008e3ca04db5916ff72e68ce661888a913b ]

    Commit 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true on
    Win8-ready _desktops_") introduced chassis type detection, limiting the
    lcd_only check for the backlight to devices where the chassis-type
    indicates their is no builtin LCD panel.

    The purpose of the lcd_only check is to avoid advertising a backlight
    interface on desktops, since skylake and newer machines seem to always
    have a backlight interface even if there is no LCD panel. The limiting
    of this check to desktops only was done to avoid breaking backlight
    support on some laptops which do not have the lcd flag set.

    The Fujitsu ESPRIMO Q910 which is a compact (NUC like) desktop machine
    has a chassis type of 0x10 aka "Lunch Box". Without the lcd_only check
    we end up falsely advertising backlight/brightness control on this
    device. This commit extend the dmi_is_desktop check to return true
    for type 0x10 to fix this.

    Fixes: 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true ...")
    Signed-off-by: Hans de Goede
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin

    Hans de Goede
     
  • [ Upstream commit cecf3e3e0803462335e25d083345682518097334 ]

    This commit refactors the chassis-type detection introduced by
    commit 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true on
    Win8-ready _desktops_") (where desktop means anything without a builtin
    screen).

    The DMI chassis_type is an unsigned integer, so rather then doing a
    whole bunch of string-compares on it, convert it to an int and feed
    the result to a switch case.

    Note the switch case uses hex values, this is done because the spec
    uses hex values too. This changes the check for "Main Server Chassis"
    from checking for 11 decimal to 11 hexadecimal, this is a bug fix,
    the original check for 11 decimal was wrong.

    Fixes: 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true ...")
    Signed-off-by: Hans de Goede
    [ rjw: Drop redundant return statements ]
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin

    Hans de Goede
     

24 Mar, 2019

5 commits

  • commit f16eb8a4b096514ac06fb25bf599dcc792899b3d upstream.

    If SSDT overlay is loaded via ConfigFS and then unloaded the device,
    we would like to have OF modalias for, already gone. Thus, acpi_get_name()
    returns no allocated buffer for such case and kernel crashes afterwards:

    ACPI: Host-directed Dynamic ACPI Table Unload
    ads7950 spi-PRP0001:00: Dropping the link to regulator.0
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
    #PF error: [normal kernel read fault]
    PGD 80000000070d6067 P4D 80000000070d6067 PUD 70d0067 PMD 0
    Oops: 0000 [#1] SMP PTI
    CPU: 0 PID: 40 Comm: kworker/u4:2 Not tainted 5.0.0+ #96
    Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542 2015.01.21:18.19.48
    Workqueue: kacpi_hotplug acpi_device_del_work_fn
    RIP: 0010:create_of_modalias.isra.1+0x4c/0x150
    Code: 00 00 48 89 44 24 18 31 c0 48 8d 54 24 08 48 c7 44 24 10 00 00 00 00 48 c7 44 24 08 ff ff ff ff e8 7a b0 03 00 48 8b 4c 24 10 b6 01 84 c0 74 27 48 c7 c7 00 09 f4 a5 0f b6 f0 8d 50 20 f6 04
    RSP: 0000:ffffa51040297c10 EFLAGS: 00010246
    RAX: 0000000000001001 RBX: 0000000000000785 RCX: 0000000000000000
    RDX: 0000000000001001 RSI: 0000000000000286 RDI: ffffa2163dc042e0
    RBP: ffffa216062b1196 R08: 0000000000001001 R09: ffffa21639873000
    R10: ffffffffa606761d R11: 0000000000000001 R12: ffffa21639873218
    R13: ffffa2163deb5060 R14: ffffa216063d1010 R15: 0000000000000000
    FS: 0000000000000000(0000) GS:ffffa2163e000000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000000 CR3: 0000000007114000 CR4: 00000000001006f0
    Call Trace:
    __acpi_device_uevent_modalias+0xb0/0x100
    spi_uevent+0xd/0x40

    ...

    In order to fix above let create_of_modalias() check the status returned
    by acpi_get_name() and bail out in case of failure.

    Fixes: 8765c5ba1949 ("ACPI / scan: Rework modalias creation when "compatible" is present")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=201381
    Reported-by: Ferry Toth
    Tested-by: Ferry Toth
    Signed-off-by: Andy Shevchenko
    Reviewed-by: Mika Westerberg
    Cc: 4.1+ # 4.1+
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Andy Shevchenko
     
  • commit fa3ed4d981b1fc19acdd07fcb152a4bd3706892b upstream.

    The no_init_ars option is meant to prevent long-ARS, but short-ARS
    should be allowed to grab any immediate results.

    Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify ARS...")
    Cc:
    Reported-by: Erwin Tsaur
    Reviewed-by: Toshi Kani
    Signed-off-by: Dan Williams
    Signed-off-by: Greg Kroah-Hartman

    Dan Williams
     
  • commit c6c5df293bf1b488cf8459aac658aecfdccb13a9 upstream.

    If query-ARS reports that ARS has stopped and requires continuation
    attempt to retrieve short-ARS results before continuing the long
    operation.

    Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify ARS...")
    Cc:
    Reported-by: Krzysztof Rusocki
    Reviewed-by: Toshi Kani
    Signed-off-by: Dan Williams
    Signed-off-by: Greg Kroah-Hartman

    Dan Williams
     
  • commit ebe9f6f19d80d8978d16078dff3d5bd93ad8d102 upstream.

    Commit 11189c1089da "acpi/nfit: Fix command-supported detection" broke
    ND_CMD_CALL for bus-level commands. The "func = cmd" assumption is only
    valid for:

    ND_CMD_ARS_CAP
    ND_CMD_ARS_START
    ND_CMD_ARS_STATUS
    ND_CMD_CLEAR_ERROR

    The function number otherwise needs to be pulled from the command
    payload for:

    NFIT_CMD_TRANSLATE_SPA
    NFIT_CMD_ARS_INJECT_SET
    NFIT_CMD_ARS_INJECT_CLEAR
    NFIT_CMD_ARS_INJECT_GET

    Update cmd_to_func() for the bus case and call it in the common path.

    Fixes: 11189c1089da ("acpi/nfit: Fix command-supported detection")
    Cc:
    Reviewed-by: Vishal Verma
    Reported-by: Grzegorz Burzynski
    Tested-by: Jeff Moyer
    Signed-off-by: Dan Williams
    Signed-off-by: Greg Kroah-Hartman

    Dan Williams
     
  • commit 43f89877f26671c6309cd87d7364b1a3e66e71cf upstream.

    In the case of ND_CMD_CALL, we should also check out_obj->type.

    The patch uses out_obj->type, which is a short alias to
    out_obj->package.type.

    Fixes: 31eca76ba2fc ("nfit, libnvdimm: limited/whitelisted dimm command marshaling mechanism")
    Cc:
    Signed-off-by: Dexuan Cui
    Signed-off-by: Dan Williams
    Signed-off-by: Greg Kroah-Hartman

    Dexuan Cui
     

27 Feb, 2019

1 commit

  • [ Upstream commit 0919871ac37fdcf46c7657da0f1742efe096b399 ]

    Possible race accessing memdev structures after dropping the
    mutex. Dan Williams says this could race against another thread
    that is doing:

    # echo "ACPI0012:00" > /sys/bus/acpi/drivers/nfit/unbind

    Reported-by: Jane Chu
    Fixes: 23222f8f8dce ("acpi, nfit: Add function to look up nvdimm...")
    Signed-off-by: Tony Luck
    Signed-off-by: Dan Williams
    Signed-off-by: Sasha Levin

    Tony Luck
     

20 Feb, 2019

1 commit

  • [ Upstream commit b9ced18acf68dffebe6888c7ec765a2b1db7a039 ]

    The addresses of NUMA nodes are not printed correctly on i386-PAE
    which is misleading.

    Here is a debian9-32bit with PAE in a QEMU guest having more than 4G
    of memory:

    qemu-system-i386 \
    -hda /var/lib/libvirt/images/debian32.qcow2 \
    -m 5G \
    -enable-kvm \
    -smp 10 \
    -numa node,mem=512M,nodeid=0,cpus=0 \
    -numa node,mem=512M,nodeid=1,cpus=1 \
    -numa node,mem=512M,nodeid=2,cpus=2 \
    -numa node,mem=512M,nodeid=3,cpus=3 \
    -numa node,mem=512M,nodeid=4,cpus=4 \
    -numa node,mem=512M,nodeid=5,cpus=5 \
    -numa node,mem=512M,nodeid=6,cpus=6 \
    -numa node,mem=512M,nodeid=7,cpus=7 \
    -numa node,mem=512M,nodeid=8,cpus=8 \
    -numa node,mem=512M,nodeid=9,cpus=9 \
    -serial stdio

    Because of the wrong value type, it prints as below:

    [ 0.021049] ACPI: SRAT Memory (0x0 length 0xa0000) in proximity domain 0 enabled
    [ 0.021740] ACPI: SRAT Memory (0x100000 length 0x1ff00000) in proximity domain 0 enabled
    [ 0.022425] ACPI: SRAT Memory (0x20000000 length 0x20000000) in proximity domain 1 enabled
    [ 0.023092] ACPI: SRAT Memory (0x40000000 length 0x20000000) in proximity domain 2 enabled
    [ 0.023764] ACPI: SRAT Memory (0x60000000 length 0x20000000) in proximity domain 3 enabled
    [ 0.024431] ACPI: SRAT Memory (0x80000000 length 0x20000000) in proximity domain 4 enabled
    [ 0.025104] ACPI: SRAT Memory (0xa0000000 length 0x20000000) in proximity domain 5 enabled
    [ 0.025791] ACPI: SRAT Memory (0x0 length 0x20000000) in proximity domain 6 enabled
    [ 0.026412] ACPI: SRAT Memory (0x20000000 length 0x20000000) in proximity domain 7 enabled
    [ 0.027118] ACPI: SRAT Memory (0x40000000 length 0x20000000) in proximity domain 8 enabled
    [ 0.027802] ACPI: SRAT Memory (0x60000000 length 0x20000000) in proximity domain 9 enabled

    The upper half of the start address of the NUMA domains between 6
    and 9 inclusive was cut, so the printed values are incorrect.

    Fix the value type, to get the correct values in the log as follows:

    [ 0.023698] ACPI: SRAT Memory (0x0 length 0xa0000) in proximity domain 0 enabled
    [ 0.024325] ACPI: SRAT Memory (0x100000 length 0x1ff00000) in proximity domain 0 enabled
    [ 0.024981] ACPI: SRAT Memory (0x20000000 length 0x20000000) in proximity domain 1 enabled
    [ 0.025659] ACPI: SRAT Memory (0x40000000 length 0x20000000) in proximity domain 2 enabled
    [ 0.026317] ACPI: SRAT Memory (0x60000000 length 0x20000000) in proximity domain 3 enabled
    [ 0.026980] ACPI: SRAT Memory (0x80000000 length 0x20000000) in proximity domain 4 enabled
    [ 0.027635] ACPI: SRAT Memory (0xa0000000 length 0x20000000) in proximity domain 5 enabled
    [ 0.028311] ACPI: SRAT Memory (0x100000000 length 0x20000000) in proximity domain 6 enabled
    [ 0.028985] ACPI: SRAT Memory (0x120000000 length 0x20000000) in proximity domain 7 enabled
    [ 0.029667] ACPI: SRAT Memory (0x140000000 length 0x20000000) in proximity domain 8 enabled
    [ 0.030334] ACPI: SRAT Memory (0x160000000 length 0x20000000) in proximity domain 9 enabled

    Signed-off-by: Chao Fan
    [ rjw: Subject & changelog ]
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin

    Chao Fan
     

13 Feb, 2019

2 commits

  • [ Upstream commit 98cff8b23ed1c763a029ee81ea300df0d153d07d ]

    In __ghes_panic() clear the block status in the APEI generic
    error status block for that generic hardware error source before
    calling panic() to prevent a second panic() in the crash kernel
    for exactly the same fatal error.

    Otherwise ghes_probe(), running in the crash kernel, would see
    an unhandled error in the APEI generic error status block and
    panic again, thereby precluding any crash dump.

    Signed-off-by: Lenny Szubowicz
    Signed-off-by: David Arcari
    Tested-by: Tyler Baicar
    Acked-by: Borislav Petkov
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin

    Lenny Szubowicz
     
  • [ Upstream commit b413b1abeb21b4a152c0bf8d1379efa30759b6e3 ]

    Since SPCR 1.04 [1] the baud rate of 0 means a preconfigured state of UART.
    Assume firmware or bootloader configures console correctly.

    [1]: https://docs.microsoft.com/en-us/windows-hardware/drivers/serports/serial-port-console-redirection-table

    Signed-off-by: Andy Shevchenko
    Reviewed-by: Prarit Bhargava
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin

    Andy Shevchenko
     

31 Jan, 2019

2 commits

  • commit 11189c1089da413aa4b5fd6be4c4d47c78968819 upstream.

    The _DSM function number validation only happens to succeed when the
    generic Linux command number translation corresponds with a
    DSM-family-specific function number. This breaks NVDIMM-N
    implementations that correctly implement _LSR, _LSW, and _LSI, but do
    not happen to publish support for DSM function numbers 4, 5, and 6.

    Recall that the support for _LS{I,R,W} family of methods results in the
    DIMM being marked as supporting those command numbers at
    acpi_nfit_register_dimms() time. The DSM function mask is only used for
    ND_CMD_CALL support of non-NVDIMM_FAMILY_INTEL devices.

    Fixes: 31eca76ba2fc ("nfit, libnvdimm: limited/whitelisted dimm command...")
    Cc:
    Link: https://github.com/pmem/ndctl/issues/78
    Reported-by: Sujith Pandel
    Tested-by: Sujith Pandel
    Reviewed-by: Vishal Verma
    Reviewed-by: Jeff Moyer
    Signed-off-by: Dan Williams
    Signed-off-by: Greg Kroah-Hartman

    Dan Williams
     
  • commit 5e9e38d0db1d29efed1dd4cf9a70115d33521be7 upstream.

    In preparation for using function number 0 as an error value, prevent it
    from being considered a valid function value by acpi_nfit_ctl().

    Cc:
    Cc: stuart hayes
    Fixes: e02fb7264d8a ("nfit: add Microsoft NVDIMM DSM command set...")
    Reported-by: Jeff Moyer
    Reviewed-by: Jeff Moyer
    Signed-off-by: Dan Williams
    Signed-off-by: Greg Kroah-Hartman

    Dan Williams
     

17 Jan, 2019

3 commits

  • commit c7777236dd8f587f6a8d6800c03df318fd4d2627 upstream.

    When executed for a PCI_ROOT_COMPLEX type, iort_match_node_callback()
    expects the opaque pointer argument to be a PCI bus device. At the
    moment rc_dma_get_range() passes the PCI endpoint instead of the bus,
    and we've been lucky to have pci_domain_nr(ptr) return 0 instead of
    crashing. Pass the bus device to iort_scan_node().

    Fixes: 5ac65e8c8941 ("ACPI/IORT: Support address size limit for root complexes")
    Reported-by: Eric Auger
    Signed-off-by: Jean-Philippe Brucker
    Signed-off-by: Lorenzo Pieralisi
    Reviewed-by: Eric Auger
    Acked-by: Robin Murphy
    Cc: stable@vger.kernel.org
    Cc: Will Deacon
    Cc: Hanjun Guo
    Cc: Sudeep Holla
    Cc: Catalin Marinas
    Cc: "Rafael J. Wysocki"
    Signed-off-by: Will Deacon
    Signed-off-by: Greg Kroah-Hartman

    Jean-Philippe Brucker
     
  • commit 2b531d71595d2b5b12782a49b23c335869e2621e upstream.

    The current-source used for the battery temp-sensor (TS) is shared with the
    GPADC. For proper fuel-gauge and charger operation the TS current-source
    needs to be permanently on. But to read the GPADC we need to temporary
    switch the TS current-source to ondemand, so that the GPADC can use it,
    otherwise we will always read an all 0 value.

    The switching from on to on-ondemand is not necessary when the TS
    current-source is off (this happens on devices which do not have a TS).

    Prior to this commit there were 2 issues with our handling of the TS
    current-source switching:

    1) We were writing hardcoded values to the ADC TS pin-ctrl register,
    overwriting various other unrelated bits. Specifically we were overwriting
    the current-source setting for the TS and GPIO0 pins, forcing it to 80ųA
    independent of its original setting. On a Chuwi Vi10 tablet this was
    causing us to get a too high adc value (due to a too high current-source)
    resulting in acpi_lpat_raw_to_temp() returning -ENOENT, resulting in:

    ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
    ACPI Error: Method parse/execution failed \_SB.SXP1._TMP, AE_ERROR

    This commit fixes this by using regmap_update_bits to change only the
    relevant bits.

    2) At the end of intel_xpower_pmic_get_raw_temp() we were unconditionally
    enabling the TS current-source even on devices where the TS-pin is not used
    and the current-source thus was off on entry of the function.

    This commit fixes this by checking if the TS current-source is off when
    entering intel_xpower_pmic_get_raw_temp() and if so it is left as is.

    Fixes: 58eefe2f3f53 (ACPI / PMIC: xpower: Do pinswitch ... reading GPADC)
    Signed-off-by: Hans de Goede
    Acked-by: Andy Shevchenko
    Cc: 4.14+ # 4.14+
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     
  • commit 7d7b467cb95bf29597b417d4990160d4ea6d69b9 upstream.

    Some ACPI tables contain duplicate power resource references like this:

    Name (_PR0, Package (0x04) // _PR0: Power Resources for D0
    {
    P28P,
    P18P,
    P18P,
    CLK4
    })

    This causes a WARN_ON in sysfs_add_link_to_group() because we end up
    adding a link to the same acpi_device twice:

    sysfs: cannot create duplicate filename '/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:00/OVTI2680:00/power_resources_D0/LNXPOWER:0a'
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.12-301.fc29.x86_64 #1
    Hardware name: Insyde CherryTrail/Type2 - Board Product Name, BIOS jumperx.T87.KFBNEEA02 04/13/2016
    Call Trace:
    dump_stack+0x5c/0x80
    sysfs_warn_dup.cold.3+0x17/0x2a
    sysfs_do_create_link_sd.isra.2+0xa9/0xb0
    sysfs_add_link_to_group+0x30/0x50
    acpi_power_expose_list+0x74/0xa0
    acpi_power_add_remove_device+0x50/0xa0
    acpi_add_single_object+0x26b/0x5f0
    acpi_bus_check_add+0xc4/0x250
    ...

    To address this issue, make acpi_extract_power_resources() check for
    duplicates and simply skip them when found.

    Cc: All applicable
    Signed-off-by: Hans de Goede
    [ rjw: Subject & changelog, comments ]
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

21 Dec, 2018

1 commit

  • [ Upstream commit b5fd2e00a60248902315fb32210550ac3cb9f44c ]

    A "short" ARS (address range scrub) instructs the platform firmware to
    return known errors. In contrast, a "long" ARS instructs platform
    firmware to arrange every data address on the DIMM to be read / checked
    for poisoned data.

    The conversion of the flags in commit d3abaf43bab8 "acpi, nfit: Fix
    Address Range Scrub completion tracking", changed the meaning of passing
    '0' to acpi_nfit_ars_rescan(). Previously '0' meant "not short", now '0'
    is ARS_REQ_SHORT. Pass ARS_REQ_LONG to restore the expected scrub-type
    behavior of user-initiated ARS sessions.

    Fixes: d3abaf43bab8 ("acpi, nfit: Fix Address Range Scrub completion tracking")
    Reported-by: Jacek Zloch
    Cc: Vishal Verma
    Reviewed-by: Dave Jiang
    Reviewed-by: Vishal Verma
    Signed-off-by: Dan Williams
    Signed-off-by: Sasha Levin

    Dan Williams
     

17 Dec, 2018

1 commit

  • [ Upstream commit ea2412dc21cc790335d319181dddc43682aef164 ]

    Running the Clang static analyzer on IORT code detected the following
    error:

    Logic error: Branch condition evaluates to a garbage value

    in

    iort_get_platform_device_domain()

    If the named component associated with a given device has no IORT
    mappings, iort_get_platform_device_domain() exits its MSI mapping loop
    with msi_parent pointer containing garbage, which can lead to erroneous
    code path execution.

    Initialize the msi_parent pointer, fixing the bug.

    Fixes: d4f54a186667 ("ACPI: platform: setup MSI domain for ACPI based
    platform device")
    Reported-by: Patrick Bellasi
    Reviewed-by: Hanjun Guo
    Acked-by: Will Deacon
    Cc: Sudeep Holla
    Cc: "Rafael J. Wysocki"
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Catalin Marinas
    Signed-off-by: Sasha Levin

    Lorenzo Pieralisi
     

01 Dec, 2018

1 commit

  • commit 4abb951b73ff0a8a979113ef185651aa3c8da19b upstream.

    The table load process omitted adding the operation region address
    range to the global list. This omission is problematic because the OS
    queries the global list to check for address range conflicts before
    deciding which drivers to load. This commit may result in warning
    messages that look like the following:

    [ 7.871761] ACPI Warning: system_IO range 0x00000428-0x0000042F conflicts with op_region 0x00000400-0x0000047F (\PMIO) (20180531/utaddress-213)
    [ 7.871769] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver

    However, these messages do not signify regressions. It is a result of
    properly adding address ranges within the global address list.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200011
    Tested-by: Jean-Marc Lenoir
    Signed-off-by: Erik Schmauss
    Cc: All applicable
    Signed-off-by: Rafael J. Wysocki
    Cc: Jean Delvare
    Signed-off-by: Greg Kroah-Hartman

    Erik Schmauss
     

27 Nov, 2018

1 commit

  • commit 2bbb5fa37475d7aa5fa62f34db1623f3da2dfdfa upstream.

    Many HP AMD based laptops contain an SMB0001 device like this:

    Device (SMBD)
    {
    Name (_HID, "SMB0001") // _HID: Hardware ID
    Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
    {
    IO (Decode16,
    0x0B20, // Range Minimum
    0x0B20, // Range Maximum
    0x20, // Alignment
    0x20, // Length
    )
    IRQ (Level, ActiveLow, Shared, )
    {7}
    })
    }

    The legacy style IRQ resource here causes acpi_dev_get_irqresource() to
    be called with legacy=true and this message to show in dmesg:
    ACPI: IRQ 7 override to edge, high

    This causes issues when later on the AMD0030 GPIO device gets enumerated:

    Device (GPIO)
    {
    Name (_HID, "AMDI0030") // _HID: Hardware ID
    Name (_CID, "AMDI0030") // _CID: Compatible ID
    Name (_UID, Zero) // _UID: Unique ID
    Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
    {
    Name (RBUF, ResourceTemplate ()
    {
    Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
    {
    0x00000007,
    }
    Memory32Fixed (ReadWrite,
    0xFED81500, // Address Base
    0x00000400, // Address Length
    )
    })
    Return (RBUF) /* \_SB_.GPIO._CRS.RBUF */
    }
    }

    Now acpi_dev_get_irqresource() gets called with legacy=false, but because
    of the earlier override of the trigger-type acpi_register_gsi() returns
    -EBUSY (because we try to register the same interrupt with a different
    trigger-type) and we end up setting IORESOURCE_DISABLED in the flags.

    The setting of IORESOURCE_DISABLED causes platform_get_irq() to call
    acpi_irq_get() which is not implemented on x86 and returns -EINVAL.
    resulting in the following in dmesg:

    amd_gpio AMDI0030:00: Failed to get gpio IRQ: -22
    amd_gpio: probe of AMDI0030:00 failed with error -22

    The SMB0001 is a "virtual" device in the sense that the only way the OS
    interacts with it is through calling a couple of methods to do SMBus
    transfers. As such it is weird that it has IO and IRQ resources at all,
    because the driver for it is not expected to ever access the hardware
    directly.

    The Linux driver for the SMB0001 device directly binds to the acpi_device
    through the acpi_bus, so we do not need to instantiate a platform_device
    for this ACPI device. This commit adds the SMB0001 HID to the
    forbidden_id_list, avoiding the instantiating of a platform_device for it.
    Not instantiating a platform_device means we will no longer call
    acpi_dev_get_irqresource() for the legacy IRQ resource fixing the probe of
    the AMDI0030 device failing.

    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1644013
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=198715
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=199523
    Reported-by: Lukas Kahnert
    Tested-by: Marc
    Cc: All applicable
    Signed-off-by: Hans de Goede
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

21 Nov, 2018

4 commits

  • This reverts commit 22083c028d0b3ee419232d25ce90367e5b25df8f which is
    commit 4abb951b73ff0a8a979113ef185651aa3c8da19b upstream.

    Jean writes:

    This commit was tagged with:

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200011
    Tested-by: Jean-Marc Lenoir
    Cc: All applicable

    making it sound like it was fixing an actual bug. This is not the case.
    The commit fixes a side issue discovered while investigating bug
    #200011. It does NOT fix bug #200011 itself (as explicitly reported by
    Jean-Marc at https://bugzilla.kernel.org/show_bug.cgi?id=200011#c65 ).

    It does however cause regressions, despite what the commit message says. See:

    https://bugzilla.kernel.org/show_bug.cgi?id=201721

    and I expect more similar regressions, as ACPI resource conflicts are
    very frequent.

    This commit was not stable material to start with. It is intrusive,
    presents a risk of side effects, and does not solve an actual bug that
    is bothering users.

    Reported-by: Jean Delvare
    Cc: Jean-Marc Lenoir
    Cc: Erik Schmauss
    Cc: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • commit 3fa58dcab50a0aa16817f16a8d38aee869eb3fb9 upstream.

    When the platform BIOS is unable to report all the media error records
    it requires the OS to restart the scrub at a prescribed location. The
    driver detects the overflow condition, but then fails to report it to
    the ARS state machine after reaping the records. Propagate -ENOSPC
    correctly to continue the ARS operation.

    Cc:
    Fixes: 1cf03c00e7c1 ("nfit: scrub and register regions in a workqueue")
    Reported-by: Jacek Zloch
    Reviewed-by: Dave Jiang
    Signed-off-by: Dan Williams
    Signed-off-by: Greg Kroah-Hartman

    Dan Williams
     
  • commit e8a308e5f47e545e0d41d0686c00f5f5217c5f61 upstream.

    The NFIT machine check handler uses the physical address from the mce
    structure, and compares it against information in the ACPI NFIT table
    to determine whether that location lies on an NVDIMM. The mce->addr
    field however may not always be valid, and this is indicated by the
    MCI_STATUS_ADDRV bit in the status field.

    Export mce_usable_address() which already performs validation for the
    address, and use it in the NFIT handler.

    Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error")
    Reported-by: Robert Elliott
    Signed-off-by: Vishal Verma
    Signed-off-by: Borislav Petkov
    CC: Arnd Bergmann
    Cc: Dan Williams
    CC: Dave Jiang
    CC: elliott@hpe.com
    CC: "H. Peter Anvin"
    CC: Ingo Molnar
    CC: Len Brown
    CC: linux-acpi@vger.kernel.org
    CC: linux-edac
    CC: linux-nvdimm@lists.01.org
    CC: Qiuxu Zhuo
    CC: "Rafael J. Wysocki"
    CC: Ross Zwisler
    CC: stable
    CC: Thomas Gleixner
    CC: Tony Luck
    CC: x86-ml
    CC: Yazen Ghannam
    Link: http://lkml.kernel.org/r/20181026003729.8420-2-vishal.l.verma@intel.com
    Signed-off-by: Greg Kroah-Hartman

    Vishal Verma
     
  • commit 5d96c9342c23ee1d084802dcf064caa67ecaa45b upstream.

    The MCE handler for nfit devices is called for memory errors on a
    Non-Volatile DIMM and adds the error location to a 'badblocks' list.
    This list is used by the various NVDIMM drivers to avoid consuming known
    poison locations during IO.

    The MCE handler gets called for both corrected and uncorrectable errors.
    Until now, both kinds of errors have been added to the badblocks list.
    However, corrected memory errors indicate that the problem has already
    been fixed by hardware, and the resulting interrupt is merely a
    notification to Linux.

    As far as future accesses to that location are concerned, it is
    perfectly fine to use, and thus doesn't need to be included in the above
    badblocks list.

    Add a check in the nfit MCE handler to filter out corrected mce events,
    and only process uncorrectable errors.

    Fixes: 6839a6d96f4e ("nfit: do an ARS scrub on hitting a latent media error")
    Reported-by: Omar Avelar
    Signed-off-by: Vishal Verma
    Signed-off-by: Borislav Petkov
    CC: Arnd Bergmann
    CC: Dan Williams
    CC: Dave Jiang
    CC: elliott@hpe.com
    CC: "H. Peter Anvin"
    CC: Ingo Molnar
    CC: Len Brown
    CC: linux-acpi@vger.kernel.org
    CC: linux-edac
    CC: linux-nvdimm@lists.01.org
    CC: Qiuxu Zhuo
    CC: "Rafael J. Wysocki"
    CC: Ross Zwisler
    CC: stable
    CC: Thomas Gleixner
    CC: Tony Luck
    CC: x86-ml
    CC: Yazen Ghannam
    Link: http://lkml.kernel.org/r/20181026003729.8420-1-vishal.l.verma@intel.com
    Signed-off-by: Greg Kroah-Hartman

    Vishal Verma
     

14 Nov, 2018

8 commits

  • [ Upstream commit 240714061c58e6b1abfb3322398a7634151c06cb ]

    Bay and Cherry Trail DSTDs represent a different set of devices depending
    on which OS the device think it is booting. One set of decices for Windows
    and another set of devices for Android which targets the Android-x86 Linux
    kernel fork (which e.g. used to have its own display driver instead of
    using the i915 driver).

    Which set of devices we are actually going to get is out of our control,
    this is controlled by the ACPI OSID variable, which gets either set through
    an EFI setup option, or sometimes is autodetected. So we need to support
    both.

    This commit adds support for the 80862286 and 808622C0 ACPI HIDs which we
    get for the first resp. second DMA controller on Cherry Trail devices when
    OSID is set to Android.

    Signed-off-by: Hans de Goede
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     
  • [ Upstream commit d0381bf4f80c571dde1244fe5b85dc35e8b3f546 ]

    ACPI driver should make sure all the processor IDs in their ACPI Namespace
    are unique. the driver performs a depth-first walk of the namespace tree
    and calls the acpi_processor_ids_walk() to check the duplicate IDs.

    But, the acpi_processor_ids_walk() mistakes the return value. If a
    processor is checked, it returns true which causes the walk break
    immediately, and other processors will never be checked.

    Repace the value with AE_OK which is the standard acpi_status value.
    And don't abort the namespace walk even on error.

    Fixes: 8c8cb30f49b8 (acpi/processor: Implement DEVICE operator for processor enumeration)
    Signed-off-by: Dou Liyang
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Dou Liyang
     
  • [ Upstream commit 1cdda9486f5103fb133f88e662e48c504adbb779 ]

    ACPI Low Power S0 Idle capabilities are announced via FADT table and can
    be used to inform the kernel about the presence of one or more Low Power
    Idle (LPI) entries as descried in LPIT table. LPIT table can exist
    independently even if the FADT S0 Idle flag is not set and thus it could
    confuse user since the following cpuidle attributes are created.

    /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us
    /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us

    Presence or absence of above attributes could mean that the given
    platform supports S0ix state or not.

    This change allows to create the above cpuidle attributes only if
    FADT table supports Low Power S0 Idle.

    Signed-off-by: Rajneesh Bhardwaj
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Rajneesh Bhardwaj
     
  • [ Upstream commit 59bbff3775c0951300f7b41345a54b999438f8d0 ]

    The type of a cache might not be specified by architectural mechanisms (ie
    system registers), but its type might be specified in the PPTT. In this
    case, we should populate the type of the cache, rather than leave it
    undefined.

    This fixes the issue where the cacheinfo driver will not populate sysfs
    for such caches, resulting in the information missing from utilities like
    lstopo and lscpu, thus degrading the user experience.

    Fixes: 2bd00bcd73e5 (ACPI/PPTT: Add Processor Properties Topology Table parsing)
    Reported-by: Vijaya Kumar K
    Signed-off-by: Jeffrey Hugo
    Reviewed-by: Sudeep Holla
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Jeffrey Hugo
     
  • commit d3abaf43bab8d5b0a3c6b982100d9e2be96de4ad upstream.

    The Address Range Scrub implementation tried to skip running scrubs
    against ranges that were already scrubbed by the BIOS. Unfortunately
    that support also resulted in early scrub completions as evidenced by
    this debug output from nfit_test:

    nd_region region9: ARS: range 1 short complete
    nd_region region3: ARS: range 1 short complete
    nd_region region4: ARS: range 2 ARS start (0)
    nd_region region4: ARS: range 2 short complete

    ...i.e. completions without any indications that the scrub was started.

    This state of affairs was hard to see in the code due to the
    proliferation of state bits and mistakenly trying to track done state
    per-range when the completion is a global property of the bus.

    So, kill the four ARS state bits (ARS_REQ, ARS_REQ_REDO, ARS_DONE, and
    ARS_SHORT), and replace them with just 2 request flags ARS_REQ_SHORT and
    ARS_REQ_LONG. The implementation will still complete and reap the
    results of BIOS initiated ARS, but it will not attempt to use that
    information to affect the completion status of scrubbing the ranges from
    a Linux perspective.

    Instead, try to synchronously run a short ARS per range at init time and
    schedule a long scrub in the background. If ARS is busy with an ARS
    request, schedule both a short and a long scrub for when ARS returns to
    idle. This logic also satisfies the intent of what ARS_REQ_REDO was
    trying to achieve. The new rule is that the REQ flag stays set until the
    next successful ars_start() for that range.

    With the new policy that the REQ flags are not cleared until the next
    start, the implementation no longer loses requests as can be seen from
    the following log:

    nd_region region3: ARS: range 1 ARS start short (0)
    nd_region region9: ARS: range 1 ARS start short (0)
    nd_region region3: ARS: range 1 complete
    nd_region region4: ARS: range 2 ARS start short (0)
    nd_region region9: ARS: range 1 complete
    nd_region region9: ARS: range 1 ARS start long (0)
    nd_region region4: ARS: range 2 complete
    nd_region region3: ARS: range 1 ARS start long (0)
    nd_region region9: ARS: range 1 complete
    nd_region region3: ARS: range 1 complete
    nd_region region4: ARS: range 2 ARS start long (0)
    nd_region region4: ARS: range 2 complete

    ...note that the nfit_test emulated driver provides 2 buses, that is why
    some of the range indices are duplicated. Notice that each range
    now successfully completes a short and long scrub.

    Cc:
    Fixes: 14c73f997a5e ("nfit, address-range-scrub: introduce nfit_spa->ars_state")
    Fixes: cc3d3458d46f ("acpi/nfit: queue issuing of ars when an uc error...")
    Reported-by: Jacek Zloch
    Reported-by: Krzysztof Rusocki
    Reviewed-by: Dave Jiang
    Signed-off-by: Dan Williams
    Signed-off-by: Greg Kroah-Hartman

    Dan Williams
     
  • commit c64baa3a6fa207d112706bc5e7fd645cd8a8663f upstream.

    AML opcodes come in two lengths: 1-byte opcodes and 2-byte, extended opcodes.
    If an error occurs due to illegal opcodes during table load, the AML parser
    needs to continue loading the table. In order to do this, it needs to skip
    parsing of the offending opcode and operands associated with that opcode.

    This change fixes the AML parse loop to correctly skip parsing of incorrect
    extended opcodes. Previously, only the short opcodes were skipped correctly.

    Signed-off-by: Erik Schmauss
    Cc: All applicable
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Erik Schmauss
     
  • commit 4abb951b73ff0a8a979113ef185651aa3c8da19b upstream.

    The table load process omitted adding the operation region address
    range to the global list. This omission is problematic because the OS
    queries the global list to check for address range conflicts before
    deciding which drivers to load. This commit may result in warning
    messages that look like the following:

    [ 7.871761] ACPI Warning: system_IO range 0x00000428-0x0000042F conflicts with op_region 0x00000400-0x0000047F (\PMIO) (20180531/utaddress-213)
    [ 7.871769] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver

    However, these messages do not signify regressions. It is a result of
    properly adding address ranges within the global address list.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200011
    Tested-by: Jean-Marc Lenoir
    Signed-off-by: Erik Schmauss
    Cc: All applicable
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Erik Schmauss
     
  • commit 83b2348e2755db48fa8f40fdb791f366fabc0ba0 upstream.

    Since acpi_os_get_timer() may be called after the timer subsystem has
    been suspended, use the jiffies counter instead of ktime_get(). This
    patch avoids that the following warning is reported during hibernation:

    WARNING: CPU: 0 PID: 612 at kernel/time/timekeeping.c:751 ktime_get+0x116/0x120
    RIP: 0010:ktime_get+0x116/0x120
    Call Trace:
    acpi_os_get_timer+0xe/0x30
    acpi_ds_exec_begin_control_op+0x175/0x1de
    acpi_ds_exec_begin_op+0x2c7/0x39a
    acpi_ps_create_op+0x573/0x5e4
    acpi_ps_parse_loop+0x349/0x1220
    acpi_ps_parse_aml+0x25b/0x6da
    acpi_ps_execute_method+0x327/0x41b
    acpi_ns_evaluate+0x4e9/0x6f5
    acpi_ut_evaluate_object+0xd9/0x2f2
    acpi_rs_get_method_data+0x8f/0x114
    acpi_walk_resources+0x122/0x1b6
    acpi_pci_link_get_current.isra.2+0x157/0x280
    acpi_pci_link_set+0x32f/0x4a0
    irqrouter_resume+0x58/0x80
    syscore_resume+0x84/0x380
    hibernation_snapshot+0x20c/0x4f0
    hibernate+0x22d/0x3a6
    state_store+0x99/0xa0
    kobj_attr_store+0x37/0x50
    sysfs_kf_write+0x87/0xa0
    kernfs_fop_write+0x1a5/0x240
    __vfs_write+0xd2/0x410
    vfs_write+0x101/0x250
    ksys_write+0xab/0x120
    __x64_sys_write+0x43/0x50
    do_syscall_64+0x71/0x220
    entry_SYSCALL_64_after_hwframe+0x49/0xbe

    Fixes: 164a08cee135 (ACPICA: Dispatcher: Introduce timeout mechanism for infinite loop detection)
    Reported-by: Fengguang Wu
    References: https://lists.01.org/pipermail/lkp/2018-April/008406.html
    Signed-off-by: Bart Van Assche
    Cc: 4.16+ # 4.16+
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Bart Van Assche
     

07 Sep, 2018

1 commit


06 Sep, 2018

2 commits

  • Commit 12864ff8545f (ACPI / LPSS: Avoid PM quirks on suspend and resume
    from hibernation) bypasses lpss quirks for S3 and S4, by setting a flag
    for S3/S4 in acpi_lpss_suspend(), and check that flag in
    acpi_lpss_resume().

    But this overlooks the boot case where acpi_lpss_resume() may get called
    without a corresponding acpi_lpss_suspend() having been called.

    Thus force setting the flag during boot.

    Fixes: 12864ff8545f (ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation)
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200989
    Reported-and-tested-by: William Lieurance
    Signed-off-by: Zhang Rui
    Cc: 4.15+ # 4.15+: 12864ff8545f (ACPI / LPSS: Avoid ...)
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • Calling dmi_check_system() early only works on X86. Other
    architectures initialize the DMI subsystem later so it's not
    ready yet when ACPI itself gets initialized.

    In the best case it results in a useless call to a function which
    will do nothing. But depending on the dmi implementation, it could
    also result in warnings. Best is to not call the function when it
    can't work and isn't needed.

    Additionally, if anyone ever needs to add non-x86 quirks, it would
    surprisingly not work, so document the limitation to avoid confusion.

    Signed-off-by: Jean Delvare
    Fixes: cce4f632db20 (ACPI: fix early DSDT dmi check warnings on ia64)
    Signed-off-by: Rafael J. Wysocki

    Jean Delvare
     

26 Aug, 2018

1 commit

  • Pull libnvdimm updates from Dave Jiang:
    "Collection of misc libnvdimm patches for 4.19 submission:

    - Adding support to read locked nvdimm capacity.

    - Change test code to make DSM failure code injection an override.

    - Add support for calculate maximum contiguous area for namespace.

    - Add support for queueing a short ARS when there is on going ARS for
    nvdimm.

    - Allow NULL to be passed in to ->direct_access() for kaddr and pfn
    params.

    - Improve smart injection support for nvdimm emulation testing.

    - Fix test code that supports for emulating controller temperature.

    - Fix hang on error before devm_memremap_pages()

    - Fix a bug that causes user memory corruption when data returned to
    user for ars_status.

    - Maintainer updates for Ross Zwisler emails and adding Jan Kara to
    fsdax"

    * tag 'libnvdimm-for-4.19_misc' of gitolite.kernel.org:pub/scm/linux/kernel/git/nvdimm/nvdimm:
    libnvdimm: fix ars_status output length calculation
    device-dax: avoid hang on error before devm_memremap_pages()
    tools/testing/nvdimm: improve emulation of smart injection
    filesystem-dax: Do not request kaddr and pfn when not required
    md/dm-writecache: Don't request pointer dummy_addr when not required
    dax/super: Do not request a pointer kaddr when not required
    tools/testing/nvdimm: kaddr and pfn can be NULL to ->direct_access()
    s390, dcssblk: kaddr and pfn can be NULL to ->direct_access()
    libnvdimm, pmem: kaddr and pfn can be NULL to ->direct_access()
    acpi/nfit: queue issuing of ars when an uc error notification comes in
    libnvdimm: Export max available extent
    libnvdimm: Use max contiguous area for namespace size
    MAINTAINERS: Add Jan Kara for filesystem DAX
    MAINTAINERS: update Ross Zwisler's email address
    tools/testing/nvdimm: Fix support for emulating controller temperature
    tools/testing/nvdimm: Make DSM failure code injection an override
    acpi, nfit: Prefer _DSM over _LSR for namespace label reads
    libnvdimm: Introduce locked DIMM capacity support

    Linus Torvalds
     

25 Aug, 2018

1 commit