Skip to contentSkip to conversation

Change rtc.c ioport extend from 10h to 8h

PATCH In review Rusty Lynch 3 participants 5 messages Feb 26, 2003

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Change rtc.c ioport extend from 10h to 8h

The real time clock only needs 8 bytes, but rtc.c is reserving 10h bytes. This conflicts with zt55XX cpci compute blades that use one of those extra bytes (port 79h) to control a watchdog timer.

I raised this issue before on LKML and everyone seemed to be ok with changing the extent of rtc.c to 0x8:
http://marc.theaimsgroup.com/?l=linux-kernel&m=104478057030481&w=2

I have been running the following patch on three of my Linux servers for the last couple of weeks with no problems, and two of those server were testing the watchdog timer that uses port 79h.

Please apply this patch.

--rustyl

char/rtc.c renamed from char/rtc.c.orig +1 -1
@@ -47,7 +47,7 @@
 
 #define RTC_VERSION		"1.11"
 
-#define RTC_IO_EXTENT	0x10	/* Only really two ports, but...	*/
+#define RTC_IO_EXTENT	0x8
 
 /*
  *	Note that *all* calls to CMOS_READ and CMOS_WRITE are done with
#1 lore raw
Quoted 1 line · Rusty Lynch

The real time clock only needs 8 bytes, but rtc.c is reserving 10h bytes.

[SNIPPED...]

It only needs two bytes port 0x70 and port 0x71 in ix86. Since the Sparc gets addressed differently and can only read/write words, it needs 8 bytes. Please, if you are going to fix it, please fix it only once by setting a different length for the different machines! Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips). Why is the government concerned about the lunatic fringe? Think about it.

#2 lore raw
Quoted 11 lines · Richard B. Johnson
Quoted 1 line · Rusty Lynch

The real time clock only needs 8 bytes, but rtc.c is reserving 10h bytes.

[SNIPPED...]

It only needs two bytes port 0x70 and port 0x71 in ix86. Since the Sparc gets addressed differently and can only read/write words, it needs 8 bytes. Please, if you are going to fix it, please fix it only once by setting a different length for the different machines! Cheers,
Dick Johnson

Actually, it's finer grain then x86, it's a chipset issue. As Randy pointed out in the original thread ==>

Quoted 9 lines

Some Intel chipset specs list RTC as using 0x70 - 0x77, probably with some aliasing in there, so it looks to me like an EXTENT of 8 would be safer and still allow you access to 0x79.

I'm looking at 82801BA-ICH2, 82801-ICH3, and 82801AA-ICH0 specs.

Signature · 1 line
~Randy

Any suggestions on the right way of doing this?

--rustyl

#3 lore raw
Quoted 13 lines · Rusty Lynch
Quoted 11 lines · Richard B. Johnson
Quoted 1 line · Rusty Lynch

The real time clock only needs 8 bytes, but rtc.c is reserving 10h bytes.

[SNIPPED...]

It only needs two bytes port 0x70 and port 0x71 in ix86. Since the Sparc gets addressed differently and can only read/write words, it needs 8 bytes. Please, if you are going to fix it, please fix it only once by setting a different length for the different machines! Cheers,
Dick Johnson

Quoted 9 lines

Actually, it's finer grain then x86, it's a chipset issue. As Randy pointed out in the original thread ==>

Quoted 7 lines

Some Intel chipset specs list RTC as using 0x70 - 0x77, probably with some aliasing in there, so it looks to me like an EXTENT of 8 would be safer and still allow you access to 0x79.

I'm looking at 82801BA-ICH2, 82801-ICH3, and 82801AA-ICH0 specs.

Can't see what an IDE chip-set has to do with it. The RTC can only be accessed as an offset-location and a data-location. You write an offset at one location and you read/write data at another location. On an ix86, the locations are adjacent byte-wide ports. On the Sparc they are adjacent dword-wide memory locations.

Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips). Why is the government concerned about the lunatic fringe? Think about it.

#4 lore raw

On Wed, 26 Feb 2003 15:29:06 -0500 (EST) "Richard B. Johnson" <[email protected]> wrote:

| On 26 Feb 2003, Rusty Lynch wrote:
| 
| > On Wed, 2003-02-26 at 11:35, Richard B. Johnson wrote:
| > > On 26 Feb 2003, Rusty Lynch wrote:
| > > 
| > > > The real time clock only needs 8 bytes, but rtc.c is reserving 10h bytes.
| > > [SNIPPED...]
| > > 
| > > It only needs two bytes port 0x70 and port 0x71 in ix86. Since the Sparc
| > > gets addressed differently and can only read/write words, it needs 8
| > > bytes.  Please, if you are going to fix it, please fix it only once by
| > > setting a different length for the different machines!
| > > Cheers,
| > > Dick Johnson
| > 
| > Actually, it's finer grain then x86, it's a chipset issue.  As Randy
| > pointed out in the original thread ==>
| > > Some Intel chipset specs list RTC as using 0x70 - 0x77, probably with
| > > some aliasing in there, so it looks to me like an EXTENT of 8 would be
| > > safer and still allow you access to 0x79.
| > > 
| > > I'm looking at 82801BA-ICH2, 82801-ICH3, and 82801AA-ICH0 specs.
| > > 
| > > -- 
| 
| Can't see what an IDE chip-set has to do with it. The RTC can only
| be accessed as an offset-location and a data-location. You write
| an offset at one location and you read/write data at another location.
| On an ix86, the locations are adjacent byte-wide ports. On the Sparc
| they are adjacent dword-wide memory locations.

IDE is just 1 of about 20 functional units in those chipsets. The chipset specs say that there are some other RTC registers there (total of 8).
Reducing the RTC I/O space from 16 to 8 bytes looks right to me, even on x86.

| Cheers,
--
~Randy