Thank you Lamar; You have explained a lot. I am almost at the bottom. On Tue, 2008-02-05 at 13:49 -0500, Lamar Owen wrote: > To tackle things in order: > > 1.) The nVidia MCP is not a SCSI controller. Yes, I know the linux kernel's > libata driver stack treats it like a SCSI controller, but it is not one, it's > just emulated. The same is true of USB drives; they are treated like SCSI > drives. Alan Cox can chime in with the reasons why this was done. > I have one more question -- about emulation. I have posed it at the bottom of this post. > 2.) The seeming discrepancies you are seeing are results of the > IDE-SCSI 'merge' in the libata software stack that makes IDE/ATA devices look > like SCSI devices to the kernel. So, you get entries > in /sys/bus/scsi/devices/ that seem to conflict with /dev/disk/by-id; in > fact, the 'ata' you see is telling you that the drives are IDE/ATA drives, > not SCSI drives. The kernel, thanks to the libata driver stack, displays > them in the SCSI tables since, for all intents and purposes that the kernel > cares about, libata exposes the drives as emulated SCSI drives, even they > they are not SCSI, but IDE/ATA. To reiterate in order to check my understanding: 1) hwbrowser tells me what my hard disks are physically ( how it is manufactured and its composite componets). I.e it is an IDE/PATA type disk. 2) the hwbrowser information is confirmed by /dev/disk/by-id (ata = IDE). 3) /sys/bus/scsi/devices/.. tells me how the hard disk interfaces with the controller. I.e as an SCSI emulation. It has to be an emulation because my hwbrowser already tells me it is not SCSI disk, per se, but an PATA/IDE. > > Yes, I know it is a tad confusing. You can find more information on the > libata pages at http://linux-ata.org/ (even though that page is mostly about > SATA, the information applies to the parallel 40-pin PATA IDE drives too, at > least in Fedora 8). The final question: This is to help me straighten out what I have read on the SCSI site. Where and how does this emulation take place? Or, I assume Libata is a driver in the kernel. No matter how it might be compiled, it would be in a machine language (binary) format. Is it written in assembly and run by the CPU, or does SCSI code have its own set of machine code that can be used for emulation? By the controller? My understanding is that assembly code only applies to the CPU and the GPU. Why I ask, is that when I read the code (protocol, command ??) requirements on the SCSI page I wasn't sure where and how SCSI code was getting emulated. -- Regards Bill