All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zenghui Yu <yuzenghui@huawei.com>
To: Steven Price <steven.price@arm.com>
Cc: <linux-kernel@vger.kernel.org>, <kvm@vger.kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	<linux-doc@vger.kernel.org>, Russell King <linux@armlinux.org.uk>,
	<linux-arm-kernel@lists.infradead.org>,
	Marc Zyngier <maz@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Will Deacon <will@kernel.org>, <kvmarm@lists.cs.columbia.edu>
Subject: Re: [PATCH 9/9] arm64: Retrieve stolen time as paravirtualized guest
Date: Tue, 13 Aug 2019 14:06:56 +0800	[thread overview]
Message-ID: <42698e3c-c382-8621-7d9e-af09398f4aef@huawei.com> (raw)
In-Reply-To: <07075994-3a32-8f20-23d8-1759ec2874e3@arm.com>

On 2019/8/12 18:39, Steven Price wrote:
> On 09/08/2019 14:51, Zenghui Yu wrote:
> [...]
>> Hi Steven,
>>
>> Since userspace is not involved yet (right?), no one will create the
>> PV_TIME device for guest (and no one will specify the IPA of the shared
>> stolen time region), and I guess we will get a "not supported" error
>> here.
>>
>> So what should we do if we want to test this series now?  Any userspace
>> tools?  If no, do you have any plans for userspace developing? ;-)
> 
> At the moment I have the following patch to kvmtool which creates the
> PV_TIME device - this isn't in a state to go upstream, and Marc has
> asked that I rework the memory allocation, so this will need to change.
> 
> It's a little ugly as it simply reserves the first page of RAM to use
> for the PV time structures.

Thanks for sharing the code. It's good enough to show what is required
in user-space.

(I'm not familiar with kvmtool. I will first take some time to move the
steal time part to Qemu and see what will happen.)


Thanks,
zenghui

> ----8<----
> diff --git a/Makefile b/Makefile
> index 3862112..a79956b 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -158,7 +158,7 @@ endif
>   # ARM
>   OBJS_ARM_COMMON		:= arm/fdt.o arm/gic.o arm/gicv2m.o arm/ioport.o \
>   			   arm/kvm.o arm/kvm-cpu.o arm/pci.o arm/timer.o \
> -			   arm/pmu.o
> +			   arm/pmu.o arm/pvtime.o
>   HDRS_ARM_COMMON		:= arm/include
>   ifeq ($(ARCH), arm)
>   	DEFINES		+= -DCONFIG_ARM
> diff --git a/arm/fdt.c b/arm/fdt.c
> index c80e6da..19eccbc 100644
> --- a/arm/fdt.c
> +++ b/arm/fdt.c
> @@ -119,6 +119,7 @@ static int setup_fdt(struct kvm *kvm)
>   
>   	/* Create new tree without a reserve map */
>   	_FDT(fdt_create(fdt, FDT_MAX_SIZE));
> +	_FDT(fdt_add_reservemap_entry(fdt, kvm->arch.memory_guest_start, 4096));
>   	_FDT(fdt_finish_reservemap(fdt));
>   
>   	/* Header */
> diff --git a/arm/kvm.c b/arm/kvm.c
> index 1f85fc6..8bbfef1 100644
> --- a/arm/kvm.c
> +++ b/arm/kvm.c
> @@ -11,6 +11,8 @@
>   #include <linux/kvm.h>
>   #include <linux/sizes.h>
>   
> +int pvtime_create(struct kvm *kvm);
> +
>   struct kvm_ext kvm_req_ext[] = {
>   	{ DEFINE_KVM_EXT(KVM_CAP_IRQCHIP) },
>   	{ DEFINE_KVM_EXT(KVM_CAP_ONE_REG) },
> @@ -86,6 +88,10 @@ void kvm__arch_init(struct kvm *kvm, const char *hugetlbfs_path, u64 ram_size)
>   	/* Create the virtual GIC. */
>   	if (gic__create(kvm, kvm->cfg.arch.irqchip))
>   		die("Failed to create virtual GIC");
> +
> +	/* Setup PV time */
> +	if (pvtime_create(kvm))
> +		die("Failed to initialise PV time");
>   }
>   
>   #define FDT_ALIGN	SZ_2M
> diff --git a/arm/pvtime.c b/arm/pvtime.c
> new file mode 100644
> index 0000000..abcaab3
> --- /dev/null
> +++ b/arm/pvtime.c
> @@ -0,0 +1,77 @@
> +#include "kvm/kvm.h"
> +
> +#define KVM_DEV_TYPE_ARM_PV_TIME (KVM_DEV_TYPE_ARM_VGIC_ITS+2)
> +
> +/* Device Control API: PV_TIME */
> +#define KVM_DEV_ARM_PV_TIME_PADDR	0
> +#define KVM_DEV_ARM_PV_TIME_FREQUENCY	3
> +
> +#define KVM_DEV_ARM_PV_TIME_ST		0
> +#define KVM_DEV_ARM_PV_TIME_LPT		1
> +
> +static int pvtime_fd;
> +
> +int pvtime_create(struct kvm *kvm);
> +
> +int pvtime_create(struct kvm *kvm)
> +{
> +	int err;
> +	u64 lpt_paddr = 0x10000000;
> +	u64 st_paddr = lpt_paddr + 4096;
> +	u32 frequency = 100 * 1000 * 1000;
> +
> +	printf("lpt_paddr=%llx\n", lpt_paddr);
> +
> +	struct kvm_create_device pvtime_device = {
> +		.type = KVM_DEV_TYPE_ARM_PV_TIME,
> +		.flags = 0,
> +	};
> +
> +	err = ioctl(kvm->vm_fd, KVM_CREATE_DEVICE, &pvtime_device);
> +	if (err) {
> +		printf("Failed to create PV device\n");
> +		return 0;
> +	}
> +
> +	pvtime_fd = pvtime_device.fd;
> +
> +	struct kvm_device_attr lpt_base = {
> +		.group = KVM_DEV_ARM_PV_TIME_PADDR,
> +		.attr = KVM_DEV_ARM_PV_TIME_LPT,
> +		.addr = (u64)(unsigned long)&lpt_paddr
> +	};
> +	struct kvm_device_attr st_base = {
> +		.group = KVM_DEV_ARM_PV_TIME_PADDR,
> +		.attr = KVM_DEV_ARM_PV_TIME_ST,
> +		.addr = (u64)(unsigned long)&st_paddr
> +	};
> +
> +	struct kvm_device_attr lpt_freq = {
> +		.group = KVM_DEV_ARM_PV_TIME_FREQUENCY,
> +		.attr = KVM_DEV_ARM_PV_TIME_LPT,
> +		.addr = (u64)(unsigned long)&frequency
> +	};
> +
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &lpt_base);
> +	if (err) {
> +		perror("ioctl lpt_base failed");
> +		printf("Ignoring LPT...\n");
> +	}
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &st_base);
> +	if (err) {
> +		perror("ioctl st_base failed");
> +		goto out_err;
> +	}
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &lpt_freq);
> +	if (err) {
> +		perror("ioctl lpt_freq failed");
> +		printf("Ignoring LPT...\n");
> +	}
> +
> +	printf("PV time setup\n");
> +
> +	return 0;
> +out_err:
> +	close(pvtime_fd);
> +	return err;
> +}


WARNING: multiple messages have this Message-ID (diff)
From: Zenghui Yu <yuzenghui@huawei.com>
To: Steven Price <steven.price@arm.com>
Cc: kvm@vger.kernel.org, linux-doc@vger.kernel.org,
	Catalin Marinas <catalin.marinas@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	linux-kernel@vger.kernel.org, Marc Zyngier <maz@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Will Deacon <will@kernel.org>,
	kvmarm@lists.cs.columbia.edu,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 9/9] arm64: Retrieve stolen time as paravirtualized guest
Date: Tue, 13 Aug 2019 14:06:56 +0800	[thread overview]
Message-ID: <42698e3c-c382-8621-7d9e-af09398f4aef@huawei.com> (raw)
In-Reply-To: <07075994-3a32-8f20-23d8-1759ec2874e3@arm.com>

On 2019/8/12 18:39, Steven Price wrote:
> On 09/08/2019 14:51, Zenghui Yu wrote:
> [...]
>> Hi Steven,
>>
>> Since userspace is not involved yet (right?), no one will create the
>> PV_TIME device for guest (and no one will specify the IPA of the shared
>> stolen time region), and I guess we will get a "not supported" error
>> here.
>>
>> So what should we do if we want to test this series now?  Any userspace
>> tools?  If no, do you have any plans for userspace developing? ;-)
> 
> At the moment I have the following patch to kvmtool which creates the
> PV_TIME device - this isn't in a state to go upstream, and Marc has
> asked that I rework the memory allocation, so this will need to change.
> 
> It's a little ugly as it simply reserves the first page of RAM to use
> for the PV time structures.

Thanks for sharing the code. It's good enough to show what is required
in user-space.

(I'm not familiar with kvmtool. I will first take some time to move the
steal time part to Qemu and see what will happen.)


Thanks,
zenghui

> ----8<----
> diff --git a/Makefile b/Makefile
> index 3862112..a79956b 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -158,7 +158,7 @@ endif
>   # ARM
>   OBJS_ARM_COMMON		:= arm/fdt.o arm/gic.o arm/gicv2m.o arm/ioport.o \
>   			   arm/kvm.o arm/kvm-cpu.o arm/pci.o arm/timer.o \
> -			   arm/pmu.o
> +			   arm/pmu.o arm/pvtime.o
>   HDRS_ARM_COMMON		:= arm/include
>   ifeq ($(ARCH), arm)
>   	DEFINES		+= -DCONFIG_ARM
> diff --git a/arm/fdt.c b/arm/fdt.c
> index c80e6da..19eccbc 100644
> --- a/arm/fdt.c
> +++ b/arm/fdt.c
> @@ -119,6 +119,7 @@ static int setup_fdt(struct kvm *kvm)
>   
>   	/* Create new tree without a reserve map */
>   	_FDT(fdt_create(fdt, FDT_MAX_SIZE));
> +	_FDT(fdt_add_reservemap_entry(fdt, kvm->arch.memory_guest_start, 4096));
>   	_FDT(fdt_finish_reservemap(fdt));
>   
>   	/* Header */
> diff --git a/arm/kvm.c b/arm/kvm.c
> index 1f85fc6..8bbfef1 100644
> --- a/arm/kvm.c
> +++ b/arm/kvm.c
> @@ -11,6 +11,8 @@
>   #include <linux/kvm.h>
>   #include <linux/sizes.h>
>   
> +int pvtime_create(struct kvm *kvm);
> +
>   struct kvm_ext kvm_req_ext[] = {
>   	{ DEFINE_KVM_EXT(KVM_CAP_IRQCHIP) },
>   	{ DEFINE_KVM_EXT(KVM_CAP_ONE_REG) },
> @@ -86,6 +88,10 @@ void kvm__arch_init(struct kvm *kvm, const char *hugetlbfs_path, u64 ram_size)
>   	/* Create the virtual GIC. */
>   	if (gic__create(kvm, kvm->cfg.arch.irqchip))
>   		die("Failed to create virtual GIC");
> +
> +	/* Setup PV time */
> +	if (pvtime_create(kvm))
> +		die("Failed to initialise PV time");
>   }
>   
>   #define FDT_ALIGN	SZ_2M
> diff --git a/arm/pvtime.c b/arm/pvtime.c
> new file mode 100644
> index 0000000..abcaab3
> --- /dev/null
> +++ b/arm/pvtime.c
> @@ -0,0 +1,77 @@
> +#include "kvm/kvm.h"
> +
> +#define KVM_DEV_TYPE_ARM_PV_TIME (KVM_DEV_TYPE_ARM_VGIC_ITS+2)
> +
> +/* Device Control API: PV_TIME */
> +#define KVM_DEV_ARM_PV_TIME_PADDR	0
> +#define KVM_DEV_ARM_PV_TIME_FREQUENCY	3
> +
> +#define KVM_DEV_ARM_PV_TIME_ST		0
> +#define KVM_DEV_ARM_PV_TIME_LPT		1
> +
> +static int pvtime_fd;
> +
> +int pvtime_create(struct kvm *kvm);
> +
> +int pvtime_create(struct kvm *kvm)
> +{
> +	int err;
> +	u64 lpt_paddr = 0x10000000;
> +	u64 st_paddr = lpt_paddr + 4096;
> +	u32 frequency = 100 * 1000 * 1000;
> +
> +	printf("lpt_paddr=%llx\n", lpt_paddr);
> +
> +	struct kvm_create_device pvtime_device = {
> +		.type = KVM_DEV_TYPE_ARM_PV_TIME,
> +		.flags = 0,
> +	};
> +
> +	err = ioctl(kvm->vm_fd, KVM_CREATE_DEVICE, &pvtime_device);
> +	if (err) {
> +		printf("Failed to create PV device\n");
> +		return 0;
> +	}
> +
> +	pvtime_fd = pvtime_device.fd;
> +
> +	struct kvm_device_attr lpt_base = {
> +		.group = KVM_DEV_ARM_PV_TIME_PADDR,
> +		.attr = KVM_DEV_ARM_PV_TIME_LPT,
> +		.addr = (u64)(unsigned long)&lpt_paddr
> +	};
> +	struct kvm_device_attr st_base = {
> +		.group = KVM_DEV_ARM_PV_TIME_PADDR,
> +		.attr = KVM_DEV_ARM_PV_TIME_ST,
> +		.addr = (u64)(unsigned long)&st_paddr
> +	};
> +
> +	struct kvm_device_attr lpt_freq = {
> +		.group = KVM_DEV_ARM_PV_TIME_FREQUENCY,
> +		.attr = KVM_DEV_ARM_PV_TIME_LPT,
> +		.addr = (u64)(unsigned long)&frequency
> +	};
> +
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &lpt_base);
> +	if (err) {
> +		perror("ioctl lpt_base failed");
> +		printf("Ignoring LPT...\n");
> +	}
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &st_base);
> +	if (err) {
> +		perror("ioctl st_base failed");
> +		goto out_err;
> +	}
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &lpt_freq);
> +	if (err) {
> +		perror("ioctl lpt_freq failed");
> +		printf("Ignoring LPT...\n");
> +	}
> +
> +	printf("PV time setup\n");
> +
> +	return 0;
> +out_err:
> +	close(pvtime_fd);
> +	return err;
> +}

_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

WARNING: multiple messages have this Message-ID (diff)
From: Zenghui Yu <yuzenghui@huawei.com>
To: Steven Price <steven.price@arm.com>
Cc: kvm@vger.kernel.org, linux-doc@vger.kernel.org,
	Catalin Marinas <catalin.marinas@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	linux-kernel@vger.kernel.org, Marc Zyngier <maz@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Will Deacon <will@kernel.org>,
	kvmarm@lists.cs.columbia.edu,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 9/9] arm64: Retrieve stolen time as paravirtualized guest
Date: Tue, 13 Aug 2019 14:06:56 +0800	[thread overview]
Message-ID: <42698e3c-c382-8621-7d9e-af09398f4aef@huawei.com> (raw)
In-Reply-To: <07075994-3a32-8f20-23d8-1759ec2874e3@arm.com>

On 2019/8/12 18:39, Steven Price wrote:
> On 09/08/2019 14:51, Zenghui Yu wrote:
> [...]
>> Hi Steven,
>>
>> Since userspace is not involved yet (right?), no one will create the
>> PV_TIME device for guest (and no one will specify the IPA of the shared
>> stolen time region), and I guess we will get a "not supported" error
>> here.
>>
>> So what should we do if we want to test this series now?  Any userspace
>> tools?  If no, do you have any plans for userspace developing? ;-)
> 
> At the moment I have the following patch to kvmtool which creates the
> PV_TIME device - this isn't in a state to go upstream, and Marc has
> asked that I rework the memory allocation, so this will need to change.
> 
> It's a little ugly as it simply reserves the first page of RAM to use
> for the PV time structures.

Thanks for sharing the code. It's good enough to show what is required
in user-space.

(I'm not familiar with kvmtool. I will first take some time to move the
steal time part to Qemu and see what will happen.)


Thanks,
zenghui

> ----8<----
> diff --git a/Makefile b/Makefile
> index 3862112..a79956b 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -158,7 +158,7 @@ endif
>   # ARM
>   OBJS_ARM_COMMON		:= arm/fdt.o arm/gic.o arm/gicv2m.o arm/ioport.o \
>   			   arm/kvm.o arm/kvm-cpu.o arm/pci.o arm/timer.o \
> -			   arm/pmu.o
> +			   arm/pmu.o arm/pvtime.o
>   HDRS_ARM_COMMON		:= arm/include
>   ifeq ($(ARCH), arm)
>   	DEFINES		+= -DCONFIG_ARM
> diff --git a/arm/fdt.c b/arm/fdt.c
> index c80e6da..19eccbc 100644
> --- a/arm/fdt.c
> +++ b/arm/fdt.c
> @@ -119,6 +119,7 @@ static int setup_fdt(struct kvm *kvm)
>   
>   	/* Create new tree without a reserve map */
>   	_FDT(fdt_create(fdt, FDT_MAX_SIZE));
> +	_FDT(fdt_add_reservemap_entry(fdt, kvm->arch.memory_guest_start, 4096));
>   	_FDT(fdt_finish_reservemap(fdt));
>   
>   	/* Header */
> diff --git a/arm/kvm.c b/arm/kvm.c
> index 1f85fc6..8bbfef1 100644
> --- a/arm/kvm.c
> +++ b/arm/kvm.c
> @@ -11,6 +11,8 @@
>   #include <linux/kvm.h>
>   #include <linux/sizes.h>
>   
> +int pvtime_create(struct kvm *kvm);
> +
>   struct kvm_ext kvm_req_ext[] = {
>   	{ DEFINE_KVM_EXT(KVM_CAP_IRQCHIP) },
>   	{ DEFINE_KVM_EXT(KVM_CAP_ONE_REG) },
> @@ -86,6 +88,10 @@ void kvm__arch_init(struct kvm *kvm, const char *hugetlbfs_path, u64 ram_size)
>   	/* Create the virtual GIC. */
>   	if (gic__create(kvm, kvm->cfg.arch.irqchip))
>   		die("Failed to create virtual GIC");
> +
> +	/* Setup PV time */
> +	if (pvtime_create(kvm))
> +		die("Failed to initialise PV time");
>   }
>   
>   #define FDT_ALIGN	SZ_2M
> diff --git a/arm/pvtime.c b/arm/pvtime.c
> new file mode 100644
> index 0000000..abcaab3
> --- /dev/null
> +++ b/arm/pvtime.c
> @@ -0,0 +1,77 @@
> +#include "kvm/kvm.h"
> +
> +#define KVM_DEV_TYPE_ARM_PV_TIME (KVM_DEV_TYPE_ARM_VGIC_ITS+2)
> +
> +/* Device Control API: PV_TIME */
> +#define KVM_DEV_ARM_PV_TIME_PADDR	0
> +#define KVM_DEV_ARM_PV_TIME_FREQUENCY	3
> +
> +#define KVM_DEV_ARM_PV_TIME_ST		0
> +#define KVM_DEV_ARM_PV_TIME_LPT		1
> +
> +static int pvtime_fd;
> +
> +int pvtime_create(struct kvm *kvm);
> +
> +int pvtime_create(struct kvm *kvm)
> +{
> +	int err;
> +	u64 lpt_paddr = 0x10000000;
> +	u64 st_paddr = lpt_paddr + 4096;
> +	u32 frequency = 100 * 1000 * 1000;
> +
> +	printf("lpt_paddr=%llx\n", lpt_paddr);
> +
> +	struct kvm_create_device pvtime_device = {
> +		.type = KVM_DEV_TYPE_ARM_PV_TIME,
> +		.flags = 0,
> +	};
> +
> +	err = ioctl(kvm->vm_fd, KVM_CREATE_DEVICE, &pvtime_device);
> +	if (err) {
> +		printf("Failed to create PV device\n");
> +		return 0;
> +	}
> +
> +	pvtime_fd = pvtime_device.fd;
> +
> +	struct kvm_device_attr lpt_base = {
> +		.group = KVM_DEV_ARM_PV_TIME_PADDR,
> +		.attr = KVM_DEV_ARM_PV_TIME_LPT,
> +		.addr = (u64)(unsigned long)&lpt_paddr
> +	};
> +	struct kvm_device_attr st_base = {
> +		.group = KVM_DEV_ARM_PV_TIME_PADDR,
> +		.attr = KVM_DEV_ARM_PV_TIME_ST,
> +		.addr = (u64)(unsigned long)&st_paddr
> +	};
> +
> +	struct kvm_device_attr lpt_freq = {
> +		.group = KVM_DEV_ARM_PV_TIME_FREQUENCY,
> +		.attr = KVM_DEV_ARM_PV_TIME_LPT,
> +		.addr = (u64)(unsigned long)&frequency
> +	};
> +
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &lpt_base);
> +	if (err) {
> +		perror("ioctl lpt_base failed");
> +		printf("Ignoring LPT...\n");
> +	}
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &st_base);
> +	if (err) {
> +		perror("ioctl st_base failed");
> +		goto out_err;
> +	}
> +	err = ioctl(pvtime_fd, KVM_SET_DEVICE_ATTR, &lpt_freq);
> +	if (err) {
> +		perror("ioctl lpt_freq failed");
> +		printf("Ignoring LPT...\n");
> +	}
> +
> +	printf("PV time setup\n");
> +
> +	return 0;
> +out_err:
> +	close(pvtime_fd);
> +	return err;
> +}


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-08-13  6:12 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-02 14:50 [PATCH 0/9] arm64: Stolen time support Steven Price
2019-08-02 14:50 ` Steven Price
2019-08-02 14:50 ` Steven Price
2019-08-02 14:50 ` [PATCH 1/9] KVM: arm64: Document PV-time interface Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-03 11:13   ` Marc Zyngier
2019-08-03 11:13     ` Marc Zyngier
2019-08-03 11:13     ` Marc Zyngier
2019-08-05 13:06     ` Steven Price
2019-08-05 13:06       ` Steven Price
2019-08-05 13:06       ` Steven Price
2019-08-05  3:23   ` Zenghui Yu
2019-08-05  3:23     ` Zenghui Yu
2019-08-05  3:23     ` Zenghui Yu
2019-08-05 13:06     ` Steven Price
2019-08-05 13:06       ` Steven Price
2019-08-05 13:06       ` Steven Price
2019-08-05 16:40   ` Christophe de Dinechin
2019-08-05 16:40     ` Christophe de Dinechin
2019-08-05 16:40     ` Christophe de Dinechin
2019-08-07 13:21     ` Steven Price
2019-08-07 13:21       ` Steven Price
2019-08-07 13:21       ` Steven Price
2019-08-07 14:28       ` Christophe de Dinechin
2019-08-07 15:26         ` Steven Price
2019-08-07 15:26           ` Steven Price
2019-08-07 15:26           ` Steven Price
2019-08-02 14:50 ` [PATCH 2/9] KVM: arm/arm64: Factor out hypercall handling from PSCI code Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50 ` [PATCH 3/9] KVM: arm64: Implement PV_FEATURES call Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-03 11:21   ` Marc Zyngier
2019-08-03 11:21     ` Marc Zyngier
2019-08-03 11:21     ` Marc Zyngier
2019-08-05 13:14     ` Steven Price
2019-08-05 13:14       ` Steven Price
2019-08-05 13:14       ` Steven Price
2019-08-02 14:50 ` [PATCH 4/9] KVM: arm64: Support stolen time reporting via shared structure Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-03 11:55   ` Marc Zyngier
2019-08-03 11:55     ` Marc Zyngier
2019-08-03 11:55     ` Marc Zyngier
2019-08-05 14:09     ` Steven Price
2019-08-05 14:09       ` Steven Price
2019-08-05 14:09       ` Steven Price
2019-08-03 17:58   ` Marc Zyngier
2019-08-03 17:58     ` Marc Zyngier
2019-08-03 17:58     ` Marc Zyngier
2019-08-03 18:13     ` Marc Zyngier
2019-08-03 18:13       ` Marc Zyngier
2019-08-03 18:13       ` Marc Zyngier
2019-08-05 14:18       ` Steven Price
2019-08-05 14:18         ` Steven Price
2019-08-05 14:18         ` Steven Price
2019-08-02 14:50 ` [PATCH 5/9] KVM: Allow kvm_device_ops to be const Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50 ` [PATCH 6/9] KVM: arm64: Provide a PV_TIME device to user space Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-03 12:51   ` Marc Zyngier
2019-08-03 12:51     ` Marc Zyngier
2019-08-03 12:51     ` Marc Zyngier
2019-08-03 17:34     ` Marc Zyngier
2019-08-03 17:34       ` Marc Zyngier
2019-08-03 17:34       ` Marc Zyngier
2019-08-07 13:39       ` Steven Price
2019-08-07 13:39         ` Steven Price
2019-08-07 13:39         ` Steven Price
2019-08-07 13:51         ` Marc Zyngier
2019-08-07 13:51           ` Marc Zyngier
2019-08-07 13:51           ` Marc Zyngier
2019-08-05 16:10     ` Steven Price
2019-08-05 16:10       ` Steven Price
2019-08-05 16:10       ` Steven Price
2019-08-05 16:28       ` Marc Zyngier
2019-08-05 16:28         ` Marc Zyngier
2019-08-05 16:28         ` Marc Zyngier
2019-08-02 14:50 ` [PATCH 7/9] arm/arm64: Provide a wrapper for SMCCC 1.1 calls Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-05 10:03   ` Will Deacon
2019-08-05 10:03     ` Will Deacon
2019-08-05 10:03     ` Will Deacon
2019-08-02 14:50 ` [PATCH 8/9] arm/arm64: Make use of the SMCCC 1.1 wrapper Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50 ` [PATCH 9/9] arm64: Retrieve stolen time as paravirtualized guest Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-02 14:50   ` Steven Price
2019-08-04  9:53   ` Marc Zyngier
2019-08-04  9:53     ` Marc Zyngier
2019-08-04  9:53     ` Marc Zyngier
2019-08-08 15:29     ` Steven Price
2019-08-08 15:29       ` Steven Price
2019-08-08 15:29       ` Steven Price
2019-08-08 15:49       ` Marc Zyngier
2019-08-08 15:49         ` Marc Zyngier
2019-08-08 15:49         ` Marc Zyngier
2019-08-09 13:51   ` Zenghui Yu
2019-08-09 13:51     ` Zenghui Yu
2019-08-09 13:51     ` Zenghui Yu
2019-08-12 10:39     ` Steven Price
2019-08-12 10:39       ` Steven Price
2019-08-12 10:39       ` Steven Price
2019-08-13  6:06       ` Zenghui Yu [this message]
2019-08-13  6:06         ` Zenghui Yu
2019-08-13  6:06         ` Zenghui Yu
2019-08-03 18:05 ` [PATCH 0/9] arm64: Stolen time support Marc Zyngier
2019-08-03 18:05   ` Marc Zyngier
2019-08-03 18:05   ` Marc Zyngier
2019-08-05 13:06   ` Steven Price
2019-08-05 13:06     ` Steven Price
2019-08-05 13:06     ` Steven Price
2019-08-05 13:26     ` Marc Zyngier
2019-08-05 13:26       ` Marc Zyngier
2019-08-05 13:26       ` Marc Zyngier
2019-08-14 13:02     ` Alexander Graf
2019-08-14 13:02       ` Alexander Graf
2019-08-14 13:02       ` Alexander Graf
2019-08-14 14:19       ` Marc Zyngier
2019-08-14 14:19         ` Marc Zyngier
2019-08-14 14:52         ` [UNVERIFIED SENDER] " Alexander Graf
2019-08-14 14:52           ` Alexander Graf
2019-08-14 14:52           ` Alexander Graf
2019-08-16 10:23           ` Steven Price
2019-08-16 10:23             ` Steven Price
2019-08-16 10:23             ` Steven Price
2020-07-21  3:26 ` zhukeqian
2020-07-21  3:26   ` zhukeqian
2020-07-21  3:26   ` zhukeqian
2020-07-27 10:48   ` Steven Price
2020-07-27 10:48     ` Steven Price
2020-07-27 10:48     ` Steven Price
2020-07-29  2:57     ` zhukeqian
2020-07-29  2:57       ` zhukeqian
2020-07-29  2:57       ` zhukeqian

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=42698e3c-c382-8621-7d9e-af09398f4aef@huawei.com \
    --to=yuzenghui@huawei.com \
    --cc=catalin.marinas@arm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=maz@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=steven.price@arm.com \
    --cc=will@kernel.org \
    /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.