/[linux-patches]/genpatches-2.6/tags/3.0-30/1002_linux-3.0.3.patch
Gentoo

Contents of /genpatches-2.6/tags/3.0-30/1002_linux-3.0.3.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2206 - (show annotations) (download)
Mon Sep 17 18:58:14 2012 UTC (22 months ago) by mpagano
File size: 22233 byte(s)
3.0-30 release
1 diff --git a/Documentation/virtual/lguest/lguest.c b/Documentation/virtual/lguest/lguest.c
2 index cd9d6af..aec80e5 100644
3 --- a/Documentation/virtual/lguest/lguest.c
4 +++ b/Documentation/virtual/lguest/lguest.c
5 @@ -2008,6 +2008,9 @@ int main(int argc, char *argv[])
6 /* We use a simple helper to copy the arguments separated by spaces. */
7 concat((char *)(boot + 1), argv+optind+2);
8
9 + /* Set kernel alignment to 16M (CONFIG_PHYSICAL_ALIGN) */
10 + boot->hdr.kernel_alignment = 0x1000000;
11 +
12 /* Boot protocol version: 2.07 supports the fields for lguest. */
13 boot->hdr.version = 0x207;
14
15 diff --git a/Makefile b/Makefile
16 index 794fa28..c44d720 100644
17 --- a/Makefile
18 +++ b/Makefile
19 @@ -1,6 +1,6 @@
20 VERSION = 3
21 PATCHLEVEL = 0
22 -SUBLEVEL = 2
23 +SUBLEVEL = 3
24 EXTRAVERSION =
25 NAME = Sneaky Weasel
26
27 diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
28 index 645b84b..7ad43c6 100644
29 --- a/drivers/gpu/drm/radeon/atombios_dp.c
30 +++ b/drivers/gpu/drm/radeon/atombios_dp.c
31 @@ -613,6 +613,18 @@ static bool radeon_dp_get_link_status(struct radeon_connector *radeon_connector,
32 return true;
33 }
34
35 +bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector)
36 +{
37 + u8 link_status[DP_LINK_STATUS_SIZE];
38 + struct radeon_connector_atom_dig *dig = radeon_connector->con_priv;
39 +
40 + if (!radeon_dp_get_link_status(radeon_connector, link_status))
41 + return false;
42 + if (dp_channel_eq_ok(link_status, dig->dp_lane_count))
43 + return false;
44 + return true;
45 +}
46 +
47 struct radeon_dp_link_train_info {
48 struct radeon_device *rdev;
49 struct drm_encoder *encoder;
50 diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
51 index 6d6b5f1..6ab6c41 100644
52 --- a/drivers/gpu/drm/radeon/radeon_connectors.c
53 +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
54 @@ -60,18 +60,20 @@ void radeon_connector_hotplug(struct drm_connector *connector)
55
56 radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
57
58 - /* powering up/down the eDP panel generates hpd events which
59 - * can interfere with modesetting.
60 - */
61 - if (connector->connector_type == DRM_MODE_CONNECTOR_eDP)
62 + /* if the connector is already off, don't turn it back on */
63 + if (connector->dpms != DRM_MODE_DPMS_ON)
64 return;
65
66 - /* pre-r600 did not always have the hpd pins mapped accurately to connectors */
67 - if (rdev->family >= CHIP_R600) {
68 - if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
69 + /* just deal with DP (not eDP) here. */
70 + if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) {
71 + int saved_dpms = connector->dpms;
72 +
73 + if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd) &&
74 + radeon_dp_needs_link_train(radeon_connector))
75 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
76 else
77 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
78 + connector->dpms = saved_dpms;
79 }
80 }
81
82 diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
83 index b293487..319d85d 100644
84 --- a/drivers/gpu/drm/radeon/radeon_encoders.c
85 +++ b/drivers/gpu/drm/radeon/radeon_encoders.c
86 @@ -2323,6 +2323,9 @@ radeon_add_atom_encoder(struct drm_device *dev,
87 default:
88 encoder->possible_crtcs = 0x3;
89 break;
90 + case 4:
91 + encoder->possible_crtcs = 0xf;
92 + break;
93 case 6:
94 encoder->possible_crtcs = 0x3f;
95 break;
96 diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
97 index d09031c..68820f5 100644
98 --- a/drivers/gpu/drm/radeon/radeon_mode.h
99 +++ b/drivers/gpu/drm/radeon/radeon_mode.h
100 @@ -479,6 +479,7 @@ extern void radeon_dp_set_link_config(struct drm_connector *connector,
101 struct drm_display_mode *mode);
102 extern void radeon_dp_link_train(struct drm_encoder *encoder,
103 struct drm_connector *connector);
104 +extern bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector);
105 extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector);
106 extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector);
107 extern void atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mode);
108 diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c
109 index 1a409c5..c316294 100644
110 --- a/drivers/hwmon/ibmaem.c
111 +++ b/drivers/hwmon/ibmaem.c
112 @@ -432,13 +432,15 @@ static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg,
113 aem_send_message(ipmi);
114
115 res = wait_for_completion_timeout(&ipmi->read_complete, IPMI_TIMEOUT);
116 - if (!res)
117 - return -ETIMEDOUT;
118 + if (!res) {
119 + res = -ETIMEDOUT;
120 + goto out;
121 + }
122
123 if (ipmi->rx_result || ipmi->rx_msg_len != rs_size ||
124 memcmp(&rs_resp->id, &system_x_id, sizeof(system_x_id))) {
125 - kfree(rs_resp);
126 - return -ENOENT;
127 + res = -ENOENT;
128 + goto out;
129 }
130
131 switch (size) {
132 @@ -463,8 +465,11 @@ static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg,
133 break;
134 }
135 }
136 + res = 0;
137
138 - return 0;
139 +out:
140 + kfree(rs_resp);
141 + return res;
142 }
143
144 /* Update AEM energy registers */
145 diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
146 index b6c5d37..1ae8913 100644
147 --- a/drivers/net/wireless/ath/ath5k/base.c
148 +++ b/drivers/net/wireless/ath/ath5k/base.c
149 @@ -1748,6 +1748,8 @@ ath5k_beacon_setup(struct ath5k_softc *sc, struct ath5k_buf *bf)
150
151 if (dma_mapping_error(sc->dev, bf->skbaddr)) {
152 ATH5K_ERR(sc, "beacon DMA mapping failed\n");
153 + dev_kfree_skb_any(skb);
154 + bf->skb = NULL;
155 return -EIO;
156 }
157
158 @@ -1832,8 +1834,6 @@ ath5k_beacon_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
159 ath5k_txbuf_free_skb(sc, avf->bbuf);
160 avf->bbuf->skb = skb;
161 ret = ath5k_beacon_setup(sc, avf->bbuf);
162 - if (ret)
163 - avf->bbuf->skb = NULL;
164 out:
165 return ret;
166 }
167 @@ -1854,6 +1854,7 @@ ath5k_beacon_send(struct ath5k_softc *sc)
168 struct ath5k_vif *avf;
169 struct ath5k_buf *bf;
170 struct sk_buff *skb;
171 + int err;
172
173 ATH5K_DBG_UNLIMIT(sc, ATH5K_DEBUG_BEACON, "in beacon_send\n");
174
175 @@ -1902,11 +1903,6 @@ ath5k_beacon_send(struct ath5k_softc *sc)
176
177 avf = (void *)vif->drv_priv;
178 bf = avf->bbuf;
179 - if (unlikely(bf->skb == NULL || sc->opmode == NL80211_IFTYPE_STATION ||
180 - sc->opmode == NL80211_IFTYPE_MONITOR)) {
181 - ATH5K_WARN(sc, "bf=%p bf_skb=%p\n", bf, bf ? bf->skb : NULL);
182 - return;
183 - }
184
185 /*
186 * Stop any current dma and put the new frame on the queue.
187 @@ -1920,8 +1916,17 @@ ath5k_beacon_send(struct ath5k_softc *sc)
188
189 /* refresh the beacon for AP or MESH mode */
190 if (sc->opmode == NL80211_IFTYPE_AP ||
191 - sc->opmode == NL80211_IFTYPE_MESH_POINT)
192 - ath5k_beacon_update(sc->hw, vif);
193 + sc->opmode == NL80211_IFTYPE_MESH_POINT) {
194 + err = ath5k_beacon_update(sc->hw, vif);
195 + if (err)
196 + return;
197 + }
198 +
199 + if (unlikely(bf->skb == NULL || sc->opmode == NL80211_IFTYPE_STATION ||
200 + sc->opmode == NL80211_IFTYPE_MONITOR)) {
201 + ATH5K_WARN(sc, "bf=%p bf_skb=%p\n", bf, bf->skb);
202 + return;
203 + }
204
205 trace_ath5k_tx(sc, bf->skb, &sc->txqs[sc->bhalq]);
206
207 diff --git a/drivers/staging/rtl8192u/r819xU_firmware.c b/drivers/staging/rtl8192u/r819xU_firmware.c
208 index 6766f46..4bb5fff 100644
209 --- a/drivers/staging/rtl8192u/r819xU_firmware.c
210 +++ b/drivers/staging/rtl8192u/r819xU_firmware.c
211 @@ -399,10 +399,7 @@ download_firmware_fail:
212
213 }
214
215 -
216 -
217 -
218 -
219 -
220 -
221 +MODULE_FIRMWARE("RTL8192U/boot.img");
222 +MODULE_FIRMWARE("RTL8192U/main.img");
223 +MODULE_FIRMWARE("RTL8192U/data.img");
224
225 diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
226 index 385acb8..3f94ac3 100644
227 --- a/drivers/usb/class/usbtmc.c
228 +++ b/drivers/usb/class/usbtmc.c
229 @@ -268,7 +268,7 @@ usbtmc_abort_bulk_in_status:
230 dev_err(dev, "usb_bulk_msg returned %d\n", rv);
231 goto exit;
232 }
233 - } while ((actual = max_size) &&
234 + } while ((actual == max_size) &&
235 (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN));
236
237 if (actual == max_size) {
238 diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c
239 index c962608..26678ca 100644
240 --- a/drivers/usb/core/config.c
241 +++ b/drivers/usb/core/config.c
242 @@ -123,10 +123,11 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
243 }
244
245 if (usb_endpoint_xfer_isoc(&ep->desc))
246 - max_tx = ep->desc.wMaxPacketSize * (desc->bMaxBurst + 1) *
247 - (desc->bmAttributes + 1);
248 + max_tx = (desc->bMaxBurst + 1) * (desc->bmAttributes + 1) *
249 + le16_to_cpu(ep->desc.wMaxPacketSize);
250 else if (usb_endpoint_xfer_int(&ep->desc))
251 - max_tx = ep->desc.wMaxPacketSize * (desc->bMaxBurst + 1);
252 + max_tx = le16_to_cpu(ep->desc.wMaxPacketSize) *
253 + (desc->bMaxBurst + 1);
254 else
255 max_tx = 999999;
256 if (le16_to_cpu(desc->wBytesPerInterval) > max_tx) {
257 @@ -134,10 +135,10 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
258 "config %d interface %d altsetting %d ep %d: "
259 "setting to %d\n",
260 usb_endpoint_xfer_isoc(&ep->desc) ? "Isoc" : "Int",
261 - desc->wBytesPerInterval,
262 + le16_to_cpu(desc->wBytesPerInterval),
263 cfgno, inum, asnum, ep->desc.bEndpointAddress,
264 max_tx);
265 - ep->ss_ep_comp.wBytesPerInterval = max_tx;
266 + ep->ss_ep_comp.wBytesPerInterval = cpu_to_le16(max_tx);
267 }
268 }
269
270 diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
271 index 04b90ad..e9f004e 100644
272 --- a/drivers/usb/host/pci-quirks.c
273 +++ b/drivers/usb/host/pci-quirks.c
274 @@ -803,7 +803,7 @@ static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev)
275
276 /* If the BIOS owns the HC, signal that the OS wants it, and wait */
277 if (val & XHCI_HC_BIOS_OWNED) {
278 - writel(val & XHCI_HC_OS_OWNED, base + ext_cap_offset);
279 + writel(val | XHCI_HC_OS_OWNED, base + ext_cap_offset);
280
281 /* Wait for 5 seconds with 10 microsecond polling interval */
282 timeout = handshake(base + ext_cap_offset, XHCI_HC_BIOS_OWNED,
283 diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
284 index f5fe1ac..9824761 100644
285 --- a/drivers/usb/host/xhci.c
286 +++ b/drivers/usb/host/xhci.c
287 @@ -345,7 +345,8 @@ static void xhci_event_ring_work(unsigned long arg)
288 spin_lock_irqsave(&xhci->lock, flags);
289 temp = xhci_readl(xhci, &xhci->op_regs->status);
290 xhci_dbg(xhci, "op reg status = 0x%x\n", temp);
291 - if (temp == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING)) {
292 + if (temp == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING) ||
293 + (xhci->xhc_state & XHCI_STATE_HALTED)) {
294 xhci_dbg(xhci, "HW died, polling stopped.\n");
295 spin_unlock_irqrestore(&xhci->lock, flags);
296 return;
297 @@ -939,8 +940,11 @@ static int xhci_check_args(struct usb_hcd *hcd, struct usb_device *udev,
298 return 0;
299 }
300
301 + xhci = hcd_to_xhci(hcd);
302 + if (xhci->xhc_state & XHCI_STATE_HALTED)
303 + return -ENODEV;
304 +
305 if (check_virt_dev) {
306 - xhci = hcd_to_xhci(hcd);
307 if (!udev->slot_id || !xhci->devs
308 || !xhci->devs[udev->slot_id]) {
309 printk(KERN_DEBUG "xHCI %s called with unaddressed "
310 @@ -1242,7 +1246,8 @@ int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
311 xhci_urb_free_priv(xhci, urb_priv);
312 return ret;
313 }
314 - if (xhci->xhc_state & XHCI_STATE_DYING) {
315 + if ((xhci->xhc_state & XHCI_STATE_DYING) ||
316 + (xhci->xhc_state & XHCI_STATE_HALTED)) {
317 xhci_dbg(xhci, "Ep 0x%x: URB %p to be canceled on "
318 "non-responsive xHCI host.\n",
319 urb->ep->desc.bEndpointAddress, urb);
320 @@ -2667,7 +2672,10 @@ void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev)
321 int i, ret;
322
323 ret = xhci_check_args(hcd, udev, NULL, 0, true, __func__);
324 - if (ret <= 0)
325 + /* If the host is halted due to driver unload, we still need to free the
326 + * device.
327 + */
328 + if (ret <= 0 && ret != -ENODEV)
329 return;
330
331 virt_dev = xhci->devs[udev->slot_id];
332 @@ -2681,7 +2689,8 @@ void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev)
333 spin_lock_irqsave(&xhci->lock, flags);
334 /* Don't disable the slot if the host controller is dead. */
335 state = xhci_readl(xhci, &xhci->op_regs->status);
336 - if (state == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING)) {
337 + if (state == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING) ||
338 + (xhci->xhc_state & XHCI_STATE_HALTED)) {
339 xhci_free_virt_device(xhci, udev->slot_id);
340 spin_unlock_irqrestore(&xhci->lock, flags);
341 return;
342 diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
343 index 6aeb363..548338c 100644
344 --- a/drivers/usb/musb/musb_gadget.c
345 +++ b/drivers/usb/musb/musb_gadget.c
346 @@ -1698,6 +1698,8 @@ static int musb_gadget_pullup(struct usb_gadget *gadget, int is_on)
347
348 is_on = !!is_on;
349
350 + pm_runtime_get_sync(musb->controller);
351 +
352 /* NOTE: this assumes we are sensing vbus; we'd rather
353 * not pullup unless the B-session is active.
354 */
355 @@ -1707,6 +1709,9 @@ static int musb_gadget_pullup(struct usb_gadget *gadget, int is_on)
356 musb_pullup(musb, is_on);
357 }
358 spin_unlock_irqrestore(&musb->lock, flags);
359 +
360 + pm_runtime_put(musb->controller);
361 +
362 return 0;
363 }
364
365 diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
366 index 2e06b90..9afb361 100644
367 --- a/drivers/usb/serial/ftdi_sio.c
368 +++ b/drivers/usb/serial/ftdi_sio.c
369 @@ -1171,7 +1171,7 @@ static __u32 get_ftdi_divisor(struct tty_struct *tty,
370 case FT2232H: /* FT2232H chip */
371 case FT4232H: /* FT4232H chip */
372 case FT232H: /* FT232H chip */
373 - if ((baud <= 12000000) & (baud >= 1200)) {
374 + if ((baud <= 12000000) && (baud >= 1200)) {
375 div_value = ftdi_2232h_baud_to_divisor(baud);
376 } else if (baud < 1200) {
377 div_value = ftdi_232bm_baud_to_divisor(baud);
378 diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
379 index 60b25d8..8156561 100644
380 --- a/drivers/usb/serial/option.c
381 +++ b/drivers/usb/serial/option.c
382 @@ -148,6 +148,10 @@ static void option_instat_callback(struct urb *urb);
383 #define HUAWEI_PRODUCT_K4505 0x1464
384 #define HUAWEI_PRODUCT_K3765 0x1465
385 #define HUAWEI_PRODUCT_E14AC 0x14AC
386 +#define HUAWEI_PRODUCT_K3770 0x14C9
387 +#define HUAWEI_PRODUCT_K3771 0x14CA
388 +#define HUAWEI_PRODUCT_K4510 0x14CB
389 +#define HUAWEI_PRODUCT_K4511 0x14CC
390 #define HUAWEI_PRODUCT_ETS1220 0x1803
391 #define HUAWEI_PRODUCT_E353 0x1506
392
393 @@ -547,6 +551,14 @@ static const struct usb_device_id option_ids[] = {
394 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) },
395 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) },
396 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) },
397 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) },
398 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },
399 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) },
400 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) },
401 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x31) },
402 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) },
403 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x31) },
404 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x32) },
405 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) },
406 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) },
407 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) },
408 diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
409 index 54a9dab..27f9ae4 100644
410 --- a/drivers/usb/serial/qcserial.c
411 +++ b/drivers/usb/serial/qcserial.c
412 @@ -45,6 +45,7 @@ static const struct usb_device_id id_table[] = {
413 {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */
414 {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */
415 {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */
416 + {USB_DEVICE(0x05c6, 0x9009)}, /* Generic Gobi Modem device */
417 {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */
418 {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */
419 {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */
420 diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
421 index ccff348..3041a97 100644
422 --- a/drivers/usb/storage/unusual_devs.h
423 +++ b/drivers/usb/storage/unusual_devs.h
424 @@ -1988,6 +1988,16 @@ UNUSUAL_DEV( 0x4146, 0xba01, 0x0100, 0x0100,
425 "Micro Mini 1GB",
426 USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ),
427
428 +/*
429 + * Nick Bowler <nbowler@elliptictech.com>
430 + * SCSI stack spams (otherwise harmless) error messages.
431 + */
432 +UNUSUAL_DEV( 0xc251, 0x4003, 0x0100, 0x0100,
433 + "Keil Software, Inc.",
434 + "V2M MotherBoard",
435 + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
436 + US_FL_NOT_LOCKABLE),
437 +
438 /* Reported by Andrew Simmons <andrew.simmons@gmail.com> */
439 UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001,
440 "DataStor",
441 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
442 index 1d34d75..d3d451b 100644
443 --- a/mm/vmalloc.c
444 +++ b/mm/vmalloc.c
445 @@ -732,9 +732,10 @@ static void free_unmap_vmap_area_addr(unsigned long addr)
446 #define VMAP_BBMAP_BITS_MIN (VMAP_MAX_ALLOC*2)
447 #define VMAP_MIN(x, y) ((x) < (y) ? (x) : (y)) /* can't use min() */
448 #define VMAP_MAX(x, y) ((x) > (y) ? (x) : (y)) /* can't use max() */
449 -#define VMAP_BBMAP_BITS VMAP_MIN(VMAP_BBMAP_BITS_MAX, \
450 - VMAP_MAX(VMAP_BBMAP_BITS_MIN, \
451 - VMALLOC_PAGES / NR_CPUS / 16))
452 +#define VMAP_BBMAP_BITS \
453 + VMAP_MIN(VMAP_BBMAP_BITS_MAX, \
454 + VMAP_MAX(VMAP_BBMAP_BITS_MIN, \
455 + VMALLOC_PAGES / roundup_pow_of_two(NR_CPUS) / 16))
456
457 #define VMAP_BLOCK_SIZE (VMAP_BBMAP_BITS * PAGE_SIZE)
458
459 diff --git a/net/atm/br2684.c b/net/atm/br2684.c
460 index 2252c20..52cfd0c 100644
461 --- a/net/atm/br2684.c
462 +++ b/net/atm/br2684.c
463 @@ -242,8 +242,6 @@ static int br2684_xmit_vcc(struct sk_buff *skb, struct net_device *dev,
464 if (brdev->payload == p_bridged) {
465 skb_push(skb, 2);
466 memset(skb->data, 0, 2);
467 - } else { /* p_routed */
468 - skb_pull(skb, ETH_HLEN);
469 }
470 }
471 skb_debug(skb);
472 diff --git a/sound/soc/samsung/jive_wm8750.c b/sound/soc/samsung/jive_wm8750.c
473 index 3b53ad5..14eb6ea 100644
474 --- a/sound/soc/samsung/jive_wm8750.c
475 +++ b/sound/soc/samsung/jive_wm8750.c
476 @@ -131,7 +131,7 @@ static struct snd_soc_dai_link jive_dai = {
477 .cpu_dai_name = "s3c2412-i2s",
478 .codec_dai_name = "wm8750-hifi",
479 .platform_name = "samsung-audio",
480 - .codec_name = "wm8750-codec.0-0x1a",
481 + .codec_name = "wm8750-codec.0-001a",
482 .init = jive_wm8750_init,
483 .ops = &jive_ops,
484 };
485 diff --git a/sound/soc/tegra/tegra_pcm.c b/sound/soc/tegra/tegra_pcm.c
486 index 3c271f9..6201710 100644
487 --- a/sound/soc/tegra/tegra_pcm.c
488 +++ b/sound/soc/tegra/tegra_pcm.c
489 @@ -309,9 +309,14 @@ static int tegra_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
490
491 static void tegra_pcm_deallocate_dma_buffer(struct snd_pcm *pcm, int stream)
492 {
493 - struct snd_pcm_substream *substream = pcm->streams[stream].substream;
494 - struct snd_dma_buffer *buf = &substream->dma_buffer;
495 + struct snd_pcm_substream *substream;
496 + struct snd_dma_buffer *buf;
497 +
498 + substream = pcm->streams[stream].substream;
499 + if (!substream)
500 + return;
501
502 + buf = &substream->dma_buffer;
503 if (!buf->area)
504 return;
505
506 diff --git a/sound/soc/tegra/tegra_wm8903.c b/sound/soc/tegra/tegra_wm8903.c
507 index 0d6738a..7766478 100644
508 --- a/sound/soc/tegra/tegra_wm8903.c
509 +++ b/sound/soc/tegra/tegra_wm8903.c
510 @@ -56,6 +56,7 @@
511 #define GPIO_HP_MUTE BIT(1)
512 #define GPIO_INT_MIC_EN BIT(2)
513 #define GPIO_EXT_MIC_EN BIT(3)
514 +#define GPIO_HP_DET BIT(4)
515
516 struct tegra_wm8903 {
517 struct tegra_asoc_utils_data util_data;
518 @@ -304,6 +305,7 @@ static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd)
519 snd_soc_jack_add_gpios(&tegra_wm8903_hp_jack,
520 1,
521 &tegra_wm8903_hp_jack_gpio);
522 + machine->gpio_requested |= GPIO_HP_DET;
523 }
524
525 snd_soc_jack_new(codec, "Mic Jack", SND_JACK_MICROPHONE,
526 @@ -429,10 +431,10 @@ static int __devexit tegra_wm8903_driver_remove(struct platform_device *pdev)
527 struct tegra_wm8903 *machine = snd_soc_card_get_drvdata(card);
528 struct tegra_wm8903_platform_data *pdata = machine->pdata;
529
530 - snd_soc_unregister_card(card);
531 -
532 - tegra_asoc_utils_fini(&machine->util_data);
533 -
534 + if (machine->gpio_requested & GPIO_HP_DET)
535 + snd_soc_jack_free_gpios(&tegra_wm8903_hp_jack,
536 + 1,
537 + &tegra_wm8903_hp_jack_gpio);
538 if (machine->gpio_requested & GPIO_EXT_MIC_EN)
539 gpio_free(pdata->gpio_ext_mic_en);
540 if (machine->gpio_requested & GPIO_INT_MIC_EN)
541 @@ -441,6 +443,11 @@ static int __devexit tegra_wm8903_driver_remove(struct platform_device *pdev)
542 gpio_free(pdata->gpio_hp_mute);
543 if (machine->gpio_requested & GPIO_SPKR_EN)
544 gpio_free(pdata->gpio_spkr_en);
545 + machine->gpio_requested = 0;
546 +
547 + snd_soc_unregister_card(card);
548 +
549 + tegra_asoc_utils_fini(&machine->util_data);
550
551 kfree(machine);
552
553 diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c
554 index d0d493c..aa52b3e 100644
555 --- a/sound/usb/caiaq/audio.c
556 +++ b/sound/usb/caiaq/audio.c
557 @@ -614,6 +614,7 @@ static void read_completed(struct urb *urb)
558 struct snd_usb_caiaqdev *dev;
559 struct urb *out;
560 int frame, len, send_it = 0, outframe = 0;
561 + size_t offset = 0;
562
563 if (urb->status || !info)
564 return;
565 @@ -634,7 +635,8 @@ static void read_completed(struct urb *urb)
566 len = urb->iso_frame_desc[outframe].actual_length;
567 out->iso_frame_desc[outframe].length = len;
568 out->iso_frame_desc[outframe].actual_length = 0;
569 - out->iso_frame_desc[outframe].offset = BYTES_PER_FRAME * frame;
570 + out->iso_frame_desc[outframe].offset = offset;
571 + offset += len;
572
573 if (len > 0) {
574 spin_lock(&dev->spinlock);
575 @@ -650,7 +652,7 @@ static void read_completed(struct urb *urb)
576 }
577
578 if (send_it) {
579 - out->number_of_packets = FRAMES_PER_URB;
580 + out->number_of_packets = outframe;
581 out->transfer_flags = URB_ISO_ASAP;
582 usb_submit_urb(out, GFP_ATOMIC);
583 }
584 diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c
585 index e02d78c..6c86eca 100644
586 --- a/tools/perf/util/config.c
587 +++ b/tools/perf/util/config.c
588 @@ -399,7 +399,6 @@ static int perf_config_global(void)
589 int perf_config(config_fn_t fn, void *data)
590 {
591 int ret = 0, found = 0;
592 - char *repo_config = NULL;
593 const char *home = NULL;
594
595 /* Setting $PERF_CONFIG makes perf read _only_ the given config file. */
596 @@ -421,12 +420,6 @@ int perf_config(config_fn_t fn, void *data)
597 free(user_config);
598 }
599
600 - repo_config = perf_pathdup("config");
601 - if (!access(repo_config, R_OK)) {
602 - ret += perf_config_from_file(fn, repo_config, data);
603 - found += 1;
604 - }
605 - free(repo_config);
606 if (found == 0)
607 return -1;
608 return ret;

  ViewVC Help
Powered by ViewVC 1.1.20