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

RE: PCI Configuration BAR all '1' write




Since access to the BAR's is usually reserved for the OS, there is really not a problem if it does it right. Nobody prevents you, of course, to invent a mechanism that resets the address back to the original value, but don't forget that you will be violating the PCI spec in that case!
That may be a bigger issue than solving a theoretical case that will never happen. 

Tom


> See my method 1, even writing all '1' to BARx, it doesn't change the
> BARx starting address, only setting a flag indicating next 
> BARx reading
> should return memory size. After second writing, the starting address
> still is unchanged.
> 
> From reliability point of view, the above command serial would cause
> trouble. 
> 
> Thank you. Now I understand what to do:
> 1. setting flag to return memory size needs more logic, but it is more
> reliable and more robotic.
> 2. High address bits R/W enable method saves logic, but 
> leaves a hole to
> system, causing trouble even if the chance is
> 1/1000000000000000000000000000000000000000000000000000000.
> 
> Weng
> 
> -----Original Message-----
> From: Tom Verbeure [mailto:tverb@globespanvirata.com] 
> Sent: Wednesday, March 06, 2002 3:04 PM
> To: WTX@umem.com; pci-sig@znyx.com
> Subject: RE: PCI Configuration BAR all '1' write
> 
> 
> 
> See below for comments...
> 
> > 
> > Hi Amits,
> > I may cause confusion. The following is a serial of software 
> > reading/writing operations to access the BAR0:
> > 
> > For power up software:
> > 
> > Read: 	0x0000,0000		-- initial value
> > Write: 	0xffff,ffff		-- try to read back memory size
> > Read:		0xffff,0000		-- determine size
> > Write:	0x1234,0000		-- memory initial address is:
> > 0x1234,0000
> > 
> > Another software wants to know the BAR0 memory size due to unknown
> > reason:
> 
> Instead of immediately writing 0xffff,ffff, the other software will
> first read the BAR, the write anmd read the 0xffffffff and then write
> back the 0x12340000. This is what happens in Windows for example...
> 
> ** Read:     0x1234,0000
> > Write:	0xffff,ffff		-- try to read back memory size
> > Read:		0xffff,0000		-- determine size
> ** Write:    0x1234,0000
> 
> 
> 
> ******************Legal Disclaimer**************************
> "This email may contain confidential and privileged material for the
> sole use of the intended recipient.  Any unauthorized review, use or
> distribution by others is strictly prohibited.  If you have 
> received the
> message in error, please advise the sender by reply email
> @globespanvirata.com, and delete the message. Thank you."
> ****************************************************************
> 
> 
>