|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 10/10] arm64: Change type of hsr, cpsr, spsr_el1 to uint64_t
On 05.05.2021 09:43, Michal Orzel wrote:
> --- a/xen/include/public/arch-arm.h
> +++ b/xen/include/public/arch-arm.h
> @@ -267,10 +267,10 @@ struct vcpu_guest_core_regs
>
> /* Return address and mode */
> __DECL_REG(pc64, pc32); /* ELR_EL2 */
> - uint32_t cpsr; /* SPSR_EL2 */
> + uint64_t cpsr; /* SPSR_EL2 */
>
> union {
> - uint32_t spsr_el1; /* AArch64 */
> + uint64_t spsr_el1; /* AArch64 */
> uint32_t spsr_svc; /* AArch32 */
> };
This change affects, besides domctl, also default_initialise_vcpu(),
which Arm's arch_initialise_vcpu() calls. I realize do_arm_vcpu_op()
only allows two unrelated VCPUOP_* to pass, but then I don't
understand why arch_initialise_vcpu() doesn't simply return e.g.
-EOPNOTSUPP. Hence I suspect I'm missing something.
> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -38,7 +38,7 @@
> #include "hvm/save.h"
> #include "memory.h"
>
> -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000013
> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000014
So this is to cover for the struct vcpu_guest_core_regs change.
> --- a/xen/include/public/vm_event.h
> +++ b/xen/include/public/vm_event.h
> @@ -266,8 +266,7 @@ struct vm_event_regs_arm {
> uint64_t ttbr1;
> uint64_t ttbcr;
> uint64_t pc;
> - uint32_t cpsr;
> - uint32_t _pad;
> + uint64_t cpsr;
> };
Then I wonder why this isn't accompanied by a similar bump of
VM_EVENT_INTERFACE_VERSION. I don't see you drop any checking /
filling of the _pad field, so existing callers may pass garbage
there, and new callers need to be prevented from looking at the
upper half when running on an older hypervisor.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |