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

Re: Pb patch pour ehci-hcd (Pb USB2)



Bosc Emmanuel a écrit :
> Bonjour,
> 
> Pour tenter quelque chose pour mon problème de ehci-hcd (carte mère Asus
> P4P800), j'ai tenté de patcher avec le ehci-handoff-2.patch suivant :
> en root, j'ai fait :
> cd /usr/src/
> patch -p1 < ehci-handoff-2.patch
> 
> il me demande alors quel fichier doit être patché.
> Lequel faut-il ?
> (j'ai aussi essayé patch -p0 < ehci-hcd.patch
> et aussi dans /usr/src/linux/ mais sans succès)
> 
> Je joins le code du patch 'ehci-handoff-2.patch' au cas où ça parle à
> quelqu'un...
> merci
> Emmanuel
> 
> #########################
> commit d49d431744007cec0ee1a3ade96f9e0f100c7907
> tree 4ed2f01c98b8fdf0ecd7a92d61f7c1af8beb58a2
> parent 9198769363d4dc1d63d49ecb2e2b189aceb42d94
> author David Brownell <david-b@pacbell.net> 1115497310 -0700
> committer Greg Kroah-Hartman <gregkh@suse.de> 1119908635 -0700
> 
> [PATCH] USB: misc ehci updates
> 
> Various minor EHCI updates
> 
>   * Dump some more info in the debug dumps, notably the product
>     description (e.g. chip vendor), BIOS handhake flags, and
>     debug port status (when it's not managed by the HCD).
> 
>   * Minor updates to the BIOS handoff code:  always flag the HCD
>     as owned by Linux (in case BIOS doesn't grab it "early"),
>     and on the buggy-BIOS path always match the "early handoff"
>     code and forcibly disable SMI IRQs.
> 
>   * For the disabled 64bit DMA support, there's now a constant
>     to use for the mask; use it.
> 
> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
> 
> D:100644 100644 2ff11d53567bcbfd0fdaf48de5dfc545d6d93eab
> 50cb01831075916c5f8e828f5e15f1ddd0df91df M    drivers/usb/host/ehci-dbg.c
> R:100644 100644 527abc693b17841ade6acdf2a673ab5fc5b260e7
> 35248a37b7174ad807110fa74eef1382fe4c4f80 M    drivers/usb/host/ehci-hcd.c
> D:100644 100644 d7b4f7939ded4d16989478ca58fa3edc573fb728
> 36cc1f2218d55d203434aafb0698773291b48e4b M    drivers/usb/host/ehci-hub.c
> D:100644 100644 7df9b9af54f60205b09a6e490db182c33ef922ec
> 45d89a7083b13f4bfd30b319f438c2b996948260 M    drivers/usb/host/ehci-q.c
> 
> Key:
> S: Skipped
> I: Included Included verbatim
> D: Deleted  Manually deleted by subsequent user edit
> R: Revised  Manually revised by subsequent user edit
> 
> Only include bios_handoff change and rediff for 2.6.8 - Horms
> 
> --- a/drivers/usb/host/ehci-hcd.c    2005-07-04 20:49:26.000000000 +0900
> +++ b/drivers/usb/host/ehci-hcd.c    2005-07-04 20:52:40.000000000 +0900
> @@ -288,30 +288,32 @@
>  */
> static int bios_handoff (struct ehci_hcd *ehci, int where, u32 cap)
> {
> -    if (cap & (1 << 16)) {
> -        int msec = 5000;
> -        struct pci_dev *pdev = to_pci_dev(ehci->hcd.self.controller);
> +struct pci_dev *pdev = to_pci_dev(ehci_to_hcd(ehci)->self.controller);
> +    struct pci_dev *pdev = to_pci_dev(ehci_to_hcd(ehci)->self.controller);
> 
> -        /* request handoff to OS */
> -        cap |= 1 << 24;
> -        pci_write_config_dword(pdev, where, cap);
> +    /* always say Linux will own the hardware */
> +    pci_write_config_byte(pdev, where + 3, 1);
> 
> -        /* and wait a while for it to happen */
> +    /* maybe wait a while for BIOS to respond */
> +    if (cap & (1 << 16)) {
>         do {
>             msleep(10);
>             msec -= 10;
>             pci_read_config_dword(pdev, where, &cap);
>         } while ((cap & (1 << 16)) && msec);
>         if (cap & (1 << 16)) {
> -            ehci_err (ehci, "BIOS handoff failed (%d, %04x)\n",
> +            ehci_err(ehci, "BIOS handoff failed (%d, %04x)\n",
>                 where, cap);
>             // some BIOS versions seem buggy...
>             // return 1;
>             ehci_warn (ehci, "continuing after BIOS bug...\n");
> -            return 0;
> -        }
> -        ehci_dbg (ehci, "BIOS handoff succeeded\n");
> +            /* disable all SMIs, and clear "BIOS owns" flag */
> +            pci_write_config_dword(pdev, where + 4, 0);
> +            pci_write_config_byte(pdev, where + 2, 0);
> +        } else
> +            ehci_dbg(ehci, "BIOS handoff succeeded\n");
>     }
> +
>     return 0;
> }
> #######################
> 
> 

Salut,

Ca a l'air d'etre ehci-hcd.c d'après ton post.

debian:/usr/src/linux# find -name "ehci-hcd.c"
./drivers/usb/host/ehci-hcd.c

ca voudrait dire donc que si tu appliques le patch depuis le repertoire
même qui contient le fichier à patcher (cad dans
/usr/src/linux/drivers/usb/host/), fo mettre p0, et si tu descends d'un
cran, cad dans /usr/src/linux/drivers/usb/ c'est p1 et ainsi de suite...

Je te dis ça de mémoire, car je patche vraiment que très très peu donc c
pas fiable à 100% lol, mais c tjs essyable.

Tu sauvegardes on fichier qqque part, tu testes et tu compares les
tailles de fichiers.

Au pire, ca ne fait rien et au moieux ca patche ton fichier :-)

Bon courage.

A+



Reply to: