summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2010-09-13 06:32:56 +0000
committermav <mav@FreeBSD.org>2010-09-13 06:32:56 +0000
commit1b35612118ef4e6ca7fc7d5bedb931152eb66eff (patch)
tree6174d256d435b97601e8c2f974c01b2be6a11c8b /sys/dev/acpica
parentedb616a784426e2b40fc14b140f9456d0c08ea71 (diff)
downloadFreeBSD-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.c8
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();
OpenPOWER on IntegriCloud