From owner-cvs-all Thu Oct 4 5:35:36 2001 Delivered-To: cvs-all@freebsd.org Received: from anchor-post-34.mail.demon.net (anchor-post-34.mail.demon.net [194.217.242.92]) by hub.freebsd.org (Postfix) with ESMTP id D023C37B403; Thu, 4 Oct 2001 05:35:27 -0700 (PDT) Received: from [62.49.251.130] (helo=herring.nlsystems.com) by anchor-post-34.mail.demon.net with esmtp (Exim 2.12 #1) id 15p7in-000AK3-0Y; Thu, 4 Oct 2001 13:35:25 +0100 Received: from salmon.nlsystems.com (salmon [10.0.0.3]) by herring.nlsystems.com (8.11.2/8.11.2) with ESMTP id f94CY5702163; Thu, 4 Oct 2001 13:34:05 +0100 (BST) (envelope-from dfr@nlsystems.com) Date: Thu, 4 Oct 2001 13:32:51 +0100 (BST) From: Doug Rabson To: Kazutaka YOKOTA Cc: Doug Rabson , , Subject: Re: cvs commit: src/sys/dev/acpica acpi.c In-Reply-To: <200110041159.UAA24572@zodiac.mech.utsunomiya-u.ac.jp> Message-ID: <20011004132820.D1298-100000@salmon.nlsystems.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Thu, 4 Oct 2001, Kazutaka YOKOTA wrote: > > >dfr 2001/10/04 01:31:17 PDT > > > > Modified files: > > sys/dev/acpica acpi.c > > Log: > > Check the compatible ID as well as the hardware ID in acpi_MatchHid. > > > > Revision Changes Path > > 1.41 +6 -1 src/sys/dev/acpica/acpi.c > > I think we had better be careful when matching against compatible IDs. > We should distinguish the case when the hardware ID matches, and the > case when the compatible ID matches. > > If we don't distinguish the hardware ID match and the compatible ID > match, the following will happen. > > The device X has a hardware PnP ID of XXXYYYY and a compatible ID of > PNPWWWW. > > The device driver A supports PNPWWWW device. > > The device driver B supports XXXYYYY device. > > When the driver A gets at the device X before the device B does, we > will have the driver A installed for this device, instead of the > driver B, which offers specific support for PNPWWWW. > > We need to make the probe routine in the device drivers return 0 > (exact match) when the hardware ID exactly matches, and return a > negative value (lower priority) when the compatible ID matches. Good point. How do you think we should tackle this? I guess I could add an argument to acpi_MatchHid which could be used to return a priority value. Perhaps something like this? Index: acpi.c =================================================================== RCS file: /home/ncvs/src/sys/dev/acpica/acpi.c,v retrieving revision 1.41 diff -u -r1.41 acpi.c --- acpi.c 2001/10/04 08:31:17 1.41 +++ acpi.c 2001/10/04 12:31:37 @@ -906,7 +906,7 @@ * Match a HID string against a device */ BOOLEAN -acpi_MatchHid(device_t dev, char *hid) +acpi_MatchHid(device_t dev, char *hid, int *prio_return) { ACPI_HANDLE h; ACPI_DEVICE_INFO devinfo; @@ -921,12 +921,16 @@ return(FALSE); if ((error = AcpiGetObjectInfo(h, &devinfo)) != AE_OK) return(FALSE); - if ((devinfo.Valid & ACPI_VALID_HID) && !strcmp(hid, devinfo.HardwareId)) + if ((devinfo.Valid & ACPI_VALID_HID) && !strcmp(hid, devinfo.HardwareId)) { + *prio_return = 0; return(TRUE); + } if ((error = acpi_EvaluateInteger(h, "_CID", &cid)) != AE_OK) return(FALSE); - if (cid == PNP_EISAID(hid)) + if (cid == PNP_EISAID(hid)) { + *prio_return = -1; return(TRUE); + } return(FALSE); } -- Doug Rabson Mail: dfr@nlsystems.com Phone: +44 20 8348 6160 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message