From nobody Tue Feb 14 09:48:10 2023 X-Original-To: freebsd-arm@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PGGby19Smz3rTSC for ; Tue, 14 Feb 2023 09:48:14 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (gold.funkthat.com [IPv6:2001:470:800b::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "gate2.funkthat.com", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PGGbx72Sfz3QC3 for ; Tue, 14 Feb 2023 09:48:13 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Authentication-Results: mx1.freebsd.org; none Received: from gold.funkthat.com (localhost [127.0.0.1]) by gold.funkthat.com (8.15.2/8.15.2) with ESMTPS id 31E9mAmg020308 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 14 Feb 2023 01:48:10 -0800 (PST) (envelope-from jmg@gold.funkthat.com) Received: (from jmg@localhost) by gold.funkthat.com (8.15.2/8.15.2/Submit) id 31E9mAiE020306; Tue, 14 Feb 2023 01:48:10 -0800 (PST) (envelope-from jmg) Date: Tue, 14 Feb 2023 01:48:10 -0800 From: John-Mark Gurney To: Ronald Klop Cc: freebsd-arm@FreeBSD.org Subject: Re: detecting qemu/HVF on Apple M1 silicon Message-ID: <20230214094810.GF95670@funkthat.com> Mail-Followup-To: Ronald Klop , freebsd-arm@FreeBSD.org References: <20230214080530.GE95670@funkthat.com> <306917284.1.1676366642956@mailrelay> List-Id: Porting FreeBSD to ARM processors List-Archive: https://lists.freebsd.org/archives/freebsd-arm List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-arm@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <306917284.1.1676366642956@mailrelay> X-Operating-System: FreeBSD 11.3-STABLE amd64 X-PGP-Fingerprint: D87A 235F FB71 1F3F 55B7 ED9B D5FF 5A51 C0AC 3D65 X-Files: The truth is out there X-URL: https://www.funkthat.com/ X-Resume: https://www.funkthat.com/~jmg/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? User-Agent: Mutt/1.6.1 (2016-04-27) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (gold.funkthat.com [127.0.0.1]); Tue, 14 Feb 2023 01:48:10 -0800 (PST) X-Rspamd-Queue-Id: 4PGGbx72Sfz3QC3 X-Spamd-Bar: ---- X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-ThisMailContainsUnwantedMimeParts: N Ronald Klop wrote this message on Tue, Feb 14, 2023 at 10:24 +0100: > Van: John-Mark Gurney > Datum: dinsdag, 14 februari 2023 09:05 > Aan: freebsd-arm@FreeBSD.org > Onderwerp: detecting qemu/HVF on Apple M1 silicon > > > > I managed to get FreeBSD running via qemu on Apple M1 silicon, but out > > of the box vm detection isn't working causing hz to be set to 1000, and > > causing lots of cpu usage to happen. > > > > What are the recommended ways to detect this, so we can get vm_guest set? > > > > A little poking around, shows that there's an ACPI device that is > > promising: > > Device (FWCF) > > { > > Name (_HID, "QEMU0002") // _HID: Hardware ID > > Name (_STA, 0x0B) // _STA: Status > > Name (_CCA, One) // _CCA: Cache Coherency Attribute > > Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings > > { > > Memory32Fixed (ReadWrite, > > 0x09020000, // Address Base > > 0x00000018, // Address Length > > ) > > }) > > } > > > > Here's a complete list of _HID's: > > # acpidump -d | grep _HID | sort -u > > Name (_HID, "PNP0C02" /* PNP Motherboard Resources */) // _HID: Hardware ID > > Name (_HID, "PNP0C0F" /* PCI Interrupt Link Device */) // _HID: Hardware ID > > Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID > > Name (_HID, "ACPI0013" /* Generic Event Device */) // _HID: Hardware ID > > Name (_HID, "ARMH0011") // _HID: Hardware ID > > Name (_HID, "LNRO0005") // _HID: Hardware ID > > Name (_HID, "PNP0A08" /* PCI Express Bus */) // _HID: Hardware ID > > Name (_HID, "PNP0C0C" /* Power Button Device */) // _HID: Hardware ID > > Name (_HID, "QEMU0002") // _HID: Hardware ID > > > > There's also the usual virtio devices as well. > > # pciconf -l > > hostb0@pci0:0:0:0: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1b36 device=0x0008 subvendor=0x1af4 subdevice=0x1100 > > virtio_pci0@pci0:0:1:0: class=0x020000 rev=0x00 hdr=0x00 vendor=0x1af4 device=0x1000 subvendor=0x1af4 subdevice=0x0001 > > virtio_pci1@pci0:0:2:0: class=0x038000 rev=0x01 hdr=0x00 vendor=0x1af4 device=0x1050 subvendor=0x1af4 subdevice=0x1100 > > xhci0@pci0:0:3:0: class=0x0c0330 rev=0x01 hdr=0x00 vendor=0x1b36 device=0x000d subvendor=0x1af4 subdevice=0x1100 > > none0@pci0:0:4:0: class=0x040300 rev=0x01 hdr=0x00 vendor=0x8086 device=0x2668 subvendor=0x1af4 subdevice=0x1100 > > virtio_pci2@pci0:0:5:0: class=0x010000 rev=0x00 hdr=0x00 vendor=0x1af4 device=0x1001 subvendor=0x1af4 subdevice=0x0002 > > I'm using UTM as a wrapper around qemu. This gives me the following in dmesg which might be a good hint. > acpi0: > > "BOCHS" is also in the output of kenv. > > Although I'm not sure if this is a good indicator for qemu. Yeah, I saw that as well, and I don't believe that is a good indicator, because BOCHS is probably from the x86 emulator project. I did do some additional research after I sent the email, and HyperV uses the FADT acpi table, and it does look like qemu has code to generate the FADT table w/ QEMU as the hypervisor string, but for some reason the HVF code isn't triggering the generation of the FADT table. This seems like a promising way to detect it. -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."