[PATCH] Reserve only needed regions for PC timers on i386 and x86_64

From: Charles-Edouard Ruault
Date: Mon Feb 21 2005 - 08:08:09 EST


Alan Cox wrote:

On Llu, 2005-02-07 at 09:29, Charles-Edouard Ruault wrote:


- Why is the generic timer using this address ? isn't it reserving a too wide portion of IO ports ? Should it be modified for this board ?



It just reserved the entire chip space since way back when.



- If there's a good reason for the timer to request this address, is there a clean way to share it with the timer ?



Submit a small patch to Linus/Andrew to make the generic code only
reserve the ports it should. It's just a historical oversight



Linus, Andrew,
As suggested by Alan, here's a small patch against kernel 2.4.29 to split the IO addresses reserved for the PC timer into two regions instead of a large one.
It mimics what has been done in kernel 2.6.
Instead of reserving 0x40 through 0x5f it reserves only what the two timers need, i.e 0x40-0x43 and 0x50-0x53.
It patches both i386 and x86_64 architecture.

Please CC me in replies since i did not subscribe to the list.

--
Charles-Edouard Ruault
Idtect SA
115 rue Reaumur - 75002, Paris, France
Tel: +33-1-55-34-76-65
Fax: +33-1-55-34-76-75
Web: http://www.idtect.com

--- linux/arch/i386/kernel/setup.c.orig Fri Feb 18 18:46:55 2005
+++ linux/arch/i386/kernel/setup.c Mon Feb 21 11:19:45 2005
@@ -354,7 +354,8 @@
struct resource standard_io_resources[] = {
{ "dma1", 0x00, 0x1f, IORESOURCE_BUSY },
{ "pic1", 0x20, 0x3f, IORESOURCE_BUSY },
- { "timer", 0x40, 0x5f, IORESOURCE_BUSY },
+ { "timer0", 0x40, 0x43, IORESOURCE_BUSY },
+ { "timer1", 0x50, 0x53, IORESOURCE_BUSY },
{ "keyboard", 0x60, 0x6f, IORESOURCE_BUSY },
{ "dma page reg", 0x80, 0x8f, IORESOURCE_BUSY },
{ "pic2", 0xa0, 0xbf, IORESOURCE_BUSY },
--- linux/arch/x86_64/kernel/setup.c.orig Mon Feb 21 11:56:11 2005
+++ linux/arch/x86_64/kernel/setup.c Mon Feb 21 11:54:41 2005
@@ -93,7 +93,8 @@
struct resource standard_io_resources[] = {
{ "dma1", 0x00, 0x1f, IORESOURCE_BUSY },
{ "pic1", 0x20, 0x3f, IORESOURCE_BUSY },
- { "timer", 0x40, 0x5f, IORESOURCE_BUSY },
+ { "timer0", 0x40, 0x43, IORESOURCE_BUSY },
+ { "timer1", 0x50, 0x53, IORESOURCE_BUSY },
{ "keyboard", 0x60, 0x6f, IORESOURCE_BUSY },
{ "dma page reg", 0x80, 0x8f, IORESOURCE_BUSY },
{ "pic2", 0xa0, 0xbf, IORESOURCE_BUSY },