From: John Stultz <john.stultz@linaro.org>
To: Shawn Guo <shawn.guo@linaro.org>
Cc: linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH] alarmtimer: add .remove_dev hook to put device
Date: Tue, 10 Jul 2012 21:43:15 -0700 [thread overview]
Message-ID: <4FFD0463.8030302@linaro.org> (raw)
In-Reply-To: <20120711034613.GA16212@S2101-09.ap.freescale.net>
On 07/10/2012 08:46 PM, Shawn Guo wrote:
> Hi John,
>
> Is this patch a valid fix or just a noise?
Sorry! This is on my list, but I've not had a chance to get to it.
I'll try to get a closer look later this week!
Thanks for reminding me, and sorry again!
-john
> Regards,
> Shawn
>
> On Thu, Jul 05, 2012 at 12:13:07AM +0800, Shawn Guo wrote:
>> The following is a test sequence that installs a rtc module, remove it
>> and installs it again.
>>
>> $ insmod rtc-snvs.ko
>> snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc0
>> $ hwclock
>> Thu Jul 5 08:53:35 2012 0.000000 seconds
>> $ rmmod rtc-snvs.ko
>> $ insmod rtc-snvs.ko
>> snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc1
>> $ hwclock
>> hwclock: can't open '/dev/misc/rtc': No such file or directory
>> $
>>
>> The device is registered as rtc0 for the first time insmod, while it
>> becomes rtc1 with the later insmod.
>>
>> It's root caused by alarmtimer which never puts the device even when
>> the rtc is removed. The patch adds a .remove_dev hook to have device
>> properly put, so that above insmod/rmmod sequence can the rtc device
>> registered in a consistent behavior.
>>
>> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
>> ---
>> kernel/time/alarmtimer.c | 12 ++++++++++++
>> 1 files changed, 12 insertions(+), 0 deletions(-)
>>
>> diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
>> index aa27d39..39e8773 100644
>> --- a/kernel/time/alarmtimer.c
>> +++ b/kernel/time/alarmtimer.c
>> @@ -96,6 +96,17 @@ static int alarmtimer_rtc_add_device(struct device *dev,
>> return 0;
>> }
>>
>> +static void alarmtimer_rtc_remove_device(struct device *dev,
>> + struct class_interface *class_intf)
>> +{
>> + unsigned long flags;
>> +
>> + spin_lock_irqsave(&rtcdev_lock, flags);
>> + rtcdev = NULL;
>> + put_device(dev);
>> + spin_unlock_irqrestore(&rtcdev_lock, flags);
>> +}
>> +
>> static inline void alarmtimer_rtc_timer_init(void)
>> {
>> rtc_timer_init(&rtctimer, NULL, NULL);
>> @@ -103,6 +114,7 @@ static inline void alarmtimer_rtc_timer_init(void)
>>
>> static struct class_interface alarmtimer_rtc_interface = {
>> .add_dev = &alarmtimer_rtc_add_device,
>> + .remove_dev = &alarmtimer_rtc_remove_device,
>> };
>>
>> static int alarmtimer_rtc_interface_setup(void)
>> --
>> 1.7.5.4
>>
>>
next prev parent reply other threads:[~2012-07-11 4:44 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-04 16:13 [PATCH] alarmtimer: add .remove_dev hook to put device Shawn Guo
2012-07-11 3:46 ` Shawn Guo
2012-07-11 4:43 ` John Stultz [this message]
2012-07-18 23:16 ` John Stultz
2012-07-18 23:23 ` John Stultz
2012-07-19 1:23 ` Shawn Guo
2012-07-19 3:46 ` John Stultz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FFD0463.8030302@linaro.org \
--to=john.stultz@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=shawn.guo@linaro.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.