Subject: Re: [PATCH] Don't call request_region() for 3C90x chips

From: Sergei Shtylyov <[email-masked]>
Date: Wed, 19 Jul 2006 23:08:20 +0400

Hello.

Jeff Garzik wrote:

>> It's generally not a good idea to call request_region() on an address 
>> returned by pci_iomap(), even less so on a MMIO address. And there was 
>> absolutely no point in claiming the region already claimed by the PCI 
>> core, especially with the same PCI generic owner's name. As this is 
>> the only case of the must_free_region flag being set, this flag may go 
>> away as well...

>> Signed-off-by: Sergei Shtylyov <[email-masked]>

> I agree you have identified a bug, but this is not a solution.

> The current driver bug is that it calls request_region() potentially on 
> an MMIO address, but the solution is _not_ to completely avoid reserving 
> the resource.

    It's not even a MMIO/PIO address anymore after pci_iomap() -- it either 
went thru ioremap() or ioport_map() which both change the mapping from the 
physical to the virtual address (or some equivalent of it for I/O ports).

> The region registered with the PCI core, but _not_ claimed by anyone. 
> Someone still needs to either call pci_{request,release}_regions() or 
> request_[mem_]region() to indicate that the resource is reserved.

    Sigh, it seems I've missed that difference. So, I'll recast...

> This bug you have found was probably a missed detail during the 
> conversion to the iomap API.

    Well, not only that: it was wrong once the driver started using MMIO 
(which is of course a preference).

>     Jeff

WBR, Sergei