Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c

keith mannthey
2006-06-22T19:07:09Z

On Thu, 2006-06-22 at 11:29 -0700, keith mannthey wrote:
> On Fri, 2006-06-23 at 02:41 +0900, KAMEZAWA Hiroyuki wrote:
> > On Thu, 22 Jun 2006 10:25:24 -0700
> > keith mannthey <kmannth@us.ibm.com> wrote:
> > > > Um...my concern is
> > > > - When notify comes, memory hotplug driver is called.
> > > > - but at acpi_bus_add(), PNP0C01 motherboad driver is attached to the device.
> > >
> > > The patch I sent keeps the motherboard driver from attaching and allows
> > > the PNP0C80 device to attach.
> > >
> > My point is...motherboard is not memory. Then, it shouldn't have _CRS handler.
> > Because your ME00/ME01 device has both HID for memory and CID for motherboard,
> > motherboard handler is called.
> > (acpi_add_single_object() attaches the driver which is found 1st.)
> > > > ==
> > > > Device (ME01)
> > > > {
> > > > Name (_HID, EisaId ("PNP0C80"))
> > > > Name (_CID, 0x010CD041)
> > > > ==
> > As I wrote in other mail, why memory and motherboard is compatible device in
> > your SSDT ? If this _CID is necessary for some reason, what should we do is
> > acpi handling problem.
> > So, what you should ask to acpi people is
> > ==
> > my device has both _HID and _CID. But the driver for _HID is different from
> > _CID. I'm glad if the driver for _HID is called but driver for _CID is found
> > before driver for _HID. Then, driver for _CID is called.
> > How should I do ? (or make patch to fix this..)
> > ==
>
> I agree this is an acpi_handling problem where the wrong device is
> attached. I am pursuing ACPI folks today.
>
> I have my patch in place to work around the problem and am looking into
> the the memory driver.
>
> In acpi_memory_enable_device
>
> in list_for_each_entry(info, &mem_device->res_list, list) {
>
> if
> printk ("node: %d , start %08lx, end %08lx \n",node,info-
> >start_addr,info->start_addr+info->length);
> before doing the add memory I see
>
> node: -1 , start 1f0000000, end 270000000
> On node -1 totalpages: 0
> node: -1 , start 170000000, end 1f0000000
>
> Finding the 2 ranges (these are the right ranges and the right chunks)
> is great but acpi_get_node is not working for my handle.
>
> I am continuing to debug.
>
if acpi_get_pxm

status = acpi_evaluate_integer(handle, "_PXM", NULL, &pxm);

This is looking to get the _PXM value from the handle. I don't see a
_PXM filed in my SSDT for my memory device. I don't think it is
required to have the _PXM field. It would be nice if it had one but I
don't think Linux should require one.

If the handle doesn't contain the _PXM device it should ask the arch if
it knows. If the arch doesn't know (by way of SRAT at boot) then it
should set the node to 0. I will send along a patch today.

Thanks,
keith mannthey <kmannth@us.ibm.com>
Linux Technology Center IBM