public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* broken bm_sts on 82801CA?
@ 2003-10-07  6:38 Nate Lawson
       [not found] ` <20031006233406.N4792-Y6VGUYTwhu0@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Nate Lawson @ 2003-10-07  6:38 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

My chipset claims to be: Intel 82801CA/CAM (ICH3) and it's on an IBM T23
thinkpad.  While testing my Cx driver, I noticed that bm_sts is always
set, even when I clear it by writing a 1 to the register.  I _know_ the
box is idle so I believe this bit to be broken.  Can anyone confirm this?
I noticed the errata probe for the PIIX4 but I don't think it covers my
part.

Thanks,
Nate


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

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

* Re: broken bm_sts on 82801CA?
       [not found] ` <20031006233406.N4792-Y6VGUYTwhu0@public.gmane.org>
@ 2003-10-07  8:55   ` Ducrot Bruno
       [not found]     ` <20031007085536.GB11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Ducrot Bruno @ 2003-10-07  8:55 UTC (permalink / raw)
  To: Nate Lawson; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Mon, Oct 06, 2003 at 11:38:07PM -0700, Nate Lawson wrote:
> My chipset claims to be: Intel 82801CA/CAM (ICH3) and it's on an IBM T23
> thinkpad.  While testing my Cx driver, I noticed that bm_sts is always
> set, even when I clear it by writing a 1 to the register.  I _know_ the
> box is idle so I believe this bit to be broken.  Can anyone confirm this?
> I noticed the errata probe for the PIIX4 but I don't think it covers my
> part.
> 

Have you any kind of usb bus support compiled in your kernel?
If yes, try without.

-- 
Ducrot Bruno

--  Which is worse:  ignorance or apathy?
--  Don't know.  Don't care.


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

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

* Re: broken bm_sts on 82801CA?
       [not found]     ` <20031007085536.GB11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
@ 2003-10-07 18:10       ` Nate Lawson
       [not found]         ` <20031008123103.GG11391@poupinou.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Nate Lawson @ 2003-10-07 18:10 UTC (permalink / raw)
  To: Ducrot Bruno; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Tue, 7 Oct 2003, Ducrot Bruno wrote:
> On Mon, Oct 06, 2003 at 11:38:07PM -0700, Nate Lawson wrote:
> > My chipset claims to be: Intel 82801CA/CAM (ICH3) and it's on an IBM T23
> > thinkpad.  While testing my Cx driver, I noticed that bm_sts is always
> > set, even when I clear it by writing a 1 to the register.  I _know_ the
> > box is idle so I believe this bit to be broken.  Can anyone confirm this?
> > I noticed the errata probe for the PIIX4 but I don't think it covers my
> > part.
>
> Have you any kind of usb bus support compiled in your kernel?
> If yes, try without.

Ah, I'll try that.  I do have USB support compiled in.  This is on
FreeBSD, btw.

-Nate


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

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

* Re: broken bm_sts on 82801CA?
       [not found]           ` <20031008123103.GG11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
@ 2003-10-08 16:55             ` Nate Lawson
       [not found]               ` <20031008095321.B10515-Y6VGUYTwhu0@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Nate Lawson @ 2003-10-08 16:55 UTC (permalink / raw)
  To: Ducrot Bruno; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Wed, 8 Oct 2003, Ducrot Bruno wrote:
> On Tue, Oct 07, 2003 at 11:10:37AM -0700, Nate Lawson wrote:
> > On Tue, 7 Oct 2003, Ducrot Bruno wrote:
> > > On Mon, Oct 06, 2003 at 11:38:07PM -0700, Nate Lawson wrote:
> > > > My chipset claims to be: Intel 82801CA/CAM (ICH3) and it's on an IBM T23
> > > > thinkpad.  While testing my Cx driver, I noticed that bm_sts is always
> > > > set, even when I clear it by writing a 1 to the register.  I _know_ the
> > > > box is idle so I believe this bit to be broken.  Can anyone confirm this?
> > > > I noticed the errata probe for the PIIX4 but I don't think it covers my
> > > > part.
> > >
> > > Have you any kind of usb bus support compiled in your kernel?
> > > If yes, try without.
> >
> > Ah, I'll try that.  I do have USB support compiled in.  This is on
> > FreeBSD, btw.
>
> That more an hardware design issue due to how hotplug work in usb busses
> in general, and it may need to be workaround, so if anybody haven't yet worked on
> C-states on FreeBSD..  Please note also that Linux do not workaround that
> btw.

I have implemented C-states in freebsd, that's how I ran into this
problem.  I'll be committing the code once it's cleaned up a little.

Since Linux always demotes to "don't enter a Cx state" if bm_sts indicates
activity, are you saying that if you have a USB bus configured in Linux,
you don't even use C1 (HLT)?

-Nate


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php

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

* Re: broken bm_sts on 82801CA?
       [not found]               ` <20031008095321.B10515-Y6VGUYTwhu0@public.gmane.org>
@ 2003-10-08 17:28                 ` Ducrot Bruno
       [not found]                   ` <20031008172800.GI11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Ducrot Bruno @ 2003-10-08 17:28 UTC (permalink / raw)
  To: Nate Lawson; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Wed, Oct 08, 2003 at 09:55:35AM -0700, Nate Lawson wrote:
> On Wed, 8 Oct 2003, Ducrot Bruno wrote:
> > On Tue, Oct 07, 2003 at 11:10:37AM -0700, Nate Lawson wrote:
> > > On Tue, 7 Oct 2003, Ducrot Bruno wrote:
> > > > On Mon, Oct 06, 2003 at 11:38:07PM -0700, Nate Lawson wrote:
> > > > > My chipset claims to be: Intel 82801CA/CAM (ICH3) and it's on an IBM T23
> > > > > thinkpad.  While testing my Cx driver, I noticed that bm_sts is always
> > > > > set, even when I clear it by writing a 1 to the register.  I _know_ the
> > > > > box is idle so I believe this bit to be broken.  Can anyone confirm this?
> > > > > I noticed the errata probe for the PIIX4 but I don't think it covers my
> > > > > part.
> > > >
> > > > Have you any kind of usb bus support compiled in your kernel?
> > > > If yes, try without.
> > >
> > > Ah, I'll try that.  I do have USB support compiled in.  This is on
> > > FreeBSD, btw.
> >
> > That more an hardware design issue due to how hotplug work in usb busses
> > in general, and it may need to be workaround, so if anybody haven't yet worked on
> > C-states on FreeBSD..  Please note also that Linux do not workaround that
> > btw.
> 
> I have implemented C-states in freebsd, that's how I ran into this
> problem.  I'll be committing the code once it's cleaned up a little.
> 
> Since Linux always demotes to "don't enter a Cx state" if bm_sts indicates
> activity, are you saying that if you have a USB bus configured in Linux,
> you don't even use C1 (HLT)?
> 

What?  If so, there is a bug somewhere since we should look at bm status only at
C2 (only if we have to go to C3) or C3 state.
Sound like you are right, btw.  I have to look a little deeper.  Thanks for pointing
this.

-- 
Ducrot Bruno

--  Which is worse:  ignorance or apathy?
--  Don't know.  Don't care.


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php

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

* Re: broken bm_sts on 82801CA?
       [not found]                   ` <20031008172800.GI11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
@ 2003-10-08 17:40                     ` Nate Lawson
       [not found]                       ` <20031008103531.B10689-Y6VGUYTwhu0@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Nate Lawson @ 2003-10-08 17:40 UTC (permalink / raw)
  To: Ducrot Bruno; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Wed, 8 Oct 2003, Ducrot Bruno wrote:
> On Wed, Oct 08, 2003 at 09:55:35AM -0700, Nate Lawson wrote:
> > On Wed, 8 Oct 2003, Ducrot Bruno wrote:
> > > That more an hardware design issue due to how hotplug work in usb busses
> > > in general, and it may need to be workaround, so if anybody haven't yet worked on
> > > C-states on FreeBSD..  Please note also that Linux do not workaround that
> > > btw.
> >
> > I have implemented C-states in freebsd, that's how I ran into this
> > problem.  I'll be committing the code once it's cleaned up a little.
> >
> > Since Linux always demotes to "don't enter a Cx state" if bm_sts indicates
> > activity, are you saying that if you have a USB bus configured in Linux,
> > you don't even use C1 (HLT)?
>
> What?  If so, there is a bug somewhere since we should look at bm status only at
> C2 (only if we have to go to C3) or C3 state.
> Sound like you are right, btw.  I have to look a little deeper.  Thanks for pointing
> this.

This is from 2.5.74.  If C3 is supported by the platform, unconditionally
set flags.bm_check:

		else {
			pr->power.states[ACPI_STATE_C3].valid = 1;
			pr->power.states[ACPI_STATE_C3].latency_ticks =
				US_TO_PM_TIMER_TICKS(acpi_fadt.plvl3_lat);
			pr->flags.bm_check = 1;
		}

In acpi_processor_idle(), if bm_check, read the bm_sts register and if it
is non-zero, set next_state to be the demotion state but don't sleep this
quantum.  Instead, enable IRQs and stay active:

		if (pr->power.bm_activity & cx->demotion.threshold.bm) {
			local_irq_enable();
			next_state = cx->demotion.state;
			goto end;
		}

However, since this code is run every time acpi_processor_idle() is
called, it will never enter even C2 if you have a bm_sts bit that is
always 1.

-Nate


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php

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

* Re: broken bm_sts on 82801CA?
       [not found]                       ` <20031008103531.B10689-Y6VGUYTwhu0@public.gmane.org>
@ 2003-10-10 10:58                         ` Ducrot Bruno
       [not found]                           ` <20031010105834.GM11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Ducrot Bruno @ 2003-10-10 10:58 UTC (permalink / raw)
  To: Nate Lawson; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Wed, Oct 08, 2003 at 10:40:21AM -0700, Nate Lawson wrote:
> On Wed, 8 Oct 2003, Ducrot Bruno wrote:
> > On Wed, Oct 08, 2003 at 09:55:35AM -0700, Nate Lawson wrote:
> > > On Wed, 8 Oct 2003, Ducrot Bruno wrote:
> > > > That more an hardware design issue due to how hotplug work in usb busses
> > > > in general, and it may need to be workaround, so if anybody haven't yet worked on
> > > > C-states on FreeBSD..  Please note also that Linux do not workaround that
> > > > btw.
> > >
> > > I have implemented C-states in freebsd, that's how I ran into this
> > > problem.  I'll be committing the code once it's cleaned up a little.
> > >
> > > Since Linux always demotes to "don't enter a Cx state" if bm_sts indicates
> > > activity, are you saying that if you have a USB bus configured in Linux,
> > > you don't even use C1 (HLT)?
> >
> > What?  If so, there is a bug somewhere since we should look at bm status only at
> > C2 (only if we have to go to C3) or C3 state.
> > Sound like you are right, btw.  I have to look a little deeper.  Thanks for pointing
> > this.
> 
> This is from 2.5.74.  If C3 is supported by the platform, unconditionally
> set flags.bm_check:
> 
> 		else {
> 			pr->power.states[ACPI_STATE_C3].valid = 1;
> 			pr->power.states[ACPI_STATE_C3].latency_ticks =
> 				US_TO_PM_TIMER_TICKS(acpi_fadt.plvl3_lat);
> 			pr->flags.bm_check = 1;
> 		}
> 
> In acpi_processor_idle(), if bm_check, read the bm_sts register and if it
> is non-zero, set next_state to be the demotion state but don't sleep this
> quantum.  Instead, enable IRQs and stay active:
> 
> 		if (pr->power.bm_activity & cx->demotion.threshold.bm) {
> 			local_irq_enable();
> 			next_state = cx->demotion.state;
> 			goto end;
> 		}
> 
> However, since this code is run every time acpi_processor_idle() is
> called, it will never enter even C2 if you have a bm_sts bit that is
> always 1.
> 

I checked a little bit more, but I think you are wrong because
acpi_processor_power_activate(pr, next_state), with next_state == ACPI_STATE_C2,
will be called after the end label,
and since pr->power.states[ACPI_STATE_C2].demotion.threshold.bm  
is always 0 we do not go to the 'then' statement at the next run if we
were at C3 state.

-- 
Ducrot Bruno

--  Which is worse:  ignorance or apathy?
--  Don't know.  Don't care.


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php

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

* Re: broken bm_sts on 82801CA?
       [not found]                           ` <20031010105834.GM11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
@ 2003-10-10 19:35                             ` Nate Lawson
  0 siblings, 0 replies; 8+ messages in thread
From: Nate Lawson @ 2003-10-10 19:35 UTC (permalink / raw)
  To: Ducrot Bruno; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Fri, 10 Oct 2003, Ducrot Bruno wrote:
> On Wed, Oct 08, 2003 at 10:40:21AM -0700, Nate Lawson wrote:
> > However, since this code is run every time acpi_processor_idle() is
> > called, it will never enter even C2 if you have a bm_sts bit that is
> > always 1.
>
> I checked a little bit more, but I think you are wrong because
> acpi_processor_power_activate(pr, next_state), with next_state == ACPI_STATE_C2,
> will be called after the end label,
> and since pr->power.states[ACPI_STATE_C2].demotion.threshold.bm
> is always 0 we do not go to the 'then' statement at the next run if we
> were at C3 state.

Yes, I was incorrect.  It should always go to C2.

-Nate


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php

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

end of thread, other threads:[~2003-10-10 19:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-10-07  6:38 broken bm_sts on 82801CA? Nate Lawson
     [not found] ` <20031006233406.N4792-Y6VGUYTwhu0@public.gmane.org>
2003-10-07  8:55   ` Ducrot Bruno
     [not found]     ` <20031007085536.GB11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
2003-10-07 18:10       ` Nate Lawson
     [not found]         ` <20031008123103.GG11391@poupinou.org>
     [not found]           ` <20031008123103.GG11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
2003-10-08 16:55             ` Nate Lawson
     [not found]               ` <20031008095321.B10515-Y6VGUYTwhu0@public.gmane.org>
2003-10-08 17:28                 ` Ducrot Bruno
     [not found]                   ` <20031008172800.GI11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
2003-10-08 17:40                     ` Nate Lawson
     [not found]                       ` <20031008103531.B10689-Y6VGUYTwhu0@public.gmane.org>
2003-10-10 10:58                         ` Ducrot Bruno
     [not found]                           ` <20031010105834.GM11391-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
2003-10-10 19:35                             ` Nate Lawson

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