Skip to content
This repository was archived by the owner on Nov 4, 2024. It is now read-only.

Commit ae3ee56

Browse files
kjlyongitbook-bot
authored andcommitted
GitBook: [master] 43 pages and one asset modified
1 parent ec585bd commit ae3ee56

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1430
-35
lines changed

Diff for: .gitbook/assets/capture.PNG

285 KB
Loading

Diff for: SUMMARY.md

+39
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,45 @@
4343
* [Troubleshooting](ndctl-users-guide/troubleshooting.md)
4444
* [Glossary](ndctl-users-guide/glossary.md)
4545
* [References](ndctl-users-guide/references.md)
46+
* [IPMCTL User Guide](ipmctl-user-guide/README.md)
47+
* [Installing IPMCTL](ipmctl-user-guide/installing-ipmctl.md)
48+
* [Basic Usage](ipmctl-user-guide/basic-usage.md)
49+
* [Module Discovery](ipmctl-user-guide/module-discovery/README.md)
50+
* [Show Device](ipmctl-user-guide/module-discovery/show-device.md)
51+
* [Show Topology](ipmctl-user-guide/module-discovery/show-topology.md)
52+
* [Show Socket](ipmctl-user-guide/module-discovery/show-socket.md)
53+
* [Show Memory Resources](ipmctl-user-guide/module-discovery/show-memory-resources.md)
54+
* [Show System Capabilities](ipmctl-user-guide/module-discovery/show-system-capabilities.md)
55+
* [Provisioning](ipmctl-user-guide/provisioning/README.md)
56+
* [Concepts](ipmctl-user-guide/provisioning/concepts.md)
57+
* [Create Memory Allocation Goal](ipmctl-user-guide/provisioning/create-memory-allocation-goal.md)
58+
* [Provision App Direct](ipmctl-user-guide/provisioning/provision-app-direct.md)
59+
* [Provision Memory Mode](ipmctl-user-guide/provisioning/provision-memory-mode.md)
60+
* [Provision Mixed Mode](ipmctl-user-guide/provisioning/provision-mixed-mode.md)
61+
* [Show Memory Allocation Goal](ipmctl-user-guide/provisioning/show-memory-allocation-goal.md)
62+
* [Dump Memory Allocation Settings](ipmctl-user-guide/provisioning/dump-memory-allocation-settings.md)
63+
* [Load Memory Allocation Goal](ipmctl-user-guide/provisioning/load-memory-allocation-goal.md)
64+
* [Delete Memory Allocation Goal](ipmctl-user-guide/provisioning/delete-memory-allocation-goal.md)
65+
* [Security](ipmctl-user-guide/security/README.md)
66+
* [Enable Device Security](ipmctl-user-guide/security/enable-device-security.md)
67+
* [Change Device Passphrase](ipmctl-user-guide/security/change-device-passphrase.md)
68+
* [Change Device Security](ipmctl-user-guide/security/change-device-security.md)
69+
* [Erase Device Data](ipmctl-user-guide/security/erase-device-data.md)
70+
* [Instrumentation](ipmctl-user-guide/instrumentation/README.md)
71+
* [Show Sensor](ipmctl-user-guide/instrumentation/show-sensor.md)
72+
* [Change Sensor Settings](ipmctl-user-guide/instrumentation/change-sensor-settings.md)
73+
* [Show Device Performance](ipmctl-user-guide/instrumentation/show-device-performance.md)
74+
* [Debug](ipmctl-user-guide/debug/README.md)
75+
* [Run Diagnostic](ipmctl-user-guide/debug/run-diagnostic.md)
76+
* [Show Error Log](ipmctl-user-guide/debug/show-error-log.md)
77+
* [Dump Debug Log](ipmctl-user-guide/debug/dump-debug-log.md)
78+
* [Show ACPI Tables](ipmctl-user-guide/debug/show-acpi-tables.md)
79+
* [Show Device Platform Configuration Data](ipmctl-user-guide/debug/show-device-platform-configuration-data.md)
80+
* [Delete Device Platform Configuration Data](ipmctl-user-guide/debug/delete-device-platform-configuration-data.md)
81+
* [Inject Error](ipmctl-user-guide/debug/inject-error.md)
82+
* [Support and Maintenance](ipmctl-user-guide/support-and-maintenance/README.md)
83+
* [Version and Firmware](ipmctl-user-guide/support-and-maintenance/version-and-firmware.md)
84+
* [Show Events](ipmctl-user-guide/support-and-maintenance/show-events.md)
4685
* [Changelogs](changelog/README.md)
4786
* [PMDK Changelog](changelog/pmdk.md)
4887
* [NDCTL Changelog](changelog/ndctl.md)

Diff for: changelog/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelogs
22

3-
This section contains the changelogs describing bug fixes, optimizations, bug fixes, and new features for both pmdk and ndctl.
3+
This section covers changelogs. It describes bug fixes, optimizations, and new features for both PMDK and ndctl.
44

55
* [PMDK Changelog](pmdk.md)
66
* [NDCTL Changelog](ndctl.md)

Diff for: getting-started-guide/creating-development-environments/virtualization/qemu.md

+26-26
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,16 @@ $ dnf install @virtualization
2727

2828
{% tab title="RHEL/CentOS" %}
2929
{% hint style="info" %}
30-
Persistent Memory/NVDIMM support was introduced in to QEMU 2.6.0. See the qemu documentation here - [https://github.com/qemu/qemu/blob/master/docs/nvdimm.txt](https://github.com/qemu/qemu/blob/master/docs/nvdimm.txt).
30+
Persistent Memory/NVDIMM support was introduced in to QEMU 2.6.0. See the qemu documentation here - [https://github.com/qemu/qemu/blob/master/docs/nvdimm.txt](https://github.com/qemu/qemu/blob/master/docs/nvdimm.txt).
3131

32-
The version of qemu provided in the CentOS 7.x package repository is v1.5.0 and therefore will not support Persistent Memory/NVDIMMs.
32+
The version of qemu provided in the CentOS 7.x package repository is v1.5.0 and therefore will not support Persistent Memory/NVDIMMs.
3333

3434
It is recommended to download and build the latest QEMU source code from [https://www.qemu.org/download/\#source](https://www.qemu.org/download/#source).
3535
{% endhint %}
3636

3737
## Installing QEMU from source code
3838

39-
Download and build the latest QEMU source code from [https://www.qemu.org/download/\#source](https://www.qemu.org/download/#source). We use QEMU 4.0.0 as an example:
39+
Download and build the latest QEMU source code from [https://www.qemu.org/download/\#source](https://www.qemu.org/download/#source). We use QEMU 4.0.0 as an example:
4040

4141
```text
4242
$ wget https://download.qemu.org/qemu-4.0.0.tar.xz
@@ -54,7 +54,6 @@ $ sudo make install
5454
# ./configure --prefix=/usr/local/
5555
5656
ERROR: glib-2.40 gthread-2.0 is required to compile QEMU
57-
5857
```
5958

6059
The solution is to install `gtk2-devel`:
@@ -67,7 +66,7 @@ You can now re-execute the `configure` command and it should work now
6766
{% endhint %}
6867

6968
{% hint style="info" %}
70-
**Note 2:** The `--enable-libpmem` option for `configure` requires that `libpmem` from the Persistent Memory Development Kit \(PMDK\) be installed as a prerequisite. See [Installing PMDK](../../installing-pmdk/) for instructions.
69+
**Note 2:** The `--enable-libpmem` option for `configure` requires that `libpmem` from the Persistent Memory Development Kit \(PMDK\) be installed as a prerequisite. See [Installing PMDK](../../installing-pmdk/) for instructions.
7170
{% endhint %}
7271
{% endtab %}
7372

@@ -118,35 +117,35 @@ Where,
118117

119118
* `maxmem=$MAX_SIZE` should be equal to or larger than the total size
120119

121-
of normal RAM devices and vNVDIMM devices, e.g. $MAX\_SIZE should be
120+
of normal RAM devices and vNVDIMM devices, e.g. $MAX\_SIZE should be
122121

123-
>= $RAM\_SIZE + $NVDIMM\_SIZE here.
122+
>= $RAM\_SIZE + $NVDIMM\_SIZE here.
124123

125124
* `object memory-backend-file,id=mem1,share=on,mem-path=$PATH,size=$NVDIMM_SIZE` creates a backend storage of size `$NVDIMM_SIZE` on a file `$PATH`. All
126125

127-
accesses to the virtual NVDIMM device go to the file `$PATH`.
126+
accesses to the virtual NVDIMM device go to the file `$PATH`.
128127

129128
* `share=on/off` controls the visibility of guest writes. If
130129

131-
`share=on`, then guest writes will be applied to the backend
130+
`share=on`, then guest writes will be applied to the backend
132131

133-
file. If another guest uses the same backend file with option
132+
file. If another guest uses the same backend file with option
134133

135-
`share=on`, then above writes will be visible to it as well. If
134+
`share=on`, then above writes will be visible to it as well. If
136135

137-
`share=off`, then guest writes won't be applied to the backend
136+
`share=off`, then guest writes won't be applied to the backend
138137

139-
file and thus will be invisible to other guests.
138+
file and thus will be invisible to other guests.
140139

141140
* `device nvdimm,id=nvdimm1,memdev=mem1` creates a virtual NVDIMM
142141

143-
device whose storage is provided by above memory backend device.
142+
device whose storage is provided by above memory backend device.
144143

145144
Multiple vNVDIMM devices can be created if multiple pairs of `-object` and `-device` are provided. See Example 1 below.
146145

147146
### **Creating a Guest with Two Emulated vNVDIMMs**
148147

149-
The following example creates a Fedora 27 guest with two 4GiB vNVDIMMs, 4GiB of DDR Memory, 4 vCPUs, a VNC Server on port 0 for console access, and ssh traffic redirected from port 2222 on the host to port 22 in the guest for direct ssh access from a remote system.
148+
The following example creates a Fedora 27 guest with two 4GiB vNVDIMMs, 4GiB of DDR Memory, 4 vCPUs, a VNC Server on port 0 for console access, and ssh traffic redirected from port 2222 on the host to port 22 in the guest for direct ssh access from a remote system.
150149

151150
```text
152151
# sudo qemu-img create -f raw /virtual-machines/qemu/fedora27.raw 20G
@@ -167,7 +166,7 @@ The following example creates a Fedora 27 guest with two 4GiB vNVDIMMs, 4GiB of
167166

168167
For a detailed description of the options shown above, and many others, refer to the [QEMU User's Guide](https://qemu.weilnetz.de/doc/qemu-doc.html).
169168

170-
When creating a brand new QEMU guest with a blank OS disk image file, an ISO will need to be presented to the guest from which the OS can then be installed. A guest can access a local or remote ISO using:
169+
When creating a brand new QEMU guest with a blank OS disk image file, an ISO will need to be presented to the guest from which the OS can then be installed. A guest can access a local or remote ISO using:
171170

172171
Local ISO:
173172

@@ -183,7 +182,7 @@ Remote ISO:
183182

184183
#### Open Firewall Ports
185184

186-
To access the guests remotely, the firewall on the host system needs to be opened to allow remote access for VNC and SSH. In the following examples, we open a range of ports to accommodate several guests. You only need to open the ports for the number of guests you plan to use.
185+
To access the guests remotely, the firewall on the host system needs to be opened to allow remote access for VNC and SSH. In the following examples, we open a range of ports to accommodate several guests. You only need to open the ports for the number of guests you plan to use.
187186

188187
{% tabs %}
189188
{% tab title="Fedora" %}
@@ -213,9 +212,9 @@ $ sudo systemctl restart firewalld
213212

214213
#### Connecting to the Guest VM using VNS and SSH
215214

216-
Use a VNC Viewer to access the console to complete the OS installation and access the guest. The default VNC port starts at 5900. The example used`-vnc :0` which equates to port 5900.
215+
Use a VNC Viewer to access the console to complete the OS installation and access the guest. The default VNC port starts at 5900. The example used`-vnc :0` which equates to port 5900.
217216

218-
Additionally you can connect to the guest once the operating system has been configured via SSH. Specify the username configured during the guest OS installation process and the hostname or IP address of the host system, eg:
217+
Additionally you can connect to the guest once the operating system has been configured via SSH. Specify the username configured during the guest OS installation process and the hostname or IP address of the host system, eg:
219218

220219
```text
221220
# ssh user@hostname -p 2222
@@ -262,15 +261,15 @@ For example, the following commands add another 4GB vNVDIMM device to the guest
262261

263262
Each hotplugged vNVDIMM device consumes one memory slot. Users should always ensure the memory option "-m ...,slots=N" specifies enough number of slots, i.e.
264263

265-
N >= number of RAM devices +
266-
number of statically plugged vNVDIMM devices +
267-
number of hotplugged vNVDIMM devices
264+
N >= number of RAM devices +
265+
number of statically plugged vNVDIMM devices +
266+
number of hotplugged vNVDIMM devices
268267

269268
The similar is required for the memory option "-m ...,maxmem=M", i.e.
270269

271270
M >= size of RAM devices +
272-
size of statically plugged vNVDIMM devices +
273-
size of hotplugged vNVDIMM devices
271+
size of statically plugged vNVDIMM devices +
272+
size of hotplugged vNVDIMM devices
274273

275274
More detailed information about the HotPlug feature can be found in the [QEMU Memory HotPlug Documentation](https://github.com/qemu/qemu/blob/master/docs/memory-hotplug.txt).
276275

@@ -289,7 +288,7 @@ For example, device dax require the 2 MB alignment, so we can use following QEMU
289288

290289
Though QEMU supports multiple types of vNVDIMM backends on Linux, the only backend that can guarantee the guest write persistence is:
291290

292-
A. DAX device \(e.g., /dev/dax0.0\) or
291+
A. DAX device \(e.g., /dev/dax0.0\) or
293292
B. DAX file \(mounted with the `-o dax` option\)
294293

295294
When using B \(A file supporting direct mapping of persistent memory\) as a backend, write persistence is guaranteed if the host kernel has support for the MAP\_SYNC flag in the `mmap` system call \(available since Linux 4.15 and on certain distro kernels\) and additionally both 'pmem' and 'share' flags are set to 'on' on the backend.
@@ -319,4 +318,5 @@ If the vNVDIMM backend is in host persistent memory that can be accessed in [SNI
319318

320319
## CPUID Flags
321320

322-
By default, qemu claims the guest machine supports only `clflush`. As any modern machine (starting with Skylake and Pinnacle Ridge) has `clflushopt` or `clwb` (Cannon Lake), you can significantly improve performance by passing a `-cpu` flag to qemu. Unless you require live migrating, `-cpu host` is a good choice.
321+
By default, qemu claims the guest machine supports only `clflush`. As any modern machine \(starting with Skylake and Pinnacle Ridge\) has `clflushopt` or `clwb` \(Cannon Lake\), you can significantly improve performance by passing a `-cpu` flag to qemu. Unless you require live migrating, `-cpu host` is a good choice.
322+

Diff for: getting-started-guide/installing-pmdk/compiling-pmdk-from-source.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# Installing PMDK from Source on Linux and FreeBSD
1+
# Installing PMDK from Source on Linux
22

33
## Overview
44

5-
This procedure describes how to clone the source code from the pmdk github repository and compile, then install it.
5+
This procedure describes how to clone the source code from the pmdk github repository and compile, then install it.
66

77
{% hint style="info" %}
8-
**Note:** We recommend [installing NDCTL](../installing-ndctl.md) first so PMDK builds all features. If the ndctl development packages and header files are not installed, PMDK will build successfully, but will disable some of the RAS \(Reliability, Availability and Serviceability\) features.
8+
**Note:** We recommend [installing NDCTL](../installing-ndctl.md) first so PMDK builds all features. If the ndctl development packages and header files are not installed, PMDK will build successfully, but will disable some of the RAS \(Reliability, Availability and Serviceability\) features.
99
{% endhint %}
1010

1111
If your system is behind a firewall and requires a proxy to access the Internet, configure your package manager to use a proxy.
@@ -26,7 +26,7 @@ To build the PMDK libraries on Linux, you may need to install the following requ
2626

2727
{% tabs %}
2828
{% tab title="Fedora" %}
29-
```
29+
```text
3030
$ sudo dnf install autoconf automake pkg-config glib2-devel libfabric-devel pandoc ncurses-devel
3131
```
3232
{% endtab %}
@@ -58,10 +58,10 @@ $ sudo yum install autoconf automake pkgconfig glib2-devel libfabric-devel pando
5858
$ sudo apt install autoconf automake pkg-config libglib2.0-dev libfabric-dev pandoc libncurses5-dev
5959
```
6060

61-
**For Ubuntu 16.04 \(Xenial\) and Debian 8 \(Jessie\):**
61+
**For Ubuntu 16.04 \(Xenial\) and Debian 8 \(Jessie\):**
6262

6363
{% hint style="info" %}
64-
Earlier releases of Ubuntu and Debian do not have libfabric-dev available in the repository. If this library is required, you should compile it yourself. See [https://github.com/ofiwg/libfabric](https://github.com/ofiwg/libfabric)
64+
Earlier releases of Ubuntu and Debian do not have libfabric-dev available in the repository. If this library is required, you should compile it yourself. See [https://github.com/ofiwg/libfabric](https://github.com/ofiwg/libfabric)
6565
{% endhint %}
6666

6767
```text
@@ -213,13 +213,13 @@ To install this library into other locations, you can use the `prefix=path` opti
213213
$ sudo make install prefix=/usr
214214
```
215215

216-
If you installed to non-standard directory (anything other than /usr) you may need to add $prefix/lib or $prefix/lib64 (depending on the distribution you use) to the list of directories searched by the linker:
216+
If you installed to non-standard directory \(anything other than /usr\) you may need to add $prefix/lib or $prefix/lib64 \(depending on the distribution you use\) to the list of directories searched by the linker:
217217

218218
```text
219219
sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf"
220220
sudo sh -c "echo /usr/local/lib64 >> /etc/ld.so.conf"
221221
sudo ldconfig
222222
```
223-
224223
{% endtab %}
225224
{% endtabs %}
225+

Diff for: ipmctl-user-guide/README.md

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# IPMCTL User Guide
2+
3+
## Introduction
4+
5+
`ipmctl` is an open source utility created and maintained by Intel to manage Intel® Optane™ DC persistent memory modules. `ipmctl`, which works in both Linux and Windows, is a vendor specific tool, meaning it is not able to be used for managing NVDIMMs from vendors other than Intel. The full project is open source and can be seen on [GitHub](https://github.com/intel/ipmctl). In this guide we will refer to Intel® Optane™ DC memory modules simply as _modules_ or the _persistent memory modules_.
6+
7+
`ipmctl` refers to the following interface components:
8+
9+
* `libipmctl`: An Application Programming Interface \(API\) library for managing persistent memory modules.
10+
* `ipmctl`: A Command Line Interface \(CLI\) application for configuring and managing persistent memory modules from the command line.
11+
* `ipmctl-monitor`: A monitor daemon/system service for monitoring the health and status of persistent memory modules.
12+
13+
Functionality includes:
14+
15+
* Discover Intel Optane DC memory modules on the platform
16+
* Provision the platform memory configuration
17+
* Learn more about operating modes in this [video](link)
18+
* View and update module firmware
19+
* Configure data-at-rest security
20+
* Monitor module health
21+
* Track performance of modules
22+
* Debug and troubleshoot modules
23+
24+
Architecture Diagram:
25+
26+
![](../.gitbook/assets/capture.PNG)
27+

Diff for: ipmctl-user-guide/basic-usage.md

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Basic Usage
2+
3+
The `ipmctl` utility has many options. A complete list of commands can be shown by executing `ipmctl` with no arguments, `ipmctl help`, or reading the `ipmctl(1)` man page. Running `ipmctl`requires root privileges. `ipmctl` can also be used from UEFI. Namespaces are created using `ipmctl` at UEFI level or the [ndctl utility](../getting-started-guide/what-is-ndctl.md).
4+
5+
Usage:
6+
7+
```text
8+
ipmctl COMMAND [OPTIONS] [TARGETS] [PROPERTIES]
9+
```
10+
11+
Items in square brackets `[..]` are optional. Options, targets, and property values are separated by a pipe `|` meaning "or", and the default value is italicized. Items in parenthesis `(..)` indicate a user supplied value.
12+
13+
`ipmctl` commands include:
14+
15+
* help
16+
* load
17+
* set
18+
* delete
19+
* show
20+
* create
21+
* dump
22+
* start
23+
24+
More information can be shown for each command using the `-verbose` flag, which is helpful for debugging.
25+

Diff for: ipmctl-user-guide/debug/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Debug
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Delete Device Platform Configuration Data
2+
3+
When `Config` is specified, the `Current`, `Input Data Size`, `Output Data Size` and `Start Offset` values in the Configuration header are set to zero, making those tables invalid. This action can be useful before moving modules from one system to another, as goal creation rules may restrict provisioning dimms with an existing configuration.
4+
5+
> Warning: This command may result in data loss. Data should be backed up to other storage before executing this command.
6+
7+
```text
8+
$ ipmctl delete [OPTIONS] -dimm (DimmIds) -pcd (Config)
9+
```
10+
11+
### **Targets**
12+
13+
* `-dimm (DimmIDs)`: Deletes the PCD data on specific persistent memory modules by supplying the DIMM target and one or more comma-separated DimmIDs. The default is to delete the PCD data for all manageable modules.
14+
* `-pcd Config`: Clears the configuration management information
15+
16+
### **Examples**
17+
18+
Clear the Cin, Cout, Ccur tables from all manageable modules
19+
20+
```text
21+
$ delete -dimm -pcd Config
22+
```
23+
24+
### **Limitations**
25+
26+
The specified module\(s\) must be manageable by the host software, and if data-at-rest security is enabled, the modules must be unlocked. Any existing namespaces associated with the requested module\(s\) should be deleted before running this command.
27+

0 commit comments

Comments
 (0)