I already did number 1, I was trying to be diligent and make sure either 
I didn't need to fake the device, which didn't sound like the case from 
the previous emails, or that I had something in place without 1 that 
worked properly. I'll just leave 1 in place and worry about other things 
for now.

Gabe

Ali Saidi wrote:
> Looking at this code it seems like the easiest thing is to make sure  
> that dmi_get_year(DMI_BIOS_DATE) >= 2001.Do you have a DMI table? If  
> you set the BIOS date > 2001 the function could be skipped. It's just  
> checking if it some device exists that makes it think this is actually  
> PCI that it's reading and it's not off in the weeds.
>
> I don't particularly like the idea of faking a host bridge or a VGA  
> adapter, because at some point Linux is going to come back and try to  
> configure those devices you attempted to Fake. Since we don't really  
> care to have a host bridge or a VGA adapter at this point that seems  
> like a waste of time. While it's likely that we will have something  
> that Intel makes I don't think we want to make it have to be bus 0, id  
> 0 for this to work.
>
> So in summary:
> 1. Update the DMI table so the bios date is > 2001.
> 2. If that fails it's pretty safe to use a M5 SkipFuncEvent to just  
> skip the function.
>
> Ali
>
>
> On Jun 13, 2008, at 3:32 AM, Gabe Black wrote:
>
>   
>> The code following the comment in my original email is below.  
>> Basically,
>> it looks like the kernel reads some registers out of the config  
>> space of
>> bus 0 dev 0 function 0-0x100 and sees if they match certain values.  
>> I'd
>> imagine that wouldn't be very hard to do but I don't have any  
>> experience
>> with the PCI stuff. Is there something I can look at as an example?  
>> How
>> do I put something at a particular bus/dev/function?
>>
>> Gabe
>>
>> static int __init pci_sanity_check(struct pci_raw_ops *o)
>> {
>>      u32 x = 0;
>>      int devfn;
>>
>>      if (pci_probe & PCI_NO_CHECKS)
>>              return 1;
>>      /* Assume Type 1 works for newer systems.
>>         This handles machines that don't have anything on PCI Bus 0. */
>>      if (dmi_get_year(DMI_BIOS_DATE) >= 2001)
>>              return 1;
>>
>>      for (devfn = 0; devfn < 0x100; devfn++) {
>>              if (o->read(0, 0, devfn, PCI_CLASS_DEVICE, 2, &x))
>>                      continue;
>>              if (x == PCI_CLASS_BRIDGE_HOST || x == PCI_CLASS_DISPLAY_VGA)
>>                      return 1;
>>
>>              if (o->read(0, 0, devfn, PCI_VENDOR_ID, 2, &x))
>>                      continue;
>>              if (x == PCI_VENDOR_ID_INTEL || x == PCI_VENDOR_ID_COMPAQ)
>>                      return 1;
>>      }
>>
>>      DBG(KERN_WARNING "PCI: Sanity check failed\n");
>>      return 0;
>> }
>>
>>
>> nathan binkert wrote:
>>     
>>>> So this would be the PCI bus support in the north bridge for  
>>>> instance?
>>>> Should I just arbitrarily pick a chipset and implement that, or is  
>>>> there
>>>> something more generic?
>>>>         
>>> I think that there's really only one interface for this that really
>>> matters.  On alpha, there were lots of north bridge interfaces, but  
>>> on
>>> x86, they still basically use the same one.  Some chipsets have
>>> extensions (for secondary bridges and such), but we don't need to use
>>> those.
>>>
>>> I agree with Ali on the look at the kernel part.
>>>
>>>   Nate
>>> _______________________________________________
>>> m5-dev mailing list
>>> [email protected]
>>> http://m5sim.org/mailman/listinfo/m5-dev
>>>       
>> _______________________________________________
>> m5-dev mailing list
>> [email protected]
>> http://m5sim.org/mailman/listinfo/m5-dev
>>
>>     
>
> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>   

_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to