Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Jun 2012 09:50:23 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-acpi@freebsd.org
Cc:        Sean Bruno <seanbru@yahoo-inc.com>
Subject:   Re: [CFT] Sparse Cstate Support -- Its possible, that I don't know what I'm doing.
Message-ID:  <201206210950.23259.jhb@freebsd.org>
In-Reply-To: <1340234916.2858.29.camel@powernoodle.corp.yahoo.com>
References:  <1340121728.5203.8.camel@powernoodle> <1340210648.2858.9.camel@powernoodle.corp.yahoo.com> <1340234916.2858.29.camel@powernoodle.corp.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, June 20, 2012 7:28:36 pm Sean Bruno wrote:
> On Wed, 2012-06-20 at 09:44 -0700, Sean Bruno wrote:
> > On Tue, 2012-06-19 at 09:02 -0700, Sean Bruno wrote:
> > > http://people.freebsd.org/~sbruno/acpi_cpu_cstate_sparse.txt
> > 
> > also, I wanted to point out that I'm returning BUS_PROBE_GENERIC here.
> > 
> > I want to emulate the Intel acpi_idle code that exists in linux-land and
> > I *thought* that I could setup an acpi_cpu_idle module that would come
> > in at a higher priority on Intel cpus, however there's some SYSINIT()
> > hackery going on that I don't know how to handle gracefully.  I'm not
> > sure how to proceed with a different idle module here.  thoughts?
> > 
> > e.g.
> > 
> > static void
> > acpi_cpu_postattach(void *unused __unused)
> > {
> >     device_t *devices;
> >     int err;
> >     int i, n;
> > 
> >     err = devclass_get_devices(acpi_cpu_devclass, &devices, &n);
> >     if (err != 0) {
> >         printf("devclass_get_devices(acpi_cpu_devclass) failed\n");
> >         return;
> >     }
> >     for (i = 0; i < n; i++)
> >         bus_generic_probe(devices[i]);
> >     for (i = 0; i < n; i++)
> >         bus_generic_attach(devices[i]);
> >     free(devices, M_TEMP);
> > }
> > 
> > SYSINIT(acpi_cpu, SI_SUB_CONFIGURE, SI_ORDER_MIDDLE,
> >     acpi_cpu_postattach, NULL);
> > 
> > 
> 
> 
> Ohhhhhh ... right.  This entire idea is stupid and fully demonstrates my
> lack of understanding.  bus_probe/attach can't be used, there's no BUS
> here.  So, SYSINIT() to the rescue.  Ok, that changes things around a
> lot for me.  This BUS_PROBE_GENERIC idea is a dud.

No, every device in new-bus can be a bus (and acpi_cpuX is in fact a bus).  
The issue here is that this driver is deferring attaching child devices until 
later in the boot. This is a bit of a lame workaround that should be using 
new-bus multipass instead.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201206210950.23259.jhb>