On Thursday 14 December 2006 17:13, Moore, Robert wrote: > In theory, it should get detached/decremented/etc. when it is deleted at > the end of the method. That's what I thought, too, but I can't figure out where this happens. I was looking for calls to acpi_ev_detach_region(), but I don't see any of those that look like they happen at the end of a method. We instrumented acpi_ev_detach_region(), and we never see it called for the LREG dynamic OpRegions. Were we looking in the wrong place? > > -----Original Message----- > > From: Bjorn Helgaas [mailto:bjorn.helgaas@xxxxxx] > > Sent: Thursday, December 14, 2006 4:01 PM > > To: linux-acpi@xxxxxxxxxxxxxxx > > Cc: Moore, Robert > > Subject: Large Reference Count warnings > > > > I have the AML below that defines an OpRegion inside the scope of > > a method. The region gets attached (and its ref count incremented) > > in this path: > > > > acpi_ev_attach_region > > acpi_ev_initialize_region > > acpi_ds_load2_end_op > > acpi_ds_exec_end_op > > acpi_ps_parse_loop > > acpi_ps_parse_aml > > > > But I don't see any corresponding place where the ref count gets > > decremented. That only seems to happen via acpi_ev_install_handler() > > or acpi_remove_address_space_handler(), neither of which is called > > from the interpreter. > > > > I expected the OpRegion to be detached when exiting the LRRD scope. > > Is that supposed to happen? > > > > On a large system, we are tripping over warnings like this: > > > > ACPI Warning (utdelete-0397): Large Reference Count (801) in object > > e0000a0ff6797ab0 [20060707] > > > > This method is used to access registers in a PCI host bridge, so > > we do lots of attaches for the LREG region, which eventually bumps > > the ref count above the 0x800 limit. > > > > FWIW, this didn't seem to happen with older kernels, like RHEL4. > > I don't know whether the difference is in the ACPI CA or in the > > way Linux is using the root bridges. > > > > > > Device (L000) > > { > > ... > > Method (LRRD, 6, NotSerialized) > > { > > Store (Arg0, Local0) > > Store (Arg1, Local1) > > Add (Local0, Arg2, Local0) > > ShiftLeft (Local1, 0x20, Local1) > > Or (Local0, Local1, Local0) > > OperationRegion (LREG, SystemMemory, Local0, Arg3) > > Field (LREG, ByteAcc, NoLock, Preserve) > > { > > LRDB, 8 > > } > > ... > - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html