|
From: | Gavin Shan |
Subject: | Re: [PATCH 0/5] target/arm: Support variable sized coprocessor registers |
Date: | Mon, 11 Apr 2022 17:49:52 +0800 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.0 |
Hi Peter, On 4/11/22 5:22 PM, Peter Maydell wrote:
On Mon, 11 Apr 2022 at 07:59, Gavin Shan <gshan@redhat.com> wrote:There are two arrays for each CPU, to store the indexes and values of the coprocessor registers. Currently, 8 bytes fixed storage space is reserved for each coprocessor register. However, larger coprocessor registers have been defined and exposed by KVM. Except SVE registers, no coprocessor register exceeds 8 bytes in size. It doesn't mean large coprocessor registers won't be exploited in future. For example, I'm looking into SDEI virtualization support, which isn't merged into Linux upstream yet. I have plan to add several coprocessor ("firmware pseudo") registers to assist the migration.So, can you give an example of coprocessor registers which are not 8 bytes in size? How are they accessed by the guest? If we need to support them then we need to support them, but this cover letter/series doesn't seem to me to provide enough detail to make the case that they really are necessary. Also, we support SVE today, and we don't have variable size coprocessor registers. Is there a bug here that we would be fixing ?
[Cc Oliver Upon] Apart from SVE registers, I don't think we have any more large registers whose sizes exceed 8 bytes for now, until SDEI virtualization needs more large registers for migration. I'm working the KVM series to support SDEI virtualization and last revision is v6. One of the requirement is to migrate the SDEI events and states. In v5, the migration is done by the dedicated ioctl commands and it was suggested by Oliver to use {GET, SET}_ONE_REG. Note that the series isn't merged yet. So I had the prototype to support SDEI's migration through {GET, SET}_ONE_REG. Note that those newly added registers are inaccessible from guest. https://github.com/gwshan/linux/commit/c2e5de5e210de6b003d1e1330eeb0958cf7007f5 (branch: kvm/arm64_sdei) https://lore.kernel.org/lkml/20220403153911.12332-13-gshan@redhat.com/T/ (last revision: v6) https://lore.kernel.org/kvmarm/YjtYuk+Jx1dFPQQ9@google.com/ (v5) There are large coprocessor register sizes, like U2048, exposed by KVM. However, it seems we never support those large coprocessor registers. I'm not sure if we have any challenges to support those large registers, or we don't have the needs yet? Thanks, Gavin
[Prev in Thread] | Current Thread | [Next in Thread] |