]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
nfit-test: Add platform cap support from ACPI 6.2a to test
authorDave Jiang <dave.jiang@intel.com>
Wed, 31 Jan 2018 19:45:55 +0000 (12:45 -0700)
committerRoss Zwisler <ross.zwisler@linux.intel.com>
Thu, 1 Feb 2018 22:01:15 +0000 (15:01 -0700)
Adding NFIT platform capabilities sub table in nfit_test simulated ACPI
NFIT table. Only the first NFIT table is added with the capability
sub-table.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
tools/testing/nvdimm/test/nfit.c

index 7217b2b953b588a662d287d83a1e7e8920ebca59..de1373a7ed4f0412cbad07d46922340686bf23e5 100644 (file)
@@ -881,7 +881,8 @@ static int nfit_test0_alloc(struct nfit_test *t)
                                        window_size) * NUM_DCR
                        + sizeof(struct acpi_nfit_data_region) * NUM_BDW
                        + (sizeof(struct acpi_nfit_flush_address)
-                                       + sizeof(u64) * NUM_HINTS) * NUM_DCR;
+                                       + sizeof(u64) * NUM_HINTS) * NUM_DCR
+                       + sizeof(struct acpi_nfit_capabilities);
        int i;
 
        t->nfit_buf = test_alloc(t, nfit_size, &t->nfit_dma);
@@ -993,6 +994,7 @@ static void nfit_test0_setup(struct nfit_test *t)
        struct acpi_nfit_control_region *dcr;
        struct acpi_nfit_data_region *bdw;
        struct acpi_nfit_flush_address *flush;
+       struct acpi_nfit_capabilities *pcap;
        unsigned int offset, i;
 
        /*
@@ -1500,8 +1502,16 @@ static void nfit_test0_setup(struct nfit_test *t)
        for (i = 0; i < NUM_HINTS; i++)
                flush->hint_address[i] = t->flush_dma[3] + i * sizeof(u64);
 
+       /* platform capabilities */
+       pcap = nfit_buf + offset + flush_hint_size * 4;
+       pcap->header.type = ACPI_NFIT_TYPE_CAPABILITIES;
+       pcap->header.length = sizeof(*pcap);
+       pcap->highest_capability = 1;
+       pcap->capabilities = ACPI_NFIT_CAPABILITY_CACHE_FLUSH |
+               ACPI_NFIT_CAPABILITY_MEM_FLUSH;
+
        if (t->setup_hotplug) {
-               offset = offset + flush_hint_size * 4;
+               offset = offset + flush_hint_size * 4 + sizeof(*pcap);
                /* dcr-descriptor4: blk */
                dcr = nfit_buf + offset;
                dcr->header.type = ACPI_NFIT_TYPE_CONTROL_REGION;