aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-03-28eeepc-wmi: real touchpad led device id is 0x001000012Corentin Chary1-6/+6
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: respect wireless_hotplug settingCorentin Chary1-0/+3
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: support backlight power (bl_power) attributeCorentin Chary1-14/+61
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: set the right key code for 0xe9Corentin Chary1-1/+1
This key should power off the backlight, not the display, it is also used in acpi/video.c to do the same thing. Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: add wimax supportCorentin Chary1-1/+19
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: add camera and card reader supportCorentin Chary2-1/+102
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: use the presence bit correctlyCorentin Chary1-8/+5
I checked some more DSDT, and it seems that I wasn't totally right about the meaning of DSTS return value. Bit 0 is clearly the status of the device, and I discovered that bit 16 is set when the device is present. Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: reorder definesCorentin Chary1-9/+9
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: switch to platform_create_bundle()Corentin Chary1-53/+22
This allow to remove ~30 lines of code. Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: add hibernate/resume callbacksCorentin Chary1-0/+49
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: add an helper using simple return codesCorentin Chary1-57/+39
eeepc_wmi_get_devstate returns an acpi_status, so each call need extra logic to handle the return code. This patch add a simple getter, returning a boolean (or a negative error code). Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: return proper error code in eeepc_rfkill_set()Corentin Chary1-1/+7
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: serialize access to wmi methodCorentin Chary1-6/+72
\AMW0.WMBC, which is the main method that we use, is not reentrant. When wireless hotpluging is enabled, toggling the status of the wireless device using WMBC will trigger a notification and the notification handler need to call WMBC again to get the new status of the device, this will trigger the following error: ACPI Error (dswload-0802): [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20100428/psloop-231) ACPI Error (psparse-0537): Method parse/execution failed [\AMW0.WMBC] (Node f7023b88), AE_ALREADY_EXISTS ACPI: Marking method WMBC as Serialized because of AE_ALREADY_EXISTS error Since there is currently no way to tell the acpi subsystem to mark a method as serialized, we do it in eeepc-wmi. Of course, we could let the first call fail, and then it would work, but it doesn't seems really clean, and it will make the first WMBC call return a random value. This patch was tested on EeePc 1000H with a RaLink RT2860 wireless card using the rt2800pci driver. rt2860sta driver seems to deadlock when we remove the pci device... Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: add hotplug code for Eeepc 1000HCorentin Chary1-1/+273
Implement wireless like hotplug handling (code stolen from eeepc-laptop). Reminder: on some models rfkill is implemented by logically unplugging the wireless card from the PCI bus. Despite sending ACPI notifications, this does not appear to be implemented using standard ACPI hotplug - nor does the firmware provide the _OSC method required to support native PCIe hotplug. The only sensible choice appears to be to handle the hotplugging directly in the platform driver. Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: add wlan key found on 1015PCorentin Chary1-0/+1
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28eeepc-wmi: reorder keymapCorentin Chary1-7/+7
Signed-off-by: Corentin Chary <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28OLPC XO-1.5 ebook switch driverPaul Fox3-0/+191
The OLPC XO-1.5 has an ebook switch, triggered when the laptop screen is rotated then folding down, converting the device into ebook form. This switch is exposed through ACPI. Add a driver that exposes it to userspace as an input device. Signed-off-by: Daniel Drake <[email protected]> Acked-by: Dmitry Torokhov <[email protected]> Signed-off-by: Matthew Garrett <[email protected]>
2011-03-28Btrfs: fix __btrfs_map_block on 32 bit machinesChris Mason1-6/+20
Recent changes for discard support didn't compile, this fixes them not to try and % 64 bit numbers. Signed-off-by: Chris Mason <[email protected]>
2011-03-28btrfs: fix possible deadlock by clearing __GFP_FS flagMiao Xie2-1/+4
Using the GFP_HIGHUSER_MOVABLE flag to allocate the metadata's page may cause deadlock. Task1 open() ... btrfs_search_slot() ... btrfs_cow_block() ... alloc_page() wait for reclaiming shrink_slab() ... shrink_icache_memory() ... btrfs_evict_inode() ... btrfs_search_slot() If the path is locked by task1, the deadlock happens. So the btree's page cache is different with the file's page cache, it can not allocate pages by GFP_HIGHUSER_MOVABLE flag, we must clear __GFP_FS flag in GFP_HIGHUSER_MOVABLE flag. Reported-by: Itaru Kitayama <[email protected]> Signed-off-by: Miao Xie <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28btrfs: check link counter overflow in link(2)Al Viro1-0/+3
Signed-off-by: Al Viro <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28btrfs: don't mess with i_nlink of unlocked inode in rename()Al Viro1-11/+25
old_inode is not locked; it's not safe to play with its link count. Instead of bumping it and calling btrfs_unlink_inode(), add a variant of the latter that does not do btrfs_drop_nlink()/ btrfs_update_inode(), call it instead of btrfs_inc_nlink()/ btrfs_unlink_inode() and do btrfs_update_inode() ourselves. Signed-off-by: Al Viro <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: check return value of btrfs_alloc_path()Tsutomu Itoh4-14/+27
Adding the check on the return value of btrfs_alloc_path() to several places. And, some of callers are modified by this change. Signed-off-by: Tsutomu Itoh <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: fix OOPS of empty filesystem after balanceliubo3-0/+30
btrfs will remove unused block groups after balance. When a empty filesystem is balanced, the block group with tag "DATA" may be dropped, and after umount and mount again, it will not find "DATA" space_info and lead to OOPS. So we initial the necessary space_infos(DATA, SYSTEM, METADATA) to avoid OOPS. Reported-by: Daniel J Blueman <[email protected]> Signed-off-by: Liu Bo <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: fix memory leak of empty filesystem after balanceliubo1-0/+6
After Josef's patch(commit 3c14874acc71180553fb5aba528e3cf57c5b958b), btrfs will exclude super bytes when reading block groups(by marking a extent state UPTODATE). However, these bytes do not get freed while balance remove unused block groups, and we won't process those removed ones any more, when we do umount and unload the btrfs module, btrfs hits a memory leak. This patch add the missing free operation. Reproduce steps: $ mkfs.btrfs disk $ mount disk /mnt/btrfs -o loop $ btrfs filesystem balance /mnt/btrfs $ umount /mnt/btrfs $ rmmod btrfs Signed-off-by: Liu Bo <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: fix return value of setflags ioctlliubo1-1/+3
setflags ioctl should return error when any checks fail. Signed-off-by: Liu Bo <[email protected]> Reviewed-by: David Sterba <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: fix uncheck memory allocationsYoshinori Sano3-0/+12
To make Btrfs code more robust, several return value checks where memory allocation can fail are introduced. I use BUG_ON where I don't know how to handle the error properly, which increases the number of using the notorious BUG_ON, though. Signed-off-by: Yoshinori Sano <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28btrfs: make inode ref log recovery fasterliubo1-24/+11
When we recover from crash via write-ahead log tree and process the inode refs, for each btrfs_inode_ref item, we will 1) check if we already have a perfect match in fs/file tree, if we have, then we're done. 2) search the corresponding back reference in fs/file tree, and check all the names in this back reference to see if they are also in the log to avoid conflict corners. 3) recover the logged inode refs to fs/file tree. In current btrfs, however, - for 2)'s check, once is enough, since the checked back reference will remain unchanged after processing all the inode refs belonged to the key. - it has no need to do another 1) between 2) and 3). I've made a small test to show how it improves, $dd if=/dev/zero of=foobar bs=4K count=1 $sync $make 100 hard links continuously, like ln foobar link_i $fsync foobar $echo b > /proc/sysrq-trigger after reboot $time mount DEV PATH without patch: real 0m0.285s user 0m0.001s sys 0m0.009s with patch: real 0m0.123s user 0m0.000s sys 0m0.010s Changelog v1->v2: - fix double free - pointed by David Sterba Changelog v2->v3: - adjust free order Signed-off-by: Liu Bo <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: add btrfs_trim_fs() to handle FITRIMLi Dongyang5-1/+190
We take an free extent out from allocator, trim it, then put it back, but before we trim the block group, we should make sure the block group is cached, so plus a little change to make cache_block_group() run without a transaction. Signed-off-by: Li Dongyang <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: adjust btrfs_discard_extent() return errors and trimmed bytesLi Dongyang3-19/+31
Callers of btrfs_discard_extent() should check if we are mounted with -o discard, as we want to make fitrim to work even the fs is not mounted with -o discard. Also we should use REQ_DISCARD to map the free extent to get a full mapping, last we only return errors if 1. the error is not a EOPNOTSUPP 2. no device supports discard Signed-off-by: Li Dongyang <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: make btrfs_map_block() return entire free extent for each device of ↵Li Dongyang2-22/+129
RAID0/1/10/DUP btrfs_map_block() will only return a single stripe length, but we want the full extent be mapped to each disk when we are trimming the extent, so we add length to btrfs_bio_stripe and fill it if we are mapping for REQ_DISCARD. Signed-off-by: Li Dongyang <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: make update_reserved_bytes() publicLi Dongyang2-9/+9
Make the function public as we should update the reserved extents calculations after taking out an extent for trimming. Signed-off-by: Li Dongyang <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28btrfs: return EXDEV when linking from different subvolumesMark Fasheh1-1/+1
btrfs_link returns EPERM if a cross-subvolume link is attempted. However, in this case I believe EXDEV to be the more appropriate value. >From the link(2) man page: EXDEV oldpath and newpath are not on the same mounted file system. (Linux permits a file system to be mounted at multiple points, but link() does not work across different mount points, even if the same file system is mounted on both.) This matters because an application may have different behaviors based on return codes. Signed-off-by: Mark Fasheh <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: Per file/directory controls for COW and compressionLiu Bo4-7/+72
Data compression and data cow are controlled across the entire FS by mount options right now. ioctls are needed to set this on a per file or per directory basis. This has been proposed previously, but VFS developers wanted us to use generic ioctls rather than btrfs-specific ones. According to Chris's comment, there should be just one true compression method(probably LZO) stored in the super. However, before this, we would wait for that one method is stable enough to be adopted into the super. So I list it as a long term goal, and just store it in ram today. After applying this patch, we can use the generic "FS_IOC_SETFLAGS" ioctl to control file and directory's datacow and compression attribute. NOTE: - The compression type is selected by such rules: If we mount btrfs with compress options, ie, zlib/lzo, the type is it. Otherwise, we'll use the default compress type (zlib today). v1->v2: - rebase to the latest btrfs. v2->v3: - fix a problem, i.e. when a file is set NOCOW via mount option, then this NOCOW will be screwed by inheritance from parent directory. Signed-off-by: Liu Bo <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: add datacow flag in inode flagliubo1-0/+2
For datacow control, the corresponding inode flags are needed. This is for btrfs use. v1->v2: Change FS_COW_FL to another bit due to conflict with the upstream e2fsprogs Signed-off-by: Liu Bo <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28btrfs: use GFP_NOFS instead of GFP_KERNELMiao Xie1-2/+2
In the filesystem context, we must allocate memory by GFP_NOFS, or we may start another filesystem operation and make kswap thread hang up. Signed-off-by: Miao Xie <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: check return value of read_tree_block()Tsutomu Itoh3-0/+15
This patch is checking return value of read_tree_block(), and if it is NULL, error processing. Signed-off-by: Tsutomu Itoh <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28btrfs: properly access unaligned checksum bufferDavid Sterba1-1/+2
On Fri, Mar 18, 2011 at 11:56:53AM -0400, Chris Mason wrote: > Thanks for fielding this one. Does put_unaligned_le32 optimize away on > platforms with efficient access? It would be great if we didn't need > the #ifdef. (quicktest: assembly output is same for put_unaligned_le32 and direct assignment on my x86_64) I was originally following examples in Documentation/unaligned-memory-access.txt. From other code it seems to me that the define CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is intended for larger portions of code. Macros/wrappers for {put,get}_unaligned* are chosen via arch/<arch>/include/asm/unaligned.h accordingly, therefore it's safe to use put_unaligned_le32 without the ifdef. dave Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: cleanup some BUG_ON()Tsutomu Itoh9-23/+54
This patch changes some BUG_ON() to the error return. (but, most callers still use BUG_ON()) Signed-off-by: Tsutomu Itoh <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: add initial tracepoint support for btrfsliubo13-11/+727
Tracepoints can provide insight into why btrfs hits bugs and be greatly helpful for debugging, e.g dd-7822 [000] 2121.641088: btrfs_inode_request: root = 5(FS_TREE), gen = 4, ino = 256, blocks = 8, disk_i_size = 0, last_trans = 8, logged_trans = 0 dd-7822 [000] 2121.641100: btrfs_inode_new: root = 5(FS_TREE), gen = 8, ino = 257, blocks = 0, disk_i_size = 0, last_trans = 0, logged_trans = 0 btrfs-transacti-7804 [001] 2146.935420: btrfs_cow_block: root = 2(EXTENT_TREE), refs = 2, orig_buf = 29368320 (orig_level = 0), cow_buf = 29388800 (cow_level = 0) btrfs-transacti-7804 [001] 2146.935473: btrfs_cow_block: root = 1(ROOT_TREE), refs = 2, orig_buf = 29364224 (orig_level = 0), cow_buf = 29392896 (cow_level = 0) btrfs-transacti-7804 [001] 2146.972221: btrfs_transaction_commit: root = 1(ROOT_TREE), gen = 8 flush-btrfs-2-7821 [001] 2155.824210: btrfs_chunk_alloc: root = 3(CHUNK_TREE), offset = 1103101952, size = 1073741824, num_stripes = 1, sub_stripes = 0, type = DATA flush-btrfs-2-7821 [001] 2155.824241: btrfs_cow_block: root = 2(EXTENT_TREE), refs = 2, orig_buf = 29388800 (orig_level = 0), cow_buf = 29396992 (cow_level = 0) flush-btrfs-2-7821 [001] 2155.824255: btrfs_cow_block: root = 4(DEV_TREE), refs = 2, orig_buf = 29372416 (orig_level = 0), cow_buf = 29401088 (cow_level = 0) flush-btrfs-2-7821 [000] 2155.824329: btrfs_cow_block: root = 3(CHUNK_TREE), refs = 2, orig_buf = 20971520 (orig_level = 0), cow_buf = 20975616 (cow_level = 0) btrfs-endio-wri-7800 [001] 2155.898019: btrfs_cow_block: root = 5(FS_TREE), refs = 2, orig_buf = 29384704 (orig_level = 0), cow_buf = 29405184 (cow_level = 0) btrfs-endio-wri-7800 [001] 2155.898043: btrfs_cow_block: root = 7(CSUM_TREE), refs = 2, orig_buf = 29376512 (orig_level = 0), cow_buf = 29409280 (cow_level = 0) Here is what I have added: 1) ordere_extent: btrfs_ordered_extent_add btrfs_ordered_extent_remove btrfs_ordered_extent_start btrfs_ordered_extent_put These provide critical information to understand how ordered_extents are updated. 2) extent_map: btrfs_get_extent extent_map is used in both read and write cases, and it is useful for tracking how btrfs specific IO is running. 3) writepage: __extent_writepage btrfs_writepage_end_io_hook Pages are cirtical resourses and produce a lot of corner cases during writeback, so it is valuable to know how page is written to disk. 4) inode: btrfs_inode_new btrfs_inode_request btrfs_inode_evict These can show where and when a inode is created, when a inode is evicted. 5) sync: btrfs_sync_file btrfs_sync_fs These show sync arguments. 6) transaction: btrfs_transaction_commit In transaction based filesystem, it will be useful to know the generation and who does commit. 7) back reference and cow: btrfs_delayed_tree_ref btrfs_delayed_data_ref btrfs_delayed_ref_head btrfs_cow_block Btrfs natively supports back references, these tracepoints are helpful on understanding btrfs's COW mechanism. 8) chunk: btrfs_chunk_alloc btrfs_chunk_free Chunk is a link between physical offset and logical offset, and stands for space infomation in btrfs, and these are helpful on tracing space things. 9) reserved_extent: btrfs_reserved_extent_alloc btrfs_reserved_extent_free These can show how btrfs uses its space. Signed-off-by: Liu Bo <[email protected]> Signed-off-by: Chris Mason <[email protected]>
2011-03-28Btrfs: use RCU instead of a spinlock to protect the root nodeChris Mason1-19/+8
The pointer to the extent buffer for the root of each tree is protected by a spinlock so that we can safely read the pointer and take a reference on the extent buffer. But now that the extent buffers are freed via RCU, we can safely use rcu_read_lock instead. Signed-off-by: Chris Mason <[email protected]>
2011-03-28ARM: Suspend: Fix dependency of ARCH_SUSPEND_POSSIBLEKukjin Kim1-0/+1
The current mainline codes of ARCH_S5P64X0 and ARCH_S5P6442 can not support suspend to ram. So needs this for preventing build error on them. Cc: Russell King <[email protected]> Cc: Rafael J. Wysocki <[email protected]> Cc: Len Brown <[email protected]> Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28ARM: SAMSUNG: Fix CPU idmaskKukjin Kim2-5/+5
This patch fixes CPU idmask of S5P64X0 and EXYNOS4210 and its comparison method because just want to use CPU id for it. Cc: Ben Dooks <[email protected]> Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28ARM: EXYNOS4: Fix addruart macroThomas Abraham1-2/+2
Fix incorrect conditional execution of ldr instructions in addruart macro. Signed-off-by: Thomas Abraham <[email protected]> Signed-off-by: Abhilash Kesavan <[email protected]> Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28ARM: EXYNOS4: Fix smsc9215 irq polarity on SMDKC210Jeongtae Park1-1/+1
This patch fixes smsc9215 irq ploarity configuration of SMDKC210. We can change type of EINT(5) as HIGH, but it's better to change IRQ output of smsc9215 as an active low because smsc's IRQ line has been pull-up. Signed-off-by: Jeongtae Park <[email protected]> Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28ARM: EXYNOS4: Fix smsc9215 irq polarity on SMDKV310Jeongtae Park1-1/+1
This patch fixes smsc9215 irq ploarity configuration of SMDKV310. We can change type of EINT(5) as HIGH, but it's better to change IRQ output of smsc9215 as an active low because smsc's IRQ line has been pull-up. Signed-off-by: Jeongtae Park <[email protected]> Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28ARM: EXYNOS4: Fix build warning on regarding SATA_AHCI_PLATFORMKukjin Kim2-2/+7
This patch fixes following build warnings. warning: (MACH_ARMLEX4210) selects SATA_AHCI_PLATFORM which has unmet direct dependencies (ATA) And adds EXYNOX4_DEV_AHCI for building machines which are not suppoort for AHCI feature on board. Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28ARM: S5PV210: Remove duplicated inclusionHuang Weiyi1-1/+0
Remove duplicated #include('s) in arch/arm/mach-s5pv210/mach-smdkv210.c Signed-off-by: Huang Weiyi <[email protected]> Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28ARM: S5PV210: Fix security engine interrupt namesVladimir Zapolskiy1-3/+3
This change is intended to correct security subsystem interrupt names for Samsung S5PV210 and S5PC110 SoCs. Signed-off-by: Vladimir Zapolskiy <[email protected]> Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28ARM: S5P64X0: Fix iodesc array size for S5P6450Banajit Goswami1-1/+1
The array size parameter of iotable_init for S5P6450 is incorrect. Fix this by passing the correct length of s5p6450_iodesc table. Signed-off-by: Banajit Goswami <[email protected]> Signed-off-by: Kukjin Kim <[email protected]>
2011-03-28mach-ux500: configure board for the TPS61052 regulator v2Linus Walleij4-1/+48
This registers the TPS61052 regulator to the ux500 MOP/HREF boards. Cc: Samuel Ortiz <[email protected]> Cc: Liam Girdwood <[email protected]> Cc: Mark Brown <[email protected]> Cc: Ola Lilja <[email protected]> Signed-off-by: Linus Walleij <[email protected]>