[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Disabling a BAR





>----------
>> From: 	Devendra K Tripathi[SMTP:tripathi@Synopsys.COM]
>> Sent: 	Friday, October 18, 1996 7:24 PM
>> To: 	Mailing List Recipients
>> Cc: 	pci-sig@znyx.com
>> Subject: 	Re: Disabling a BAR
>
>
>> Hi Cliff,
>
>> > Is a BAR supposed to be disabled when configuration software writes a
>> > particular value (presumably zero, although all ones would make sense as
>> > well)?
>
>> If we excude the address part, there is no way to disable a
>>"particular" BAR.
>> Offcourse we can disable complete space.

Granted that hardware is required to disable a particular BAR without
disabling 
all of them.  The way I read the spec, that hardware is a requirement.
>
>> > 
>> > Is it non-compliant for a target device to respond to an address of zero
>> > (up to the range of the BAR) if one of its BARs is configured with a
>> > zero address field (the core I am using does)? 
>
>> I do not have an emphatic answer to this. I asked this question a
>>while back and
>> response was that "it is illegal to have zero address in BAR range".
>>As somebody
>> pointed out that time that lower address is normally assigned to local
>>resources
>> so a an address "zero" will we out of scope of a PCI device.
>
I don't agree that it is illegal to have a zero address in a BAR.  The
spec says 
a zero in a BAR is an "invalid" address, not the same as illegal.  The
question
>is how the device is supposed to respond to an "invalid" address.
>
>> > If a BAR is disabled, does that mean that it should read back as
>> > non-existent (LS four bits forced to zero)?  Is it sufficient for it to
>> > just not respond to bus transactions?  Will it confuse any software if
>> > the BAR reads as existing but zero?
>
>> This may not help as lower four bits being zero implies " a non
>>prefetchable memory
>> space which is locatable anywhere in 32 bit address space". I think, this
>> is a legal case. 
>
This question is really about the way the note on page 26 is worded. 
For 
reference: 'Note: A Base Address register does not contain a valid
address 
when it is equal to "0".'

A literal interpretation would conclude that the entire BAR (not just
the 
address field) would have to be set to zero to not contain a valid
address.  
That doesn't really make sense since the discussion in section 6.2.5.1 
(page 196) talks about hardwiring the LS bits.  However, it is possible 
to design a BAR that only sets the LS bits if there is a one somewhere 
in the address field.

My interpretation is that a BAR is 'unimplemented' if you write all ones

and read back all zeros.  Anything else is a implemented BAR.  Bit 2 
handles the case of a 64 bit BAR with all other bits in the lower DWORD 
hardwired to zero.  Some may quibble that reading back all zeros 
indicates a 4Gig BAR, but I disagree since no practical system could 
use such a device.

Given that an implemented BAR will read back some ones, my only 
possible interpretation for the note on page 26 is that a zero in the 
address field is a special case to provide a mechanism for individually 
disabling BARs.  How to handle the LS bits is merely a nit that may 
>have implications for configuration software compatibility.
>
>> > I am planning on detecting a zero address field to disable a BAR and
>> > ignore any address within the range defined by that BAR.  I plan to
>> > force the LS four bits to zero if the address range is zero.
> 
>> As pointed above, it may not help. The only possibility is to detect this
>> condition and not generate DEVSEL.

Exactly.
>
>> > Comments/Answers?
>> > 
>> > Cliff Kimmery
>> > Honeywell Inc.
>> > kimmery@space.honeywell.com
>
>
>> Thanks,
>> Tripathi.

Thanks for your comments.  We are getting to the point in our design 
where this issue is becoming important.
>
>> PS: I will appreciate if somebody could give an emphatic answer to
>>second item that is
>>     "is it illegal to assign address zero to BAR" or in other words
>>"is it OK
>>     not to assert DEVSEL if complete address field is zero".
>
Second the motion.  I would change the question to "is it legal to 
assert DEVSEL if the address field of a BAR is zero".

Thanks,
Cliff
>
™û