libnvdimm fixes for 5.13-rc2
- Fix regression in ACPI NFIT table handling leading to crashes and driver load failures. - Move the nvdimm mailing list - Miscellaneous minor fixups -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEf41QbsdZzFdA8EfZHtKRamZ9iAIFAmCfCWEACgkQHtKRamZ9 iAIhjA/7BJcayM6TpBO+jSWgCbhgEMKw37DWVxI43aRRStt5xQYNcVhgZO3lQJ9D mUK1oQxWTlXOOzgp4SNM/WK5XCO2xj7DHWlsKvyrwPKusGnnjACYKXISAr+TL7QI j9dsu+kMWJrnr4H5aqLBmG1n7a6sJbqLqFbEU7DXb0ZdHh9O2+Lq5KoWyNwtNRLh ZzyGD1tuTpxfiUnvyyuKwMQCrmDqgoHA5uYvwiPm6fE8XhKiHGqNZ2sUnxAU/UU+ A5R3EMkmMAzphzvpFJu16UAy4zDxXHH94dIwrtsYkO4JmJ9TYRlZjQkRxjqquE45 vqtlGrvq333OfnINA9sm8i7nHI+USMqCThSkWdM2LkAHiZlyqk1CbyL7X4CIES+H 3GPEVAozn5/mCpS6vDkHrZxFeMpdBhIM9tczu4ClQVjQKrKvJTrRMkNDa1WonEYz StBkUShMSGylpWxWN0CuNU3MN9LbP3ea+ihV0S/VRwQBIsLr5/1bZHBMoTnsWCpD 9sMRE312gbsV5uUXV5BO4un0I8bDTbPpLafWAwwBL4MNE9V8cNYZyGoTr1atxeIr sXQAhfABugjiWcmoL9TPy2Q1ihF8crSZOZOr9OhiEcDGpLk4sSLmsKNgKWTNQ95V 0eT+9/nJ6neaRxLblXepcym6w9lltPMoEkXncUcK/pWgQ/6tUfY= =UGmD -----END PGP SIGNATURE----- Merge tag 'libnvdimm-fixes-5.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm Pull libnvdimm fixes from Dan Williams: "A regression fix for a bootup crash condition introduced in this merge window and some other minor fixups: - Fix regression in ACPI NFIT table handling leading to crashes and driver load failures. - Move the nvdimm mailing list - Miscellaneous minor fixups" * tag 'libnvdimm-fixes-5.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: ACPI: NFIT: Fix support for variable 'SPA' structure size MAINTAINERS: Move nvdimm mailing list tools/testing/nvdimm: Make symbol '__nfit_test_ioremap' static libnvdimm: Remove duplicate struct declaration
This commit is contained in:
commit
a5ce4296b0
|
@ -1,7 +1,7 @@
|
|||
What: /sys/class/dax/
|
||||
Date: May, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description: Device DAX is the device-centric analogue of Filesystem
|
||||
DAX (CONFIG_FS_DAX). It allows memory ranges to be
|
||||
allocated and mapped without need of an intervening file
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
What: /sys/bus/nd/devices/regionX/nfit/ecc_unit_size
|
||||
Date: Aug, 2017
|
||||
KernelVersion: v4.14 (Removed v4.18)
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Size of a write request to a DIMM that will not incur a
|
||||
read-modify-write cycle at the memory controller.
|
||||
|
|
|
@ -5,7 +5,7 @@ Interface Table (NFIT)' section in the ACPI specification
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/serial
|
||||
Date: Jun, 2015
|
||||
KernelVersion: v4.2
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Serial number of the NVDIMM (non-volatile dual in-line
|
||||
memory module), assigned by the module vendor.
|
||||
|
@ -14,7 +14,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/handle
|
||||
Date: Apr, 2015
|
||||
KernelVersion: v4.2
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) The address (given by the _ADR object) of the device on its
|
||||
parent bus of the NVDIMM device containing the NVDIMM region.
|
||||
|
@ -23,7 +23,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/device
|
||||
Date: Apr, 2015
|
||||
KernelVersion: v4.1
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Device id for the NVDIMM, assigned by the module vendor.
|
||||
|
||||
|
@ -31,7 +31,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/rev_id
|
||||
Date: Jun, 2015
|
||||
KernelVersion: v4.2
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Revision of the NVDIMM, assigned by the module vendor.
|
||||
|
||||
|
@ -39,7 +39,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/phys_id
|
||||
Date: Apr, 2015
|
||||
KernelVersion: v4.2
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Handle (i.e., instance number) for the SMBIOS (system
|
||||
management BIOS) Memory Device structure describing the NVDIMM
|
||||
|
@ -49,7 +49,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/flags
|
||||
Date: Jun, 2015
|
||||
KernelVersion: v4.2
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) The flags in the NFIT memory device sub-structure indicate
|
||||
the state of the data on the nvdimm relative to its energy
|
||||
|
@ -68,7 +68,7 @@ What: /sys/bus/nd/devices/nmemX/nfit/format1
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/formats
|
||||
Date: Apr, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) The interface codes indicate support for persistent memory
|
||||
mapped directly into system physical address space and / or a
|
||||
|
@ -84,7 +84,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/vendor
|
||||
Date: Apr, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Vendor id of the NVDIMM.
|
||||
|
||||
|
@ -92,7 +92,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/dsm_mask
|
||||
Date: May, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) The bitmask indicates the supported device specific control
|
||||
functions relative to the NVDIMM command family supported by the
|
||||
|
@ -102,7 +102,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/family
|
||||
Date: Apr, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Displays the NVDIMM family command sets. Values
|
||||
0, 1, 2 and 3 correspond to NVDIMM_FAMILY_INTEL,
|
||||
|
@ -118,7 +118,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/id
|
||||
Date: Apr, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) ACPI specification 6.2 section 5.2.25.9, defines an
|
||||
identifier for an NVDIMM, which refelects the id attribute.
|
||||
|
@ -127,7 +127,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/subsystem_vendor
|
||||
Date: Apr, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Sub-system vendor id of the NVDIMM non-volatile memory
|
||||
subsystem controller.
|
||||
|
@ -136,7 +136,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/subsystem_rev_id
|
||||
Date: Apr, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Sub-system revision id of the NVDIMM non-volatile memory subsystem
|
||||
controller, assigned by the non-volatile memory subsystem
|
||||
|
@ -146,7 +146,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/nfit/subsystem_device
|
||||
Date: Apr, 2016
|
||||
KernelVersion: v4.7
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) Sub-system device id for the NVDIMM non-volatile memory
|
||||
subsystem controller, assigned by the non-volatile memory
|
||||
|
@ -156,7 +156,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/ndbusX/nfit/revision
|
||||
Date: Jun, 2015
|
||||
KernelVersion: v4.2
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) ACPI NFIT table revision number.
|
||||
|
||||
|
@ -164,7 +164,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/ndbusX/nfit/scrub
|
||||
Date: Sep, 2016
|
||||
KernelVersion: v4.9
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RW) This shows the number of full Address Range Scrubs (ARS)
|
||||
that have been completed since driver load time. Userspace can
|
||||
|
@ -177,7 +177,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/ndbusX/nfit/hw_error_scrub
|
||||
Date: Sep, 2016
|
||||
KernelVersion: v4.9
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RW) Provides a way to toggle the behavior between just adding
|
||||
the address (cache line) where the MCE happened to the poison
|
||||
|
@ -196,7 +196,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/ndbusX/nfit/dsm_mask
|
||||
Date: Jun, 2017
|
||||
KernelVersion: v4.13
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) The bitmask indicates the supported bus specific control
|
||||
functions. See the section named 'NVDIMM Root Device _DSMs' in
|
||||
|
@ -205,7 +205,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/ndbusX/nfit/firmware_activate_noidle
|
||||
Date: Apr, 2020
|
||||
KernelVersion: v5.8
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RW) The Intel platform implementation of firmware activate
|
||||
support exposes an option let the platform force idle devices in
|
||||
|
@ -225,7 +225,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/regionX/nfit/range_index
|
||||
Date: Jun, 2015
|
||||
KernelVersion: v4.2
|
||||
Contact: linux-nvdimm@lists.01.org
|
||||
Contact: nvdimm@lists.linux.dev
|
||||
Description:
|
||||
(RO) A unique number provided by the BIOS to identify an address
|
||||
range. Used by NVDIMM Region Mapping Structure to uniquely refer
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
What: /sys/bus/nd/devices/nmemX/papr/flags
|
||||
Date: Apr, 2020
|
||||
KernelVersion: v5.8
|
||||
Contact: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>, linux-nvdimm@lists.01.org,
|
||||
Contact: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>, nvdimm@lists.linux.dev,
|
||||
Description:
|
||||
(RO) Report flags indicating various states of a
|
||||
papr-pmem NVDIMM device. Each flag maps to a one or
|
||||
|
@ -36,7 +36,7 @@ Description:
|
|||
What: /sys/bus/nd/devices/nmemX/papr/perf_stats
|
||||
Date: May, 2020
|
||||
KernelVersion: v5.9
|
||||
Contact: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>, linux-nvdimm@lists.01.org,
|
||||
Contact: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>, nvdimm@lists.linux.dev,
|
||||
Description:
|
||||
(RO) Report various performance stats related to papr-scm NVDIMM
|
||||
device. Each stat is reported on a new line with each line
|
||||
|
|
|
@ -4,7 +4,7 @@ LIBNVDIMM: Non-Volatile Devices
|
|||
|
||||
libnvdimm - kernel / libndctl - userspace helper library
|
||||
|
||||
linux-nvdimm@lists.01.org
|
||||
nvdimm@lists.linux.dev
|
||||
|
||||
Version 13
|
||||
|
||||
|
|
14
MAINTAINERS
14
MAINTAINERS
|
@ -5237,7 +5237,7 @@ DEVICE DIRECT ACCESS (DAX)
|
|||
M: Dan Williams <dan.j.williams@intel.com>
|
||||
M: Vishal Verma <vishal.l.verma@intel.com>
|
||||
M: Dave Jiang <dave.jiang@intel.com>
|
||||
L: linux-nvdimm@lists.01.org
|
||||
L: nvdimm@lists.linux.dev
|
||||
S: Supported
|
||||
F: drivers/dax/
|
||||
|
||||
|
@ -7006,7 +7006,7 @@ M: Dan Williams <dan.j.williams@intel.com>
|
|||
R: Matthew Wilcox <willy@infradead.org>
|
||||
R: Jan Kara <jack@suse.cz>
|
||||
L: linux-fsdevel@vger.kernel.org
|
||||
L: linux-nvdimm@lists.01.org
|
||||
L: nvdimm@lists.linux.dev
|
||||
S: Supported
|
||||
F: fs/dax.c
|
||||
F: include/linux/dax.h
|
||||
|
@ -10378,7 +10378,7 @@ LIBNVDIMM BLK: MMIO-APERTURE DRIVER
|
|||
M: Dan Williams <dan.j.williams@intel.com>
|
||||
M: Vishal Verma <vishal.l.verma@intel.com>
|
||||
M: Dave Jiang <dave.jiang@intel.com>
|
||||
L: linux-nvdimm@lists.01.org
|
||||
L: nvdimm@lists.linux.dev
|
||||
S: Supported
|
||||
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
|
||||
P: Documentation/nvdimm/maintainer-entry-profile.rst
|
||||
|
@ -10389,7 +10389,7 @@ LIBNVDIMM BTT: BLOCK TRANSLATION TABLE
|
|||
M: Vishal Verma <vishal.l.verma@intel.com>
|
||||
M: Dan Williams <dan.j.williams@intel.com>
|
||||
M: Dave Jiang <dave.jiang@intel.com>
|
||||
L: linux-nvdimm@lists.01.org
|
||||
L: nvdimm@lists.linux.dev
|
||||
S: Supported
|
||||
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
|
||||
P: Documentation/nvdimm/maintainer-entry-profile.rst
|
||||
|
@ -10399,7 +10399,7 @@ LIBNVDIMM PMEM: PERSISTENT MEMORY DRIVER
|
|||
M: Dan Williams <dan.j.williams@intel.com>
|
||||
M: Vishal Verma <vishal.l.verma@intel.com>
|
||||
M: Dave Jiang <dave.jiang@intel.com>
|
||||
L: linux-nvdimm@lists.01.org
|
||||
L: nvdimm@lists.linux.dev
|
||||
S: Supported
|
||||
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
|
||||
P: Documentation/nvdimm/maintainer-entry-profile.rst
|
||||
|
@ -10407,7 +10407,7 @@ F: drivers/nvdimm/pmem*
|
|||
|
||||
LIBNVDIMM: DEVICETREE BINDINGS
|
||||
M: Oliver O'Halloran <oohall@gmail.com>
|
||||
L: linux-nvdimm@lists.01.org
|
||||
L: nvdimm@lists.linux.dev
|
||||
S: Supported
|
||||
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
|
||||
F: Documentation/devicetree/bindings/pmem/pmem-region.txt
|
||||
|
@ -10418,7 +10418,7 @@ M: Dan Williams <dan.j.williams@intel.com>
|
|||
M: Vishal Verma <vishal.l.verma@intel.com>
|
||||
M: Dave Jiang <dave.jiang@intel.com>
|
||||
M: Ira Weiny <ira.weiny@intel.com>
|
||||
L: linux-nvdimm@lists.01.org
|
||||
L: nvdimm@lists.linux.dev
|
||||
S: Supported
|
||||
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
|
||||
P: Documentation/nvdimm/maintainer-entry-profile.rst
|
||||
|
|
|
@ -686,6 +686,13 @@ int nfit_spa_type(struct acpi_nfit_system_address *spa)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static size_t sizeof_spa(struct acpi_nfit_system_address *spa)
|
||||
{
|
||||
if (spa->flags & ACPI_NFIT_LOCATION_COOKIE_VALID)
|
||||
return sizeof(*spa);
|
||||
return sizeof(*spa) - 8;
|
||||
}
|
||||
|
||||
static bool add_spa(struct acpi_nfit_desc *acpi_desc,
|
||||
struct nfit_table_prev *prev,
|
||||
struct acpi_nfit_system_address *spa)
|
||||
|
@ -693,22 +700,22 @@ static bool add_spa(struct acpi_nfit_desc *acpi_desc,
|
|||
struct device *dev = acpi_desc->dev;
|
||||
struct nfit_spa *nfit_spa;
|
||||
|
||||
if (spa->header.length != sizeof(*spa))
|
||||
if (spa->header.length != sizeof_spa(spa))
|
||||
return false;
|
||||
|
||||
list_for_each_entry(nfit_spa, &prev->spas, list) {
|
||||
if (memcmp(nfit_spa->spa, spa, sizeof(*spa)) == 0) {
|
||||
if (memcmp(nfit_spa->spa, spa, sizeof_spa(spa)) == 0) {
|
||||
list_move_tail(&nfit_spa->list, &acpi_desc->spas);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
nfit_spa = devm_kzalloc(dev, sizeof(*nfit_spa) + sizeof(*spa),
|
||||
nfit_spa = devm_kzalloc(dev, sizeof(*nfit_spa) + sizeof_spa(spa),
|
||||
GFP_KERNEL);
|
||||
if (!nfit_spa)
|
||||
return false;
|
||||
INIT_LIST_HEAD(&nfit_spa->list);
|
||||
memcpy(nfit_spa->spa, spa, sizeof(*spa));
|
||||
memcpy(nfit_spa->spa, spa, sizeof_spa(spa));
|
||||
list_add_tail(&nfit_spa->list, &acpi_desc->spas);
|
||||
dev_dbg(dev, "spa index: %d type: %s\n",
|
||||
spa->range_index,
|
||||
|
|
|
@ -141,7 +141,6 @@ static inline void __iomem *devm_nvdimm_ioremap(struct device *dev,
|
|||
|
||||
struct nvdimm_bus;
|
||||
struct module;
|
||||
struct device;
|
||||
struct nd_blk_region;
|
||||
struct nd_blk_region_desc {
|
||||
int (*enable)(struct nvdimm_bus *nvdimm_bus, struct device *dev);
|
||||
|
|
|
@ -62,7 +62,7 @@ struct nfit_test_resource *get_nfit_res(resource_size_t resource)
|
|||
}
|
||||
EXPORT_SYMBOL(get_nfit_res);
|
||||
|
||||
void __iomem *__nfit_test_ioremap(resource_size_t offset, unsigned long size,
|
||||
static void __iomem *__nfit_test_ioremap(resource_size_t offset, unsigned long size,
|
||||
void __iomem *(*fallback_fn)(resource_size_t, unsigned long))
|
||||
{
|
||||
struct nfit_test_resource *nfit_res = get_nfit_res(offset);
|
||||
|
|
|
@ -1871,9 +1871,16 @@ static void smart_init(struct nfit_test *t)
|
|||
}
|
||||
}
|
||||
|
||||
static size_t sizeof_spa(struct acpi_nfit_system_address *spa)
|
||||
{
|
||||
/* until spa location cookie support is added... */
|
||||
return sizeof(*spa) - 8;
|
||||
}
|
||||
|
||||
static int nfit_test0_alloc(struct nfit_test *t)
|
||||
{
|
||||
size_t nfit_size = sizeof(struct acpi_nfit_system_address) * NUM_SPA
|
||||
struct acpi_nfit_system_address *spa = NULL;
|
||||
size_t nfit_size = sizeof_spa(spa) * NUM_SPA
|
||||
+ sizeof(struct acpi_nfit_memory_map) * NUM_MEM
|
||||
+ sizeof(struct acpi_nfit_control_region) * NUM_DCR
|
||||
+ offsetof(struct acpi_nfit_control_region,
|
||||
|
@ -1937,7 +1944,8 @@ static int nfit_test0_alloc(struct nfit_test *t)
|
|||
|
||||
static int nfit_test1_alloc(struct nfit_test *t)
|
||||
{
|
||||
size_t nfit_size = sizeof(struct acpi_nfit_system_address) * 2
|
||||
struct acpi_nfit_system_address *spa = NULL;
|
||||
size_t nfit_size = sizeof_spa(spa) * 2
|
||||
+ sizeof(struct acpi_nfit_memory_map) * 2
|
||||
+ offsetof(struct acpi_nfit_control_region, window_size) * 2;
|
||||
int i;
|
||||
|
@ -2000,7 +2008,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
*/
|
||||
spa = nfit_buf;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_PM), 16);
|
||||
spa->range_index = 0+1;
|
||||
spa->address = t->spa_set_dma[0];
|
||||
|
@ -2014,7 +2022,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
*/
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_PM), 16);
|
||||
spa->range_index = 1+1;
|
||||
spa->address = t->spa_set_dma[1];
|
||||
|
@ -2024,7 +2032,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa2 (dcr0) dimm0 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_DCR), 16);
|
||||
spa->range_index = 2+1;
|
||||
spa->address = t->dcr_dma[0];
|
||||
|
@ -2034,7 +2042,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa3 (dcr1) dimm1 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_DCR), 16);
|
||||
spa->range_index = 3+1;
|
||||
spa->address = t->dcr_dma[1];
|
||||
|
@ -2044,7 +2052,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa4 (dcr2) dimm2 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_DCR), 16);
|
||||
spa->range_index = 4+1;
|
||||
spa->address = t->dcr_dma[2];
|
||||
|
@ -2054,7 +2062,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa5 (dcr3) dimm3 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_DCR), 16);
|
||||
spa->range_index = 5+1;
|
||||
spa->address = t->dcr_dma[3];
|
||||
|
@ -2064,7 +2072,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa6 (bdw for dcr0) dimm0 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_BDW), 16);
|
||||
spa->range_index = 6+1;
|
||||
spa->address = t->dimm_dma[0];
|
||||
|
@ -2074,7 +2082,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa7 (bdw for dcr1) dimm1 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_BDW), 16);
|
||||
spa->range_index = 7+1;
|
||||
spa->address = t->dimm_dma[1];
|
||||
|
@ -2084,7 +2092,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa8 (bdw for dcr2) dimm2 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_BDW), 16);
|
||||
spa->range_index = 8+1;
|
||||
spa->address = t->dimm_dma[2];
|
||||
|
@ -2094,7 +2102,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa9 (bdw for dcr3) dimm3 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_BDW), 16);
|
||||
spa->range_index = 9+1;
|
||||
spa->address = t->dimm_dma[3];
|
||||
|
@ -2581,7 +2589,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa10 (dcr4) dimm4 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_DCR), 16);
|
||||
spa->range_index = 10+1;
|
||||
spa->address = t->dcr_dma[4];
|
||||
|
@ -2595,7 +2603,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
*/
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_PM), 16);
|
||||
spa->range_index = 11+1;
|
||||
spa->address = t->spa_set_dma[2];
|
||||
|
@ -2605,7 +2613,7 @@ static void nfit_test0_setup(struct nfit_test *t)
|
|||
/* spa12 (bdw for dcr4) dimm4 */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_BDW), 16);
|
||||
spa->range_index = 12+1;
|
||||
spa->address = t->dimm_dma[4];
|
||||
|
@ -2739,7 +2747,7 @@ static void nfit_test1_setup(struct nfit_test *t)
|
|||
/* spa0 (flat range with no bdw aliasing) */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_PM), 16);
|
||||
spa->range_index = 0+1;
|
||||
spa->address = t->spa_set_dma[0];
|
||||
|
@ -2749,7 +2757,7 @@ static void nfit_test1_setup(struct nfit_test *t)
|
|||
/* virtual cd region */
|
||||
spa = nfit_buf + offset;
|
||||
spa->header.type = ACPI_NFIT_TYPE_SYSTEM_ADDRESS;
|
||||
spa->header.length = sizeof(*spa);
|
||||
spa->header.length = sizeof_spa(spa);
|
||||
memcpy(spa->range_guid, to_nfit_uuid(NFIT_SPA_VCD), 16);
|
||||
spa->range_index = 0;
|
||||
spa->address = t->spa_set_dma[1];
|
||||
|
|
Loading…
Reference in New Issue