RE: [PATCH v1 Resend] usb: dwc2: gadget: fix a memory use-after-free bug

2015-10-02 Thread Kaukab, Yousaf
> -Original Message- > From: Felipe Balbi [mailto:ba...@ti.com] > Sent: Thursday, October 1, 2015 7:21 PM > To: Kaukab, Yousaf > Cc: ba...@ti.com; linux-usb@vger.kernel.org; john.y...@synopsys.com; > l...@rock-chips.com; he...@sntech.de; c...@rock-chips.com; > h...@rock-chips.com; > y...@r

[PATCH v8 4/4] USB / PM: Allow USB devices to remain runtime-suspended when sleeping

2015-10-02 Thread Tomeu Vizoso
Have dev_pm_ops.prepare return 1 for USB devices and ports so that USB devices can remain runtime-suspended when the system goes to a sleep state, if their wakeup state is correct and they have runtime PM enabled. Signed-off-by: Tomeu Vizoso --- drivers/usb/core/port.c | 6 ++ drivers/usb

[PATCH v8 0/4] Allow USB devices to remain runtime-suspended when sleeping

2015-10-02 Thread Tomeu Vizoso
Hi, this is v8 of an attempt to make it easier for devices to remain in runtime PM when the system goes to sleep, mainly to reduce the time spent resuming devices. For this, we interpret the absence of all PM callback implementations as it being safe to do direct_complete, so their ancestors aren

[PATCH v4 4/4] usb: dwc2: refactor common low-level hw code to platform.c

2015-10-02 Thread Marek Szyprowski
DWC2 module on some platforms needs three additional hardware resources: phy controller, clock and power supply. All of them must be enabled/activated to properly initialize and operate. This was initially handled in s3c-hsotg driver, which has been converted to 'gadget' part of dwc2 driver. Unfort

Re: [PATCH v3 4/4] usb: dwc2: refactor common low-level hw code to platform.c

2015-10-02 Thread Marek Szyprowski
Hello, On 2015-10-02 00:21, John Youn wrote: On 10/1/2015 3:04 PM, Felipe Balbi wrote: On Thu, Oct 01, 2015 at 09:04:59PM +, John Youn wrote: On 10/1/2015 8:50 AM, Felipe Balbi wrote: On Mon, Sep 21, 2015 at 12:16:12PM +0200, Marek Szyprowski wrote: DWC2 module on some platforms needs th

[PATCH v1 3/5] asix: Simplify asix_rx_fixup_internal() netdev alloc

2015-10-02 Thread Dean Jenkins
The code is checking that the Ethernet frame will fit into a netdev allocated socket buffer within the constraints of MTU size, Ethernet header length plus VLAN header length. The original code was checking rx->remaining each loop of the while loop that processes multiple Ethernet frames per URB a

[PATCH v1 1/5] asix: Rename remaining and size for clarity

2015-10-02 Thread Dean Jenkins
The Data header synchronisation is easier to understand if the variables "remaining" and "size" are renamed. Therefore, the lifetime of the "remaining" variable exists outside of asix_rx_fixup_internal() and is used to indicate any remaining pending bytes of the Ethernet frame that need to be obta

[PATCH v1 4/5] asix: On RX avoid creating bad Ethernet frames

2015-10-02 Thread Dean Jenkins
When RX Ethernet frames span multiple URB socket buffers, the data stream may suffer a discontinuity which will cause the current Ethernet frame in the netdev socket buffer to be incomplete. This frame needs to be discarded instead of appending unrelated data from the current URB socket buffer to t

[PATCH v2 0/5] Improve ASIX RX memory allocation error handling

2015-10-02 Thread Dean Jenkins
From: Mark Craske The ASIX RX handler algorithm is weak on error handling. There is a design flaw in the ASIX RX handler algorithm because the implementation for handling RX Ethernet frames for the DUB-E100 C1 can have Ethernet frames spanning multiple URBs. This means that payload data from more

[PATCH v1 5/5] asix: Continue processing URB if no RX netdev buffer

2015-10-02 Thread Dean Jenkins
Avoid a loss of synchronisation of the Ethernet Data header 32-bit word due to a failure to get a netdev socket buffer. The ASIX RX handling algorithm returned 0 upon a failure to get an allocation of a netdev socket buffer. This causes the URB processing to stop which potentially causes a loss of

[PATCH v1 2/5] asix: Tidy-up 32-bit header word synchronisation

2015-10-02 Thread Dean Jenkins
Tidy-up the Data header 32-bit word synchronisation logic in asix_rx_fixup_internal() by removing redundant logic tests. The code is looking at the following cases of the Data header 32-bit word that is present before each Ethernet frame: a) all 32 bits of the Data header word are in the URB sock

[PATCH v1 0/5] Improve ASIX RX memory allocation error handling

2015-10-02 Thread Dean Jenkins
From: Mark Craske Please ignore the cover letter PATCH v2 as sent in error. Patches are all v1, (there are no v2 patches yet) The ASIX RX handler algorithm is weak on error handling. There is a design flaw in the ASIX RX handler algorithm because the implementation for handling RX Ethernet frame

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread Felipe Balbi
HBi, On Fri, Oct 02, 2015 at 03:09:57AM +, John Youn wrote: > On 10/1/2015 7:03 PM, Felipe Balbi wrote: > > Hi, > > > > On Fri, Sep 04, 2015 at 07:15:10PM -0700, John Youn wrote: > >> This patch allows the dwc3 driver to run on the new Synopsys USB 3.1 > >> IP core, albeit in USB 3.0 mode onl

Mass Storage Gadget Kthread

2015-10-02 Thread Felipe Balbi
Hi Alan, here's a question which I hope you can help me understand :-) Why do we have that kthread for the mass storage gadgets ? I noticed a very interesting behavior. Basically, the MSC class works in a loop like so: CBW Data Transfer CSW In our implemention, what we do is: CBW wake_up_proc

Re: Queueing b0a688ddcc50 "usb: musb: cppi41: allow it to work again" for -stable

2015-10-02 Thread Felipe Balbi
On Fri, Oct 02, 2015 at 02:23:45AM -0300, Ezequiel Garcia wrote: > Hello, > > Commit b0a688ddcc50 "usb: musb: cppi41: allow it to work again" seems > to fix a regression. It applies cleanly on v4.1 and removes the > "musb-hdrc musb-hdrc.1.auto: Need DT for the DMA engine." error. > > Any chance y

Re: [PATCH v4 1/5] gadget: Introduce the notifier functions

2015-10-02 Thread Mark Brown
On Thu, Oct 01, 2015 at 12:58:49PM -0500, Felipe Balbi wrote: > On Thu, Oct 01, 2015 at 06:43:08PM +0100, Mark Brown wrote: > > On Thu, Oct 01, 2015 at 12:29:32PM -0500, Felipe Balbi wrote: > > > Frankly, I wanted all of this to be decided in userland with the > > > kernel just providing notificat

Re: Queueing b0a688ddcc50 "usb: musb: cppi41: allow it to work again" for -stable

2015-10-02 Thread Ezequiel Garcia
On 2 October 2015 at 13:09, Felipe Balbi wrote: > On Fri, Oct 02, 2015 at 02:23:45AM -0300, Ezequiel Garcia wrote: >> Hello, >> >> Commit b0a688ddcc50 "usb: musb: cppi41: allow it to work again" seems >> to fix a regression. It applies cleanly on v4.1 and removes the >> "musb-hdrc musb-hdrc.1.auto

Re: [PATCH v4 1/5] gadget: Introduce the notifier functions

2015-10-02 Thread Felipe Balbi
Hi, On Fri, Oct 02, 2015 at 05:47:43PM +0100, Mark Brown wrote: > On Thu, Oct 01, 2015 at 12:58:49PM -0500, Felipe Balbi wrote: > > On Thu, Oct 01, 2015 at 06:43:08PM +0100, Mark Brown wrote: > > > On Thu, Oct 01, 2015 at 12:29:32PM -0500, Felipe Balbi wrote: > > > > > Frankly, I wanted all of th

Re: Queueing b0a688ddcc50 "usb: musb: cppi41: allow it to work again" for -stable

2015-10-02 Thread Felipe Balbi
On Fri, Oct 02, 2015 at 02:16:50PM -0300, Ezequiel Garcia wrote: > On 2 October 2015 at 13:09, Felipe Balbi wrote: > > On Fri, Oct 02, 2015 at 02:23:45AM -0300, Ezequiel Garcia wrote: > >> Hello, > >> > >> Commit b0a688ddcc50 "usb: musb: cppi41: allow it to work again" seems > >> to fix a regressi

Re: [PATCH v4 1/5] gadget: Introduce the notifier functions

2015-10-02 Thread Felipe Balbi
Hi, On Fri, Oct 02, 2015 at 07:41:07AM +0200, Greg KH wrote: > On Thu, Oct 01, 2015 at 12:29:32PM -0500, Felipe Balbi wrote: > > On Thu, Sep 24, 2015 at 10:39:23AM -0700, Baolin Wang wrote: > > > The usb charger framework is based on usb gadget. The usb charger > > > need to be notified the state

Re: Mass Storage Gadget Kthread

2015-10-02 Thread Alan Stern
On Fri, 2 Oct 2015, Felipe Balbi wrote: > Hi Alan, > > here's a question which I hope you can help me understand :-) > > Why do we have that kthread for the mass storage gadgets ? I noticed a very > interesting behavior. Basically, the mass-storage gadget uses a kthread in order to access the b

Re: [PATCH 02/14] RFC: usb/host/fotg210: remove KERN_WARNING from pr_info

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:06PM +0200, Peter Senna Tschudin wrote: > This patch remove KERN_WARNING from a call to pr_info(). s/pr_info/pr_warn/ other than that, looks good > > Signed-off-by: Peter Senna Tschudin > --- > drivers/usb/host/fotg210-hcd.c | 2 +- > 1 file changed, 1 insertion(

Re: [PATCH 01/14] RFC: usb/host/fotg210: Fix coding style issues

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:05PM +0200, Peter Senna Tschudin wrote: > This patch fix coding style issues reported by checkpatch that do not > change semantics of the code. > > Signed-off-by: Peter Senna Tschudin > --- > drivers/usb/host/fotg210-hcd.c | 1248 > +

Re: [PATCH 06/14] RFC: usb/host/fotg210: replace msleep by usleep_range

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:10PM +0200, Peter Senna Tschudin wrote: > msleep under 20ms can result in sleeping up to 20ms, which may not be > intended. Replace msleep(5) by usleep_range(5000, 6000). > > Signed-off-by: Peter Senna Tschudin good catch. I'd apply this straight away. Alan ? > ---

Re: [PATCH 05/14] RFC: usb/host/fotg210: change kmalloc by kmalloc_array

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:09PM +0200, Peter Senna Tschudin wrote: > This patch change: > > kmalloc(DBG_SCHED_LIMIT * sizeof(*seen), GFP_ATOMIC) > > by: > > kmalloc_array(DBG_SCHED_LIMIT, sizeof(*seen), GFP_ATOMIC) > > as kmalloc_array() should be used for allocating arrays. > > Signed-off-

Re: [PATCH 04/14] RFC: usb/host/fotg210: Remove NULL checks dma_pool_destroy

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:08PM +0200, Peter Senna Tschudin wrote: > This patch remove NULL checks before calls to dma_pool_destroy() as the > function now can handle NULL pointers. > > Signed-off-by: Peter Senna Tschudin looks good to me > --- > drivers/usb/host/fotg210-hcd.c | 12

Re: [PATCH 07/14] RFC: usb/host/fotg210: Remove a macro from snprintf

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:11PM +0200, Peter Senna Tschudin wrote: > This patch removes a macro from a call to snprintf() and moves it's > content to just before the call to snprintf() assigning a value to a new > variable named tmp. The goal of this patch is to make the code easier to > underst

Re: [PATCH 03/14] RFC: usb/host/fotg210: Remove useless else statement

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:07PM +0200, Peter Senna Tschudin wrote: > This patch remove an else statement after a return to make the code > easier to understand. > > Signed-off-by: Peter Senna Tschudin looks good to me. > --- > drivers/usb/host/fotg210-hcd.c | 5 ++--- > 1 file changed, 2 in

Re: [PATCH 09/14] RFC: usb/host/fotg210: Add function: output_buf_tds_dir()

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:13PM +0200, Peter Senna Tschudin wrote: > checkpatch complains about too many leading tabs because the switch > statement starts after 6 tabs. > > fill_periodic_buffer() -> for() -> do -> switch() -> if() -> > list_for_each_entry() and finally the last switch(). > >

Re: [PATCH 08/14] RFC: usb/host/fotg210: convert macro to inline function

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:12PM +0200, Peter Senna Tschudin wrote: > This patch convert the macro speed_char in an inline function. The goal > of this patch is to make the code easier to read. > > Signed-off-by: Peter Senna Tschudin looks good > --- > drivers/usb/host/fotg210-hcd.c | 27 +++

Re: [PATCH 10/14] RFC: usb/host/fotg210: Add function scan_frame_queue()

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:14PM +0200, Peter Senna Tschudin wrote: > checkpatch complains about too many leading tabs because the if > statement starts after 6 tabs: > > scan_iosoc() -> for() -> while() -> switch() -> if() -> for() -> if() > > There is also a goto statement going backwards in

Re: [PATCH 11/14] RFC: usb/host: Rename fotg210-hcd to faraday-hcd

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:15PM +0200, Peter Senna Tschudin wrote: > This patch renames fotg210-hcd to faraday-hcd as a first step of > consolitating Faraday fotg210 and fusbh200 EHCI-like drivers. > > The patch also updates Kconfig and Makefile. > > Signed-off-by: Peter Senna Tschudin pleas

Re: [PATCH 12/14] RFC: usb/host/faraday-hcd: Replace fotg210 by fhcd2xx

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:16PM +0200, Peter Senna Tschudin wrote: > This patch replaces the strings: > FOTG210 by FHCD2XX > fotg210 by fhcd2xx > > The goal is to remove all references to fotg210 as the driver will > support both fotg210 and fusbh200. > > Signed-off-by: Peter Senna Tschudin

Re: [PATCH 14/14] RFC: usb/host/faraday-hcd: Import FUSBH200 parameters

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:18PM +0200, Peter Senna Tschudin wrote: > This patch adds FUSBH200 parameters to faraday-hcd.h. > > Signed-off-by: Peter Senna Tschudin fine by me -- balbi signature.asc Description: PGP signature

Re: [PATCH 13/14] RFC: usb/host/faraday-hcd: Move #defines outside struct

2015-10-02 Thread Felipe Balbi
On Mon, Sep 21, 2015 at 05:01:17PM +0200, Peter Senna Tschudin wrote: > For making the code more readable and to facilitate supporting multiple > hardware versions, move #defines to outside the struct declaration. This > patch also renames fhcd2xx_regs to fotg210_regs as this struct is > specific t

Re: [PATCH] usb-host: Remove fusbh200 driver

2015-10-02 Thread Felipe Balbi
On Fri, Oct 02, 2015 at 01:18:27PM +0200, Peter Senna Tschudin wrote: > fusbh200 and fotg210 are very similar. The initial idea was to consolidate > both drivers but I'm afraid fusbh200 is not being used. > > This patch remove the fusbh200 source code, update Kconfig and two > Makefiles. > > Sign

Re: Mass Storage Gadget Kthread

2015-10-02 Thread Felipe Balbi
On Fri, Oct 02, 2015 at 01:29:05PM -0400, Alan Stern wrote: > On Fri, 2 Oct 2015, Felipe Balbi wrote: > > > Hi Alan, > > > > here's a question which I hope you can help me understand :-) > > > > Why do we have that kthread for the mass storage gadgets ? I noticed a very > > interesting behavior.

Re: [PATCH 06/14] RFC: usb/host/fotg210: replace msleep by usleep_range

2015-10-02 Thread Alan Stern
On Fri, 2 Oct 2015, Felipe Balbi wrote: > On Mon, Sep 21, 2015 at 05:01:10PM +0200, Peter Senna Tschudin wrote: > > msleep under 20ms can result in sleeping up to 20ms, which may not be > > intended. Replace msleep(5) by usleep_range(5000, 6000). > > > > Signed-off-by: Peter Senna Tschudin > >

RE: [PATCH] usb: dwc2: gadget: parity fix in isochronous mode

2015-10-02 Thread Roman Bacik
> -Original Message- > From: John Youn [mailto:john.y...@synopsys.com] > Sent: September-10-15 6:14 PM > To: Scott Branden; Roman Bacik; linux-usb@vger.kernel.org > Cc: bcm-kernel-feedback-list > Subject: [PATCH] usb: dwc2: gadget: parity fix in isochronous mode > > From: Roman Bacik > >

[GIT PULL] usb fixes for v4.3-rc4

2015-10-02 Thread Felipe Balbi
Hi Greg, here's three more fixes for current -rc. They have been in next for a couple days or so and no build problems have been found. regards The following changes since commit 9ffecb10283508260936b96022d4ee43a7798b4c: Linux 4.3-rc3 (2015-09-27 07:50:08 -0400) are available in the git repo

Re: [PATCH v4 1/5] gadget: Introduce the notifier functions

2015-10-02 Thread Mark Brown
On Fri, Oct 02, 2015 at 12:23:11PM -0500, Felipe Balbi wrote: > On Fri, Oct 02, 2015 at 05:47:43PM +0100, Mark Brown wrote: > > Can you elaborate on what the difficulties are and how punting to > > userspace helps? If anything I'd expect punting to userspace to make > the difficulty was mainly m

Re: Mass Storage Gadget Kthread

2015-10-02 Thread Alan Stern
On Fri, 2 Oct 2015, Felipe Balbi wrote: > > Figure [1] is misleading. The 7 POLLs you see are at the very start of > > a READ. It's not surprising that the host can poll 7 times before the > > gadget manages to read the first block of data from the backing file. > > This isn't a case where t

Re: [PATCH v4 1/5] gadget: Introduce the notifier functions

2015-10-02 Thread Felipe Balbi
On Fri, Oct 02, 2015 at 07:49:09PM +0100, Mark Brown wrote: > On Fri, Oct 02, 2015 at 12:23:11PM -0500, Felipe Balbi wrote: > > On Fri, Oct 02, 2015 at 05:47:43PM +0100, Mark Brown wrote: > > > > Can you elaborate on what the difficulties are and how punting to > > > userspace helps? If anything

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread John Youn
On 10/2/2015 7:05 AM, Felipe Balbi wrote: > HBi, > > On Fri, Oct 02, 2015 at 03:09:57AM +, John Youn wrote: >> On 10/1/2015 7:03 PM, Felipe Balbi wrote: >>> Hi, >>> >>> On Fri, Sep 04, 2015 at 07:15:10PM -0700, John Youn wrote: This patch allows the dwc3 driver to run on the new Synopsys

Re: Mass Storage Gadget Kthread

2015-10-02 Thread Felipe Balbi
Hi, On Fri, Oct 02, 2015 at 02:57:54PM -0400, Alan Stern wrote: > On Fri, 2 Oct 2015, Felipe Balbi wrote: > > > > Figure [1] is misleading. The 7 POLLs you see are at the very start of > > > a READ. It's not surprising that the host can poll 7 times before the > > > gadget manages to read the

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread Felipe Balbi
Hi, On Fri, Oct 02, 2015 at 07:16:05PM +, John Youn wrote: > From now, any check based on a revision (for STARS, workarounds, and > new features) should take into consideration how it applies to both > the 3.1/3.0 IP and make the check accordingly. > > Cc: # v3.18+ >

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread John Youn
On 10/1/2015 8:09 PM, John Youn wrote: > On 10/1/2015 7:03 PM, Felipe Balbi wrote: >> Hi, >> >> On Fri, Sep 04, 2015 at 07:15:10PM -0700, John Youn wrote: >>> + >>> +/* DWC_usb31 revisions */ >>> +#define DWC3_USB31_REVISION_110A 0x3131302a >> >> are you sure you tested this ? Above you check for

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread Felipe Balbi
On Fri, Oct 02, 2015 at 07:47:24PM +, John Youn wrote: > On 10/1/2015 8:09 PM, John Youn wrote: > > On 10/1/2015 7:03 PM, Felipe Balbi wrote: > >> Hi, > >> > >> On Fri, Sep 04, 2015 at 07:15:10PM -0700, John Youn wrote: > >>> + > >>> +/* DWC_usb31 revisions */ > >>> +#define DWC3_USB31_REVISION

Re: [PATCH 1/3][v4] Documentation: dt: dwc3: Add snps,quirk-frame-length-adjustment property

2015-10-02 Thread Felipe Balbi
On Thu, Sep 24, 2015 at 09:42:59AM +, RAJESH BHAGAT wrote: > Hi Felipe, > > Any comments on the below [v4] patches? > > [PATCH 1/3][v4] Documentation: dt: dwc3: Add > snps,quirk-frame-length-adjustment property https://git.kernel.org/cgit/linux/kernel/git/balbi/usb.git/commit/?h=next&id=37

Re: USB stops working

2015-10-02 Thread Marcus Overhagen
It happened again. When I attached my mobile phone, it wasn't recognized. The MXT-USB did work an hour earlier. [42097.629651] scsi 14:0:0:0: Direct-Access MXT-USB Storage Device 1308 PQ: 0 ANSI: 0 CCS [42097.630393] sd 14:0:0:0: [sdb] 251131904 512-byte logical blocks: (128 GB/119 GiB) [4

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread Greg KH
On Fri, Oct 02, 2015 at 02:21:01PM -0500, Felipe Balbi wrote: > > We're trying to avoid the situation where where we have to ship > > patches or maintain a separate kernel tree. > > > > Do you have any objections to these going into stable? > > I'm not the one you need to convince. That would be

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread Felipe Balbi
On Sat, Oct 03, 2015 at 12:02:54AM +0200, Greg KH wrote: > On Fri, Oct 02, 2015 at 02:21:01PM -0500, Felipe Balbi wrote: > > > We're trying to avoid the situation where where we have to ship > > > patches or maintain a separate kernel tree. > > > > > > Do you have any objections to these going int

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread John Youn
On 10/2/2015 5:33 PM, Felipe Balbi wrote: > On Sat, Oct 03, 2015 at 12:02:54AM +0200, Greg KH wrote: >> On Fri, Oct 02, 2015 at 02:21:01PM -0500, Felipe Balbi wrote: We're trying to avoid the situation where where we have to ship patches or maintain a separate kernel tree. Do yo

Re: [PATCH 1/6] usb: dwc3: Support Synopsys USB 3.1 IP

2015-10-02 Thread Greg KH
On Sat, Oct 03, 2015 at 01:14:27AM +, John Youn wrote: > On 10/2/2015 5:33 PM, Felipe Balbi wrote: > > On Sat, Oct 03, 2015 at 12:02:54AM +0200, Greg KH wrote: > >> On Fri, Oct 02, 2015 at 02:21:01PM -0500, Felipe Balbi wrote: > We're trying to avoid the situation where where we have to sh