diff options
author | mav <mav@FreeBSD.org> | 2010-09-13 06:32:56 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2010-09-13 06:32:56 +0000 |
commit | 1b35612118ef4e6ca7fc7d5bedb931152eb66eff (patch) | |
tree | 6174d256d435b97601e8c2f974c01b2be6a11c8b /sys/dev/acpica | |
parent | edb616a784426e2b40fc14b140f9456d0c08ea71 (diff) | |
download | FreeBSD-src-1b35612118ef4e6ca7fc7d5bedb931152eb66eff.zip FreeBSD-src-1b35612118ef4e6ca7fc7d5bedb931152eb66eff.tar.gz |
Add tunable 'hint.hpet.X.per_cpu' to specify how much per-CPU timers driver
should provide if there is sufficient hardware. Default is 1.
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r-- | sys/dev/acpica/acpi_hpet.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/acpica/acpi_hpet.c b/sys/dev/acpica/acpi_hpet.c index bc8cd85..2a8eb30 100644 --- a/sys/dev/acpica/acpi_hpet.c +++ b/sys/dev/acpica/acpi_hpet.c @@ -74,6 +74,7 @@ struct hpet_softc { int irq; int useirq; int legacy_route; + int per_cpu; uint32_t allowed_irqs; struct resource *mem_res; struct resource *intr_res; @@ -501,6 +502,11 @@ hpet_attach(device_t dev) resource_int_value(device_get_name(dev), device_get_unit(dev), "allowed_irqs", &sc->allowed_irqs); + /* Get how much per-CPU timers we should try to provide. */ + sc->per_cpu = 1; + resource_int_value(device_get_name(dev), device_get_unit(dev), + "per_cpu", &sc->per_cpu); + num_msi = 0; sc->useirq = 0; /* Find IRQ vectors for all timers. */ @@ -556,7 +562,7 @@ hpet_attach(device_t dev) if (sc->legacy_route) hpet_enable(sc); /* Group timers for per-CPU operation. */ - num_percpu_et = min(num_msi / mp_ncpus, 1); + num_percpu_et = min(num_msi / mp_ncpus, sc->per_cpu); num_percpu_t = num_percpu_et * mp_ncpus; pcpu_master = 0; cur_cpu = CPU_FIRST(); |