On Wed, Mar 21, 2012 at 03:01:46PM +0800, romaby...@gmail.com wrote:
> > No idea how well OpenBSD does in xen.
> 
> Last time I tried OpenBSd in Xen ~2 years it worked like crap.
> Couldn't get networking
> to work at all and it was slow as a dog.

I am running OpenBSD on Xen and it works very well:

$ sysctl kern.version  
kern.version=OpenBSD 5.1 (VICTOR) #2: Mon Feb 13 10:03:45 CET 2012
    oc@localhost:/usr/src/sys/arch/amd64/compile/VICTOR

$ dmesg | grep '^bios0:'  
bios0: vendor Xen version "3.4.2" date 11/16/2009
bios0: Xen HVM domU
$ 


I use Panix (http://www.panix.com/corp/v-colo/) and am happy.
You just have to apply the 2 following patches (credit to Brian Marcotte):


--- ./sys/dev/acpi/acpi.c.orig  Mon Jan 10 15:04:33 2011
+++ ./sys/dev/acpi/acpi.c       Wed May  4 20:13:47 2011
@@ -609,6 +609,7 @@
                return;
        }
 
+#if 0
        /*
         * Check if we are able to enable ACPI control
         */
@@ -617,6 +618,7 @@
                printf(", ACPI control unavailable\n");
                return;
        }
+#endif
 
        /*
         * Set up a pointer to the firmware control structure
@@ -696,6 +698,7 @@
         * This may prevent thermal control on some systems where
         * that actually does work
         */
+#if 0
        acpi_write_pmreg(sc, ACPIREG_SMICMD, 0, sc->sc_fadt->acpi_enable);
        idx = 0;
        do {
@@ -704,7 +707,20 @@
                        return;
                }
        } while (!(acpi_read_pmreg(sc, ACPIREG_PM1_CNT, 0) & ACPI_PM1_SCI_EN));
-
+#else
+       if (sc->sc_fadt->smi_cmd && sc->sc_fadt->acpi_enable) {
+               acpi_write_pmreg(sc, ACPIREG_SMICMD, 0,
+                  sc->sc_fadt->acpi_enable);
+               idx = 0;
+               do {
+                       if (idx++ > ACPIEN_RETRIES) {
+                               printf(", can't enable ACPI\n");
+                               return;
+                       }
+               } while (!(acpi_read_pmreg(sc, ACPIREG_PM1_CNT, 0) &
+                       ACPI_PM1_SCI_EN));
+       }
+#endif
        printf("\n%s: tables", DEVNAME(sc));
        SIMPLEQ_FOREACH(entry, &sc->sc_tables, q_next) {
                printf(" %.4s", entry->q_table);


--- ./sys/dev/acpi/acpicpu.c.orig       Wed Jul 21 19:24:01 2010
+++ ./sys/dev/acpi/acpicpu.c    Wed May  4 20:13:47 2011
@@ -394,7 +394,11 @@
                        sc->sc_flags |= FLAGS_NOPCT;
                else if (sc->sc_pss_len > 0) {
                        /* Notify BIOS we are handing p-states */
+#if 0
                        if (sc->sc_acpi->sc_fadt->pstate_cnt)
+#else
+                       if (sc->sc_acpi->sc_fadt->smi_cmd && 
sc->sc_acpi->sc_fadt->pstate_cnt) 
+#endif
                                acpi_write_pmreg(sc->sc_acpi, ACPIREG_SMICMD, 0,
                                sc->sc_acpi->sc_fadt->pstate_cnt);
 



Later,

-- 
Olivier Cherrier - Symacx.com
mailto:o...@symacx.com

Reply via email to