From: Jiahui Cen <cenjiahui@huawei.com>
To: <qemu-devel@nongnu.org>
Cc: xieyingtai@huawei.com, Igor Mammedov <imammedo@redhat.com>,
Laszlo Ersek <lersek@redhat.com>,
Gerd Hoffmann <kraxel@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH] acpi/gpex: Inform os to keep firmware resource map
Date: Thu, 17 Dec 2020 21:52:26 +0800 [thread overview]
Message-ID: <44529260-f89a-67b5-d6ab-3652376badcc@huawei.com> (raw)
In-Reply-To: <20201217132926.4812-1-cenjiahui@huawei.com>
+Laszlo
On 2020/12/17 21:29, Jiahui Cen wrote:
> 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=256]
> [d3:01.00] is a PCI Device with BAR0 (mem, 64-bit, pref) [size=128K]
> BAR4 (mem, 64-bit, pref) [size=64M]
>
> In EDK2, the Resource Map would be:
> PciBus: Resource Map for Bridge [D2|01|00]
> Type = PMem64; Base = 0x8004000000; Length = 0x4100000; Alignment = 0x3FFFFFF
> Base = 0x8004000000; Length = 0x4000000; Alignment = 0x3FFFFFF; Owner = PCI [D3|01|00:20]
> Base = 0x8008000000; Length = 0x20000; Alignment = 0x1FFFF; Owner = PCI [D3|01|00:10]
> Type = Mem64; Base = 0x8008100000; Length = 0x100; Alignment = 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 <cenjiahui@huawei.com>
> ---
> 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 = aml_touuid("E5C937D0-3553-4D7A-9117-EA4D19C3434D");
> ifctx = aml_if(aml_equal(aml_arg(0), UUID));
> ifctx1 = aml_if(aml_equal(aml_arg(2), aml_int(0)));
> - uint8_t byte_list[1] = {1};
> + uint8_t byte_list[1] = {0x21};
> buf = 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 = 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);
>
> byte_list[0] = 0;
>
next prev parent reply other threads:[~2020-12-17 13:53 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-17 13:29 [PATCH] acpi/gpex: Inform os to keep firmware resource map Jiahui Cen
2020-12-17 13:52 ` Jiahui Cen [this message]
2020-12-17 17:23 ` Laszlo Ersek
2020-12-17 19:24 ` Ard Biesheuvel
2020-12-17 18:29 ` Michael S. Tsirkin
2020-12-18 5:56 ` Jiahui Cen
2020-12-17 20:04 ` Michael S. Tsirkin
2020-12-18 5:56 ` Jiahui Cen
2020-12-19 19:06 ` Michael S. Tsirkin
2020-12-21 1:12 ` Jiahui Cen
2021-07-22 5:22 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=44529260-f89a-67b5-d6ab-3652376badcc@huawei.com \
--to=cenjiahui@huawei.com \
--cc=imammedo@redhat.com \
--cc=kraxel@redhat.com \
--cc=lersek@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=xieyingtai@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.