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