Skip to content

Commit 27471fd

Browse files
Andy Henroidlenb
authored andcommitted
i7300_idle driver v1.55
The Intel 7300 Memory Controller supports dynamic throttling of memory which can be used to save power when system is idle. This driver does the memory throttling when all CPUs are idle on such a system. Refer to "Intel 7300 Memory Controller Hub (MCH)" datasheet for the config space description. Signed-off-by: Andy Henroid <[email protected]> Signed-off-by: Len Brown <[email protected]> Signed-off-by: Venkatesh Pallipadi <[email protected]>
1 parent c7d87d7 commit 27471fd

File tree

9 files changed

+706
-0
lines changed

9 files changed

+706
-0
lines changed

MAINTAINERS

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2078,6 +2078,12 @@ L: [email protected]
20782078
20792079
S: Orphan
20802080

2081+
IDLE-I7300
2082+
P: Andy Henroid
2083+
2084+
2085+
S: Supported
2086+
20812087
IEEE 1394 SUBSYSTEM (drivers/ieee1394)
20822088
P: Ben Collins
20832089

arch/x86/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1536,6 +1536,8 @@ source "arch/x86/kernel/cpu/cpufreq/Kconfig"
15361536

15371537
source "drivers/cpuidle/Kconfig"
15381538

1539+
source "drivers/idle/Kconfig"
1540+
15391541
endmenu
15401542

15411543

drivers/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ obj-$(CONFIG_EISA) += eisa/
8282
obj-y += lguest/
8383
obj-$(CONFIG_CPU_FREQ) += cpufreq/
8484
obj-$(CONFIG_CPU_IDLE) += cpuidle/
85+
obj-y += idle/
8586
obj-$(CONFIG_MMC) += mmc/
8687
obj-$(CONFIG_MEMSTICK) += memstick/
8788
obj-$(CONFIG_NEW_LEDS) += leds/

drivers/dma/ioat_dma.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ static int ioat_dma_enumerate_channels(struct ioatdma_device *device)
171171
xfercap_scale = readb(device->reg_base + IOAT_XFERCAP_OFFSET);
172172
xfercap = (xfercap_scale == 0 ? -1 : (1UL << xfercap_scale));
173173

174+
#if CONFIG_I7300_IDLE_IOAT_CHANNEL
175+
device->common.chancnt--;
176+
#endif
174177
for (i = 0; i < device->common.chancnt; i++) {
175178
ioat_chan = kzalloc(sizeof(*ioat_chan), GFP_KERNEL);
176179
if (!ioat_chan) {

drivers/idle/Kconfig

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
menu "Memory power savings"
3+
4+
config I7300_IDLE_IOAT_CHANNEL
5+
bool
6+
7+
config I7300_IDLE
8+
tristate "Intel chipset idle power saving driver"
9+
select I7300_IDLE_IOAT_CHANNEL
10+
depends on X86_64
11+
help
12+
Enable idle power savings with certain Intel server chipsets.
13+
The chipset must have I/O AT support, such as the Intel 7300.
14+
The power savings depends on the type and quantity of DRAM devices.
15+
16+
endmenu

drivers/idle/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
obj-$(CONFIG_I7300_IDLE) += i7300_idle.o
2+

0 commit comments

Comments
 (0)