- 08 1月, 2011 30 次提交
-
-
由 Jesper Juhl 提交于
ACPI Thinkpad: We must always call va_end() after va_start() but do not do so in thinkpad_acpi.c::acpi_evalf() Hi, In drivers/platform/x86/thinkpad_acpi.c::acpi_evalf() we don't always call va_end() after va_start(). This patch corrects that. Signed-off-by: NJesper Juhl <jj@chaosbits.net> Acked-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Lee, Chun-Yi 提交于
Initial wlan/bluetooth/wwan rfkill software block state when acer-wmi driver probe. Acer notebook can save the devices state and this patch can use it to initial the devices' rfkill state. Signed-off-by: NLee, Chun-Yi <jlee@novell.com> Acked-by: NThomas Renninger <trenn@suse.de> Cc: Carlos Corbacho <carlos@strangeworlds.co.uk> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Lee, Chun-Yi 提交于
Check the Acer OEM-specific Type AA to detect the WiFi/Bluetooth/3G devices available or not, and set the devices capability flag. Signed-off-by: NLee, Chun-Yi <jlee@novell.com> Reviewed-by: NJean Delvare <jdelvare@suse.de> Reviewed-by: NDmitry Torokhov <dtor@mail.ru> Acked-by: NThomas Renninger <trenn@suse.de> Acked-by: NJiri Benc <jbenc@suse.cz> Cc: Carlos Corbacho <carlos@strangeworlds.co.uk> Cc: Corentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Lee, Chun-Yi 提交于
Add 3G rfkill sysfs file for provide userland to control 3G device on/off by using WMI method. Signed-off-by: NLee, Chun-Yi <jlee@novell.com> Acked-by: NThomas Renninger <trenn@suse.de> Acked-by: NJiri Benc <jbenc@suse.cz> Acked-by: NDmitry Torokhov <dtor@mail.ru> Signed-off-by: NCarlos Corbaho <carlos@strangeworlds.co.uk> Cc: Corentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Lee, Chun-Yi 提交于
Add acer wmi hotkey event support. Install a wmi notify handler to transfer wmi event key to key code, then send out keycode through acer wmi input device to userland. Signed-off-by: NLee, Chun-Yi <jlee@novell.com> Acked-by: NDmitry Torokhov <dtor@mail.ru> Acked-by: NThomas Renninger <trenn@suse.de> Acked-by: NJiri Benc <jbenc@suse.cz> Signed-off-by: NCarlos Corbacho <carlos@strangeworlds.co.uk> Cc: Corentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Sedat Dilek 提交于
With 'make oldnoconfig' I see these warnings in linux-next (next-20101208): drivers/platform/x86/Kconfig:422:error: recursive dependency detected! drivers/platform/x86/Kconfig:422: symbol EEEPC_WMI depends on ACPI_WMI drivers/platform/x86/Kconfig:438: symbol ACPI_WMI is selected by ACER_WMI drivers/platform/x86/Kconfig:18: symbol ACER_WMI depends on LEDS_CLASS drivers/leds/Kconfig:10: symbol LEDS_CLASS is selected by EEEPC_WMI This patch replaces all "select on ACPI_WMI" by "depends on ACPI_WMI". Quote from David Woodhouse: "A better policy is: "NEVER USE SELECT"." Reported-and-tested-by: NSedat Dilek <sedat.dilek@gmail.com> Signed-off-by: NSedat Dilek <sedat.dilek@gmail.com> Acked-by: NRandy Dunlap <randy.dunlap@oracle.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Ike Panhc 提交于
Passing ideapad_priv as argument and try not to using too much global variable. This is part 2 for rfkill. Signed-off-by: NIke Panhc <ike.pan@canonical.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Ike Panhc 提交于
Passing ideapad_priv as argument and try not to using too much global variable. This is part 1 for platform driver and input device. Signed-off-by: NIke Panhc <ike.pan@canonical.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Ike Panhc 提交于
1. Add markups on init and exit functions 2. Unify the comments in the same style 3. Return result when module initial Signed-off-by: NIke Panhc <ike.pan@canonical.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Ike Panhc 提交于
Hotkey enabled by this patch: Fn+F3: Video mode switch Fn+F5: software rfkill for wifi For some ideapad when push Fn+F3, hardware generates Super-P keys, those key will not be enabled by this patch. Thanks for Dave Hansen report the problem. If CONFIG_INPUT_SPARSEKMAP is not set, when building, you will have error message: ERROR: "sparse_keymap_setup" [drivers/platform/x86/ideapad-laptop.ko] undefined! ERROR: "sparse_keymap_free" [drivers/platform/x86/ideapad-laptop.ko] undefined! ERROR: "sparse_keymap_report_event" [drivers/platform/x86/ideapad-laptop.ko] undefined! To select INPUT_SPARSEKMAP solve this issue. Ref: http://lkml.org/lkml/2010/12/2/340Signed-off-by: NIke Panhc <ike.pan@canonical.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Ike Panhc 提交于
The entry was at /sys/devices/LNXSYSTM:00/../VPC2004:00/camera_power move to /sys/devices/platform/ideapad/camera_power Add document about usage of ideapad node in sysfs. Signed-off-by: NIke Panhc <ike.pan@canonical.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Ike Panhc 提交于
Create /sys/devices/platform/ideapad for nodes of ideapad landing. Signed-off-by: NIke Panhc <ike.pan@canonical.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Namhyung Kim 提交于
Annotate pnp_ids as '__used' to fix following warning: CC drivers/platform/x86/fujitsu-laptop.o drivers/platform/x86/fujitsu-laptop.c:1243: warning: ‘pnp_ids’ defined but not used Signed-off-by: NNamhyung Kim <namhyung@gmail.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Dan Carpenter 提交于
The break resets the retval to 0 but we want to return an error code. This was introduced in c64eefd4 "WMI: embed struct device directly into wmi_block" Signed-off-by: NDan Carpenter <error27@gmail.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com> Acked-by: NDmitry Torokhov <dtor@mail.ru>
-
由 Corentin Chary 提交于
If legacy device (SB.ATKD - ASUS010) used by eeepc-laptop is enabled, don't allow eeepc-wmi to load because: - eeepc-laptop may be loaded, and can conflict with eeepc-wmi (they both try to register eeepc::touchpad led for example). - the WMI interface is inteded to be used when the OS is not detected as Win 7. And when this is the case, the ASUS010 device is disabled. Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
Allow te get the current led state in a more accurate way. Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
Since eeepc-wmi has currently no official maintainer, I claim maintainership of this driver, and add it to the acpi4asus project. Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
eeepc-wmi/ - debugfs root directory dev_id - current dev_id ctrl_param - current ctrl_param devs - call DEVS(dev_id, ctrl_param) and print result dsts - call DSTS(dev_id) and print result DEVS and DSTS are the main functions used in eeepc-wmi, this will allow to test new features without patching the drivers. Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
wimax support is missing because I don't have any DSDT with WMI and wimax support. Most of the code comes from eeepc-laptop. Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
Most of the code comes from eeepc-laptop. Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Corentin Chary 提交于
The old code was using platform_driver.probe to initialize eeepc_wmi context. That's a mistake because if probe fail, eeepc_platform_register() won't tell anyone, and chaos will happen. Wrap add and remove code inside eeepc_wmi_add() / eeepc_wmi_remove(), and try to use the static platform_device only in eeepc_wmi_init() and eeepc_wmi_exit() The code is now very similar to eeepc-laptop, except eeepc_laptop_add and eeepc_laptop_remove are called from acpi_driver, not module init/exit functions, but WMI doesn't provide such functionalities (yet ?). Signed-off-by: NCorentin Chary <corentincj@iksaif.net> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
Add missing input_sync call in cmpc_keys_handler function. Signed-off-by: NHerton Ronaldo Krzesinski <herton@mandriva.com.br> Signed-off-by: NMatthew Garrett <mjg@redhat.com> Acked-by: NThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
-
We don't need to call bios/acpi (cmpc_set_rfkill_wlan) if the blocked state is already set to the same value (little optimization). This can happen for example if we initialize the module with same initial hardware state (rfkill core always call cmpc_rfkill_block on initialization here). Also GWRI method only accepts 0 or 1 for setting rfkill block, as can be seen on AML code from acpidump->DSDT from a classmate sample I have, so should be fine setting state only to 0 or 1 directly. Signed-off-by: NHerton Ronaldo Krzesinski <herton@mandriva.com.br> Signed-off-by: NMatthew Garrett <mjg@redhat.com> Acked-by: NThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
-
由 Colin King 提交于
WMI data blocks can contain WMI events with the same GUID but with different notifiy_ids, for example volume up/down hotkeys. This patch enables a single event handler to be registered and unregistered against all events with same GUID but different notify_ids. Since an event handler is passed the notify_id of an event it can can differentiate between the different events. The patch also ensures we only register and unregister a device per unique GUID. Signed-off-by: NColin Ian King <colin.king@canonical.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Joe Perches 提交于
Signed-off-by: NJoe Perches <joe@perches.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Sreedhara DS 提交于
This driver implements ioctl and interfaces with intel scu ipc driver. It is used to access pmic/msic registers from user space and firmware update utility. Signed-off-by: NSreedhara DS <sreedhara.ds@intel.com> [Extensive clean up and debug] Signed-off-by: NAlan Cox <alan@linux.intel.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Dan Carpenter 提交于
There was a semi-colon missing and it broke the compile. Signed-off-by: NDan Carpenter <error27@gmail.com> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: NLinus Walleij <linus.walleij@stericsson.com> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 07 1月, 2011 10 次提交
-
-
由 Nick Piggin 提交于
The problem that this patch aims to fix is vfsmount refcounting scalability. We need to take a reference on the vfsmount for every successful path lookup, which often go to the same mount point. The fundamental difficulty is that a "simple" reference count can never be made scalable, because any time a reference is dropped, we must check whether that was the last reference. To do that requires communication with all other CPUs that may have taken a reference count. We can make refcounts more scalable in a couple of ways, involving keeping distributed counters, and checking for the global-zero condition less frequently. - check the global sum once every interval (this will delay zero detection for some interval, so it's probably a showstopper for vfsmounts). - keep a local count and only taking the global sum when local reaches 0 (this is difficult for vfsmounts, because we can't hold preempt off for the life of a reference, so a counter would need to be per-thread or tied strongly to a particular CPU which requires more locking). - keep a local difference of increments and decrements, which allows us to sum the total difference and hence find the refcount when summing all CPUs. Then, keep a single integer "long" refcount for slow and long lasting references, and only take the global sum of local counters when the long refcount is 0. This last scheme is what I implemented here. Attached mounts and process root and working directory references are "long" references, and everything else is a short reference. This allows scalable vfsmount references during path walking over mounted subtrees and unattached (lazy umounted) mounts with processes still running in them. This results in one fewer atomic op in the fastpath: mntget is now just a per-CPU inc, rather than an atomic inc; and mntput just requires a spinlock and non-atomic decrement in the common case. However code is otherwise bigger and heavier, so single threaded performance is basically a wash. Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
Require filesystems be aware of .d_revalidate being called in rcu-walk mode (nd->flags & LOOKUP_RCU). For now do a simple push down, returning -ECHILD from all implementations. Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
Reduce some branches and memory accesses in dcache lookup by adding dentry flags to indicate common d_ops are set, rather than having to check them. This saves a pointer memory access (dentry->d_op) in common path lookup situations, and saves another pointer load and branch in cases where we have d_op but not the particular operation. Patched with: git grep -E '[.>]([[:space:]])*d_op([[:space:]])*=' | xargs sed -e 's/\([^\t ]*\)->d_op = \(.*\);/d_set_d_op(\1, \2);/' -e 's/\([^\t ]*\)\.d_op = \(.*\);/d_set_d_op(\&\1, \2);/' -i Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
RCU free the struct inode. This will allow: - Subsequent store-free path walking patch. The inode must be consulted for permissions when walking, so an RCU inode reference is a must. - sb_inode_list_lock to be moved inside i_lock because sb list walkers who want to take i_lock no longer need to take sb_inode_list_lock to walk the list in the first place. This will simplify and optimize locking. - Could remove some nested trylock loops in dcache code - Could potentially simplify things a bit in VM land. Do not need to take the page lock to follow page->mapping. The downsides of this is the performance cost of using RCU. In a simple creat/unlink microbenchmark, performance drops by about 10% due to inability to reuse cache-hot slab objects. As iterations increase and RCU freeing starts kicking over, this increases to about 20%. In cases where inode lifetimes are longer (ie. many inodes may be allocated during the average life span of a single inode), a lot of this cache reuse is not applicable, so the regression caused by this patch is smaller. The cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU, however this adds some complexity to list walking and store-free path walking, so I prefer to implement this at a later date, if it is shown to be a win in real situations. I haven't found a regression in any non-micro benchmark so I doubt it will be a problem. Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
dget_locked was a shortcut to avoid the lazy lru manipulation when we already held dcache_lock (lru manipulation was relatively cheap at that point). However, how that the lru lock is an innermost one, we never hold it at any caller, so the lock cost can now be avoided. We already have well working lazy dcache LRU, so it should be fine to defer LRU manipulations to scan time. Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
dcache_lock no longer protects anything. remove it. Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
The remaining usages for dcache_lock is to allow atomic, multi-step read-side operations over the directory tree by excluding modifications to the tree. Also, to walk in the leaf->root direction in the tree where we don't have a natural d_lock ordering. This could be accomplished by taking every d_lock, but this would mean a huge number of locks and actually gets very tricky. Solve this instead by using the rename seqlock for multi-step read-side operations, retry in case of a rename so we don't walk up the wrong parent. Concurrent dentry insertions are not serialised against. Concurrent deletes are tricky when walking up the directory: our parent might have been deleted when dropping locks so also need to check and retry for that. We can also use the rename lock in cases where livelock is a worry (and it is introduced in subsequent patch). Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
Protect d_subdirs and d_child with d_lock, except in filesystems that aren't using dcache_lock for these anyway (eg. using i_mutex). Note: if we change the locking rule in future so that ->d_child protection is provided only with ->d_parent->d_lock, it may allow us to reduce some locking. But it would be an exception to an otherwise regular locking scheme, so we'd have to see some good results. Probably not worthwhile. Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-
由 Nick Piggin 提交于
Protect d_unhashed(dentry) condition with d_lock. This means keeping DCACHE_UNHASHED bit in synch with hash manipulations. Signed-off-by: NNick Piggin <npiggin@kernel.dk>
-