Một bản vá đang chờ xử lý thông qua x86/khẩn cấp để khắc phục sự cố với bộ xử lý Intel Alder Lake và Raptor Lake đang khiến các nhà phát triển nhân tạm thời vô hiệu hóa Bộ nhận dạng ngữ cảnh quy trình (PCID) với các bộ xử lý máy tính để bàn/di động Intel này.
Một bản vá được thiết lập để phát triển chính cho Linux 6.4 và cũng được chuyển ngược sang các phiên bản nhân ổn định để tránh việc xóa INVLPG toàn cầu không đầy đủ. Bản vá từ một kỹ sư Linux của Intel giải thích:
“Lệnh INVLPG được sử dụng để vô hiệu hóa các mục nhập TLB cho một địa chỉ ảo được chỉ định. Khi PCID được bật, INVLPG được cho là sẽ vô hiệu hóa các mục nhập TLB cho địa chỉ được chỉ định cho cả hai các mục nhập PCID *và* Toàn cầu hiện tại. (Lưu ý: Chỉ ánh xạ nhân mới đặt Toàn cầu=1.)
Thật không may, một số triển khai INVLPG có thể khiến các bản dịch Toàn cầu không bị xóa khi bật PCID.
Để giải quyết vấn đề này, không bao giờ bật PCID trên các bộ xử lý bị ảnh hưởng.
Tôi mong đợi cuối cùng sẽ có các biện pháp giảm thiểu vi mã để thay thế giải pháp thay thế phần mềm này. Tuy nhiên, số phiên bản chính xác nơi điều đó sẽ xảy ra hiện nay vẫn chưa được biết. Sau khi số phiên bản được thiết lập cố định, danh sách bộ xử lý có thể được điều chỉnh để chỉ vô hiệu hóa PCID trên các bộ xử lý bị ảnh hưởng với vi mã bị ảnh hưởng.
Lưu ý: nếu bất kỳ ai muốn khắc phục nhanh mà không yêu cầu vá lỗi, chỉ cần dán’nopcid’vào dòng lệnh nhân của bạn.”
Các bộ xử lý bị ảnh hưởng kết thúc lên là bộ vi xử lý Intel Alder Lake và Raptor Lake.Như đã đề cập trong thông báo vá lỗi, Intel được cho là đang nghiên cứu giảm thiểu vi mã cho vấn đề này nhưng hiện tại ít nhất nhân Linux được đặt để tắt hỗ trợ PCID cho Alder Lake/Alder Lake L/Alder Lake N/Raptor Lake/Raptor Lake P/Raptor Lake S cho đến khi có thể xử lý việc giảm thiểu vi mã.
INVLPG được sử dụng để vô hiệu hóa các mục nhập TLB được chỉ định. Ít nhất là Alder Lake và Raptor Lake không cần Kernel Page Table Isolation (KPTI) để giảm thiểu Meltdown vì các bộ xử lý mới hơn này không bị ảnh hưởng bởi nó. nhiều năm trở lại đây. tài liệu PTI hạt nhân tiếp tục lưu ý rộng rãi hơn các lợi ích của việc hỗ trợ PCID:
“Process Context IDentifiers (PCID) là một tính năng của CPU cho phép chúng tôi bỏ qua việc xóa toàn bộ TLB khi chuyển đổi bảng trang bằng cách thiết lập một bit đặc biệt trong CR3 khi bảng trang được thay đổi. Điều này làm cho việc chuyển đổi các bảng trang (tại chuyển đổi ngữ cảnh hoặc nhập/thoát kernel) rẻ hơn. Tuy nhiên, trên các hệ thống có hỗ trợ PCID, mã chuyển đổi ngữ cảnh phải xóa cả mục người dùng và nhân ra khỏi TLB. Quá trình xóa PCID TLB của người dùng được hoãn lại cho đến khi thoát khỏi không gian người dùng, giảm thiểu chi phí. Xem intel.com/sdm để biết chi tiết đẫm máu về PCID/INVPCID.
…
Trên các hệ thống không hỗ trợ PCID, mỗi lần ghi CR3 sẽ xóa toàn bộ TLB. Điều đó có nghĩa là mỗi cuộc gọi tòa nhà, ngắt hoặc ngoại lệ đều xóa TLB.”
Trong mọi trường hợp, tôi sẽ chạy một số điểm chuẩn trên Raptor Lake để xem liệu điều này–ít nhất là tạm thời–việc vô hiệu hóa hỗ trợ PCID có nghĩa là cho bất kỳ lĩnh vực hoạt động thông thường nào cho người dùng cuối.