From nobody Sat May 18 19:24:38 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1608212016; cv=none; d=zohomail.com; s=zohoarc; b=QSxUAzFxTjvDfbObFxqpypRKaDqVzko/CRpkGL8nWRCnStKSYw1lf6WCiiGCbFaxy9e7dj9b4rPXSupZg+DJOOovGEw4IF5CkD8z8A8IyJC7f0dNiYJq58HmDs8teXoQeHszsu9VKlj2BahMiA0s761pjO7e8aAororMVEe4/GY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608212016; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=HtzrpjDCmI4y5Ccd8Y8/qNubYseuRxLQtyV9m+3f9yo=; b=RwnfdFvgqIM3LfCvWXB2h/6OsKiGw316WQtSCg/PCd7b1xpp1wlKXmpdvuQ/fAyGvqhZ17LzLkb4DiT+JArZ1wsuROBS6w5/XrUPg3V3d5mNIpT/YoC+uLM8gh6sp3g6Sn2smXc9GQuBoCKlmTgXYjFyjTPg5iksgfBeRF6PTlQ= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1608212016014331.21691223303867; Thu, 17 Dec 2020 05:33:36 -0800 (PST) Received: from localhost ([::1]:49294 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kptPR-0003tB-Hf for importer@patchew.org; Thu, 17 Dec 2020 08:33:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44288) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kptM9-000207-AY for qemu-devel@nongnu.org; Thu, 17 Dec 2020 08:30:09 -0500 Received: from szxga05-in.huawei.com ([45.249.212.191]:2479) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kptM5-0002Ss-Ln for qemu-devel@nongnu.org; Thu, 17 Dec 2020 08:30:09 -0500 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.59]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4CxXs13v98zM5pB; Thu, 17 Dec 2020 21:29:09 +0800 (CST) Received: from localhost (10.174.184.155) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.498.0; Thu, 17 Dec 2020 21:29:50 +0800 From: Jiahui Cen To: Subject: [PATCH] acpi/gpex: Inform os to keep firmware resource map Date: Thu, 17 Dec 2020 21:29:26 +0800 Message-ID: <20201217132926.4812-1-cenjiahui@huawei.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.174.184.155] X-CFilter-Loop: Reflected Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=45.249.212.191; envelope-from=cenjiahui@huawei.com; helo=szxga05-in.huawei.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: xieyingtai@huawei.com, Igor Mammedov , Jiahui Cen , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" There may be some differences in pci resource assignment between guest os and firmware. Eg. A Bridge with Bus [d2] -+-[0000:d2]---01.0-[d3]----01.0 where [d2:01.00] is a pcie-pci-bridge with BAR0 (mem, 64-bit, non-pref)= [size=3D256] [d3:01.00] is a PCI Device with BAR0 (mem, 64-bit, pref) [size=3D= 128K] BAR4 (mem, 64-bit, pref) [size=3D= 64M] In EDK2, the Resource Map would be: PciBus: Resource Map for Bridge [D2|01|00] Type =3D PMem64; Base =3D 0x8004000000; Length =3D 0x4100000; = Alignment =3D 0x3FFFFFF Base =3D 0x8004000000; Length =3D 0x4000000; Alignment =3D 0= x3FFFFFF; Owner =3D PCI [D3|01|00:20] Base =3D 0x8008000000; Length =3D 0x20000; Alignment =3D 0= x1FFFF; Owner =3D PCI [D3|01|00:10] Type =3D Mem64; Base =3D 0x8008100000; Length =3D 0x100; Align= ment =3D 0xFFF While in Linux, kernel will use 0x2FFFFFF as the alignment to calculate the PMem64 size, which would be 0x6000000. The diffences could result in resource assignment failure. Using _DSM #5 method to inform guest os not to ignore the PCI configuration that firmware has done at boot time could handle the differences. Signed-off-by: Jiahui Cen --- hw/pci-host/gpex-acpi.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/pci-host/gpex-acpi.c b/hw/pci-host/gpex-acpi.c index 071aa11b5c..2b490f3379 100644 --- a/hw/pci-host/gpex-acpi.c +++ b/hw/pci-host/gpex-acpi.c @@ -112,10 +112,19 @@ static void acpi_dsdt_add_pci_osc(Aml *dev) UUID =3D aml_touuid("E5C937D0-3553-4D7A-9117-EA4D19C3434D"); ifctx =3D aml_if(aml_equal(aml_arg(0), UUID)); ifctx1 =3D aml_if(aml_equal(aml_arg(2), aml_int(0))); - uint8_t byte_list[1] =3D {1}; + uint8_t byte_list[1] =3D {0x21}; buf =3D aml_buffer(1, byte_list); aml_append(ifctx1, aml_return(buf)); aml_append(ifctx, ifctx1); + + /* PCI Firmware Specification 3.2 + * 4.6.5. _DSM for Ignoring PCI Boot Configurations + * The UUID in _DSM in this context is + * {E5C937D0-3553-4D7A-9117-EA4D19C3434D} + */ + ifctx1 =3D aml_if(aml_equal(aml_arg(2), aml_int(5))); + aml_append(ifctx1, aml_return(aml_int(0))); + aml_append(ifctx, ifctx1); aml_append(method, ifctx); =20 byte_list[0] =3D 0; --=20 2.28.0