I filed

6718193 ultra 20 resume fails to resume sata disk

which might be related.

Joe Townsend


J?rgen Keil wrote:
> Can anyone reproduce a hanging system when trying to use S3 suspend-to-ram,
> immediately after the first uhci driver instance gets suspended?
> Most likely this is an issue only on systems where uhci is sharing
> it's interrupt vector with other devices.
>
> My Toshiba Tecra S1 laptop used to be able to enter S3 suspend-to-ram
> mode.6718193 ultra 20 resume fails to resume sata disk -filed
>
>
> Seems that since the putback for 6681221 "Solaris hangs during early boot
> when EHCI-2 is enabled from BIOS" S3-suspend is broken.  As soon as the first
> uhci controller gets suspended (uhci0), system hangs (with an interrupt 
> storm?).
> The laptop doesn't reach S3-STR state any more.
>
> There is an interrupt pending for uhci0 (intr_status == 1), but interrupts
> are supposed to be disabled (intr_reg == 0), so the code returns from
> uhci_intr without acknowledging the pending interrupt (lines 954 - 952 in 
> uhci.c) .
> Interrupt handler is immediately re-entered; there's no more progress with
> S3-suspend.
>
> usr/src/uts/common/io/usb/hcd/uhci/uhci.c:
>    940          /* Get the status of the interrupts */
>    941          intr_status = Get_OpReg16(USBSTS);
>    942          intr_reg = Get_OpReg16(USBINTR);
>    943
>    944          USB_DPRINTF_L3(PRINT_MASK_INTR, uhcip->uhci_log_hdl,
>    945              "uhci_intr: intr_status = %x, intr_reg = %x",
>    946              intr_status, intr_reg);
>    947
>    948          /*
>    949           * If uhci interrupts are all disabled, the driver should 
> return
>    950           * unclaimed.
>    951           * HC Process Error and Host System Error interrupts cannot be
>    952           * disabled by intr register, and need to be judged 
> separately.
>    953           */
>    954          if (((intr_reg & ENABLE_ALL_INTRS) == 0) &&
>    955              ((intr_status & USBSTS_REG_HC_PROCESS_ERR) == 0) &&
>    956              ((intr_status & USBSTS_REG_HOST_SYS_ERR) == 0)) {
>    957
>    958                  USB_DPRINTF_L3(PRINT_MASK_INTR, uhcip->uhci_log_hdl,
>    959                      "uhci_intr: interrupts disabled, unclaim");
>    960                  mutex_exit(&uhcip->uhci_int_mutex);
>    961
>    962                  return (DDI_INTR_UNCLAIMED);
>    963          }
> --
> This message posted from opensolaris.org
> _______________________________________________
> pm-discuss mailing list
> pm-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/pm-discuss
>   


Reply via email to