<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LWN:為什么RISC-V尚未支持KVM?

          共 2776字,需瀏覽 6分鐘

           ·

          2021-06-06 22:40

          關(guān)注了就能看到更多這么棒的文章哦~

          Why RISC-V doesn't (yet) support KVM

          By Jonathan Corbet
          May 20, 2021
          DeepL assisted translation
          https://lwn.net/Articles/856685/

          近年來 RISC-V CPU 架構(gòu)的地位日益突出。其相對開放的性質(zhì)使其成為一個有吸引力的平臺,許多公司都在此基礎(chǔ)上開發(fā)了產(chǎn)品。Linux 很好地支持了 RISC-V,但有一個缺陷:一直沒能支持 KVM 虛擬化,盡管其實(shí)有了質(zhì)量很不錯的實(shí)現(xiàn)代碼了。最近一次人們嘗試增加這個功能支持的時(shí)候,人們從中看到了 RISC-V 生態(tài)系統(tǒng)有些地方似乎并不像人們希望的那樣能良好運(yùn)作。

          Linux 支持許多虛擬化機(jī)制,但 KVM 通常被視為缺省解決方案(native solution)。它提供了跨系統(tǒng)的一套標(biāo)準(zhǔn)接口,但 KVM 中大部分內(nèi)容一定是跟特定架構(gòu)相關(guān)的,因?yàn)榫唧w的虛擬化支持機(jī)制在不同類型的處理器上都各不相同。因此,支持 KVM 的架構(gòu)里一般都有一個 kvm 目錄,跟此架構(gòu)中的其他那些架構(gòu)相關(guān)代碼放在一起。

          鑒于此,當(dāng) Anup Patel 的 patch set 在增加對 RISC-V KVM 的支持并將這些特定架構(gòu)相關(guān)代碼存放在 staging 目錄中時(shí),有些開發(fā)者的眉頭就皺了起來。staging 目錄通常用于存放那些不符合內(nèi)核代碼質(zhì)量標(biāo)準(zhǔn)的設(shè)備驅(qū)動。如果一切順利得到改進(jìn)的話,就會最終 "畢業(yè)" 離開 staging 目錄。它通常不用來放置架構(gòu)相關(guān)的代碼。所以 staging 目錄的維護(hù)者 Greg Kroah-Hartman 很快就回復(fù)郵件,詢問為什么要這樣做。

          原因其實(shí)是來自 RISC-V 代碼的 patch 接受政策,可在 Documentation/riscv/patch-acceptance.rst 中找到,內(nèi)容如下:

          我們只接受跟新的 module 或 extension 有關(guān)的 patch,并且前提是這些 module 或 extension 的規(guī)范(specification)被 RISC-V 基金會列為 "Frozen(凍結(jié))" 或 "Ratified(批準(zhǔn))"。當(dāng)然,開發(fā)者可以維護(hù)他們自己的 Linux 內(nèi)核代碼庫,其中可以存放包含了想要使用的任何 draft extension 相關(guān)的代碼)。

          RISC-V 的虛擬化是由 hypervisor extension 這個規(guī)范進(jìn)行定義的。Patel 解釋說,這個 extension 還沒有得到批準(zhǔn):

          KVM RISC-V 的 patch 已經(jīng)在等待了將近 2 年了。人們不斷調(diào)整 RISC-V H-extension(hypervisor extension)的凍結(jié)時(shí)間,我們無法確定它何時(shí)會被凍結(jié)。事實(shí)上,很多人已經(jīng)在硬件里面實(shí)現(xiàn)了 RISC-V H-extension,KVM RISC-V 在這些真正存在的硬件上也可以正常使用。

          將 KVM RISC-V 轉(zhuǎn)移到 drivers/staging 的話,在 RISC-V H-extension 被凍結(jié)之前,就可以繼續(xù)進(jìn)行 KVM RISC-V 的開發(fā),同時(shí)也不會破壞 Linux RISC-V patch 接受政策。

          Kroah-Hartman 對此不以為然。他表示,staging 目錄不是用來規(guī)避內(nèi)核代碼庫中其他模塊的一些自己政策的,所以 RISC-V KVM 代碼不能合入 staging。KVM 的總體維護(hù)者 Paolo Bonzini 補(bǔ)充說,從開發(fā)者不得不繞過這個政策的事實(shí)中就可以看出,"RISC-V 的 patch 接受政策是行不通的"。他說,尤其來說對于 RISC-V 的 KVM 實(shí)現(xiàn)是一個更加不幸的事情,因?yàn)檫@組 KVM 代碼 "質(zhì)量很高,展示了如何正確地實(shí)現(xiàn)代碼"。他還說道,可能有一些參與者會喜歡拖慢 patch 合入內(nèi)核的速度,從中獲益。

          Kroah-Hartman 回應(yīng)說,拖慢合入有用代碼,這是 "可怕的" 做法,內(nèi)核社區(qū)的工作目標(biāo)是能讓硬件工作起來,而阻止合并那些能很好支持現(xiàn)有硬件的代碼的政策是沒有意義的。他要求 RISC-V 的維護(hù)者解釋這個政策,目前他們還沒有回答。不過,早在 4 月份的時(shí)候 RISC-V 的維護(hù)者 Palmer Dabbelt 就承認(rèn),這個 patch 接受政策并沒有達(dá)到預(yù)期的效果:

          我在 RISC-V 方面的目標(biāo)一直是致力于推動真正的產(chǎn)品出貨,并且是運(yùn)行一套盡可能接近上游代碼庫的 software stack。我認(rèn)為這是讓 software stack 實(shí)現(xiàn)可持續(xù)的維護(hù)的唯一途徑。這種 “只接受達(dá)到凍結(jié)狀態(tài)的 extension" 的政策是為了幫助實(shí)現(xiàn)這一目標(biāo),引導(dǎo)供應(yīng)商共同建立一套我們可以支持的共同代碼,但實(shí)踐下來,這并沒有奏效。

          他補(bǔ)充說,這個政策可能會改變,但需要先確認(rèn)出能讓大家達(dá)成一致都同意的新的 patch 接受政策時(shí)才能改。不過,聯(lián)合維護(hù)者(co-maintainer) Paul Walmsley 把責(zé)任歸咎于 RISC-V 組織的 specification 規(guī)范決定流程,認(rèn)為真正需要改變的是這個規(guī)范流程。

          其實(shí)不難理解為什么 RISC-V 的維護(hù)者不愿意去支持所有各種非標(biāo)準(zhǔn)的 CPU。RISC-V 的開放性使得任何人都可以比較容易地創(chuàng)建他們自己的變體,而支持這些全部變種最終是不可行的。反過來說,正如 Kroah-Hartman 所說,內(nèi)核的目標(biāo)是要在現(xiàn)有的硬件上正常運(yùn)行。所以阻止支持那些已經(jīng)在售賣的系統(tǒng)的話,只會把這些系統(tǒng)的用戶推向由供應(yīng)商專門提供的內(nèi)核版本,其中會包含很多非 Linux kernel 官方的代碼,這對于一個本應(yīng)是開放的架構(gòu)來說是非常不幸的結(jié)果。

          尤其是這里在討論的是像虛擬化這樣的基本功能都無法得到支持,因此這個問題變得更加緊迫。希望這個插曲能使得 RISC-V 架構(gòu)的 patch 接受政策進(jìn)行調(diào)整。否則的話,Kroah-Hartman 已經(jīng)表明如果沒有其他選擇的話,他愿意接受這些代碼合入 staging。因此,Linux 應(yīng)該還是會較短時(shí)間內(nèi)就能讓 KVM 支持 RISC-V,盡管這可能需要繞過該架構(gòu)的維護(hù)者。

          全文完
          LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。

          歡迎分享、轉(zhuǎn)載及基于現(xiàn)有協(xié)議再創(chuàng)作~

          長按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~



          瀏覽 93
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐免费视频观看 | 尻屄视频免费看 | 亚洲国产mv | 中文字幕在线一区观看 | 国产激情AV在线播放 |