All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable
@ 2022-02-16 11:37 Muchun Song
  2022-02-16 11:37 ` [PATCH kvmtool v2 2/2] x86: Set the correct APIC ID Muchun Song
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Muchun Song @ 2022-02-16 11:37 UTC (permalink / raw)
  To: will, julien.thierry.kdev, alexandru.elisei; +Cc: kvm, Muchun Song

When dev_hdr->dev_num is greater one, the initialization of last_addr
is wrong.  Fix it.

Fixes: f83cd16 ("kvm tools: irq: replace the x86 irq rbtree with the PCI device tree")
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
---
v2:
- Rework subject.

 x86/mptable.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/x86/mptable.c b/x86/mptable.c
index a984de9..f13cf0f 100644
--- a/x86/mptable.c
+++ b/x86/mptable.c
@@ -184,7 +184,7 @@ int mptable__init(struct kvm *kvm)
 		mpc_intsrc = last_addr;
 		mptable_add_irq_src(mpc_intsrc, pcibusid, srcbusirq, ioapicid, pci_hdr->irq_line);
 
-		last_addr = (void *)&mpc_intsrc[dev_hdr->dev_num];
+		last_addr = (void *)&mpc_intsrc[1];
 		nentries++;
 		dev_hdr = device__next_dev(dev_hdr);
 	}
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH kvmtool v2 2/2] x86: Set the correct APIC ID
  2022-02-16 11:37 [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable Muchun Song
@ 2022-02-16 11:37 ` Muchun Song
  2022-02-16 12:20 ` [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable Alexandru Elisei
  2022-02-16 16:11 ` Will Deacon
  2 siblings, 0 replies; 4+ messages in thread
From: Muchun Song @ 2022-02-16 11:37 UTC (permalink / raw)
  To: will, julien.thierry.kdev, alexandru.elisei; +Cc: kvm, Muchun Song

When kvmtool boots a kernel, the dmesg will print the following message:

  [Firmware Bug]: CPU1: APIC id mismatch. Firmware: 1 APIC: 30

Fix this by setting up correct initial_apicid to cpu_id.

Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Tested-by: Alexandru Elisei <alexandru.elisei@arm.com>
---
v2:
- Rework subject and commit log.

 x86/cpuid.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/x86/cpuid.c b/x86/cpuid.c
index c3b67d9..aa213d5 100644
--- a/x86/cpuid.c
+++ b/x86/cpuid.c
@@ -8,7 +8,7 @@
 
 #define	MAX_KVM_CPUID_ENTRIES		100
 
-static void filter_cpuid(struct kvm_cpuid2 *kvm_cpuid)
+static void filter_cpuid(struct kvm_cpuid2 *kvm_cpuid, int cpu_id)
 {
 	unsigned int signature[3];
 	unsigned int i;
@@ -28,6 +28,8 @@ static void filter_cpuid(struct kvm_cpuid2 *kvm_cpuid)
 			entry->edx = signature[2];
 			break;
 		case 1:
+			entry->ebx &= ~(0xff << 24);
+			entry->ebx |= cpu_id << 24;
 			/* Set X86_FEATURE_HYPERVISOR */
 			if (entry->index == 0)
 				entry->ecx |= (1 << 31);
@@ -80,7 +82,7 @@ void kvm_cpu__setup_cpuid(struct kvm_cpu *vcpu)
 	if (ioctl(vcpu->kvm->sys_fd, KVM_GET_SUPPORTED_CPUID, kvm_cpuid) < 0)
 		die_perror("KVM_GET_SUPPORTED_CPUID failed");
 
-	filter_cpuid(kvm_cpuid);
+	filter_cpuid(kvm_cpuid, vcpu->cpu_id);
 
 	if (ioctl(vcpu->vcpu_fd, KVM_SET_CPUID2, kvm_cpuid) < 0)
 		die_perror("KVM_SET_CPUID2 failed");
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable
  2022-02-16 11:37 [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable Muchun Song
  2022-02-16 11:37 ` [PATCH kvmtool v2 2/2] x86: Set the correct APIC ID Muchun Song
@ 2022-02-16 12:20 ` Alexandru Elisei
  2022-02-16 16:11 ` Will Deacon
  2 siblings, 0 replies; 4+ messages in thread
From: Alexandru Elisei @ 2022-02-16 12:20 UTC (permalink / raw)
  To: Muchun Song; +Cc: will, julien.thierry.kdev, kvm

Hi,

Thanks for the quick repost, the patches look fine to me.

Thanks,
Alex

On Wed, Feb 16, 2022 at 07:37:34PM +0800, Muchun Song wrote:
> When dev_hdr->dev_num is greater one, the initialization of last_addr
> is wrong.  Fix it.
> 
> Fixes: f83cd16 ("kvm tools: irq: replace the x86 irq rbtree with the PCI device tree")
> Signed-off-by: Muchun Song <songmuchun@bytedance.com>
> Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
> ---
> v2:
> - Rework subject.
> 
>  x86/mptable.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/x86/mptable.c b/x86/mptable.c
> index a984de9..f13cf0f 100644
> --- a/x86/mptable.c
> +++ b/x86/mptable.c
> @@ -184,7 +184,7 @@ int mptable__init(struct kvm *kvm)
>  		mpc_intsrc = last_addr;
>  		mptable_add_irq_src(mpc_intsrc, pcibusid, srcbusirq, ioapicid, pci_hdr->irq_line);
>  
> -		last_addr = (void *)&mpc_intsrc[dev_hdr->dev_num];
> +		last_addr = (void *)&mpc_intsrc[1];
>  		nentries++;
>  		dev_hdr = device__next_dev(dev_hdr);
>  	}
> -- 
> 2.11.0
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable
  2022-02-16 11:37 [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable Muchun Song
  2022-02-16 11:37 ` [PATCH kvmtool v2 2/2] x86: Set the correct APIC ID Muchun Song
  2022-02-16 12:20 ` [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable Alexandru Elisei
@ 2022-02-16 16:11 ` Will Deacon
  2 siblings, 0 replies; 4+ messages in thread
From: Will Deacon @ 2022-02-16 16:11 UTC (permalink / raw)
  To: alexandru.elisei, Muchun Song, julien.thierry.kdev
  Cc: catalin.marinas, kernel-team, Will Deacon, kvm

On Wed, 16 Feb 2022 19:37:34 +0800, Muchun Song wrote:
> When dev_hdr->dev_num is greater one, the initialization of last_addr
> is wrong.  Fix it.
> 
> 

Applied to kvmtool (master), thanks!

[1/2] x86: Fix initialization of irq mptable
      https://git.kernel.org/will/kvmtool/c/d4d6f1538966
[2/2] x86: Set the correct APIC ID
      https://git.kernel.org/will/kvmtool/c/20b93be583f6

Cheers,
-- 
Will

https://fixes.arm64.dev
https://next.arm64.dev
https://will.arm64.dev

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-02-16 16:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-16 11:37 [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable Muchun Song
2022-02-16 11:37 ` [PATCH kvmtool v2 2/2] x86: Set the correct APIC ID Muchun Song
2022-02-16 12:20 ` [PATCH kvmtool v2 1/2] x86: Fix initialization of irq mptable Alexandru Elisei
2022-02-16 16:11 ` Will Deacon

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.