From nobody Fri Oct 14 06:03:19 2022 X-Original-To: freebsd-hackers@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 4MpbRM1njKz4fhCn for ; Fri, 14 Oct 2022 06:03:27 +0000 (UTC) (envelope-from weh@microsoft.com) Received: from apac01-obe.outbound.protection.outlook.com (mail-eastasiaazon11020025.outbound.protection.outlook.com [52.101.128.25]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4MpbRK44c3z3TsC; Fri, 14 Oct 2022 06:03:25 +0000 (UTC) (envelope-from weh@microsoft.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nYZjolnLz9t35JGvDgv17DXciswW8dadQP2uANAL3pHC2rN+K4Ocd3fAWKl9HzwCZS81+NINwTN1b/rKhGa3G9qsO6FBJeUquZG6JYHsRS6Tt0fLXvRUkSbEMjeXAG4ksYz9U7QPNfnjjy0kq6xl7tQ2iOzI8lzuST1sObrqHmFsp5HbF/sZQ8d/p7ncAJJI17IsFJFfdSFEeQQlxEyQDLuQfjYpOB0b48M4BrcE5uLH+bko9/7ybVdPotQ0W8PB/7/lrgew7B49H+t2Jx3+/3te8k3vMWeMTf1/hrOeXZWtOuyxlXXGoIeSOUzUU5RMLCboP8k00w5xsgyIykBP0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wmv0hZXrGvWQC5k9xllp/awi4Udvz/i0egHGtl3aTUw=; b=OmEKw16RHo9Aimg5mFENOFWNT5xqieBlDaERlPPN6JisXaFMRamcOZ1bLE2SR8R59lrYSrrOoRd0eTLujztkw3DiRIS6BN5ZmM68TlxSuXQRovjAoqzoAXT4M3EeatwGgLOZAFZI9+xKti/GmJ8vz0IV6tQatyjEuYNKY6d002ZXB8A0PA3Z3GStGUyjKHmqrgwiNjVWh/l/5clleBAFVnN5kCvrRLh1egnkpDZ5/AzKBaC05NV+2klLoP5O6Hk0jABapwZ692IW+PBwKqvcbRwjyMpjs2q+8YmYaB0UbhdCIrFJB2ZcMrV9RHxNw2WUokAmfU6jYrDcRW/4/GB5HA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wmv0hZXrGvWQC5k9xllp/awi4Udvz/i0egHGtl3aTUw=; b=aISYRa//RdIHG3vhUcYBZ0xxvHnBQxz4KK4SIOcVNhs8Nl21wnXLYe5vxwzwcBpKwnSKZR48v2irYpIP6NXalGKK5AK/X7cBEgMt+uB541lfms6IA8b7Td668woTR7tDu6qO0zL5SheyGfGfGy9mujynJbcEtTnr/swIJ3tGbRc= Received: from SI2P153MB0441.APCP153.PROD.OUTLOOK.COM (2603:1096:4:fc::7) by PSAP153MB0440.APCP153.PROD.OUTLOOK.COM (2603:1096:301:35::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.6; Fri, 14 Oct 2022 06:03:18 +0000 Received: from SI2P153MB0441.APCP153.PROD.OUTLOOK.COM ([fe80::f43d:48c8:6f6f:30c8]) by SI2P153MB0441.APCP153.PROD.OUTLOOK.COM ([fe80::f43d:48c8:6f6f:30c8%4]) with mapi id 15.20.5746.011; Fri, 14 Oct 2022 06:03:19 +0000 From: Wei Hu To: "freebsd-hackers@FreeBSD.org" , John Baldwin CC: Li-Wen Hsu , Souradeep Chakrabarti Subject: FW: newbus and acpi issue on Hyper-V Thread-Topic: newbus and acpi issue on Hyper-V Thread-Index: Adje4its1rEr3VLNTVqns+Y8gVfIcQAQEYzwABwHzMA= Date: Fri, 14 Oct 2022 06:03:19 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=0cbaf113-947b-4307-b77e-2906a090e6a0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-10-13T08:45:10Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SI2P153MB0441:EE_|PSAP153MB0440:EE_ x-ms-office365-filtering-correlation-id: 7774b440-5d05-4fbd-4375-08daada9caed x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PuAlDNqbuGKwiN2aoZgHtRsEeV1AoHKFBefeuzD5mYgAJxxoyLAGgCkprEju3CuYSLnBjaVsK1U8WNbI05JZnSj6qb94MlpTxse0RKwVmMkDlcqtwJS7d9LW7I+jbHf/XVVD0pkaNwyHuQwg/xt5/YVDX3S5xIkgDp0OKuoDgvJSVbHBJQaF/ak3/RgasinwyBJNZ8q/NnYUL7RIlohKwwybE/BV45Jl0xvxnnZ0KMFD6vvSdmM+vQ9TNqB/UizqWK9ilH0n40SLnZSqERz2Pq3FwkWxV/UHQEmLrclKwZJNudM46CxpqcHUIL/0ilyMhlBs4Ydg2ZcvEv3th6fDNYdvYEkTm2HiDGb5RMM9n+9FxgrmIIo1fNYRuyeQkiqcrJpNgzZSLzjKMhfZlHcuYwtIeZApOMVwchjkBbEGqz4YjAQD9jDpQrhDH1PB1Iqk7+3BlBvVeDOGSN8yfjtLPzYXylD6S7z/lXj7fhWeto6Kis9d9F1sY/McFJsanTPbsDcLz9gHlUVDnbWyoqdwjDsimEjAmk3HGENwso+wblojJp3W6MmhVKxoFr7u4u7YQpYPf0ZcbhOm0B87o4E/toIheKf9wITy/NHSP3gowVPmnZTUAuJ5PZdo7KSco+StTDcNHqhQB84TV05IIsyaoCMAFK4lhIlBJlSUcvMax+IbLEfDSvwOCA9C/MQgAltGba7SsXFSrsyuEYfYyUWSHANtanXvekBvLjy+HLt1YROhrahe76vo9yGvLeEq36jlVU4TMBjqDQCOyWVHPfI9/8cBtJ8nnXRc4C7hrengwOw04xfhJKjAWh4ja1S4EXbn x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SI2P153MB0441.APCP153.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(376002)(39860400002)(136003)(366004)(396003)(451199015)(478600001)(10290500003)(83380400001)(66899015)(54906003)(66556008)(8990500004)(110136005)(66476007)(4326008)(66446008)(64756008)(8676002)(316002)(66946007)(76116006)(86362001)(55016003)(450100002)(107886003)(82960400001)(82950400001)(7696005)(6506007)(41300700001)(71200400001)(9686003)(26005)(9326002)(5660300002)(38070700005)(52536014)(33656002)(38100700002)(8936002)(186003)(99936003)(122000001)(2906002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?2R/np8tivLjxfaWGXS5yLFZDrZkcrWKP2hjkrd0T6Bh36l8lkIiu8J32fNuO?= =?us-ascii?Q?pLAp0Kj9DAgTrgZkZJlvS9ah5dT9p20HHC+ArtHcQBfS83C3eLuNvYhKf0OM?= =?us-ascii?Q?zVCEByC+0hcefPm/z7eV5r85PU0ZELhjmIy52RHS8PKOrEMF9r5rUQ+WUGb1?= =?us-ascii?Q?PBHFMth4bjc1snTXh2OcElEW5MJuP+Urb5G+6jUE91OWy/TsI3e+EQUMOPS6?= =?us-ascii?Q?e98vtLpqlIQbeo2cp9SSCyh7Cr9gV2NvH9w/nGOva6NrtgN4/sS7Ec84dRvx?= =?us-ascii?Q?JES/8gQN7ycDplMnZ0GVep6igvGUN2CtrbOoEYgDqTLuuyy8skZmfujnpoVw?= =?us-ascii?Q?S0pNt8NN0u/WadUyhtpSpeV3BZ9r4ydl1/9W4vlLJKeoDVmYWCMh6a3LzSXg?= =?us-ascii?Q?sU5vlK9wUpZViozOMlb+PjPx1VN+aZML4FnvtuANJ/LAMwHvBxu4IC5ibRAP?= =?us-ascii?Q?kXDl3PCZbq/ORQVNsQhJyenNYaQgIdfaok0eLqoB34A0M4VIKA0NA3VULiza?= =?us-ascii?Q?qaMv3zJuzxyykMO0b/osXYKOrPhFvd4GWBp37NnhOykgucl1wPA3sUihNVUN?= =?us-ascii?Q?SkC2W5qYrzgwpOXlsTXh+QFEfZaal1MfactKOlhg6AmRbPVvUrFjBAeWLGwF?= =?us-ascii?Q?NxdUpXo/IXxZiW6aQfaeHPuyRIY4RAhFwApTIkWfdcXafz6G0wDSd5oKJAQ9?= =?us-ascii?Q?sC9vmRGRn6Hf7rP2YmVQ2kMwh4+1vyvdpJWS08W+14bwJCjORjh9sE/TD3I3?= =?us-ascii?Q?YOFWl6CnDokvq1X8jDmxsIUo6pMMXAnm+Lo/qmRCUSDNAzEwKPQTaFEU0GAK?= =?us-ascii?Q?6U2EZPNroWnTqJ1QDw8aT7QuUJrTgIPDSP2u8RJt+JQRqSVrTJ1GQYK3sxnR?= =?us-ascii?Q?Xmx2kglsOu91WfGSJ565Hy9Vf+2SdBbcMEGkEGnboQWD3keqjpqqJwR/4CW4?= =?us-ascii?Q?bfXxh7eJcmhp2P5QtUZ5Xo8DGUBCsWiwFVoLLZqpa1NZF3/9PKMHtSWiCs7c?= =?us-ascii?Q?uqNScfDUHOOkYm+EgSw4NlqQNpxH8WVdeBjrq5/7ISC5LGfLLGIhS4XQwh7g?= =?us-ascii?Q?v8sHlOsjg0EJOwjyYR5WmzIE7qxjocK2YHAkN20lLJnKUlyyQwilmy8l8bf1?= =?us-ascii?Q?QKQG+dUOtvcunOGAAfI6fNpidN4649UJ9saAAK3LHGIZDUTBVWys2J8Tk8p6?= =?us-ascii?Q?tKU/HkdDsF+lNErKOyEoecpT501yJuZ3YlivC0MsRbscV9U04j0XL3Zgv41w?= =?us-ascii?Q?bWEuMtgwJKIdSHrpLrEsYCkLtdRYjQDvH5W6hsAVriWBMUPTb684YpptuJPB?= =?us-ascii?Q?R6Wv0UGV4f7g21FDq7HXf1xeQ4u24ctp3MJtbMa6khLSe5WUu1xOpq2F2uFA?= =?us-ascii?Q?Ad8Az2EaTzo1wt2zV4DLjXyDUlj1ErjvTAhYW9VVypg0EZ9rUeVO511bP2jq?= =?us-ascii?Q?lLcMrH3Lyy4bfQfquRYlRnzZbMI4bGgf3yhyFtAmYsQu8Ado9rb1tEOvHhr0?= =?us-ascii?Q?aMaDEX7ouENiU1HHGF43kFL85ofNNzI4Q+UOCeik47j562Z28vhugg17Q4RK?= =?us-ascii?Q?9Pa2oSJOcqZI4VYfCkU=3D?= Content-Type: multipart/related; boundary="_004_SI2P153MB04412944658A25DB25666079BB249SI2P153MB0441APCP_"; type="multipart/alternative" List-Id: Technical discussions relating to FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-hackers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-hackers@freebsd.org MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SI2P153MB0441.APCP153.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 7774b440-5d05-4fbd-4375-08daada9caed X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Oct 2022 06:03:19.1502 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Ur/TjTiNMJt3N4nCb4uSm3COdjGFjT+nm8gaTZD+dxvvN5fTsBnytpZefi7GIu3w8aAZ9T7P2lWpjvAuQVjO3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PSAP153MB0440 X-Rspamd-Queue-Id: 4MpbRK44c3z3TsC X-Spamd-Bar: --------- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=microsoft.com header.s=selector2 header.b="aISYRa//"; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=reject) header.from=microsoft.com; spf=pass (mx1.freebsd.org: domain of weh@microsoft.com designates 52.101.128.25 as permitted sender) smtp.mailfrom=weh@microsoft.com X-Spamd-Result: default: False [-10.00 / 15.00]; WHITELIST_SPF_DKIM(-3.00)[microsoft.com:d:+,microsoft.com:s:+]; DWL_DNSWL_MED(-2.00)[microsoft.com:dkim]; ARC_ALLOW(-1.00)[microsoft.com:s=arcselector9901:i=1]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[microsoft.com,reject]; R_SPF_ALLOW(-0.20)[+ip4:52.100.0.0/14]; R_DKIM_ALLOW(-0.20)[microsoft.com:s=selector2]; MIME_GOOD(-0.10)[multipart/related,multipart/alternative,text/plain]; MIME_TRACE(0.00)[0:+,1:+,2:+,3:~,4:~]; ASN(0.00)[asn:8075, ipnet:52.96.0.0/12, country:US]; MLMMJ_DEST(0.00)[freebsd-hackers@freebsd.org]; RCVD_TLS_LAST(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[microsoft.com:+]; FROM_HAS_DN(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[52.101.128.25:from]; RCPT_COUNT_THREE(0.00)[4]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_SOME(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[] X-ThisMailContainsUnwantedMimeParts: N --_004_SI2P153MB04412944658A25DB25666079BB249SI2P153MB0441APCP_ Content-Type: multipart/alternative; boundary="_000_SI2P153MB04412944658A25DB25666079BB249SI2P153MB0441APCP_" --_000_SI2P153MB04412944658A25DB25666079BB249SI2P153MB0441APCP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, We are working on enabling FreeBSD running on ARM64 Hyper-V at Microsoft. R= ight now we are hitting a road blocker which seems only happening on FreeBS= D guest, due to its newbus architecture and how resources are presented in = Hyper-V's ACPI tables. I am writing in hope to find a short term solution o= r workaround. Without it, it would be hard to make SRIOV work on ARM64 Free= BSD guests. Appreciate any inputs. Here are the details. Hyper-V presents two system resources at two differen= t places/nodes in its ACPI table. 1) PCI mmio resource in HID "ACPI0004", which is needed by the FreeBSD gues= t for SRIOV devices. Device (\_SB.VMOD) <-- This is currently owned by acpi_syscontainer m= odule on FreeBSD { Name (_HID, "ACPI0004" /* Module Device */) // _HID: Hardware ID Name (_UID, Zero) // _UID: Unique ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { ... } CreateDWordField (_CRS, \_SB.VMOD._Y00._MIN, MIN6) // _MIN: Minimu= m Base Address CreateDWordField (_CRS, \_SB.VMOD._Y00._MAX, MAX6) // _MAX: Maximu= m Base Address CreateDWordField (_CRS, \_SB.VMOD._Y00._LEN, LEN6) // _LEN: Length CreateQWordField (_CRS, \_SB.VMOD._Y01._MIN, MIN7) // _MIN: Minimu= m Base Address CreateQWordField (_CRS, \_SB.VMOD._Y01._MAX, MAX7) // _MAX: Maximu= m Base Address CreateQWordField (_CRS, \_SB.VMOD._Y01._LEN, LEN7) // _LEN: Length Method (_INI, 0, NotSerialized) // _INI: Initialize { MIN6 =3D MG2B /* \MG2B */ LEN6 =3D MG2L /* \MG2L */ Local0 =3D MG2L /* \MG2L */ MAX6 =3D (MIN6 + Local0--) Local1 =3D (HMIB << 0x14) Local2 =3D (HMIL << 0x14) MIN7 =3D Local1 LEN7 =3D Local2 Local0 =3D Local2 MAX7 =3D (MIN7 + Local0--) } } 2) Vmbus IRQ resource in HID "VMBus", which is needed to get Hyper-V vmbus = interrupt to work on guests. Device (\_SB.VMOD.VMBS) <--- currently owned by vmbus_res module on FreeB= SD { ... Name (_HID, "VMBus") // _HID: Hardware ID Name (_UID, Zero) // _UID: Unique ID ... Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) { 0x00000012, } }) } On x86, FreeBSD just needs PCI mmio resource 1). We ignore the vmbus IRQ re= source in the ACPI and pick a fixed vector for all cpu interrupt. But on AR= M64, the guest needs all the information in order to make bus_alloc_resouce= () to work for both interrupt and mmio. Therefore, the main Hyper-V device = driver vmbus needs to be the child for both these nodes to make the resourc= e allocation to work. But it seems to us that one device driver can only ha= ve one parent in the newbus architecture, we can only make one resource all= ocation to work in this scenario, either IRQ or mmio, but not both. Following is a picture of current device tree on a AMD64 FreeBSD guest on H= yper-V [cid:image002.png@01D8DF2F.A3DB8800] As you can see vmbus module is under acpi_syscontainer which owns PCI mmio = resource. The vmbus IRQ resouce is owned by vmbus_res module, which is just= a place holder for this resouce and never been used on am64. On ARM64, vmb= us module needs to be the child for both vmbus_res and acpi_syscontainer to= get the both resources, which doesn't seem to be possible under newbus arc= hitecture. Any suggestions or workarounds are welcome. Thanks in advacne. Wei --_000_SI2P153MB04412944658A25DB25666079BB249SI2P153MB0441APCP_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi,

 

We are working on enabling FreeBSD running on ARM= 64 Hyper-V at Microsoft. Right now we are hitting a road blocker which seem= s only happening on FreeBSD guest, due to its newbus architecture and how r= esources are presented in Hyper-V's ACPI tables. I am writing in hope to find a short term solution or workaro= und. Without it, it would be hard to make SRIOV work on ARM64 FreeBSD guest= s. Appreciate any inputs.

 

Here are the details. Hyper-V presents two system= resources at two different places/nodes in its ACPI table.

 

1) PCI mmio resource in HID "ACPI0004",= which is needed by the FreeBSD guest for SRIOV devices.

 

   Device (\_SB.VMOD)   = <-- This is currently owned by acpi_syscontainer module on FreeBSD=

    {

        Name (= _HID, "ACPI0004= " /* Module Device */)  // _HID: Hardware ID

        Name (= _UID, Zero)  // _UID: Unique ID

        Name (= _CRS, ResourceTemplate ()  // _CRS: Current Resource Settings

        {=

        &= nbsp;   ...

        }=

        Create= DWordField (_CRS, \_SB.VMOD._Y00._MIN, MIN6)  // _MIN: Minimum Base Ad= dress

        Create= DWordField (_CRS, \_SB.VMOD._Y00._MAX, MAX6)  // _MAX: Maximum Base Ad= dress

        Create= DWordField (_CRS, \_SB.VMOD._Y00._LEN, LEN6)  // _LEN: Length

        Create= QWordField (_CRS, \_SB.VMOD._Y01._MIN, MIN7)  // _MIN: Minimum Base Ad= dress

        Create= QWordField (_CRS, \_SB.VMOD._Y01._MAX, MAX7)  // _MAX: Maximum Base Ad= dress

        Create= QWordField (_CRS, \_SB.VMOD._Y01._LEN, LEN7)  // _LEN: Length

        Method= (_INI, 0, NotSerialized)  // _INI: Initialize

        {=

        &= nbsp;   MIN6 =3D MG2B /* \MG2B */

        &= nbsp;   LEN6 =3D MG2L /* \MG2L */

        &= nbsp;   Local0 =3D MG2L /* \MG2L */

        &= nbsp;   MAX6 =3D (MIN6 + Local0--)

        &= nbsp;   Local1 =3D (HMIB << 0x14)

        &= nbsp;   Local2 =3D (HMIL << 0x14)

        &= nbsp;   MIN7 =3D Local1

        &= nbsp;   LEN7 =3D Local2

         =    Local0 =3D Local2

        &= nbsp;   MAX7 =3D (MIN7 + Local0--)

        }=

    }

 

2) Vmbus IRQ resource in HID "VMBus", w= hich is needed to get Hyper-V vmbus interrupt to work on guests.=

Device (\_SB.VMOD.VMBS)   <--- curre= ntly owned by vmbus_res module on FreeBSD

    {

        ...

        Name (= _HID, "VMBus")  // _HID: Hardware ID

        Name (= _UID, Zero)  // _UID: Unique ID

        ...

        Name (= _CRS, ResourceTemplate ()  // _CRS: Current Resource Settings

        {=

        &= nbsp;   Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,= ,, )

        &= nbsp;   {

        &= nbsp;       0x00000012,

        &= nbsp;   }

        })

    }

 

On x86, FreeBSD just needs PCI mmio resource 1). = We ignore the vmbus IRQ resource in the ACPI and pick a fixed vector for al= l cpu interrupt. But on ARM64, the guest needs all the information in order= to make bus_alloc_resouce() to work for both interrupt and mmio. Therefore, the main Hyper-V device driver vmb= us needs to be the child for both these nodes to make the resource allocati= on to work. But it seems to us that one device driver can only have one par= ent in the newbus architecture, we can only make one resource allocation to work in this scenario, either = IRQ or mmio, but not both.

 

Following is a picture of current device tree on = a AMD64 FreeBSD guest on Hyper-V

 

 

As you can see vmbus module is under acpi_syscont= ainer which owns PCI mmio resource. The vmbus IRQ resouce is owned by vmbus= _res module, which is just a place holder for this resouce and never been u= sed on am64. On ARM64, vmbus module needs to be the child for both vmbus_res and acpi_syscontainer to get the = both resources, which doesn’t seem to be possible under newbus archit= ecture.

 

Any suggestions or workarounds are welcome. Thank= s in advacne.

 

Wei

 

 

--_000_SI2P153MB04412944658A25DB25666079BB249SI2P153MB0441APCP_-- --_004_SI2P153MB04412944658A25DB25666079BB249SI2P153MB0441APCP_ Content-Type: image/png; name="image002.png" Content-Description: image002.png Content-Disposition: inline; filename="image002.png"; size=24247; creation-date="Thu, 13 Oct 2022 11:43:28 GMT"; modification-date="Fri, 14 Oct 2022 06:03:18 GMT" Content-ID: Content-Transfer-Encoding: base64 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 /H/woNDxLIgihwAAAABJRU5ErkJggg== --_004_SI2P153MB04412944658A25DB25666079BB249SI2P153MB0441APCP_--