From: Jonathan Cameron via <qemu-devel@nongnu.org> To: Dan Williams <dan.j.williams@intel.com> Cc: "Michael S. Tsirkin" <mst@redhat.com>, Dave Jiang <dave.jiang@intel.com>, <thuth@redhat.com>, <qemu-devel@nongnu.org>, <peter.maydell@linaro.org>, <imammedo@redhat.com>, <anisinha@redhat.com>, <marcel.apfelbaum@gmail.com>, <pbonzini@redhat.com>, <richard.henderson@linaro.org>, <eduardo@habkost.net>, <linux-cxl@vger.kernel.org> Subject: Re: [PATCH v3] hw/cxl: Add QTG _DSM support for ACPI0017 device Date: Mon, 9 Oct 2023 16:44:34 +0100 [thread overview] Message-ID: <20231009164434.00006711@Huawei.com> (raw) In-Reply-To: <652048e465c8d_ae7e7294e9@dwillia2-xfh.jf.intel.com.notmuch> On Fri, 6 Oct 2023 10:50:28 -0700 Dan Williams <dan.j.williams@intel.com> wrote: > Jonathan Cameron wrote: > [..] > > > > > > > > > > what does "a WORD" mean is unclear - do you match what hardware does > > > > > when you use aml_buffer? pls mention this in commit log, and > > > > > show actual hardware dump for comparison. > > > > The CXL spec says WORD without much qualification. It's a 16bit value AFAICT. I'll add additional comment. Currently I do not have access to actual hardware unfortunately. I'm constructing this purely based on spec description. > > > > > > > WORD does seem to be clearly defined in the ACPI spec as uint16 > > and as this is describing a DSDT blob I think we can safe that > > it means that. Also lines up with the fixed sizes in CEDT. > > I am not sure it means that, the ACPI specification indicates that packages > can hold "integers" and integers can be any size up to 64-bits. I agree that intent might be more general than an AML WORD but was being paranoid on the basis using one was definitely never wrong ;) > > > > It's not clear buffer is actually word though. > > > > > > Jonathan do you have hardware access? > > > > No. +CC linux-cxl to see if anyone else has hardware + BIOS with > > QTG implemented... There will be lots of implementations soon so I'd make > > not guarantee they will all interpret this the same. > > > > Aim here is Linux kernel enablement support, and unfortunately that almost > > always means we are ahead of easy availability of hardware. If it exists > > its probably prototypes in a lab, in which case no guarantees on the > > BIOS tables presented... > > From a pre-production system the ASL is putting the result of SizeOf > directly into the first element in the return package: > > Local1 = SizeOf (CXQI) > Local0 [0x00] = Local1 > > ...where CXQI appears to be a fixed table of QTG ids for the platform, and > SizeOf() returns an integer type with no restriction that it be a 16-bit > value. > > So I think the specification is misleading by specifying WORD when ACPI > "Package" objects convey "Integers" where the size of the integer can be a > u8 to a u64. Good, that's simpler. > > > > Also, possible to get clarification from the spec committee? > > > > I'm unclear what we are clarifying. As I read it current implementation > > is indeed wrong and I failed to notice this earlier :( > > > > Ultimately data encoding (ACPI 6.5 section 20.2..3 Data Objects Encoding) > > should I think be > > > > 0x0B 0x00 0x00 > > WordPrefix then data : note if you try a 0x0001 and feed > > it to iasl it will squash it into a byte instead and indeed if you > > force the binary to the above it will decode it as 0x0000 but recompile > > that and you will be back to just > > 0x00 (as bytes don't need a prefix..) > > > > Currently it would be. > > 0x11 0x05 0x0a 0x02 0x00 0x01 > > BufferOp > > > > Btw I built a minimal DSDT file to test this and iasl isn't happy with > > the fact the _DSM doesn't return anything at all if ARG2 isn't 1 or 2. > > Whilst that's imdef territory as not covered by the CXL spec, we should > > return 'something' ;) > > > > Anyhow, to do this as per the CXL spec we need an aml_word() > > that just implements the word case from aml_int() > > If I understand correctly, aml_int() is sufficient since this is not a > Field() where access size matters. > > > Chance are that it never matters if we get an ecoding that is > > only single byte (because the value is small) but who knows what > > other AML parsers might do. > > I expect the reason WORD is used in the specification is because of the > size of the QTG ID field in the CFMWS. ACPI could support returning more > than USHRT_MAX in an Integer field in a Package, but those IDs above > USHRT_MAX could not be represented in CFMWS. Agreed that's probably the cause and if anyone does use an AML WORD by forcing the prefix, it does no harm for software stacks that assume INTEGER. > > [..] > > > but again it is not clear at all what does spec mean. > > > an integer up to 0xfffff? a buffer as you did? just two bytes? > > > > > > could be any of these. > > > > The best we have in the way of description is the multiple QTG example > > where it's > > Package() {2, 1} combined with it being made up of WORDs > > > > whereas in general that will get squashed to a pair of bytes... > > So I'm thinking WORDs is max size rather than only size but > > given ambiguity we should encode them as words anyway. > > My assertion is that for the Package format the size of the integer does > not matter because the Package.Integer type can convey up to 64-bit values. > For being compatible with the *usage* of that max id, values that do not > fit into 16-bits are out of spec, but nothing prevents the Package from > using any size integer, afaics. > Works for me, though we should do the leg work to get the spec tweaked to clarify this.. Jonathan
WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com> To: Dan Williams <dan.j.williams@intel.com> Cc: "Michael S. Tsirkin" <mst@redhat.com>, Dave Jiang <dave.jiang@intel.com>, <thuth@redhat.com>, <qemu-devel@nongnu.org>, <peter.maydell@linaro.org>, <imammedo@redhat.com>, <anisinha@redhat.com>, <marcel.apfelbaum@gmail.com>, <pbonzini@redhat.com>, <richard.henderson@linaro.org>, <eduardo@habkost.net>, <linux-cxl@vger.kernel.org> Subject: Re: [PATCH v3] hw/cxl: Add QTG _DSM support for ACPI0017 device Date: Mon, 9 Oct 2023 16:44:34 +0100 [thread overview] Message-ID: <20231009164434.00006711@Huawei.com> (raw) Message-ID: <20231009154434.NK17QEzjR46xt-xyWXGxHzYltZ922eyjqT_O1Tqpacg@z> (raw) In-Reply-To: <652048e465c8d_ae7e7294e9@dwillia2-xfh.jf.intel.com.notmuch> On Fri, 6 Oct 2023 10:50:28 -0700 Dan Williams <dan.j.williams@intel.com> wrote: > Jonathan Cameron wrote: > [..] > > > > > > > > > > what does "a WORD" mean is unclear - do you match what hardware does > > > > > when you use aml_buffer? pls mention this in commit log, and > > > > > show actual hardware dump for comparison. > > > > The CXL spec says WORD without much qualification. It's a 16bit value AFAICT. I'll add additional comment. Currently I do not have access to actual hardware unfortunately. I'm constructing this purely based on spec description. > > > > > > > WORD does seem to be clearly defined in the ACPI spec as uint16 > > and as this is describing a DSDT blob I think we can safe that > > it means that. Also lines up with the fixed sizes in CEDT. > > I am not sure it means that, the ACPI specification indicates that packages > can hold "integers" and integers can be any size up to 64-bits. I agree that intent might be more general than an AML WORD but was being paranoid on the basis using one was definitely never wrong ;) > > > > It's not clear buffer is actually word though. > > > > > > Jonathan do you have hardware access? > > > > No. +CC linux-cxl to see if anyone else has hardware + BIOS with > > QTG implemented... There will be lots of implementations soon so I'd make > > not guarantee they will all interpret this the same. > > > > Aim here is Linux kernel enablement support, and unfortunately that almost > > always means we are ahead of easy availability of hardware. If it exists > > its probably prototypes in a lab, in which case no guarantees on the > > BIOS tables presented... > > From a pre-production system the ASL is putting the result of SizeOf > directly into the first element in the return package: > > Local1 = SizeOf (CXQI) > Local0 [0x00] = Local1 > > ...where CXQI appears to be a fixed table of QTG ids for the platform, and > SizeOf() returns an integer type with no restriction that it be a 16-bit > value. > > So I think the specification is misleading by specifying WORD when ACPI > "Package" objects convey "Integers" where the size of the integer can be a > u8 to a u64. Good, that's simpler. > > > > Also, possible to get clarification from the spec committee? > > > > I'm unclear what we are clarifying. As I read it current implementation > > is indeed wrong and I failed to notice this earlier :( > > > > Ultimately data encoding (ACPI 6.5 section 20.2..3 Data Objects Encoding) > > should I think be > > > > 0x0B 0x00 0x00 > > WordPrefix then data : note if you try a 0x0001 and feed > > it to iasl it will squash it into a byte instead and indeed if you > > force the binary to the above it will decode it as 0x0000 but recompile > > that and you will be back to just > > 0x00 (as bytes don't need a prefix..) > > > > Currently it would be. > > 0x11 0x05 0x0a 0x02 0x00 0x01 > > BufferOp > > > > Btw I built a minimal DSDT file to test this and iasl isn't happy with > > the fact the _DSM doesn't return anything at all if ARG2 isn't 1 or 2. > > Whilst that's imdef territory as not covered by the CXL spec, we should > > return 'something' ;) > > > > Anyhow, to do this as per the CXL spec we need an aml_word() > > that just implements the word case from aml_int() > > If I understand correctly, aml_int() is sufficient since this is not a > Field() where access size matters. > > > Chance are that it never matters if we get an ecoding that is > > only single byte (because the value is small) but who knows what > > other AML parsers might do. > > I expect the reason WORD is used in the specification is because of the > size of the QTG ID field in the CFMWS. ACPI could support returning more > than USHRT_MAX in an Integer field in a Package, but those IDs above > USHRT_MAX could not be represented in CFMWS. Agreed that's probably the cause and if anyone does use an AML WORD by forcing the prefix, it does no harm for software stacks that assume INTEGER. > > [..] > > > but again it is not clear at all what does spec mean. > > > an integer up to 0xfffff? a buffer as you did? just two bytes? > > > > > > could be any of these. > > > > The best we have in the way of description is the multiple QTG example > > where it's > > Package() {2, 1} combined with it being made up of WORDs > > > > whereas in general that will get squashed to a pair of bytes... > > So I'm thinking WORDs is max size rather than only size but > > given ambiguity we should encode them as words anyway. > > My assertion is that for the Package format the size of the integer does > not matter because the Package.Integer type can convey up to 64-bit values. > For being compatible with the *usage* of that max id, values that do not > fit into 16-bits are out of spec, but nothing prevents the Package from > using any size integer, afaics. > Works for me, though we should do the leg work to get the spec tweaked to clarify this.. Jonathan
next prev parent reply other threads:[~2023-10-09 15:45 UTC|newest] Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-10-04 8:43 [PULL 00/63] virtio,pci: features, cleanups Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 01/63] pci: SLT must be RO Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 02/63] hw/virtio: Propagate page_mask to vhost_vdpa_listener_skipped_section() Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 03/63] hw/virtio: Propagate page_mask to vhost_vdpa_section_end() Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 04/63] hw/virtio/vhost-vdpa: Inline TARGET_PAGE_ALIGN() macro Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 05/63] hw/virtio/vhost-vdpa: Use target-agnostic qemu_target_page_mask() Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 06/63] hw/virtio: Build vhost-vdpa.o once Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 07/63] hw/virtio/meson: Rename softmmu_virtio_ss[] -> system_virtio_ss[] Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 08/63] virtio: add vhost-user-base and a generic vhost-user-device Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 09/63] hw/virtio: add config support to vhost-user-device Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 10/63] virtio-net: do not reset vlan filtering at set_features Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 11/63] virtio-net: Expose MAX_VLAN Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 12/63] vdpa: Restore vlan filtering state Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 13/63] vdpa: Allow VIRTIO_NET_F_CTRL_VLAN in SVQ Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 14/63] virtio: don't zero out memory region cache for indirect descriptors Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 15/63] vdpa: use first queue SVQ state for CVQ default Michael S. Tsirkin 2023-10-04 8:43 ` [PULL 16/63] vdpa: export vhost_vdpa_set_vring_ready Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 17/63] vdpa: rename vhost_vdpa_net_load to vhost_vdpa_net_cvq_load Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 18/63] vdpa: move vhost_vdpa_set_vring_ready to the caller Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 19/63] vdpa: remove net cvq migration blocker Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 20/63] vhost: Add count argument to vhost_svq_poll() Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 21/63] qmp: remove virtio_list, search QOM tree instead Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 22/63] qmp: update virtio feature maps, vhost-user-gpio introspection Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 23/63] vhost-user: move VhostUserProtocolFeature definition to header file Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 24/63] vhost-user: strip superfluous whitespace Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 25/63] vhost-user: tighten "reply_supported" scope in "set_vring_addr" Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 26/63] vhost-user: factor out "vhost_user_write_sync" Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 27/63] vhost-user: flatten "enforce_reply" into "vhost_user_write_sync" Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 28/63] vhost-user: hoist "write_sync", "get_features", "get_u64" Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 29/63] vhost-user: allow "vhost_set_vring" to wait for a reply Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 30/63] vhost-user: call VHOST_USER_SET_VRING_ENABLE synchronously Michael S. Tsirkin 2023-10-04 10:11 ` Laszlo Ersek 2023-10-04 12:53 ` Michael S. Tsirkin 2023-10-04 13:28 ` Laszlo Ersek 2023-10-04 8:44 ` [PULL 31/63] hw/isa/ich9: Add comment on imperfect emulation of PIC vs. I/O APIC routing Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 32/63] tests/acpi: Allow update of DSDT.cxl Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 33/63] hw/cxl: Add QTG _DSM support for ACPI0017 device Michael S. Tsirkin 2023-10-04 17:46 ` Thomas Huth 2023-10-04 22:14 ` Michael S. Tsirkin 2023-10-04 23:09 ` [PATCH v3] " Dave Jiang 2023-10-05 3:36 ` Michael S. Tsirkin 2023-10-05 16:11 ` Dave Jiang 2023-10-05 16:32 ` Michael S. Tsirkin 2023-10-06 12:09 ` Jonathan Cameron via 2023-10-06 12:09 ` Jonathan Cameron 2023-10-06 17:50 ` Dan Williams 2023-10-06 22:15 ` [PATCH v4] " Dave Jiang 2023-10-09 15:47 ` Jonathan Cameron via 2023-10-09 15:47 ` Jonathan Cameron 2023-10-09 16:06 ` Dave Jiang 2023-10-09 15:44 ` Jonathan Cameron via [this message] 2023-10-09 15:44 ` [PATCH v3] " Jonathan Cameron 2023-10-07 21:17 ` Michael S. Tsirkin 2023-10-09 15:40 ` Jonathan Cameron via 2023-10-09 15:40 ` Jonathan Cameron 2023-10-05 17:00 ` Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 34/63] tests/acpi: Update DSDT.cxl with QTG DSM Michael S. Tsirkin 2023-10-04 8:44 ` [PULL 35/63] hw/i386/acpi-build: Use pc_madt_cpu_entry() directly Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 36/63] hw/acpi/cpu: Have build_cpus_aml() take a build_madt_cpu_fn callback Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 37/63] hw/acpi/acpi_dev_interface: Remove now unused madt_cpu virtual method Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 38/63] hw/acpi/acpi_dev_interface: Remove now unused #include "hw/boards.h" Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 39/63] hw/i386: Remove now redundant TYPE_ACPI_GED_X86 Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 40/63] hw/i386/acpi-build: Determine SMI command port just once Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 41/63] hw/acpi: Trace GPE access in all device models, not just PIIX4 Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 42/63] hw/acpi/core: Trace enable and status registers of GPE separately Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 43/63] vdpa: fix gcc cvq_isolated uninitialized variable warning Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 44/63] vdpa net: zero vhost_vdpa iova_tree pointer at cleanup Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 45/63] hw/cxl: Push cxl_decoder_count_enc() and cxl_decode_ig() into .c Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 46/63] hw/cxl: Add utility functions decoder interleave ways and target count Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 47/63] hw/cxl: Fix and use same calculation for HDM decoder block size everywhere Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 48/63] hw/cxl: Support 4 HDM decoders at all levels of topology Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 49/63] hw/pci-bridge/cxl-upstream: Add serial number extended capability support Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 50/63] vdpa net: fix error message setting virtio status Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 51/63] vdpa net: stop probing if cannot set features Michael S. Tsirkin 2023-10-04 8:45 ` [PULL 52/63] vdpa net: follow VirtIO initialization properly at cvq isolation probing Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 53/63] amd_iommu: Fix APIC address check Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 54/63] hw/i386/pc: improve physical address space bound check for 32-bit x86 systems Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 55/63] pcie_sriov: unregister_vfs(): fix error path Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 56/63] libvhost-user.c: add assertion to vu_message_read_default Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 57/63] virtio: use shadow_avail_idx while checking number of heads Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 58/63] virtio: remove unnecessary thread fence while reading next descriptor Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 59/63] virtio: remove unused next argument from virtqueue_split_read_next_desc() Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 60/63] util/uuid: add a hash function Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 61/63] hw/display: introduce virtio-dmabuf Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 62/63] vhost-user: add shared_object msg Michael S. Tsirkin 2023-10-04 8:46 ` [PULL 63/63] libvhost-user: handle " Michael S. Tsirkin 2023-10-04 8:54 ` [PULL 00/63] virtio,pci: features, cleanups Philippe Mathieu-Daudé 2023-10-04 9:08 ` Michael S. Tsirkin 2023-10-04 8:58 ` Michael S. Tsirkin 2023-10-04 16:26 ` Michael S. Tsirkin 2023-10-04 16:50 ` Stefan Hajnoczi 2023-10-04 17:04 ` Michael S. Tsirkin 2023-10-04 17:40 ` Thomas Huth 2023-10-04 22:23 ` Michael S. Tsirkin 2023-10-05 6:10 ` Thomas Huth 2023-10-04 18:23 ` Stefan Hajnoczi 2023-10-04 17:20 ` Michael S. Tsirkin 2023-10-04 18:29 ` Stefan Hajnoczi 2023-10-04 22:16 ` Michael S. Tsirkin
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=20231009164434.00006711@Huawei.com \ --to=qemu-devel@nongnu.org \ --cc=Jonathan.Cameron@Huawei.com \ --cc=anisinha@redhat.com \ --cc=dan.j.williams@intel.com \ --cc=dave.jiang@intel.com \ --cc=eduardo@habkost.net \ --cc=imammedo@redhat.com \ --cc=linux-cxl@vger.kernel.org \ --cc=marcel.apfelbaum@gmail.com \ --cc=mst@redhat.com \ --cc=pbonzini@redhat.com \ --cc=peter.maydell@linaro.org \ --cc=richard.henderson@linaro.org \ --cc=thuth@redhat.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).