🐧 Köra Ubuntu via QEMU pĂ„ M1 Mac ïŁż

PermalÀnk
Datavetare ★
●

🐧 Köra Ubuntu via QEMU pĂ„ M1 Mac ïŁż

NÀr jag vÀl tog mig tid att titta lite nÀrmare pÄ hur Alexander Graf fick igÄng Windows on ARM64 via QEMU pÄ "Apple silicon" blev det föga förvÄnande rÀtt uppenbart att med lite smÀrre justeringar kommer det Àven kunna anvÀndas för att köra Linux.

Det som Àr det finna i krÄksÄngen med herr Grafs patch Àr att den adderar stöd för HW-accelering i QEMU. De som Àr vana med Linux kÀnner sÀker till KVM (Kernel-based Virtual Machine), vilket Àr motsvarande teknik pÄ Linux som Graf nu fÄtt igÄng under MacOS.

GÄr att köra QEMU Àven utan "hfv" acceleration (HFV Àr namnet pÄ MacOS motsvarighet till KVM, stöd finns redan för x86-baserade Mac:ar och patchen lÀgger till stöd för ARM64 baserade), men utan sÄdan acceleration Àr det flera gÄnger lÄngsammare Àn med acceleration. QEMU kommer fortfarande behöva emulera vissa periferienheter, men om man i sÄ lÀng utstrÀckning som möjligt anvÀnder de som bygger pÄ en teknik som kallas VirtIO

SÄ hÀr följer en How-To för att fÄ igÄng Ubuntu 20.04 server under QEMU pÄ M1 Mac

Bygga en patchad version av QEMU

Installera Apples CLI verktyg för utvecklare

xcode-select --install

Installera MacPorts: https://www.macports.org/install.php
Till skillnad frÄn Homebrew sÄ har MacPorts redan rÀtt fulltÀckande ARM64-native stöd

Följande saker mÄste finnas för att QEMU ska kunna byggas

sudo port install ninja pkgconfig texinfo libtool glib2 libpixman

HÀmta QEMU kÀllkoden

Applicera Alexander Grafs patchar och bygg QEMU

cd qemu git checkout 944fdc5 -b m1_hvf curl https://patchwork.kernel.org/series/392975/mbox | git am mkdir build cd build ../configure --target-list=aarch64-softmmu --enable-cocoa make -j 8

Om allt gÄr bra (notera hur snabbt M1 bygger QEMU!!!) ska det bl.a. nu finnas en qemu-system-aarch64 samt qemu-img. Finns massa annat ocksÄ, men Àr dessa tvÄ som behövs senare.

Skapa virtuell disk att lagra installationen pÄ

Installationsdisken för Ubuntu skapas pÄ följande vis, Àndra storleken till vad som Àr rÀtt för dig

qemu-img create -f qcow2 hda.qcow2 64G

UEFI/bootrom

Behövs ocksÄ ett "BIOS", vilket i ARM64 fallet Àr en lÀmplig UEFI. En sÄdan kan laddas ner hÀrifrÄn

Skapa en virtuell flash-disk för UEFI och en dÀr konfiguration kan sparas

tar xzvf QEMU_EFI-*.tar.gz dd if=/dev/zero of=pflash0.img bs=1m count=64 dd if=/dev/zero of=pflash1.img bs=1m count=64 dd if=QEMU_EFI.fd of=pflash0.img conv=notrunc dd if=QEMU_VARS.fd of=pflash1.img conv=notrunc

Ladda ner Ubuntu installationen

Jag anvÀnder Ubuntu server 20.04 LTS som man hittar hÀr. Filen heter ubuntu-20.04.1-live-server-arm64.iso i mitt fall.

Installera

Följande kommer installera Ubuntu pÄ hda.qcow2 disken som skapades ovan

qemu-system_aarch64 \ -M virt,highmem=off -accel hvf -cpu max -m 4G -smp 4 \ -device virtio-net-pci,netdev=net0,romfile="" \ -netdev type=user,id=net0,hostfwd=tcp::2222-:22 \ -device virtio-blk-pci,drive=drv0 \ -object rng-random,filename=/dev/urandom,id=rng0 \ -device virtio-rng-pci,rng=rng0 \ -drive format=qcow2,file=hda.qcow2,if=none,id=drv0 \ -drive if=pflash,format=raw,file=pflash0.img,readonly \ -drive if=pflash,format=raw,file=pflash1.img \ -nographic \ -device virtio-scsi \ -device scsi-cd,drive=cd \ -drive if=none,id=cd,file=ubuntu-20.04.1-live-server-arm64.iso

Kör igenom hela installationen, vÀlj "reboot" i slutet och stÀng ned QEMU.

Köra Ubuntu

Enda man behöver Àndra Àr sÄ att installationsmediet inte lÀngre kommer med, detta kör installationen och sÀtter upp sÄ man kan SSH:a till "localhost:2222" för att komma in i sin instans. Terminalemumering Àr vÀsentligt bÀttre via SSH Àn att köra pÄ seriekonsolen

qemu-system_aarch64 \ -M virt,highmem=off -accel hvf -cpu max -m 4G -smp 4 \ -device virtio-net-pci,netdev=net0,romfile="" \ -netdev type=user,id=net0,hostfwd=tcp::2222-:22 \ -device virtio-blk-pci,drive=drv0 \ -object rng-random,filename=/dev/urandom,id=rng0 \ -device virtio-rng-pci,rng=rng0 \ -drive format=qcow2,file=hda.qcow2,if=none,id=drv0 \ -drive if=pflash,format=raw,file=pflash0.img,readonly \ -drive if=pflash,format=raw,file=pflash1.img \ -nographic

Har inte hunnit köra nÄgra benchmarks Àn, men som han tycket om Linux: det kÀnns rÀtt snabbt, gÄr överhuvudtaget inte att jÀmföra med att köra t.ex. RPi4.

Första inloggning för egen del

ssh -p2222 localhost kjonsson@localhost's password: Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-56-generic aarch64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Thu Dec 3 10:24:00 UTC 2020 System load: 0.0 Usage of /: 19.8% of 30.63GB Memory usage: 5% Swap usage: 0% Processes: 135 Users logged in: 0 IPv4 address for enp0s1: 10.0.2.15 IPv6 address for enp0s1: fec0::5054:ff:fe12:3456 80 updates can be installed immediately. 0 of these updates are security updates. To see these additional updates run: apt list --upgradable Last login: Thu Dec 3 09:59:17 2020 from 10.0.2.2 To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. kjonsson@icestorm:~$

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

PermalÀnk
Medlem ★
●

Kul. Hur ser det ut med docker? kan du köra en x86 virt maskin ?

PermalÀnk
Datavetare ★
●
Skrivet av Meto:

Kul. Hur ser det ut med docker? kan du köra en x86 virt maskin ?

Är egentligen Docker jag vill köra. Men just nu finns en del hinder, primĂ€rt att sprĂ„ket Go inte har stöd för ARM64/MacOS. Det positiva Ă€r att Go har stöd för ARM64/Linux (har installerat under Ubuntu 20.04 trĂ„den handlar om) och ARM64/MacOS stöd kommer i nĂ€sta uppdatering, verkar hĂ€nda början av 2021.

Docker har sagt att man jobbar pÄ stöd för ARM64/MacOS, sÄ en release lÀr komma relativt kort efter att Golang för ARM64/MacOS slÀpps.

Det Àr möjligt att anvÀnda QEMU för att köra t.ex. x86_64 pÄ ARM64 eller egentligen vilken CPU som helst QEMU stödjer (vilket Àr rÀtt mÄnga). Problemet Àr man bara kan ha HW-accelererad virtualisering i QEMU om man kör ARM64 pÄ ARM64 (eller x86_64 pÄ x86_64) ihop med HW-stöd i CPU + de bibliotek som krÀvs för att anvÀnda HW-stöder i CPU (KVM under Linux och HVF under MacOS). Utan sÄdan HW-stöd kommer det bli lÄngsamt.

AnvÀnder QEMU en hel del i jobbet för att köra ARM och RISC-V pÄ min x86_64 baserade Ubuntu maskin. Det som jag vill testa med ovan Àr att köra vÄran utvecklingsmiljö vi har pÄ jobbet. Den har lÀnge bara funnits pÄ x86/x86_64, den fungerande pÄ SPARC för ~15 Är sedan (nÀr SPARC fortfarande var relevant). Kanske hÀngde SPARC-generna kvar, för tog en person ett par dagar att fÄ igÄng miljön pÄ ARM64. Enda vi testat pÄ sÄ hÀr lÄngt Àr en RPi4, M1 Àr ett gÀng heltalsfaktorer snabbare.

Hoppas det blir riktigt bra, dÄ kan man motivera IT att vi ska dumpa gammel-PCn vi kör nu och fÄ MBP i stÀllet

Har kört Ubuntu 20.04 pÄ ARM64 sedan i april, det pÄ en RPi4. Sett till funktion fungerar Linux direkt lysande pÄ ARM64, det Àr mer moget Àn MacOS/ARM64. En komplicerande faktor för MacOS/ARM64 Àr att de valt en lite annorlunda ABI Àn referensen som Arm föreslÄr (vilket Àr vad bÄde Windows och Linux anvÀnder). Det Àr relativt smÄ skillnader, men Àndock skillnader, vilket krÀver en insats frÄn alla kompilatorer som man vill ska stödja MacOS/ARM64.

Mycket fungerar redan dÄ det mesta som har nÄgot Är pÄ nacken bygger pÄ C eller C++, dÀr finns redan bra stöd frÄn Apple sjÀlva. Vidare fungerar Apples egna saker som Swift bra. Rust stöd, som ihop med Go Àr en blocker för Homebrew stöd, vÀntas under december.

Största bristen för egen del Àr att det saknas en Fortran kompilatorer som stödjer MacOS/ARM64. Inte för att jag personligen tÀnker skriva nÄgot i Fortran, men finns rÀtt mycket existerande kod inom matematiksfÀren bygger pÄ Fortran och utan sÄdant stöd kommer statistiksprÄket R inte fungera (det fungerar pÄ Linux/ARM64, sÄ nu har jag ett sÀtt att köra det). Finns indikationer pÄ att Apple inser vÀrdet av R och kommer se till att ta fram de resurser som krÀvs för att fixa stöd för GNU Fortran (gfortran, Àr det som anvÀnds pÄ Linux).

Har gjort nÄgra snabbskott runt prestanda, verkar som QEMU/ARM64+HVF presterar 80-90 % av att köra "native" pÄ MacOS. Förhoppningsvis Àr det tecken pÄ omoget QEMU+HVF stöd, för kör man x86_64 pÄ x86_64 via Linux/KVM brukar man ligga pÄ 90-100 % av native hastighet.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

PermalÀnk
Medlem
●
Skrivet av Yoshman:

Största bristen för egen del Àr att det saknas en Fortran kompilatorer som stödjer MacOS/ARM64. Inte för att jag personligen tÀnker skriva nÄgot i Fortran, men finns rÀtt mycket existerande kod inom matematiksfÀren bygger pÄ Fortran och utan sÄdant stöd kommer statistiksprÄket R inte fungera (det fungerar pÄ Linux/ARM64, sÄ nu har jag ett sÀtt att köra det). Finns indikationer pÄ att Apple inser vÀrdet av R och kommer se till att ta fram de resurser som krÀvs för att fixa stöd för GNU Fortran (gfortran, Àr det som anvÀnds pÄ Linux).

Jag instĂ€mmer helt. Är nybliven Ă€gare till en Macbook Pro (M1 / 16 GB RAM / 512 GB SSD) och det jag saknar Ă€r en Fortran-kompilator. Förutom R Ă€r det Ă€ven sĂ„ att mĂ„nga Python-bibliotek (SciPy m.fl.) krĂ€ver en sĂ„dan kompilator för att bygga. Om man vill visualisera kvantitativ data snabbt och lĂ€tt Ă€r det Fortran-beroende sprĂ„k och bibliotek som gĂ€ller ganska ofta.

Men den som vÀntar pÄ nÄgot gott...

PermalÀnk
●

Nya patchar med WFI-stöd

Tack för de överskÄdliga instruktionerna!

Jag testade setupen pÄ min M1 Macbook Air och mÀrkte snart att emuleringen kör de 4 tilldelade kÀrnorna för fullt Àven nÀr gÀstsystemet Àr inaktivt. Det beror pÄ att den ovanstÄende patchningen inte implementerar WFI (wait for interrupt). Nu Àr det ÄtgÀrdat, se https://patchew.org/QEMU/20201211151300.85322-1-agraf@csgraf..... De nya patcharna har ocksÄ en hel del andra förbÀttringar och de kan appliceras automatiskt pÄ kÀllkoden för quemu version 5.2.0 som slÀpptes efter commit 944fdc5.

Kör följande kommandon i git-repot för qemu:

git checkout v5.2.0 -B m1_hvf curl https:""//patchew.org/QEMU/20201211151300.85322-1-agraf@csgraf.de/mbox | git am

(Citattecknen i addressen finns dÀr bara för att forumet inte skall göra om den till en förkortad lÀnk.)

Kör config-kommandot i de ursprungliga instruktionerna och bygg om qemu. Bygget gÄr rÀtt fort, sÄ jag körde "make clean" före det nya bygget Àven om det kanske inte behövs.

PermalÀnk
Datavetare ★
●
Skrivet av Björn Samuelsson:

Tack för de överskÄdliga instruktionerna!

Jag testade setupen pÄ min M1 Macbook Air och mÀrkte snart att emuleringen kör de 4 tilldelade kÀrnorna för fullt Àven nÀr gÀstsystemet Àr inaktivt. Det beror pÄ att den ovanstÄende patchningen inte implementerar WFI (wait for interrupt). Nu Àr det ÄtgÀrdat, se https://patchew.org/QEMU/20201211151300.85322-1-agraf@csgraf..... De nya patcharna har ocksÄ en hel del andra förbÀttringar och de kan appliceras automatiskt pÄ kÀllkoden för quemu version 5.2.0 som slÀpptes efter commit 944fdc5.

Kör följande kommandon i git-repot för qemu:

git checkout v5.2.0 -B m1_hvf curl https:""//patchew.org/QEMU/20201211151300.85322-1-agraf@csgraf.de/mbox | git am

(Citattecknen i addressen finns dÀr bara för att forumet inte skall göra om den till en förkortad lÀnk.)

Kör config-kommandot i de ursprungliga instruktionerna och bygg om qemu. Bygget gÄr rÀtt fort, sÄ jag körde "make clean" före det nya bygget Àven om det kanske inte behövs.

Noterade sjÀlv att QEMU lÄg och drog 100 %, sÄ stÀngde av den.
Applicerade de nya patcharna och nu fungerar det som vÀntat, sÄ tack för informationen!

QEMU Ă€r vĂ€ldigt anvĂ€ndbart, men lite beroende pĂ„ vad man vill Ă„stadkomma sĂ„ kan Docker vara en bĂ€ttre lösning för Linux stöd. Finns sedan nĂ„gra veckor tillbaka en preview av Docker för MacOS/ARM64. 🐳🐳🐳

En trevlig egenskap hos Docker Àr att man kan köra bÄde Linux/ARM64 (vilket Àr förval) men Linux/x86_64 fungerar ocksÄ. Linux/x86_64 presterar sÀmre Àn ARM64 versionen (av uppenbara skÀl), beroende pÄ vad man vill göra kan det vara vÀldigt vÀrdefull att kunna köra bÄde ARM64 och x86_64 pÄ samma dator.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

PermalÀnk
99:e percentilen ★
●
Skrivet av Björn Samuelsson:

git checkout v5.2.0 -B m1_hvf curl https:""//patchew.org/QEMU/20201211151300.85322-1-agraf@csgraf.de/mbox | git am

(Citattecknen i addressen finns dÀr bara för att forumet inte skall göra om den till en förkortad lÀnk.)

DÄ kan ju jag tipsa om [noparse], som Ästadkommer samma effekt utan fulhack. Infogas enkelt med Better SweClockers. Funkar utmÀrkt inuti [code]-block; citera för att se exakt hur jag gjort.

git checkout v5.2.0 -B m1_hvf curl https://patchew.org/QEMU/20201211151300.85322-1-agraf&#x40;csgraf.de/mbox | git am

Visa signatur

Skrivet med hjÀlp av Better SweClockers

PermalÀnk
Medlem ★
●
Skrivet av Alling:

DÄ kan ju jag tipsa om [noparse], som Ästadkommer samma effekt utan fulhack. Infogas enkelt med Better SweClockers. Funkar utmÀrkt inuti [code]-block; citera för att se exakt hur jag gjort.

git checkout v5.2.0 -B m1_hvf curl https://patchew.org/QEMU/20201211151300.85322-1-agraf&#x40;csgraf.de/mbox | git am

Bra info!
Jag undrar varför inte Sweclockers har lagt till en knapp för att infoga code i verktygsfÀltet.

Visa signatur

ASUS ROG STRIX B450-F GAMING - AMD Ryzen 5 3600 3.6 GHz 35MB - Cooler Master - Hyper 212 Black Edition - Corsair 16GB (2x8GB) DDR4 3200Mhz CL16 Vengeance LPX - Kingston A2000 500GB M.2 NVMe - Fractal Design Define C Svart - 2 X Noctua NF-P14s redux-1200 140mm PWM - Corsair RM650X 650W v2 - ASUS GeForce GTX 1060 6GB DUAL OC - Raijintek Morpheus II Heatpipe VGA Cooler - 2 X Noctua NF-P12 120mm PWM - OS Debian 10 Stable

PermalÀnk
99:e percentilen ★
●
Skrivet av Eazy:

Bra info!
Jag undrar varför inte Sweclockers har lagt till en knapp för att infoga code i verktygsfÀltet.

Better SweClockers har knappar för nÀstan all formatering som stöds i foruminlÀgg.

Visa signatur

Skrivet med hjÀlp av Better SweClockers

PermalÀnk
Medlem ★
●

Försökt följa denna guide fast med QEMIU 5.2.0 samt Alexander Grafs v6-patchar:
https://patchwork.kernel.org/project/qemu-devel/list/?series=...

FÄr dock bara upp detta nÀr jag försöker starta upp en VM:
qemu-system-aarch64: -accel hvf: invalid accelerator hvf

NÄgon som har möjlighet att följa denna guide fast med QEMU 5.2.0 samt senaste patcharna frÄn Alexander Graf? För att se om det inte funkar eller om jag gör nÄgot fel?

PermalÀnk
●
Skrivet av Yoshman:

Är egentligen Docker jag vill köra. Men just nu finns en del hinder, primĂ€rt att sprĂ„ket Go inte har stöd för ARM64/MacOS. Det positiva Ă€r att Go har stöd för ARM64/Linux (har installerat under Ubuntu 20.04 trĂ„den handlar om) och ARM64/MacOS stöd kommer i nĂ€sta uppdatering, verkar hĂ€nda början av 2021.

Docker har sagt att man jobbar pÄ stöd för ARM64/MacOS, sÄ en release lÀr komma relativt kort efter att Golang för ARM64/MacOS slÀpps.

Det Àr möjligt att anvÀnda QEMU för att köra t.ex. x86_64 pÄ ARM64 eller egentligen vilken CPU som helst QEMU stödjer (vilket Àr rÀtt mÄnga). Problemet Àr man bara kan ha HW-accelererad virtualisering i QEMU om man kör ARM64 pÄ ARM64 (eller x86_64 pÄ x86_64) ihop med HW-stöd i CPU + de bibliotek som krÀvs för att anvÀnda HW-stöder i CPU (KVM under Linux och HVF under MacOS). Utan sÄdan HW-stöd kommer det bli lÄngsamt.

AnvÀnder QEMU en hel del i jobbet för att köra ARM och RISC-V pÄ min x86_64 baserade Ubuntu maskin. Det som jag vill testa med ovan Àr att köra vÄran utvecklingsmiljö vi har pÄ jobbet. Den har lÀnge bara funnits pÄ x86/x86_64, den fungerande pÄ SPARC för ~15 Är sedan (nÀr SPARC fortfarande var relevant). Kanske hÀngde SPARC-generna kvar, för tog en person ett par dagar att fÄ igÄng miljön pÄ ARM64. Enda vi testat pÄ sÄ hÀr lÄngt Àr en RPi4, M1 Àr ett gÀng heltalsfaktorer snabbare.

Hoppas det blir riktigt bra, dÄ kan man motivera IT att vi ska dumpa gammel-PCn vi kör nu och fÄ MBP i stÀllet

Har kört Ubuntu 20.04 pÄ ARM64 sedan i april, det pÄ en RPi4. Sett till funktion fungerar Linux direkt lysande pÄ ARM64, det Àr mer moget Àn MacOS/ARM64. En komplicerande faktor för MacOS/ARM64 Àr att de valt en lite annorlunda ABI Àn referensen som Arm föreslÄr (vilket Àr vad bÄde Windows och Linux anvÀnder). Det Àr relativt smÄ skillnader, men Àndock skillnader, vilket krÀver en insats frÄn alla kompilatorer som man vill ska stödja MacOS/ARM64.

Mycket fungerar redan dÄ det mesta som har nÄgot Är pÄ nacken bygger pÄ C eller C++, dÀr finns redan bra stöd frÄn Apple sjÀlva. Vidare fungerar Apples egna saker som Swift bra. Rust stöd, som ihop med Go Àr en blocker för Homebrew stöd, vÀntas under december.

Största bristen för egen del Àr att det saknas en Fortran kompilatorer som stödjer MacOS/ARM64. Inte för att jag personligen tÀnker skriva nÄgot i Fortran, men finns rÀtt mycket existerande kod inom matematiksfÀren bygger pÄ Fortran och utan sÄdant stöd kommer statistiksprÄket R inte fungera (det fungerar pÄ Linux/ARM64, sÄ nu har jag ett sÀtt att köra det). Finns indikationer pÄ att Apple inser vÀrdet av R och kommer se till att ta fram de resurser som krÀvs för att fixa stöd för GNU Fortran (gfortran, Àr det som anvÀnds pÄ Linux).

Har gjort nÄgra snabbskott runt prestanda, verkar som QEMU/ARM64+HVF presterar 80-90 % av att köra "native" pÄ MacOS. Förhoppningsvis Àr det tecken pÄ omoget QEMU+HVF stöd, för kör man x86_64 pÄ x86_64 via Linux/KVM brukar man ligga pÄ 90-100 % av native hastighet.

Codes from John Burkardt
Om det Àr denna typ av kod du menar?
De flesta rutiner finns tydligen i c/c++ inte bara i f77 och f90

PermalÀnk
Medlem ★
●

Verkar fastna nÀr jag ska lÀgga in patchen:

qemu % curl -L https://patchwork.kernel.org/series/418581/mbox | git am
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 182k 100 182k 0 0 98k 0 0:00:01 0:00:01 --:--:-- 352k
Applying: hvf: Add hypervisor entitlement to output binaries
Applying: hvf: x86: Remove unused definitions
Applying: hvf: Move common code out
error: patch failed: MAINTAINERS:448
error: MAINTAINERS: patch does not apply
Patch failed at 0003 hvf: Move common code out
hint: Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

----------------------------

qemu % git am --show-current-patch
From patchwork Wed Jan 20 22:44:36 2021
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Patchwork-Submitter: Alexander Graf <agraf@csgraf.de>
X-Patchwork-Id: 12033821
Return-Path:
<SRS0=MVl1=GX=nongnu.org=qemu-devel-bounces+qemu-devel=archiver.kernel.org@kernel.org>
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
aws-us-west-2-korg-lkml-1.web.codeaurora.org
X-Spam-Level:
X-Spam-Status: No, score=-21.8 required=3.0 tests=BAYES_00,
HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH,
MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,
USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0
Received: from mail.kernel.org (mail.kernel.org [198.145.29.99])
by smtp.lore.kernel.org (Postfix) with ESMTP id 738E9C433E6
for <qemu-devel@archiver.kernel.org>; Wed, 20 Jan 2021 22:49:52 +0000 (UTC)
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by mail.kernel.org (Postfix) with ESMTPS id 09B83235DD
for <qemu-devel@archiver.kernel.org>; Wed, 20 Jan 2021 22:49:52 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 09B83235DD
Authentication-Results: mail.kernel.org;
dmarc=none (p=none dis=none) header.from=csgraf.de
Authentication-Results: mail.kernel.org;
spf=pass
smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org
Received: from localhost ([::1]:47474 helo=lists1p.gnu.org)
by lists.gnu.org with esmtp (Exim 4.90_1)
(envelope-from
<qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org>)
id 1l2MIR-00012U-2V
for qemu-devel@archiver.kernel.org; Wed, 20 Jan 2021 17:49:51 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:56614)
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <agraf@csgraf.de>)
id 1l2MDj-0003up-8R; Wed, 20 Jan 2021 17:44:59 -0500
Received: from mail.csgraf.de ([188.138.100.120]:45118
helo=zulu616.server4you.de) by eggs.gnu.org with esmtp (Exim 4.90_1)
(envelope-from <agraf@csgraf.de>)
id 1l2MDa-0001TW-P8; Wed, 20 Jan 2021 17:44:58 -0500
Received: from localhost.localdomain
(dynamic-077-002-091-253.77.2.pool.telefonica.de [77.2.91.253])
by csgraf.de (Postfix) with ESMTPSA id DC5E239004ED;
Wed, 20 Jan 2021 23:44:47 +0100 (CET)
From: Alexander Graf <agraf@csgraf.de>
To: qemu-devel@nongnu.org
Subject: [PATCH v6 03/11] hvf: Move common code out
Date: Wed, 20 Jan 2021 23:44:36 +0100
Message-Id: <20210120224444.71840-4-agraf@csgraf.de>
X-Mailer: git-send-email 2.24.3 (Apple Git-128)
In-Reply-To: <20210120224444.71840-1-agraf@csgraf.de>
References: <20210120224444.71840-1-agraf@csgraf.de>
MIME-Version: 1.0
Received-SPF: pass client-ip=188.138.100.120; envelope-from=agraf@csgraf.de;
helo=zulu616.server4you.de
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001,
SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-BeenThere: qemu-devel@nongnu.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
<mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Eduardo Habkost <ehabkost@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <r.bolshakov@yadro.com>,
qemu-arm@nongnu.org, Frank Yang <lfy@google.com>,
Paolo Bonzini <pbonzini@redhat.com>, Peter Collingbourne <pcc@google.com>
Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org
Sender: "Qemu-devel"
<qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org>

Until now, Hypervisor.framework has only been available on x86_64 systems.
With Apple Silicon shipping now, it extends its reach to aarch64. To
prepare for support for multiple architectures, let's move common code out
into its own accel directory.

Signed-off-by: Alexander Graf <agraf@csgraf.de>
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Tested-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---

v3 -> v4:

- Use hv.h instead of Hypervisor.h for 10.15 compat
- Remove manual inclusion of Hypervisor.h in common .c files
---
MAINTAINERS | 8 +
accel/hvf/hvf-all.c | 54 +++++
accel/hvf/hvf-cpus.c | 462 ++++++++++++++++++++++++++++++++++++
accel/hvf/meson.build | 7 +
accel/meson.build | 1 +
include/sysemu/hvf_int.h | 54 +++++
target/i386/hvf/hvf-cpus.c | 131 ----------
target/i386/hvf/hvf-cpus.h | 25 --
target/i386/hvf/hvf-i386.h | 33 +--
target/i386/hvf/hvf.c | 360 +---------------------------
target/i386/hvf/meson.build | 1 -
target/i386/hvf/x86hvf.c | 11 +-
target/i386/hvf/x86hvf.h | 2 -
13 files changed, 596 insertions(+), 553 deletions(-)
create mode 100644 accel/hvf/hvf-all.c
create mode 100644 accel/hvf/hvf-cpus.c
create mode 100644 accel/hvf/meson.build
create mode 100644 include/sysemu/hvf_int.h
delete mode 100644 target/i386/hvf/hvf-cpus.c
delete mode 100644 target/i386/hvf/hvf-cpus.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 3216387521..e589ec02e0 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -448,7 +448,15 @@ M: Roman Bolshakov <r.bolshakov@yadro.com>
W: https://wiki.qemu.org/Features/HVF
S: Maintained
F: target/i386/hvf/
+
+HVF
+M: Cameron Esfahani <dirty@apple.com>
+M: Roman Bolshakov <r.bolshakov@yadro.com>
+W: https://wiki.qemu.org/Features/HVF
+S: Maintained
+F: accel/hvf/
F: include/sysemu/hvf.h
+F: include/sysemu/hvf_int.h

WHPX CPUs
M: Sunil Muthuswamy <sunilmut@microsoft.com>
diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c
new file mode 100644
index 0000000000..5b415eb0ed
--- /dev/null
+++ b/accel/hvf/hvf-all.c
@@ -0,0 +1,54 @@
+/*
+ * QEMU Hypervisor.framework support
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ *
+ * Contributions after 2012-01-13 are licensed under the terms of the
+ * GNU GPL, version 2 or (at your option) any later version.
+ */
+