All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaud Patard <apatard@mandriva.com>
To: Tejun Heo <htejun@gmail.com>
Cc: linux-ide@vger.kernel.org
Subject: Re: [PATCH] Fix libata resource conflict for legacy mode
Date: Mon, 18 Sep 2006 17:02:57 +0200	[thread overview]
Message-ID: <m3zmcxgqu6.fsf@anduin.mandriva.com> (raw)
In-Reply-To: <450EA3BA.8010100@gmail.com> (Tejun Heo's message of "Mon, 18 Sep 2006 22:48:42 +0900")

[-- Attachment #1: Type: text/plain, Size: 1045 bytes --]

Tejun Heo <htejun@gmail.com> writes:

> Hello,

Hi,


>> Index: linux-2.6/drivers/scsi/libata-bmdma.c
>> ===================================================================
>> --- linux-2.6.orig/drivers/scsi/libata-bmdma.c
>> +++ linux-2.6/drivers/scsi/libata-bmdma.c
>> @@ -1016,10 +1016,13 @@ int ata_pci_init_one (struct pci_dev *pd
>>  			res.start = 0x1f0;
>>  			res.end = 0x1f0 + 8 - 1;
>>  			conflict = ____request_resource(&ioport_resource, &res);
>> +			if (conflict->child)
>> +				conflict = ____request_resource(conflict,&res);
>
> IMHO, having something which is slightly more generic would be better - 
> e.g. looping till no child.

Ok. Done in the attached patch.

>
>>  			if (!strcmp(conflict->name, "libata"))
>>  				legacy_mode |= (1 << 0);
>>  			else {
>>  				disable_dev_on_err = 0;
>> +				printk(KERN_WARNING "ata: conflict with %s\n",conflict->name);
>>  				printk(KERN_WARNING "ata: 0x1f0 IDE port busy\n");
>
> Please merge two printks into one.  Other than that, I think printing 

Fixed too.


Regards,
Arnaud

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 2618git_libata_vs_pnp.patch --]
[-- Type: text/x-patch, Size: 1790 bytes --]

When the libata is trying to handle legacy ide ports (0x1f0 for instance), it
doesn't take care if the resource has childs or not. 
The result is that this situation :
0100-01fe : pnp 00:09
  0170-0177 : libata
  01f0-01f7 : libata

is seen as conflict, which is wrong.
The proposed fix is to detect childs and in this case, look at which child is
conflicting.

Signed-off-by: Arnaud Patard <apatard@mandriva.com>
---
Index: linux-2.6/drivers/scsi/libata-bmdma.c
===================================================================
--- linux-2.6.orig/drivers/scsi/libata-bmdma.c
+++ linux-2.6/drivers/scsi/libata-bmdma.c
@@ -1016,11 +1016,14 @@ int ata_pci_init_one (struct pci_dev *pd
 			res.start = 0x1f0;
 			res.end = 0x1f0 + 8 - 1;
 			conflict = ____request_resource(&ioport_resource, &res);
+			while (conflict->child)
+				conflict = ____request_resource(conflict, &res);
 			if (!strcmp(conflict->name, "libata"))
 				legacy_mode |= (1 << 0);
 			else {
 				disable_dev_on_err = 0;
-				printk(KERN_WARNING "ata: 0x1f0 IDE port busy\n");
+				printk(KERN_WARNING "ata: 0x1f0 IDE port busy\n" \
+						    "ata: conflict with %s\n", conflict->name);
 			}
 		} else
 			legacy_mode |= (1 << 0);
@@ -1030,11 +1033,14 @@ int ata_pci_init_one (struct pci_dev *pd
 			res.start = 0x170;
 			res.end = 0x170 + 8 - 1;
 			conflict = ____request_resource(&ioport_resource, &res);
+			while (conflict->child)
+				conflict = ____request_resource(conflict, &res);
 			if (!strcmp(conflict->name, "libata"))
 				legacy_mode |= (1 << 1);
 			else {
 				disable_dev_on_err = 0;
-				printk(KERN_WARNING "ata: 0x170 IDE port busy\n");
+				printk(KERN_WARNING "ata: 0x170 IDE port busy\n" \
+						    "ata: conflict with %s\n", conflict->name);
 			}
 		} else
 			legacy_mode |= (1 << 1);

  reply	other threads:[~2006-09-18 14:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-18 13:16 [PATCH] Fix libata resource conflict for legacy mode Arnaud Patard
2006-09-18 13:48 ` Tejun Heo
2006-09-18 15:02   ` Arnaud Patard [this message]
2006-09-18 16:17     ` Tejun Heo
2006-09-19  4:27     ` Jeff Garzik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m3zmcxgqu6.fsf@anduin.mandriva.com \
    --to=apatard@mandriva.com \
    --cc=htejun@gmail.com \
    --cc=linux-ide@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.