Re: timecounter changes for newsmips
Izumi Tsutsui <[email protected]> Wed, 13 Sep 2006 23:23:19 +0900
| Newsgroups | gmane.os.netbsd.ports.newsmips |
|---|---|
| Message-ID | <[email protected]> |
[email protected] wrote: > I wrote the following patch which converts newsmips to tc. > > In this change: > > 1) only NWS-5000 has a high resolution timer > 2) the timer NEWS5000_FREERUN is assumed to tick once per usec. That > seems what the current code. > 3) I assume it wraps on a 32-bit boundary (i.e counts 0-ffffffff) > > If these assumptions are good, then the code should run. I don't have > news docs, so I'm just interpreting the pre-existing code. I'd > appreciate it if folks can test, and commit as appropriate. I've just tried it, but it looks news5000_init() is too early to call tc_init(), because news5000_init() is called from mach_init(), before main() (though it seems to work): --- NetBSD/newsmips Primary Boot NetBSD/newsmips Secondary Boot, Revision 1.7 (tsutsui@mirage, Sun Aug 27 19:42:01 JST 2006) Booting scsi(0,0) 2711984+184448 [94576+84133]=0x2ef014 timecounter: Timecounter "news5000_freerun" frequency 1000000 Hz quality 100 timecounter: selected timecounter "news5000_freerun" frequency 1000000 Hz quality 100 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 4.99.1 (GENERIC) #12: Wed Sep 13 22:07:32 JST 2006 tsutsui@mirage:/usr/src/sys/arch/newsmips/compile/GENERIC total memory = 127 MB avail memory = 120 MB timecounter: Timecounters tick every 10.000 msec SONY NET WORK STATION, Model NWS-5000, Machine ID #14668 mainbus0 (root) : --- I think it's better to move tc_init() in news5000.c from news5000_init() to news5000_enable_timer() (before enabling timer interrupt): --- : scsibus0 at spifi0: 8 targets, 8 luns per target spifi1 at ap0 slot0 addr 0xbe380000: SCSI ID = 7, using dmac1 scsibus1 at spifi1: 8 targets, 8 luns per target xb at ap0 slot0 addr 0xb4900000 not configured timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0 timecounter: selected timecounter "clockinterrupt" frequency 100 Hz quality 0 timecounter: Timecounter "news5000_freerun" frequency 1000000 Hz quality 100 timecounter: selected timecounter "news5000_freerun" frequency 1000000 Hz quality 100 scsibus0: waiting 2 seconds for devices to settle... scsibus1: waiting 2 seconds for devices to settle... sd0 at scsibus0 target 0 lun 0: <SEAGATE, ST12550N, 0013> disk fixed sd0: 2040 MB, 2708 cyl, 19 head, 81 sec, 512 bytes/sect x 4178874 sectors --- On regressions, both sleeping and time just work successfully, and ping(8) also shows reasonable time. I have not tested it on NWS-3470D, but "clockinterrupt" should just work.. --- Izumi Tsutsui