atrtc.c patch for ACPI CMOS region (was Re: ACPI support - Freebsd 10 on Sony Vaio VPCCA3C5E)
Anthony Jenkins
Anthony.B.Jenkins at att.net
Wed Jul 16 21:11:36 UTC 2014
On 07/16/2014 13:16, Ian Smith wrote:
> On Wed, 16 Jul 2014 09:26:08 -0400, Anthony Jenkins wrote:
> > On 07/16/2014 01:32, Daniele Mazzotti wrote:
> >> Hi guys, thanks again for the support, but I am leaving for a
> >> businesses trip and I will be forced to put this debug thing on hold
> >> for a while. I will be back on track next week.
> >
> > Bah... really wanted to figure out the patch problem. I suspect the
> > file picked up some corruption somewhere between the email and your
> > FreeBSD filesystem. Your OS version has the same revision of that
> > source file as mine, so it should apply cleanly. If you feel like
> > tinkering with it in your free time, I've posted the patch here:
> > http://pastebin.com/P0B44u0c
> >
> > Good luck,
> > Anthony
>
> Either by show raw and save, or by download, the patch has ^M lineends.
Bah! Well that'd explain it... I'm generating the file on a pure FreeBSD box, opened in gvim, select all, copy, paste to pastebin.com.
> Interesting, but I can't see atrtc.c being the right sort of place for
> this, seems way out of scope. Couldn't you include its headers and use
> functions rtcin() and writertc() from elsewhere in kernel, perhaps a
> module living in the same hierarchy as acpi_ibm, acpi_asus and such,
> that one could build and kldload if useful on a certain machine/s?
This is in support of the PNP0800 device, for which atrtc.c is the driver. The ACPI spec (5.0 is what I'm reading) says that device should implement a handler to read offset 0x00-0x7F.
> If so, you haven't to do battle with Time Lords :) with something people
> could add and load at own risk without messing with core kernel stuff.
>
> acpi_ibm should be a useful template, as it includes code to read CMOS
> bytes in the 0x60-0x6f range, presumably updated by the BIOS, whether
> opaquely or somehow via AML code I don't know. It uses rtcin() so has
> that scope in place.
>
> I'd still like to see your patch reject attempts to read or write to at
> least below 0x10. Even reading status register/s resets interrupts, and
> why would anyone need to mess with clock and/or timer regs via ACPI?
I assume it'd be the BIOS AML which would use my CMOS region handler; it'd be a BIOS bug that reads/writes the clock regs.
> Have you found exactly which CMOS bytes your box needs to meddle with?
I do have printf()s in my code (don't think I added it to the patch) that says what's read/written, I'll have to look again.
> Maybe you could add a sysctl to limit access to some specific range?
I dunno... I really think what I have is the Right Thing To Do... Someone else from freebsd-acpi@ suggested this approach. Maybe someone versed in ACPI could clarify from the spec?
> Don't mind me, just thinking aloud, and I've no idea how this might
> relate to Daniele's issue with stale battery data?
Agreed... I'm pretty much just blindly tossing the patch over to her. :-) She did complain about suspend issues, and my patch fixes suspend issues on my HP and another guinea pig from the mailing list (with an HP). Next I need to figure out why acpi_hp doesn't work on my laptop, as I see SystemIO calls to 0x72/0x73 when I try to adjust the brightness.
Thanks,
Anthony
> cheers, Ian
>
> PS Daniele: no, never tempted by Sonys; rusted-on Thinkpad kinda guy :)
> _______________________________________________
> freebsd-acpi at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-acpi
> To unsubscribe, send any mail to "freebsd-acpi-unsubscribe at freebsd.org"
>
More information about the freebsd-acpi
mailing list