Date: Sun, 08 May 2005 13:46:33 -0700 From: Nate Lawson <nate@root.org> To: Takanori Watanabe <takawata@init-main.com> Cc: freebsd-acpi@freebsd.org Subject: Re: Porting code from the Linux ibm-acpi sourceforge package Message-ID: <427E7AA9.6040703@root.org> In-Reply-To: <200505081157.j48Bva9s043547@sana.init-main.com> References: <200505081157.j48Bva9s043547@sana.init-main.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Takanori Watanabe wrote: > In message <20050508024448.A943@cons.org>, Martin Cracauer さんいわく: > >>Hi, >> >>I reinstalled my Thinkpad R40 with FreeBSD-5-stable. Works very well >>except for video corruption on sleep and that I miss some ACPI >>functionality I had with the ibm-acpi package under Linux. > > > Some functionalies are implimented in acpi_ibm. In particular, sys/dev/acpi_support/acpi_ibm.c If you want to update that, it would be good since Linux appears to have reverse engineered more capabilities recently. >>More specifically, I would like to port or reimplement some parts of >>it, and I would like to start with the code to eject and re-mount the >>ultrabay devices. >> >>I have the Linux code in front of me which is showing, for the example >>of the basic bay identifier and the eject code: >> >>IBM_HANDLE(bay, root, >> "\\_SB.PCI.IDE.SECN.MAST", /* 570 */ >> "\\_SB.PCI0.IDE0.IDES.IDSM", /* 600e/x, 770e, 770x */ >> "\\_SB.PCI0.IDE0.SCND.MSTR", /* all others */ >>); /* A21e, R30, R31 */ >>IBM_HANDLE(bay_ej, bay, >> "_EJ3", /* 600e/x, A2xm/p, A3x */ >> "_EJ0", /* all others */ >>); /* 570,A21e,G4x,R30,R31,R32,R40e,R50e */ > > But eject handling is not supported . There is a lot of work to do here and not much of it has to do with ACPI. I have a patch for ACPI eject support that I'll post again some time. But it is not usable since many device drivers don't support eject. For instance, our ATA driver did not support detach until the recent mkIII import. I'm not sure if it supports forced detach yet. Going up a level, I'm not sure how our filesystem drivers would support a drive disappearing out from under them. If you want to contribute, I think a good first step is adding a testing SYSCTL_PROC that calls device_detach(devclass_get_device(devclass_find("acd"), 0)) and then running it to see if it works. Linux doesn't yet implement a proper device tree (although they're getting better). So they have to have lots of hacks like these handle arrays to figure out what to eject. In FreeBSD, the ACPI side is very simple -- you get a notify, take the passed in handle, and call the associated device_t's detach routine. That's what my patch does. No hardcoded paths. -- Nate
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?427E7AA9.6040703>