In theory, it should get detached/decremented/etc. when it is deleted at the end of the method. > -----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