On Thursday 19 April 2007 03:53, Iain Buchanan wrote:

> > > hda: 39070080 sectors (20003 MB) w/1740KiB Cache,
> > > CHS=16383/255/63<6>hda: hw_config=600d, UDMA(100)
> > >
> > > What's the hw_config part?
> >
> > Any more (useful) ideas on this?

Seems a kind of hardware config register (part of a struct hd_driveid 
object), whose value is used by the ide drivers to adjust the drive 
speed, depending on the type of cable used. The function that checks its 
value (and prints the "hda: hw_config=600d" message you are seeing) 
seems to be in drivers/ide/ide-iops.c, and is defined as follows:

/*
 *  All hosts that use the 80c ribbon must use!
 *  The name is derived from upper byte of word 93 and the 80c ribbon.
 */
u8 eighty_ninty_three (ide_drive_t *drive)

That function is called from various pci ide drivers code (for example 
drivers/ide/pci/it821x.c, drivers/ide/pci/siimage.c, 
drivers/ide/pci/piix.c, drivers/ide/pci/sis5513.c), from a function 
whose name is composed appending "_ratemask" to the driver name (eg, 
piix_ratemask, sis5513_ratemask, etc.) in a way similar to this:

 if (!eighty_ninty_three(drive))
                mode = min(mode, (u8)1);

So, if eighty_ninty_three returns 0, "mode" (which I suppose indicates 
the DMA/UDMA mode) is set to 1 if it wasn't already.

This value is then used as an argument to the ide_rate_filter function 
(along with the xferspeed). The comments in the code for ide_rate_filter 
are as follows (drivers/ide/ide-lib.c):

/**
 *      ide_rate_filter         -       return best speed for mode
 *      @mode: modes available
 *      @speed: desired speed
 *
 *      Given the available DMA/UDMA mode this function returns
 *      the best available speed at or below the speed requested.
 */

Bottom line: the message you see is an informational message printed 
during ide initialization, and the value of hw_config is used by the 
kernel to set drive speed.

Keep in mind that I'm definitely no kernel guru, and did my searches by 
simply grepping through the code, so something might be wrong in what I 
said. Anyway, I think the general idea is correct.

But don't worry, because your value for hw_config is "600d"!  :)
-- 
[EMAIL PROTECTED] mailing list

Reply via email to