- 08 6月, 2013 1 次提交
-
-
由 Sachin Kamat 提交于
The data structure is required only when DT is enabled. Hence compile it conditionally. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Acked-by: NStefan Roese <sr@denx.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 07 6月, 2013 3 次提交
-
-
由 Sachin Kamat 提交于
Commit 0998d063 (device-core: Ensure drvdata = NULL when no driver is bound) removes the need to set driver data field to NULL. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Tested-by: NRoland Stigge <stigge@antcom.de> Acked-by: NRoland Stigge <stigge@antcom.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Sachin Kamat 提交于
Commit 0998d063 (device-core: Ensure drvdata = NULL when no driver is bound) removes the need to set driver data field to NULL. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Acked-by: NStefan Roese <sr@denx.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Sachin Kamat 提交于
Commit 0998d063 (device-core: Ensure drvdata = NULL when no driver is bound) removes the need to set driver data field to NULL. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Cc: Michael Hennerich <hennerich@blackfin.uclinux.org> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 06 6月, 2013 2 次提交
-
-
由 Denis CIOCCA 提交于
This patch adds a generic pressure driver for STMicroelectronics pressure sensors, currently it supports: LPS331AP. Signed-off-by: NDenis Ciocca <denis.ciocca@st.com> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Denis CIOCCA 提交于
iio:common: Removed stuff macros, added num_data_channels on st_sensors struct and added support on one-shot sysfs reads to 3 byte channel This patch introduce num_data_channels variable on st_sensors struct to manage different type of channels (size or number) in st_sensors_get_buffer_element function. Removed ST_SENSORS_NUMBER_DATA_CHANNELS and ST_SENSORS_BYTE_FOR_CHANNEL and used struct iio_chan_spec const *ch to catch data. Added 3 byte channel data support on one-shot reads. Signed-off-by: NDenis Ciocca <denis.ciocca@st.com> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 05 6月, 2013 8 次提交
-
-
由 Denis CIOCCA 提交于
Signed-off-by: NDenis Ciocca <denis.ciocca@st.com> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Michael Hennerich 提交于
Signed-off-by: NMichael Hennerich <michael.hennerich@analog.com> Reviewed-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Jonathan Cameron 提交于
This is now a very simple trigger indeed but useful in many common cases. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Reviewed-by: NLars-Peter Clausen <lars@metafoo.de>
-
由 Jonathan Cameron 提交于
Switching from one platform device registering a lot of triggers to one for each trigger simplifies the code somewhat. It would be relatively unusual to have more than a couple of such devices registered so this change will not result in much additional overhead. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Reviewed-by: NLars-Peter Clausen <lars@metafoo.de>
-
由 Jonathan Cameron 提交于
Also change all internal naming appropriately. This trigger is no longer just for gpio provided interrupts so change the naming to reflect this. Also drop some now missleading left over comments. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Reviewed-by: NLars-Peter Clausen <lars@metafoo.de>
-
由 Jonathan Cameron 提交于
Also dropped the unneeded gpio.h header. Signed-off-by: NJonathan Cameron <jic23@kernel.org> Reviewed-by: NLars-Peter Clausen <lars@metafoo.de>
-
由 Sachin Kamat 提交于
The data structure is required only when DT is enabled. Hence compile it conditionally. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Acked-by: NMaxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
由 Jingoo Han 提交于
The usage of strict_strtoul() is not preferred, because strict_strtoul() is obsolete. Thus, kstrtoul() should be used. Signed-off-by: NJingoo Han <jg1.han@samsung.com> Signed-off-by: NJonathan Cameron <jic23@kernel.org>
-
- 04 6月, 2013 26 次提交
-
-
由 Aaro Koskinen 提交于
Add support for Octeon USB HCD. Tested on EdgeRouter Lite with USB mass storage. The driver has been extracted from GPL sources of EdgeRouter Lite firmware (based on Linux 2.6.32.13). Some minor fixes and cleanups have been done to make it work with 3.10-rc3. $ uname -a Linux (none) 3.10.0-rc3-edge-00005-g86cb5bc #41 SMP PREEMPT Sat Jun 1 20:41:46 EEST 2013 mips64 GNU/Linux $ modprobe octeon-usb [ 37.971683] octeon_usb: module is from the staging directory, the quality is unknown, you have been warned. [ 37.983649] OcteonUSB: Detected 1 ports [ 37.999360] OcteonUSB OcteonUSB.0: Octeon Host Controller [ 38.004847] OcteonUSB OcteonUSB.0: new USB bus registered, assigned bus number 1 [ 38.012332] OcteonUSB OcteonUSB.0: irq 122, io mem 0x00000000 [ 38.019970] hub 1-0:1.0: USB hub found [ 38.023851] hub 1-0:1.0: 1 port detected [ 38.028101] OcteonUSB: Registered HCD for port 0 on irq 122 [ 38.391443] usb 1-1: new high-speed USB device number 2 using OcteonUSB [ 38.586922] usb-storage 1-1:1.0: USB Mass Storage device detected [ 38.597375] scsi0 : usb-storage 1-1:1.0 [ 39.604111] scsi 0:0:0:0: Direct-Access USB DISK 2.0 PMAP PQ: 0 ANSI: 4 [ 39.619113] sd 0:0:0:0: [sda] 7579008 512-byte logical blocks: (3.88 GB/3.61 GiB) [ 39.630696] sd 0:0:0:0: [sda] Write Protect is off [ 39.635945] sd 0:0:0:0: [sda] No Caching mode page present [ 39.641464] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 39.651341] sd 0:0:0:0: [sda] No Caching mode page present [ 39.656917] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 39.664296] sda: sda1 sda2 [ 39.675574] sd 0:0:0:0: [sda] No Caching mode page present [ 39.681093] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 39.687223] sd 0:0:0:0: [sda] Attached SCSI removable disk Signed-off-by: NAaro Koskinen <aaro.koskinen@iki.fi> Cc: David Daney <ddaney.cavm@gmail.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Devendra Naga 提交于
the _probe function doesn't run in interrupt context, so no need to use the GFP_ATOMIC allocations, instead driver can request for GFP_KERNEL Signed-off-by: NDevendra Naga <devendra.aaru@gmail.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Harsh Kumar 提交于
Check to see if allocation by kzalloc() or usb_alloc_urb() was unsuccessful immediately after the allocation. Exit from the function can be right at that point in case of allocation failure. This avoids unnecessary use of usb_alloc_urb() & usb_free_urb() if kzalloc() returns NULL. Also, makes the code better structured & easier to understand. Signed-off-by: NHarsh Kumar <harsh1kumar@gmail.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Yijing Wang 提交于
Pci_enable_device() will set device power state to D0, so it's no need to do it again in dwc2_driver_probe(). Signed-off-by: NYijing Wang <wangyijing@huawei.com> Acked-by: NPaul Zimmerman <paulz@synopsys.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Dan Carpenter 提交于
We already established earlier in the function that "temp" is non-NULL. We also don't need to set to NULL because it's a stack variable an we return immediately. Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Marcus Overhagen 提交于
Using correct transfer interval as specified by the USB endpoint when doing the interrupt transfer fixes the warning printed by xhci USB core on every transfer that resulted in spamming "xhci_queue_intr_tx: 74 callbacks suppressed" to syslog every 5 seconds. Signed-off-by: NMarcus Overhagen <marcus.overhagen@gmail.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Marcus Overhagen 提交于
The timeout detection implemented in this driver isn't very robust. Although the USB interrupt transfer was successful, the polling thread often reported timeouts because the 50ms had expired before it got scheduled, and the SD card wasn't detected. Increasing it to 100ms, as used in other places of this driver, makes it work. Signed-off-by: NMarcus Overhagen <marcus.overhagen@gmail.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Wei Yongjun 提交于
In case of error, the function sock_alloc_file() returns ERR_PTR() and never returns NULL. The NULL test in the return value check should be replaced with IS_ERR(). Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
Those are simple wrappers for numa allocator. We don't need them. Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
It was emptied by coan. So drop it. Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
It is not used any more. Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
It was emptied by coan. So we no longer need it. Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
got bellow build warning that is indeed a false alarm. CC [M] drivers/staging/lustre/lustre/llite/llite_nfs.o drivers/staging/lustre/lustre/libcfs/nidstrings.c: In function ‘ libcfs_str2net_internal’: drivers/staging/lustre/lustre/libcfs/nidstrings.c:432:17: warning: ‘nf’ may be used uninitialized in this function [-Wuninitializ ed] Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
filp_user_write() is open coded in libcfs_kkuc_msg_put(). All other functions/macros have no user at all. So we can remove the file. Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
So that sys_mount can find and load lustre module automatically. Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
Got bellow lockdep warning during tests. It is false alarm though. [ 1184.479097] ============================================= [ 1184.479187] [ INFO: possible recursive locking detected ] [ 1184.479277] 3.10.0-rc3+ #13 Tainted: G C [ 1184.479355] --------------------------------------------- [ 1184.479444] mkdir/2215 is trying to acquire lock: [ 1184.479521] (&(&dentry->d_lock)->rlock){+.+...}, at: [<ffffffffa06cc27c>] ll_md_blocking_ast+0x55c/0x655 [lustre] [ 1184.479801] but task is already holding lock: [ 1184.479895] (&(&dentry->d_lock)->rlock){+.+...}, at: [<ffffffffa06cc1b1>] ll_md_blocking_ast+0x491/0x655 [lustre] [ 1184.480101] other info that might help us debug this: [ 1184.480206] Possible unsafe locking scenario: [ 1184.480300] CPU0 [ 1184.480340] ---- [ 1184.480380] lock(&(&dentry->d_lock)->rlock); [ 1184.480458] lock(&(&dentry->d_lock)->rlock); [ 1184.480536] *** DEADLOCK *** [ 1184.480761] May be due to missing lock nesting notation [ 1184.480936] 4 locks held by mkdir/2215: [ 1184.481037] #0: (sb_writers#11){.+.+.+}, at: [<ffffffff811531a9>] mnt_want_write+0x24/0x4b [ 1184.481273] #1: (&type->i_mutex_dir_key#3/1){+.+.+.}, at: [<ffffffff81144fce>] kern_path_create+0x8c/0x144 [ 1184.481513] #2: (&sb->s_type->i_lock_key#19){+.+...}, at: [<ffffffffa06cc180>] ll_md_blocking_ast+0x460/0x655 [lustre] [ 1184.481778] #3: (&(&dentry->d_lock)->rlock){+.+...}, at: [<ffffffffa06cc1b1>] ll_md_blocking_ast+0x491/0x655 [lustre] [ 1184.482050] Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Peng Tao 提交于
It is used by server only and we had it emptied with coan. Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Hongchao Zhang 提交于
in lustre_set_wire_obdo, if "ocd->ocd_connect_flags" doesn't contain OBD_CONNECT_FID, use "ost_id" to check the type of the object instead of using ost_id.oi_fid only. Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3360 Lustre-change: http://review.whamcloud.com/6426Signed-off-by: NHongchao Zhang <hongchao.zhang@intel.com> Reviewed-by: NOleg Drokin <oleg.drokin@intel.com> Reviewed-by: Nwangdi <di.wang@intel.com> Reviewed-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Jian Yu 提交于
This patch checks the number of bulk I/O RPC pages with PTLRPC_MAX_BRW_PAGES in ofd_preprw() to avoid LASSERT(iobuf->dr_npages < iobuf->dr_max_pages) occurring while larger I/O size is specified. The patch also fixes echo_client_prep_commit() to reuse the env context so as to avoid LASSERT(info->fti_exp == NULL) occurring while the bulk I/O size is larger than PTLRPC_MAX_BRW_SIZE. The patch also improves obdfilter-survey to handle the case while interoprating with old server. [picked echo client part for upstream kernel submission] Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2598 Lustre-change: http://review.whamcloud.com/6394Signed-off-by: NJian Yu <jian.yu@intel.com> Reviewed-by: NAlex Zhuravlev <alexey.zhuravlev@intel.com> Reviewed-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Jinshan Xiong 提交于
Dump osc_extent waiting instead of ext in case error occurred. Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3359 Lustre-change: http://review.whamcloud.com/6402Signed-off-by: NJinshan Xiong <jinshan.xiong@intel.com> Reviewed-by: NLai Siyao <lai.siyao@intel.com> Reviewed-by: NOleg Drokin <oleg.drokin@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 wang di 提交于
Always build 64bit ino internally except the client is mounted with "32bitapi" option, so client will always use 64bit ino internally. It will build 32bit ino, only if application requires 32 bit ino. Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3318 Lustre-change: http://review.whamcloud.com/6371Signed-off-by: Nwang di <di.wang@intel.com> Reviewed-by: NAndreas Dilger <andreas.dilger@intel.com> Reviewed-by: NNed Bass <bass6@llnl.gov> Reviewed-by: NFan Yong <fan.yong@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Emoly Liu 提交于
To make atime update properly between 1.8 client and 2.x server, this patch includes the following fixes: - if MDS_ATTR_xTIME is set without MDS_ATTR_xTIME_SET and the client does not have OBD_CONNECT_FULL20, convert it to LA_xTIME in mdt_setattr_unpack(). - set both MDS_ATTR_xTIME | MDS_ATTR_xTIME_SET for timestamps in ll_prepare_close(). This allows us to fix the server-side timestamp setting in the future. - remove attr_unpack() and convert the flags from MDS_ATTR_ to LA_* directly in mdt_attr_valid_xlate() instead. - improve sanityn.sh test_23(). [picked llite part for upstream kernel submission] Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3036 Lustre-change: http://review.whamcloud.com/6327Signed-off-by: NLiu Ying <emoly.liu@intel.com> Reviewed-by: NFan Yong <fan.yong@intel.com> Reviewed-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Andreas Dilger 提交于
Fix the CL_LAYOUT comment, since it is possible that layout swap could be used in cases where the file content is changed. I don't think there are any real world use cases for this, but that depends on what tools are being used on the filesystem. Also change the "LAYOUT" string for this ChangeLog record type to be "LYOUT" to match the convention of other strings to only be 5 characters long. Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3279 Lustre-change: http://review.whamcloud.com/6338Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Reviewed-by: NJinshan Xiong <jinshan.xiong@intel.com> Reviewed-by: NOleg Drokin <oleg.drokin@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Artem Blagodarenko 提交于
Data corruption is possible if cp(coreutils) uses FIEMAP to obtain data holes in shared file, since there could be dirty cache on other clients which hasn't been flushed back. To ensure all the dirty on remote clients being flushed back on fiemap ioctl, we'd acquire ldlm lock on server side for fiemap, unless the local client (which invoke fiemap) has cached lock. [picked osc part for upstream kernel submission] Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3219 Xyratex-bug-id: MRP-1001 Lustre-change: http://review.whamcloud.com/6127Signed-off-by: NArtem Blagodarenko <artem_blagodarenko@xyratex.com> Signed-off-by: NNiu Yawei <yawei.niu@intel.com> Reviewed-by: NNathaniel Clark <nathaniel.l.clark@intel.com> Reviewed-by: NJinshan Xiong <jinshan.xiong@intel.com> Reviewed-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Andreas Dilger 提交于
In order to avoid compatibility issues with older ChangeLog consumers, change the new CL_LAYOUT record to use the value previously assigned to CL_IOCTL. The CL_IOCTL type was never used anywhere, and it didn't really make any sense as a ChangeLog record, since it could really mean anything at all. The changelog_show_cb() function is renamed to changelog_kkuc_cb(), since it is really about consuming the ChangeLog and passing it up to the kernel-user-coms interface. At some point we should consider to implement a DBUS-based ChangeLog interface as well. The changelog_kkuc_cb() "sanity check" on cr_type was removed, since there is no reason the client kernel needs to know every record type that is being passed to userspace. It is up to the client tool to determine what records that it can process. Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3279 Lustre-change: http://review.whamcloud.com/6308Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Reviewed-by: NBobi Jam <bobijam@gmail.com> Reviewed-by: NJinshan Xiong <jinshan.xiong@intel.com> Reviewed-by: NMike Pershin <mike.pershin@intel.com> Reviewed-by: NAurelien Degremont <aurelien.degremont@cea.fr> Reviewed-by: NOleg Drokin <oleg.drokin@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 John L. Hammond 提交于
In lprocfs_stats_seq_{start,next,show,stop}() encode the counter index (rather than the counter address) into *pos. Doing so simplifies these functions and fixes a bug in the case of per-CPU stats where no stats would be displayed at all if no events had yet occurred on CPU 0. Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2979 Lustre-change: http://review.whamcloud.com/6328Signed-off-by: NJohn L. Hammond <john.hammond@intel.com> Reviewed-by: Nwangdi <di.wang@intel.com> Reviewed-by: NBobi Jam <bobijam@gmail.com> Reviewed-by: NEmoly Liu <emoly.liu@intel.com> Reviewed-by: NKeith Mannthey <keith.mannthey@intel.com> Reviewed-by: NOleg Drokin <oleg.drokin@intel.com> Signed-off-by: NPeng Tao <tao.peng@emc.com> Signed-off-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-