OSDev.org
https://forum.osdev.org/

can't detect IDE controller
https://forum.osdev.org/viewtopic.php?f=1&t=33373
Page 1 of 1

Author:  drnono [ Thu Dec 13, 2018 12:56 pm ]
Post subject:  can't detect IDE controller

Hi,
I'm trying to detect ide drives, but in bochs and vmware they won't show up - I think there must be something wrong with my code but I don't know what. The first dword or 32 bits of information show some sensible deviceID, vendorID, so I suspect that I'm not reading the other dwords properly from the configuration space.
Code:
uint8_t j=0;
uint16_t bus;
uint8_t device;
for (bus=0;bus<256;bus++)
{
   for (device=0; device<32; device++)
   {
      address = (uint32_t) ( (1<<31) | (bus<<16) | (device<<11) | (0<<8) | 0x0  );
      outl(PCI_CONFIG_ADDRESS,address);
      tmp = inl(PCI_CONFIG_DATA);
      ptr=&tmp;
//      if ( tmp>>16 != 0xffff )
      if ( (tmp & 0xffff) != 0xffff )
      {
          print_byte(bus,25,0,4+j);
          print_byte(device,25,3,4+j);
         print_dword(ptr,25,6,4+j);   // vendor, device

      address = (uint32_t) ( (1<<31) | (bus<<16) | (device<<11) | (0<<8) | 0x8  );
      outl(PCI_CONFIG_ADDRESS,address);
      tmp = inl(PCI_CONFIG_DATA);
      ptr=&tmp;
      print_dword(ptr,25,15,4+j);   // class,subclass


      address = (uint32_t) ( (1<<31) | (bus<<16) | (device<<11) | (0<<8) | 0x10  );
      outl(PCI_CONFIG_ADDRESS,address);
      tmp = inl(PCI_CONFIG_DATA);
      ptr=&tmp;
      print_dword(ptr,25,24,4+j);     // bar0

    j++;
      }
   }

}


Attachments:
dddss.png
dddss.png [ 33.94 KiB | Viewed 1294 times ]

Author:  Octocontrabass [ Thu Dec 13, 2018 2:01 pm ]
Post subject:  Re: can't detect IDE controller

You're not handling multi-function devices at all, so you won't see any devices with a non-zero function number.

Is your virtual machine configured to use an IDE controller at all? I see bus 00 device 10 is a SCSI controller (class 01 subclass 00) and claims to be one of several LSI Logic Ultra320 SCSI controllers (vendor 1000 device 0030).

Author:  Combuster [ Fri Dec 28, 2018 2:38 am ]
Post subject:  Re: can't detect IDE controller

Additionally, in the case of Bochs I would not be surprised if your configuration is set to behave as an ISA IDE controller - i.e. an older machine where it exists but does not yet show up as a PCI device.

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/