* [PATCH] Work around supported cpuid ioctl() brokenness
@ 2009-05-12 11:42 Mark McLoughlin
2009-05-17 22:48 ` Avi Kivity
0 siblings, 1 reply; 2+ messages in thread
From: Mark McLoughlin @ 2009-05-12 11:42 UTC (permalink / raw)
To: Avi Kivity; +Cc: kvm, Mark McLoughlin
KVM_GET_SUPPORTED_CPUID has been known to fail to return -E2BIG
when it runs out of entries. Detect this by always trying again
with a bigger table if the ioctl() fills the table.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
---
kvm/libkvm/libkvm-x86.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/kvm/libkvm/libkvm-x86.c b/kvm/libkvm/libkvm-x86.c
index a2f6320..4f9539a 100644
--- a/kvm/libkvm/libkvm-x86.c
+++ b/kvm/libkvm/libkvm-x86.c
@@ -575,6 +575,8 @@ static struct kvm_cpuid2 *try_get_cpuid(kvm_context_t kvm, int max)
r = ioctl(kvm->fd, KVM_GET_SUPPORTED_CPUID, cpuid);
if (r == -1)
r = -errno;
+ else if (r == 0 && cpuid->nent >= max)
+ r = -E2BIG;
if (r < 0) {
if (r == -E2BIG) {
free(cpuid);
--
1.6.0.6
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] Work around supported cpuid ioctl() brokenness
2009-05-12 11:42 [PATCH] Work around supported cpuid ioctl() brokenness Mark McLoughlin
@ 2009-05-17 22:48 ` Avi Kivity
0 siblings, 0 replies; 2+ messages in thread
From: Avi Kivity @ 2009-05-17 22:48 UTC (permalink / raw)
To: Mark McLoughlin; +Cc: kvm
Mark McLoughlin wrote:
> KVM_GET_SUPPORTED_CPUID has been known to fail to return -E2BIG
> when it runs out of entries. Detect this by always trying again
> with a bigger table if the ioctl() fills the table.
>
Applied, thanks.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-05-17 22:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-12 11:42 [PATCH] Work around supported cpuid ioctl() brokenness Mark McLoughlin
2009-05-17 22:48 ` Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox