Force PCI mode 1 when running under QEMU, to work around QEMU bug 897771.

This should also make it possible to boot NetBSD under versions of KVM
that have inherited said QEMU bug.  Fixes PR kern/45671.
This commit is contained in:
gson 2013-10-05 11:20:34 +00:00
parent 9ef9256e1a
commit 95c92af30e

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.c,v 1.60 2013/07/31 19:27:51 macallan Exp $ */
/* $NetBSD: pci_machdep.c,v 1.61 2013/10/05 11:20:34 gson Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: pci_machdep.c,v 1.60 2013/07/31 19:27:51 macallan Exp $");
__KERNEL_RCSID(0, "$NetBSD: pci_machdep.c,v 1.61 2013/10/05 11:20:34 gson Exp $");
#include <sys/types.h>
#include <sys/param.h>
@ -526,6 +526,7 @@ pci_mode_detect(void)
uint32_t sav, val;
int i;
pcireg_t idreg;
extern char cpu_brand_string[];
if (pci_mode != -1)
return pci_mode;
@ -555,6 +556,13 @@ pci_mode_detect(void)
return (pci_mode);
}
}
if (memcmp(cpu_brand_string, "QEMU", 4) == 0) {
/* PR 45671, https://bugs.launchpad.net/qemu/+bug/897771 */
#ifdef DEBUG
printf("forcing PCI mode 1 for QEMU\n");
#endif
return (pci_mode);
}
/*
* Strong check for standard compliant mode 1: