| CXL-LIST(1) | cxl Manual | CXL-LIST(1) |
نام (NAME)
cxl-list - فهرست کردن اشیاء CXL پلتفرم و ویژگیهای آنها در قالب json
خلاصه دستور (SYNOPSIS)
cxl list [<options>]
پیمایش سلسلهمراتب دستگاههای با قابلیت CXL در سیستم و فهرست کردن تمام نمونههای دستگاه به همراه برخی از ویژگیهای اصلی آنها.
میتوان با مشخص کردن گزینهها، خروجی را به اشیاء خاصی محدود کرد. هنگامی که یک نوع شیء منفرد مشخص شود، شیء json بازگشتی آرایهای از همان اشیاء است؛ هنگامی که چند نوع شیء مشخص شوند، شیء بازگشتی ممکن است آرایهای از آرایهها باشد که آرایه درونی با نوع شیء دادهشده نامگذاری شده است. آرایههای سطح بالا زمانی که اشیاء بتوانند در سلسلهمراتب ذیل یک نوع شیء بالاتر قرار گیرند (آشیانهسازی شوند)، حذف میشوند. نامهای بالقوه آرایههای سطح بالا و ویژگیهای آشیانهسازی آنها عبارتند از:
"anon memdevs"
"buses"
"ports"
"endpoints"
"memdevs"
"root decoders"
"port decoders"
"endpoint decoders"
فیلترها را میتوان به عنوان یک شناسه منفرد، یک رشته داخل گیومه با فاصله، یا یک فهرست جداشده با کاما مشخص کرد. هنگامی که چندین شناسه فیلتر درون یک رشته فیلتر مشخص شوند (مانند "-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) تا تعداد خطوط خروجی کاهش یابد.
مثال (EXAMPLE)
# 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"
}
]
}
]
گزینهها (OPTIONS)
-m, --memdev=
# 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=
-M, --memdevs
-i, --idle
-H, --health
# 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
# 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
# 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
# cxl list -B
[
{
"bus":"root3",
"provider":"cxl_test"
},
{
"bus":"root0",
"provider":"ACPI.CXL"
}
]
-b, --bus=
-P, --ports
-p, --port=
# 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 list -E
[
{
"endpoint":"endpoint2",
"host":"mem0"
}
]
-e, --endpoint
-D, --decoders
-d, --decoder
-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
# 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
# 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
-L, --media-errors
گزینه 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
--debug
-u, --human
حق نشر (COPYRIGHT)
حق نشر © 2016 - 2022، شرکت اینتل (Intel Corporation). مجوز GPLv2: گنو GPL نسخه ۲ http://gnu.org/licenses/gpl.html. این نرمافزار آزاد است: شما مجاز به تغییر و توزیع مجدد آن هستید. هیچ ضمانتی وجود ندارد، تا حدی که قانون مجاز دانسته است.
همچنین ببینید (SEE ALSO)
ndctl-list(1)
| 2026-06-30 | cxl |