Lưu ý
Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.
- Bản gốc:
- Người dịch:
Google Translate (machine translation)
- Phiên bản gốc:
8541d8f725c6
Cảnh báo
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.
Giao diện vcpu chung¶
“Thiết bị” cpu ảo cũng chấp nhận ioctls KVM_SET_DEVICE_ATTR, KVM_GET_DEVICE_ATTR và KVM_HAS_DEVICE_ATTR. Giao diện sử dụng cùng một cấu trúc kvm_device_attr như các thiết bị khác, nhưng nhắm mục tiêu các cài đặt và điều khiển trên toàn VCPU.
Các nhóm và thuộc tính trên mỗi CPU ảo, nếu có, đều có kiến trúc cụ thể.
1. GROUP: KVM_ARM_VCPU_PMU_V3_CTRL¶
- Kiến trúc:
ARM64
1.1. ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_IRQ¶
- Thông số:
trong kvm_device_attr.addr, địa chỉ cho ngắt tràn PMU là một con trỏ tới một int
Trả về:
-EEXIST Số ngắt đã được sử dụng -ENODEV PMUv3 không được hỗ trợ hoặc GIC không được khởi tạo -ENXIO PMUv3 không được hỗ trợ, thiếu tính năng VCPU hoặc bị gián đoạn
số chưa được đặt (chỉ dành cho khách không phải GICv5)
-EBUSY PMUv3 đã được khởi tạo ======= ===========================================================
Yêu cầu khởi tạo PMUv3. Nếu sử dụng PMUv3 với kernel trong triển khai GIC ảo, việc này phải được thực hiện sau khi khởi tạo trong kernel irqchip.
1.3 ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_FILTER¶
- Thông số:
trong kvm_device_attr.addr địa chỉ của bộ lọc sự kiện PMU là con trỏ tới cấu trúc kvm_pmu_event_filter
- Trả về:
- -EBUSY PMUv3 đã được khởi tạo, VCPU đã chạy hoặc
một bộ lọc sự kiện đã được thiết lập
-EFAULT Lỗi truy cập mã định danh PMU -ENXIO PMU không tìm thấy -ENODEV PMUv3 không được hỗ trợ hoặc GIC không được khởi tạo -ENOMEM Không thể phân bổ bộ nhớ ======= =========================================================
Yêu cầu VCPU sử dụng phần cứng PMU được chỉ định khi tạo sự kiện khách nhằm mục đích mô phỏng PMU. Mã định danh PMU có thể được đọc từ “loại” tệp cho phiên bản PMU mong muốn trong /sys/devices (hoặc, tương đương, /sys/bus/even_source). Thuộc tính này đặc biệt hữu ích trên các dữ liệu không đồng nhất các hệ thống có ít nhất hai PMU CPU trên hệ thống. PMU đã được thiết lập đối với một VCPU sẽ được tất cả các VCPU khác sử dụng. Không thể đặt PMU nếu bộ lọc sự kiện PMU đã có sẵn.
Lưu ý rằng KVM sẽ không thực hiện bất kỳ nỗ lực nào để chạy VCPU trên CPU vật lý được liên kết với PMU được chỉ định bởi thuộc tính này. Điều này hoàn toàn được để lại cho không gian người dùng. Tuy nhiên, việc cố gắng chạy VCPU trên CPU vật lý không được hỗ trợ bởi PMU sẽ thất bại và KVM_RUN sẽ quay trở lại với exit_reason = KVM_EXIT_FAIL_ENTRY và điền cấu trúc failed_entry bằng cách cài đặt trường hardare_entry_failure_reason thành KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED và trường cpu vào id bộ xử lý.
1.5 ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_SET_NR_COUNTERS¶
- Thông số:
trong kvm_device_attr.addr địa chỉ của một int không dấu đại diện cho giá trị tối đa được lấy bởi PMCR_EL0.N
- Trả về:
- Kiến trúc:
ARM64
2.1. ATTRIBUTES: KVM_ARM_VCPU_TIMER_IRQ_{VTIMER,PTIMER,HVTIMER,HPTIMER}¶
- Thông số:
trong kvm_device_attr.addr địa chỉ cho ngắt hẹn giờ là một con trỏ tới một int
Trả về:
KVM_ARM_VCPU_TIMER_IRQ_VTIMER Intid bộ hẹn giờ ảo EL1 (mặc định: 27) KVM_ARM_VCPU_TIMER_IRQ_PTIMER Intid bộ đếm thời gian vật lý EL1 (mặc định: 30) KVM_ARM_VCPU_TIMER_IRQ_HVTIMER Intid bộ hẹn giờ ảo EL2 (mặc định: 28) KVM_ARM_VCPU_TIMER_IRQ_HPTIMER Intid bộ đếm thời gian vật lý EL2 (mặc định: 26) ===============================================================================
Việc đặt cùng một PPI cho các bộ hẹn giờ khác nhau sẽ ngăn các VCPU chạy. Đặt số ngắt trên VCPU sẽ định cấu hình tất cả các VCPU được tạo tại đó thời gian để sử dụng số được cung cấp cho một bộ đếm thời gian nhất định, ghi đè bất kỳ số nào trước đó các giá trị được cấu hình trên các VCPU khác. Không gian người dùng nên cấu hình ngắt trên ít nhất một VCPU sau khi tạo tất cả VCPU và trước khi chạy bất kỳ VCPU.
3. GROUP: KVM_ARM_VCPU_PVTIME_CTRL¶
- Kiến trúc:
ARM64
3.1 ATTRIBUTE: KVM_ARM_VCPU_PVTIME_IPA¶
- Thông số:
địa chỉ cơ sở 64-bit
Trả về:
- Kiến trúc:
x86
4.1 ATTRIBUTE: KVM_VCPU_TSC_OFFSET
- Thông số:
Độ lệch TSC không dấu 64-bit
Trả về: