《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > RISC-V 異常處理在 KVM 中的實現

RISC-V 異常處理在 KVM 中的實現

2023-06-16
作者: 曉泰
來源: 泰曉科技
關鍵詞: RISC-V KVM

  Corrector: TinyCorrect v0.1 - [tounix spaces toc comments tables images urls epw]

  Author: XiakaiPan 13212017962@163.com

  Date: 2022/10/21

  Revisor: walimis, Falcon

  Project: RISC-V Linux 內核剖析

  Proposal: RISC-V 虛擬化技術調研與分析

  Sponsor: PLCT Lab, ISCAS

  本周繼續連載 Risc-v Kvm Excp Impl 系列文章,記得收藏分享+關注,寫文章領補貼:gitee.com/tinylab/riscv-linux

  該活動統一采用泰曉社區自研 Linux Lab 開源實驗環境,也可選用免裝即插即跑 Linux Lab Disk (https://tinylab.org/linux-lab-disk),某寶檢索“泰曉 Linux”可找到。Linux Lab v1.1 Inside —— 內核開發從未像今天這般簡單!

  RISC-V 異常處理在 KVM 中的實現

  前言

  Trap 處理是 RISC-V 虛擬化實現中的重要部分,包括異常和中斷兩個部分。當前 KVM 是 RISC-V 虛擬化擴展在軟件層面較為可靠的實現,本文將結合 RISC-V 特權指令集手冊的規定,分析 KVM 中有關異常處理的實現,中斷部分由于涉及較多驅動層面的內容,故將在之后的文章中結合 MMIO,timer 等做具體探討。

  軟件版本

 微信截圖_20230616161548.png

  KVM 異常處理

  異常處理入口

  在 KVM 對 RISC-V H 擴展的實現中,與異常處理相關的函數調用關系如下圖所示。目前的實現中,KVM 能夠處理三類異常。即虛擬機內的 page fault、虛擬指令異常和系統調用,三種不同的異常處理分別對應了不同的實現。

  微信截圖_20230616161931.png

  異常分類及其定義

  kvm_arch_vcpu_ioctl_run 函數用于實現 vCPU 的運行。其調用 kvm_riscv_vcpu_enter_exit 函數進入 vCPU 的運行,此時 Guest 進入運行狀態,CPU 處于 VS 或者 VU 模式。當 Guest 發生無法處理的異常時,Guest 退出,CPU 進入 HS 模式,隨后 KVM 調用 kvm_riscv_vcpu_exit 來實現對異常的處理。

  kvm_riscv_vcpu_exit 函數內部包含三個部分,分別對應三種異常的處理,代碼如下:

 微信截圖_20230616162055.png

微信截圖_20230616162245.png

  如上所示,KVM 的實現中包含了三類異常:

  虛擬指令異常;

  Guest page fault;

  SBI 系統調用。

  特權指令集手冊 中規定了每種異常對應的編碼(即 scause 的可能的值),在進行異常處理時,可依據據 scause 的具體值確定其處理方式,如下表所示。

  微信截圖_20230616162009.png

  cause code

  在 KVM 中,其對應宏的定義如下:

 微信截圖_20230616162306.png

  虛擬指令異常

  其中,EXC_VIRTUAL_INST_FAULT 即 virtual instruction exception 對應如下情況:

  在 VS-Mode 或 VU-Mode 下訪問特定 CSR 的特定位;

  在 VS-Mode 或 VU-Mode 下執行無權限的指令如 HFENCE, HLV, HSV 等。

  KVM 中 virtual instruction 異常的處理如下:

  微信截圖_20230616162355.png

      微信截圖_20230616162434.png

 

  其中用于處理具體指令的函數其原型或定義如下:

  處理非法壓縮指令時,用于從 Guest 獲取合法指令的 kvm_riscv_vcpu_unpriv_read 函數:

 微信截圖_20230616162634.png

  對合法的壓縮指令以及非 SYSTEM 類型的非壓縮指令,不進行額外處理,直接調用 truly_illegal_insn 函數處理,保存當前 trap 的具體信息,將 Guest PC 設置為 Guest 中對應的異常向量, 然后返回到到 Guest 中對異常進行處理:

 微信截圖_20230616162706.png

     微信截圖_20230616162738.png

  其調用關系如下圖所示:

  微信截圖_20230616162900.png

  SBI 系統調用

  系統調用的處理通過調用 kvm_riscv_vcpu_sbi_ecall 函數實現,如下方代碼塊所示:

  SBI(Supervisor Binary Interface) 是直接運行在 Machine Mode 下的,為上層 OS 提供統一接口的程序,具有最高權限。而 Guest 訪問 SBI 系統調用,是在 KVM 中模擬實現,不是實際訪問 Machine Mode 中的 SBI firmware。KVM 通過直接訪問和設置寄存器(cp->a7, cp->a0, cp->a0 等)的值來實現對 SBI 系統調用的處理。

  微信截圖_20230616163251.png

        微信截圖_20230616163337.png

微信截圖_20230616163445.png

  總結

  本文結合 KVM 中有關異常處理的實現,討論了在添加 H 擴展之后的虛擬指令異常、guest page fault 以及來自 guest 的系統調用的處理。

  參考資料

  RISC-V 特權指令集手冊

  RISC-V Linux

  首發地址:https://tinylab.org/riscv-kvm-excp-impl

  技術服務:https://tinylab.org/ruma.tech


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲免费人成在线视频观看| 香蕉亚洲视频| 欧美电影免费观看高清完整版| 国产精品蜜臀在线观看| 国产精品欧美经典| 伊人成综合网伊人222| 欧美粗暴jizz性欧美20| 欧美精品在线观看播放| 亚洲性av在线| 国产伦理精品不卡| 在线观看国产日韩| 最近看过的日韩成人| 亚洲精选一区二区| 久久综合一区二区三区| 免费成年人欧美视频| 午夜国产精品视频免费体验区| 欧美日韩亚洲综合| 一区二区三区中文在线观看| 欧美日韩中国免费专区在线看| 国产精品高精视频免费| 国产精品国产自产拍高清av王其| 久久精品一区二区| 久久久欧美精品sm网站| 91久久精品日日躁夜夜躁国产| 欧美freesex8一10精品| 欧美精品在线观看91| 国产欧美va欧美不卡在线| 在线不卡中文字幕播放| 99国产精品99久久久久久| 亚洲美女尤物影院| 亚洲精品之草原avav久久| 国产精品丝袜白浆摸在线| 国产欧美一区二区三区在线老狼| 亚洲欧洲一区二区天堂久久| 欧美日韩亚洲一区| 亚洲午夜精品福利| 国产精品不卡在线| 国产精品久久久久久影院8一贰佰| 亚洲欧美自拍偷拍| 在线观看欧美日韩国产| 久久亚洲私人国产精品va| 亚洲国产高清aⅴ视频| 91久久线看在观草草青青| 国产欧美一二三区| 国产精品精品视频| 日韩午夜中文字幕| 欧美电影在线播放| 久久久久久69| 亚洲美洲欧洲综合国产一区| 国产一区二区三区最好精华液| 欧美综合国产精品久久丁香| 久久久久成人精品| 日韩天堂在线观看| 亚洲欧洲三级电影| 亚洲高清在线观看一区| 国产欧美一区二区白浆黑人| 欧美电影免费| 国产午夜精品全部视频播放| 国产一区二区高清视频| 久久精品综合一区| 欧美视频在线观看视频极品| 国产欧美日韩综合| 欧美日韩综合在线| 欧美日韩国产麻豆| 欧美一区二区三区免费视| 亚洲自拍偷拍色片视频| 久久夜色撩人精品| 免费久久99精品国产自在现线| 亚洲日本中文| 国产精品久久久久久久久久久久久久| 久久亚洲综合网| 激情综合中文娱乐网| 国产精品www网站| 一区二区三区在线高清| 欧美日韩中文字幕在线视频| 韩国免费一区| 一区二区三区在线看| 国产精品高精视频免费| 亚洲无限乱码一二三四麻| 国产精品日本一区二区| 亚洲高清不卡一区| 在线欧美日韩国产| 艳女tv在线观看国产一区| 怡红院av一区二区三区| 亚洲在线免费观看| 久久一区二区三区四区| 国模精品娜娜一二三区| 欧美在线观看一二区| 亚洲激情视频| 亚洲天堂网站在线观看视频| 夜夜爽夜夜爽精品视频| 国产精品嫩草影院一区二区| 欧美日韩一区二区在线视频| 性xx色xx综合久久久xx| 欧美国产在线观看| 韩国女主播一区| 91久久久亚洲精品| 亚洲午夜av在线| 国产欧美日韩一区二区三区| 在线视频你懂得一区二区三区| 最近中文字幕日韩精品| 亚洲第一网站免费视频| 久久国产精品电影| 国产精品福利在线| 亚洲天堂av在线免费观看| 久久精品欧洲| 亚洲精品国产拍免费91在线| 尤物精品国产第一福利三区| 亚洲精品少妇30p| 99国产精品久久久久久久成人热| 欧美久久久久久蜜桃| 国产精品高清免费在线观看| 久久久精品欧美丰满| 国产精品国产三级国产aⅴ9色| 国产一区91| 欧美人交a欧美精品| 国产精品欧美久久久久无广告| 麻豆乱码国产一区二区三区| 一区二区三区精密机械公司| 1769国内精品视频在线播放| 国产精品毛片在线看| 亚洲欧美日韩精品久久奇米色影视| 欧美二区在线观看| 韩国欧美国产1区| 亚洲视频视频在线| 一区二区三区日韩在线观看| 看片网站欧美日韩| 免费不卡亚洲欧美| 国产精品女人网站| 国产欧美一区二区精品仙草咪| 欧美激情精品久久久| 欧美性大战xxxxx久久久| 欧美日韩精品二区| 91久久精品网| 国产精品第13页| 亚洲精品国产欧美| 欧美影视一区| 欧美一区在线视频| 影音先锋欧美精品| 99国产一区二区三精品乱码| av成人天堂| 亚洲精品久久久久中文字幕欢迎你| 欧美激情一区二区三区蜜桃视频| 美国十次成人| 亚洲小说春色综合另类电影| 亚洲欧洲综合另类| 免费影视亚洲| 亚洲愉拍自拍另类高清精品| 久久蜜臀精品av| 亚洲欧美日韩在线观看a三区| 国产亚洲成年网址在线观看| 欧美激情精品久久久久久蜜臀| 在线一区日本视频| 久久九九久久九九| 久久久久www| 亚洲黄页视频免费观看| 久久九九电影| 国产精品久久久999| 欧美精品在线一区| 久久精品理论片| 国产九九视频一区二区三区| 午夜在线一区二区| 国产亚洲精品7777| 久久男人av资源网站| 国产偷久久久精品专区| 尹人成人综合网| 日韩视频在线观看一区二区| 久久一区精品| 国产精品网曝门| 欧美激情综合网| 亚洲国产高清在线观看视频| 亚洲免费在线观看视频| 一区二区精品国产| 亚洲美女视频在线免费观看| 国产午夜精品理论片a级大结局| 销魂美女一区二区三区视频在线| 国产性色一区二区| 美女脱光内衣内裤视频久久网站| 国产一级一区二区| 国产精品av久久久久久麻豆网| 国产毛片精品国产一区二区三区| 欧美成人免费小视频| 亚洲区免费影片| 欧美成人一区二区三区在线观看| 欧美日韩在线视频首页| 欧美专区18| 亚洲一区二区三区四区五区午夜| 国产精品第13页| 国产精品影视天天线| 久久精品国产一区二区三| 在线视频精品一区| 日韩一区二区高清| 伊人精品久久久久7777| 欧美国产日韩二区| 欧美成人资源网| 久久精品欧洲| 久久精品日韩一区二区三区| 亚洲少妇中出一区| 99在线精品免费视频九九视| 亚洲一区免费观看| 欧美精品福利在线| 欧美区亚洲区| 久久国产日韩欧美| 欧美一区二区三区在| 欧美国产乱视频| 久久综合色播五月| 日韩一区二区精品视频| 欧美视频在线免费| 亚洲精品国产视频| 久久久噜噜噜久久久| 亚洲第一综合天堂另类专| 影音先锋日韩精品| 欧美精品在线观看| 国产免费亚洲高清| 一色屋精品视频在线看| 亚洲欧美日韩国产综合在线| 在线视频你懂得一区二区三区| 可以免费看不卡的av网站| 国产精品免费小视频| 欧美国产一区二区三区激情无套| 欧美日韩国产成人在线免费| 欧美成人午夜激情| 日韩网站免费观看| 亚洲精品国精品久久99热一| 欧美在线一二三区| 国产一区二区三区免费在线观看| 亚洲第一伊人| 小黄鸭视频精品导航| 亚洲激情精品| 欧美成人免费小视频| 蜜臀久久99精品久久久画质超高清| 欧美日韩综合视频| 久久成人一区二区| 亚洲电影在线看| 欧美国产一区二区| 欧美日韩中文字幕日韩欧美| 日韩视频亚洲视频| 狠狠色狠狠色综合系列| 亚洲欧洲午夜| 国产精品日韩欧美一区二区| 久久超碰97人人做人人爱| 国产精品美女视频网站| 日韩视频免费观看高清完整版| 99视频有精品| 久久精品国产精品亚洲| 国模叶桐国产精品一区| 欧美暴力喷水在线| 午夜精品久久久久久久蜜桃app| 久久精品人人爽| 亚洲国产精品嫩草影院| 亚洲精品美女在线| 亚洲影院一区| 亚洲国产一区二区三区a毛片| 亚洲手机成人高清视频| 国产精品―色哟哟| 国内一区二区三区| 国产主播一区| 国内精品一区二区| 久久视频一区| 欧美日韩精品在线观看| 99这里只有久久精品视频| 久久婷婷久久| 欧美三级中文字幕在线观看| 亚洲欧美变态国产另类| 国产精品一区二区三区乱码| 国产综合色在线| 久久久999精品免费| 久久天堂成人| 久久精品道一区二区三区| 亚洲精品一品区二品区三品区| 99精品国产在热久久| 亚洲最新视频在线播放| 国产精品国产三级国产| 欧美视频免费| 国产精品日韩精品欧美在线| 欧美激情精品久久久久久黑人| 国产午夜精品福利| 欧美激情免费观看| 欧美韩日一区| 国产精品美女www爽爽爽视频| 欧美久久婷婷综合色| 99热在线精品观看| 国产欧美日韩综合| 亚洲一二三区精品| 欧美一区二区视频在线| 欧美一级视频免费在线观看| 国产精品欧美日韩一区二区| 国产视频在线一区二区| 国内揄拍国内精品久久| 正在播放欧美一区| 亚洲欧美日韩精品一区二区| 老司机精品视频网站| 国产精品网站在线观看| 国产精品亚洲人在线观看| 在线看无码的免费网站| 男同欧美伦乱| 欧美日韩亚洲一区二区三区| 国产精品xxx在线观看www| 亚洲性图久久| 久久精品国产亚洲aⅴ| 亚洲国产婷婷香蕉久久久久久99| 女女同性精品视频| 国产亚洲欧美另类中文| 蜜桃av噜噜一区二区三区| 国产欧美精品va在线观看| 国产精品久久久久国产精品日日| 在线视频欧美精品| 欧美日本在线视频| 亚洲综合色激情五月| 欧美精品一区二区在线观看| 久久久久久久久综合| 久久网站热最新地址| 亚洲另类春色国产| 亚洲激情精品| 一本大道久久a久久综合婷婷| 国产精品二区在线观看| 好吊色欧美一区二区三区视频| 欧美激情一区二区在线| 欧美粗暴jizz性欧美20| 黄网站色欧美视频| 欧美一激情一区二区三区| 国外成人在线视频| 亚洲人成毛片在线播放| 欧美日韩一区二区三区视频| 欧美一区二区三区在线视频| 亚洲人成人77777线观看| 欧美网站大全在线观看| 一本一本大道香蕉久在线精品|