The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] PCI direct access resources
@ 2003-06-20 16:29 Matthew Wilcox
  2003-06-20 16:46 ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 2+ messages in thread
From: Matthew Wilcox @ 2003-06-20 16:29 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel


My mummy always taught me to request resources before I used them.
We weren't reserving the 0xc000-0xcfff range before, either.  I
bet not many people use type 2 accesses these days.

Index: arch/i386/pci/direct.c
===================================================================
RCS file: /var/cvs/linux-2.5/arch/i386/pci/direct.c,v
retrieving revision 1.6
diff -u -p -r1.6 direct.c
--- arch/i386/pci/direct.c	25 Feb 2003 12:39:09 -0000	1.6
+++ arch/i386/pci/direct.c	20 Jun 2003 14:30:26 -0000
@@ -200,6 +200,7 @@
 
 static int __init pci_direct_init(void)
 {
+	struct resource *region, *region2;
 	unsigned int tmp;
 	unsigned long flags;
 
@@ -237,43 +206,53 @@ static int __init pci_direct_init(void)
 	/*
 	 * Check if configuration type 1 works.
 	 */
-	if (pci_probe & PCI_PROBE_CONF1) {
-		outb (0x01, 0xCFB);
-		tmp = inl (0xCF8);
-		outl (0x80000000, 0xCF8);
-		if (inl (0xCF8) == 0x80000000 &&
-		    pci_sanity_check(&pci_direct_conf1)) {
-			outl (tmp, 0xCF8);
-			local_irq_restore(flags);
-			printk(KERN_INFO "PCI: Using configuration type 1\n");
-			if (!request_region(0xCF8, 8, "PCI conf1"))
-				pci_root_ops = NULL;
-			else
-				pci_root_ops = &pci_direct_conf1;
-			return 0;
-		}
-		outl (tmp, 0xCF8);
+	if (!pci_probe & PCI_PROBE_CONF1)
+		goto type2;
+	region = request_region(0xCF8, 8, "PCI conf1");
+	if (!region)
+		goto type2;
+
+	outb(0x01, 0xCFB);
+	tmp = inl(0xCF8);
+	outl(0x80000000, 0xCF8);
+	if (inl(0xCF8) == 0x80000000 &&
+	    pci_sanity_check(&pci_direct_conf1)) {
+		outl(tmp, 0xCF8);
+		local_irq_restore(flags);
+		printk(KERN_INFO "PCI: Using configuration type 1\n");
+		raw_pci_ops = &pci_direct_conf1;
+		return 0;
 	}
+	outl(tmp, 0xCF8);
+	release_resource(region);
 
+ type2:
 	/*
 	 * Check if configuration type 2 works.
 	 */
-	if (pci_probe & PCI_PROBE_CONF2) {
-		outb (0x00, 0xCFB);
-		outb (0x00, 0xCF8);
-		outb (0x00, 0xCFA);
-		if (inb (0xCF8) == 0x00 && inb (0xCFA) == 0x00 &&
-		    pci_sanity_check(&pci_direct_conf2)) {
-			local_irq_restore(flags);
-			printk(KERN_INFO "PCI: Using configuration type 2\n");
-			if (!request_region(0xCF8, 4, "PCI conf2"))
-				pci_root_ops = NULL;
-			else
-				pci_root_ops = &pci_direct_conf2;
-			return 0;
-		}
-	}
+	if (!pci_probe & PCI_PROBE_CONF2)
+		goto out;
+	region = request_region(0xCF8, 4, "PCI conf2");
+	if (!region)
+		goto out;
+	region2 = request_region(0xC000, 0xfff, "PCI conf2");
+	if (!region2)
+		goto fail2;
+	outb(0x00, 0xCFB);
+	outb(0x00, 0xCF8);
+	outb(0x00, 0xCFA);
+	if (inb(0xCF8) == 0x00 && inb(0xCFA) == 0x00 &&
+	    pci_sanity_check(&pci_direct_conf2)) {
+		local_irq_restore(flags);
+		printk(KERN_INFO "PCI: Using configuration type 2\n");
+		raw_pci_ops = &pci_direct_conf2;
+		return 0;
+	}
+	release_resource(region2);
+ fail2:
+	release_resource(region);
 
+ out:
 	local_irq_restore(flags);
 	return 0;
 }

-- 
"It's not Hollywood.  War is real, war is primarily not about defeat or
victory, it is about death.  I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] PCI direct access resources
  2003-06-20 16:29 [PATCH] PCI direct access resources Matthew Wilcox
@ 2003-06-20 16:46 ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 2+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2003-06-20 16:46 UTC (permalink / raw)
  To: Matthew Wilcox; +Cc: Greg KH, linux-kernel


On Fri, 20 Jun 2003, Matthew Wilcox wrote:

> +	if (!pci_probe & PCI_PROBE_CONF1)
> +		goto type2;

(!pci_probe & PCI_PROBE_CONF1) will be always FALSE if pci_probe != 0,
correct check is:

	if ((pci_probe & PCI_PROBE_CONF1) == 0)

> +	if (!pci_probe & PCI_PROBE_CONF2)
> +		goto out;

Same comment here.

--
Bartlomiej


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-06-20 16:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-06-20 16:29 [PATCH] PCI direct access resources Matthew Wilcox
2003-06-20 16:46 ` Bartlomiej Zolnierkiewicz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox