CXL-LIST(1) cxl Manual CXL-LIST(1)

cxl-list - فهرست کردن اشیاء CXL پلتفرم و ویژگی‌های آن‌ها در قالب json

cxl list [<options>]

پیمایش سلسله‌مراتب دستگاه‌های با قابلیت CXL در سیستم و فهرست کردن تمام نمونه‌های دستگاه به همراه برخی از ویژگی‌های اصلی آن‌ها.

می‌توان با مشخص کردن گزینه‌ها، خروجی را به اشیاء خاصی محدود کرد. هنگامی که یک نوع شیء منفرد مشخص شود، شیء json بازگشتی آرایه‌ای از همان اشیاء است؛ هنگامی که چند نوع شیء مشخص شوند، شیء بازگشتی ممکن است آرایه‌ای از آرایه‌ها باشد که آرایه درونی با نوع شیء داده‌شده نام‌گذاری شده است. آرایه‌های سطح بالا زمانی که اشیاء بتوانند در سلسله‌مراتب ذیل یک نوع شیء بالاتر قرار گیرند (آشیانه‌سازی شوند)، حذف می‌شوند. نام‌های بالقوه آرایه‌های سطح بالا و ویژگی‌های آشیانه‌سازی آن‌ها عبارتند از:

"anon memdevs"

(دستگاه‌های حافظه غیرفعال) آشیانه‌سازی نمی‌شوند

"buses"

آشیانه‌سازی نمی‌شوند

"ports"

ذیل buses آشیانه‌سازی می‌شوند

"endpoints"

ذیل ports یا buses (در صورتی که پورت‌ها نمایش داده نشوند) آشیانه‌سازی می‌شوند

"memdevs"

ذیل endpoints یا ports (اگر endpoints نمایش داده نشوند) یا buses (اگر endpoints و ports نمایش داده نشوند) آشیانه‌سازی می‌شوند

"root decoders"

ذیل buses آشیانه‌سازی می‌شوند

"port decoders"

ذیل ports، یا buses (در صورتی که پورت‌ها نمایش داده نشوند) آشیانه‌سازی می‌شوند

"endpoint decoders"

ذیل endpoints، یا ports (اگر endpoints نمایش داده نشوند) یا buses (اگر endpoints و ports نمایش داده نشوند) آشیانه‌سازی می‌شوند

فیلترها را می‌توان به عنوان یک شناسه منفرد، یک رشته داخل گیومه با فاصله، یا یک فهرست جداشده با کاما مشخص کرد. هنگامی که چندین شناسه فیلتر درون یک رشته فیلتر مشخص شوند (مانند "-m mem0,mem1,mem2")، به عنوان فیلتر OR با یکدیگر ترکیب می‌شوند. هنگامی که چندین نوع رشته فیلتر مشخص شوند (مانند "-m mem0,mem1,mem2 -p port10";)، به عنوان فیلتر AND ترکیب می‌گردند. بنابراین، "-m mem0,mem1,mem2 -p port10"; تنها اشیائی را فهرست می‌کند که زیر port10 هستند و mem0، mem1 یا mem2 را نگاشت می‌کنند.

با توجه به اینکه بسیاری از پرس‌وجوهای توپولوژی به دنبال پاسخ به سؤالات مرتبط با یک memdev خاص هستند، می‌توان گذرگاه‌ها، پورت‌ها، اندپوینت‌ها و رمزگشاها را بر اساس یک یا چند memdev فیلتر کرد. به عنوان مثال:

# cxl list -P -p switch,endpoint -m mem0
[
  {
    "port":"port1",
    "host":"ACPI0016:00",
    "endpoints:port1":[
      {
        "endpoint":"endpoint2",
        "host":"mem0"
      }
    ]
  }
]

علاوه بر این، هنگام فراهم‌سازی پیکربندی‌های جدید interleave، دانستن اینکه کدام memdevها می‌توانند توسط یک رمزگشای خاص مانند یک root decoder مورد ارجاع قرار گیرند، یا در صورت پیکربندی نشدن رمزگشاها توسط یک پورت خاص نگاشت شوند، سودمند است.

# cxl list -Mu -d decoder0.0
{
  "memdev":"mem0",
  "pmem_size":"256.00 MiB (268.44 MB)",
  "serial":"0",
  "host":"0000:35:00.0"
}

توجه داشته باشید که برای فیلترهای -m/--memdev=، -p/--port= و -e/--endpoint= می‌توان نام دستگاه میزبان را جایگزین شناسه شیء CXL کرد. برای -m/--memdev= این نام یک دستگاه PCI از نوع اندپوینت به فرم "DDDD:bb:dd.f" است (D: دامنه، b: گذرگاه، d: دستگاه، f: تابع) (به /sys/bus/pci/devices مراجعه کنید)، برای -p/--port= این نام یک دستگاه PCI پورت سوئیچ بالادستی به فرم "DDDD:bb:dd.f"، یا نام گذرگاه PCI به فرم "pciDDDD:bb" است، و برای -e/--endpoint= دستگاه میزبان یک شیء دستگاه حافظه CXL به فرم "memX" می‌باشد.

گزینه --human علاوه بر قالب‌بندی مجدد برخی فیلدها به رشته‌های خواناتر برای انسان، آرایه را نیز باز می‌کند (unwrap) تا تعداد خطوط خروجی کاهش یابد.

# cxl list --memdevs
[
  {
    "memdev":"mem0",
    "pmem_size":268435456,
    "serial":0,
    "host":"0000:35:00.0"
  }
]
# cxl list -BMu
[
  {
    "anon memdevs":[
      {
        "memdev":"mem0",
        "pmem_size":"256.00 MiB (268.44 MB)",
        "serial":"0"
      }
    ]
  },
  {
    "buses":[
      {
        "bus":"root0",
        "provider":"ACPI.CXL"
      }
    ]
  }
]

-m, --memdev=

مشخص کردن نام(های) دستگاه حافظه CXL ("mem0")، شناسه(های) دستگاه ("0")، و/یا نام(های) دستگاه میزبان ("0000:35:00.0") برای فیلتر کردن فهرست خروجی. برای مثال:
# cxl list -M --memdev="0 mem3 5"
[
  {
    "memdev":"mem0",
    "pmem_size":268435456,
    "serial":0
  },
  {
    "memdev":"mem3",
    "pmem_size":268435456,
    "ram_size":268435456,
    "serial":2
  },
  {
    "memdev":"mem5",
    "pmem_size":268435456,
    "ram_size":268435456,
    "serial":4
  }
]

-s, --serial=

مشخص کردن شماره(های) سریال دستگاه حافظه CXL برای فیلتر کردن فهرست خروجی.

-M, --memdevs

گنجاندن دستگاه‌های حافظه CXL در فهرست خروجی.

-i, --idle

گنجاندن دستگاه‌های بیکار (غیرفعال / با اندازه صفر) در فهرست خروجی.

-H, --health

گنجاندن اطلاعات سلامت در فهرست memdev. نمونه فهرست:
# cxl list -m mem0 -H
[
  {
    "memdev":"mem0",
    "pmem_size":268435456,
    "ram_size":268435456,
    "health":{
      "maintenance_needed":true,
      "performance_degraded":true,
      "hw_replacement_needed":true,
      "media_normal":false,
      "media_not_ready":false,
      "media_persistence_lost":false,
      "media_data_lost":true,
      "media_powerloss_persistence_loss":false,
      "media_shutdown_persistence_loss":false,
      "media_persistence_loss_imminent":false,
      "media_powerloss_data_loss":false,
      "media_shutdown_data_loss":false,
      "media_data_loss_imminent":false,
      "ext_life_used":"normal",
      "ext_temperature":"critical",
      "ext_corrected_volatile":"warning",
      "ext_corrected_persistent":"normal",
      "life_used_percent":15,
      "temperature":25,
      "dirty_shutdowns":10,
      "volatile_errors":20,
      "pmem_errors":30
    }
  }
]

-I, --partition

گنجاندن اطلاعات پارتیشن در فهرست memdev. نمونه فهرست:
# cxl list -m mem0 -I
[
  {
    "memdev":"mem0",
    "ram_size":273535729664,
    "partition_info":{
      "total_size":273535729664,
      "volatile_only_size":0,
      "persistent_only_size":0,
      "partition_alignment_size":268435456
      "active_volatile_size":273535729664,
      "active_persistent_size":0,
      "next_volatile_size":0,
      "next_persistent_size":0,
    }
  }
]

-A, --alert-config

گنجاندن پیکربندی هشدار در فهرست memdev. نمونه فهرست:
# cxl list -m mem0 -A
[
  {
    "memdev":"mem0",
    "pmem_size":0,
    "ram_size":273535729664,
    "alert_config":{
      "life_used_prog_warn_threshold_valid":false,
      "dev_over_temperature_prog_warn_threshold_valid":false,
      "dev_under_temperature_prog_warn_threshold_valid":false,
      "corrected_volatile_mem_err_prog_warn_threshold_valid":true,
      "corrected_pmem_err_prog_warn_threshold_valid":false,
      "life_used_prog_warn_threshold_writable":false,
      "dev_over_temperature_prog_warn_threshold_writable":false,
      "dev_under_temperature_prog_warn_threshold_writable":false,
      "corrected_volatile_mem_err_prog_warn_threshold_writable":true,
      "corrected_pmem_err_prog_warn_threshold_writable":false,
      "life_used_crit_alert_threshold":0,
      "life_used_prog_warn_threshold":0,
      "dev_over_temperature_crit_alert_threshold":0,
      "dev_under_temperature_crit_alert_threshold":0,
      "dev_over_temperature_prog_warn_threshold":0,
      "dev_under_temperature_prog_warn_threshold":0,
      "corrected_volatile_mem_err_prog_warn_threshold":0,
      "corrected_pmem_err_prog_warn_threshold":0
    },
  }
]

-B, --buses

گنجاندن شیء(های) bus / ریشه CXL در فهرست خروجی. معمولاً در سیستم‌های ACPI شیء گذرگاه یک تک‌نمونه (singleton) مرتبط با دستگاه ACPI0017 است، اما سناریوهای آزمایشی وجود دارند که در آن‌ها ممکن است چندین سلسله‌مراتب حافظه CXL موجود باشد.
# cxl list -B
[
  {
    "bus":"root3",
    "provider":"cxl_test"
  },
  {
    "bus":"root0",
    "provider":"ACPI.CXL"
  }
]

-b, --bus=

مشخص کردن نام(های) دستگاه ریشه CXL، شناسه(های) دستگاه، و/یا نام‌های ارائه‌دهنده گذرگاه CXL برای فیلتر کردن فهرست خروجی. نام‌های ارائه‌دهنده پشتیبانی‌شده "ACPI.CXL" و "cxl_test" هستند.

-P, --ports

گنجاندن اشیاء پورت (پورت‌های ریشه CXL / PCIe + پورت‌های بالادستی سوئیچ) در فهرست خروجی.

-p, --port=

مشخص کردن نام(های) دستگاه پورت CXL ("port2")، شناسه(های) دستگاه ("2")، نام(های) دستگاه میزبان ("pci0000:34")، و/یا نام(های) نوع پورت برای فیلتر کردن فهرست خروجی. نام‌های نوع پورت پشتیبانی‌شده "root" و "switch" هستند. توجه داشته باشید که یک شیء گذرگاه نیز خود یک پورت است، بنابراین دو نحو زیر معادل یکدیگرند:
# cxl list -B
# cxl list -P -p root -S
... که در آن '-S/--single' لازم است زیرا پورت‌های نواده همیشه در فهرست
پورت گنجانده می‌شوند و '-S/--single' پس از فهرست کردن گذرگاه متوقف می‌شود.
علاوه بر این، اشیاء اندپوینت نیز پورت هستند، بنابراین دستورات زیر معادل یکدیگرند
و نیازی به '-S/--single' نیست زیرا پورت‌های اندپوینت پایانی هستند:
# cxl list -E
# cxl list -P -p endpoint
به‌طور پیش‌فرض، فقط پورت‌های 'switch' فهرست می‌شوند، یعنی
# cxl list -P
# cxl list -P -p switch
... معادل یکدیگرند.

-S, --single

مشخص می‌کند که آیا فهرست خروجی باید تمامی اشیاء نواده پورتی که با فیلتر پورت مطابقت دارد را نمایش دهد، یا فقط نوادگان مستقیم تک‌تک پورت‌هایی که با فیلتر مطابقت دارند. به‌طور پیش‌فرض تمام اشیاء نواده فهرست می‌شوند.

-E, --endpoints

گنجاندن اشیاء اندپوینت (رمزگشاهای دستگاه حافظه CXL) در فهرست خروجی.
# cxl list -E
[
  {
    "endpoint":"endpoint2",
    "host":"mem0"
  }
]

-e, --endpoint

مشخص کردن نام(های) دستگاه اندپوینت CXL، یا شناسه(های) دستگاه برای فیلتر کردن اندپوینت(های) خروجی.

-D, --decoders

گنجاندن اشیاء رمزگشا (نمونه‌های قابلیت رمزگشایی حافظه CXL در گذرگاه‌ها، پورت‌ها و اندپوینت‌ها) در فهرست خروجی.

-d, --decoder

مشخص کردن نام(های) دستگاه رمزگشای CXL، شناسه(های) دستگاه، یا نام‌های نوع رمزگشا برای فیلتر کردن رمزگشا(های) خروجی. قالب نام یک رمزگشا به صورت "decoder<port_id>.<instance_id>" است. نام‌های نوع رمزگشای ممکن عبارتند از "root"، "switch" یا "endpoint"، مشابه با نحو فیلتر پورت.

-T, --targets

گسترش فهرست‌های رمزگشا با اطلاعات هدف پورت پایین‌دستی، فهرست‌های پورت و گذرگاه با اطلاعات پورت پایین‌دستی، و/یا نواحی با اطلاعات نگاشت.
# cxl list -BTu -b ACPI.CXL
{
  "bus":"root0",
  "provider":"ACPI.CXL",
  "nr_dports":1,
  "dports":[
    {
      "dport":"ACPI0016:00",
      "alias":"pci0000:34",
      "id":"0"
    }
  ]
}

-R, --regions

گنجاندن اشیاء ناحیه (region) در فهرست خروجی.
# cxl list -R
{
  "region":"region0",
  "resource":277025390592,
  "size":549755813888,
  "extended_linear_cache_size":274877906944,
  "type":"ram",
  "interleave_ways":2,
  "interleave_granularity":256,
  "decode_state":"commit",
  "qos_class_mismatch":true
}

-X, --dax

افزودن اطلاعات DAX به فهرست‌های ناحیه.
# cxl list -RXu
{
  "region":"region4",
  "resource":"0xf010000000",
  "size":"512.00 MiB (536.87 MB)",
  "interleave_ways":2,
  "interleave_granularity":4096,
  "decode_state":"commit",
  "daxregion":{
    "id":4,
    "size":"512.00 MiB (536.87 MB)",
    "align":2097152,
    "devices":[
      {
        "chardev":"dax4.0",
        "size":"512.00 MiB (536.87 MB)",
        "target_node":0,
        "align":2097152,
        "mode":"system-ram",
        "online_memblocks":0,
        "total_memblocks":4
      }
    ]
  }
}

-r, --region

مشخص کردن نام(های) دستگاه ناحیه CXL، یا شناسه(های) دستگاه، برای فیلتر کردن فهرست خروجی.

-L, --media-errors

گنجاندن اطلاعات خطای رسانه (media-error). فهرست poison از دستگاه(ها) دریافت شده و رکوردهای media_error به فهرست اضافه می‌شوند. این گزینه را برای memdevها و نواحی اعمال کنید که در آن‌ها دستگاه‌ها از قابلیت فهرست poison پشتیبانی می‌کنند. مقدار "offset:" هنگام فهرست کردن بر اساس ناحیه نسبت به منبع ناحیه سنجیده می‌شود و هنگام فهرست کردن بر اساس memdev، مقدار مطلق DPA دستگاه است. مقدار "source:" یکی از موارد زیر است: External، Internal، Injected، Vendor Specific، یا Unknown، همان‌طور که در جدول 8-140 مشخصات CXL نسخه 3.1 تعریف شده است.

گزینه media-errors تنها با -Dlibtracefs=enabled در دسترس است.

# cxl list -m mem9 --media-errors -u
{
  "memdev":"mem9",
  "pmem_size":"1024.00 MiB (1073.74 MB)",
  "pmem_qos_class":42,
  "ram_size":"1024.00 MiB (1073.74 MB)",
  "ram_qos_class":42,
  "serial":"0x5",
  "numa_node":1,
  "host":"cxl_mem.5",
  "media_errors":[
    {
      "offset":"0x40000000",
      "length":64,
      "source":"Injected"
    }
  ]
}
# cxl list -r region5 --media-errors -u
{
  "region":"region5",
  "resource":"0xf110000000",
  "size":"2.00 GiB (2.15 GB)",
  "type":"pmem",
  "interleave_ways":2,
  "interleave_granularity":4096,
  "decode_state":"commit",
  "media_errors":[
    {
      "offset":"0x1000",
      "length":64,
      "source":"Injected"
    },
    {
      "offset":"0x2000",
      "length":64,
      "source":"Injected"
    }
  ]
}

-v, --verbose

افزایش سطح جزئیات خروجی. این گزینه را می‌توان چندین بار مشخص کرد تا خروجی اطلاعاتی و متفرقه با جزئیات بیشتری نمایش داده شود، و می‌تواند برای لغو فلگ‌های حذف‌شده جهت نمایش اطلاعات خاص استفاده شود. توجه داشته باشید که cxl list --verbose --verbose معادل cxl list -vv است.
•-v فعال‌سازی --memdevs، --regions، --buses، --ports، --decoders و --targets.
•-vv تمام آنچه -v ارائه می‌دهد، به علاوه گنجاندن دستگاه‌های غیرفعال با --idle.
•-vvv تمام آنچه -vv ارائه می‌دهد، به علاوه فعال‌سازی --health، --partition و --media-errors.

--debug

اگر ابزار cxl با قابلیت اشکال‌زدایی فعال ساخته شده باشد، پیام‌های اشکال‌زدایی را روشن می‌کند.

-u, --human

به‌طور پیش‌فرض این دستور داده‌ها را به صورت اعداد صحیح خام و مناسب ماشین نمایش می‌دهد. در مقابل، با این فلگ، اعداد نشان‌دهنده اندازه فضای ذخیره‌سازی به صورت رشته‌های خوانا برای انسان به همراه یکاها قالب‌بندی می‌شوند و سایر فیلدها به رشته‌های هگزادسیمال تبدیل می‌گردند.

حق نشر © 2016 - 2022، شرکت اینتل (Intel Corporation). مجوز GPLv2: گنو GPL نسخه ۲ http://gnu.org/licenses/gpl.html. این نرم‌افزار آزاد است: شما مجاز به تغییر و توزیع مجدد آن هستید. هیچ ضمانتی وجود ندارد، تا حدی که قانون مجاز دانسته است.

ndctl-list(1)

2026-06-30 cxl