diff options
author | Thomas Bächler <thomas@archlinux.org> | 2008-04-05 22:44:35 +0200 |
---|---|---|
committer | Thomas Bächler <thomas@archlinux.org> | 2008-04-05 22:44:35 +0200 |
commit | 8dff281fd663668e6d2895275c89d393ccd49321 (patch) | |
tree | 68fbd641f43bd5660483e0032c61600cf15f0aef /patches | |
parent | 32c8c733f296ea76d599c0c90aff7307d85a4eb3 (diff) |
Prepare 2.6.25 patch, using 2.6.25-rc8-git4
Diffstat (limited to 'patches')
-rw-r--r-- | patches/2100_sd-sr-medium-detection.patch | 207 | ||||
-rw-r--r-- | patches/2101_sr-follow-tray-status.patch | 119 | ||||
-rw-r--r-- | patches/2102_sr-test-unit-ready.patch | 126 | ||||
-rw-r--r-- | patches/2405_sis190-eeprom-mac.patch | 45 | ||||
-rw-r--r-- | patches/2700_alsa-hda-lifebook-e8410.patch | 19 | ||||
-rw-r--r-- | patches/acpi-dsdt-initrd-v0.8.4-2.6.21.patch | 275 | ||||
-rw-r--r-- | patches/ata-2.6.24.patch | 102 | ||||
-rw-r--r-- | patches/drm-spinlock-fix.patch | 196 | ||||
-rw-r--r-- | patches/fix-capabilities.patch | 65 | ||||
-rw-r--r-- | patches/fix-gcc43.patch | 11 | ||||
-rw-r--r-- | patches/hanftek.patch | 11 | ||||
-rw-r--r-- | patches/sis671-intelgly-2.6.24.patch | 49 | ||||
-rw-r--r-- | patches/usb-storage-unusual-devs.patch | 19 | ||||
-rw-r--r-- | patches/winfast-2000.patch | 20 |
14 files changed, 0 insertions, 1264 deletions
diff --git a/patches/2100_sd-sr-medium-detection.patch b/patches/2100_sd-sr-medium-detection.patch deleted file mode 100644 index fe7006c..0000000 --- a/patches/2100_sd-sr-medium-detection.patch +++ /dev/null @@ -1,207 +0,0 @@ -From: James Bottomley <James.Bottomley@SteelEye.com> -Date: Sun, 2 Dec 2007 17:10:40 +0000 (+0200) -Subject: [SCSI] sd,sr: add early detection of medium not present -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=001aac257cf8adbe90cdcba6e07f8d12dfc8fa6b - -[SCSI] sd,sr: add early detection of medium not present - -The current scsi_test_unit_ready() is updated to return sense code -information (in struct scsi_sense_hdr). The sd and sr drivers are -changed to interpret the sense code return asc 0x3a as no media and -adjust the device status accordingly. - -Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> -[dsd@gentoo.org: rediff for 2.6.24] ---- - -Index: linux-2.6.24-gentoo/drivers/scsi/scsi_ioctl.c -=================================================================== ---- linux-2.6.24-gentoo.orig/drivers/scsi/scsi_ioctl.c -+++ linux-2.6.24-gentoo/drivers/scsi/scsi_ioctl.c -@@ -239,7 +239,7 @@ int scsi_ioctl(struct scsi_device *sdev, - return scsi_set_medium_removal(sdev, SCSI_REMOVAL_ALLOW); - case SCSI_IOCTL_TEST_UNIT_READY: - return scsi_test_unit_ready(sdev, IOCTL_NORMAL_TIMEOUT, -- NORMAL_RETRIES); -+ NORMAL_RETRIES, NULL); - case SCSI_IOCTL_START_UNIT: - scsi_cmd[0] = START_STOP; - scsi_cmd[1] = 0; -Index: linux-2.6.24-gentoo/drivers/scsi/scsi_lib.c -=================================================================== ---- linux-2.6.24-gentoo.orig/drivers/scsi/scsi_lib.c -+++ linux-2.6.24-gentoo/drivers/scsi/scsi_lib.c -@@ -1981,27 +1981,57 @@ scsi_mode_sense(struct scsi_device *sdev - } - EXPORT_SYMBOL(scsi_mode_sense); - -+/** -+ * scsi_test_unit_ready - test if unit is ready -+ * @sdev: scsi device to change the state of. -+ * @timeout: command timeout -+ * @retries: number of retries before failing -+ * @sshdr_external: Optional pointer to struct scsi_sense_hdr for -+ * returning sense. Make sure that this is cleared before passing -+ * in. -+ * -+ * Returns zero if unsuccessful or an error if TUR failed. For -+ * removable media, a return of NOT_READY or UNIT_ATTENTION is -+ * translated to success, with the ->changed flag updated. -+ **/ - int --scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries) -+scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries, -+ struct scsi_sense_hdr *sshdr_external) - { - char cmd[] = { - TEST_UNIT_READY, 0, 0, 0, 0, 0, - }; -- struct scsi_sense_hdr sshdr; -+ struct scsi_sense_hdr *sshdr; - int result; -- -- result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0, &sshdr, -- timeout, retries); -+ -+ if (!sshdr_external) -+ sshdr = kzalloc(sizeof(*sshdr), GFP_KERNEL); -+ else -+ sshdr = sshdr_external; -+ -+ /* try to eat the UNIT_ATTENTION if there are enough retries */ -+ do { -+ result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0, sshdr, -+ timeout, retries); -+ } while ((driver_byte(result) & DRIVER_SENSE) && -+ sshdr && sshdr->sense_key == UNIT_ATTENTION && -+ --retries); -+ -+ if (!sshdr) -+ /* could not allocate sense buffer, so can't process it */ -+ return result; - - if ((driver_byte(result) & DRIVER_SENSE) && sdev->removable) { - -- if ((scsi_sense_valid(&sshdr)) && -- ((sshdr.sense_key == UNIT_ATTENTION) || -- (sshdr.sense_key == NOT_READY))) { -+ if ((scsi_sense_valid(sshdr)) && -+ ((sshdr->sense_key == UNIT_ATTENTION) || -+ (sshdr->sense_key == NOT_READY))) { - sdev->changed = 1; - result = 0; - } - } -+ if (!sshdr_external) -+ kfree(sshdr); - return result; - } - EXPORT_SYMBOL(scsi_test_unit_ready); -Index: linux-2.6.24-gentoo/drivers/scsi/sd.c -=================================================================== ---- linux-2.6.24-gentoo.orig/drivers/scsi/sd.c -+++ linux-2.6.24-gentoo/drivers/scsi/sd.c -@@ -736,6 +736,7 @@ static int sd_media_changed(struct gendi - { - struct scsi_disk *sdkp = scsi_disk(disk); - struct scsi_device *sdp = sdkp->device; -+ struct scsi_sense_hdr *sshdr = NULL; - int retval; - - SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, "sd_media_changed\n")); -@@ -762,8 +763,11 @@ static int sd_media_changed(struct gendi - * sd_revalidate() is called. - */ - retval = -ENODEV; -- if (scsi_block_when_processing_errors(sdp)) -- retval = scsi_test_unit_ready(sdp, SD_TIMEOUT, SD_MAX_RETRIES); -+ if (scsi_block_when_processing_errors(sdp)) { -+ sshdr = kzalloc(sizeof(*sshdr), GFP_KERNEL); -+ retval = scsi_test_unit_ready(sdp, SD_TIMEOUT, SD_MAX_RETRIES, -+ sshdr); -+ } - - /* - * Unable to test, unit probably not ready. This usually -@@ -771,7 +775,9 @@ static int sd_media_changed(struct gendi - * and we will figure it out later once the drive is - * available again. - */ -- if (retval) -+ if (retval || (scsi_sense_valid(sshdr) && -+ /* 0x3a is medium not present */ -+ sshdr->asc == 0x3a)) - goto not_present; - - /* -@@ -784,10 +790,12 @@ static int sd_media_changed(struct gendi - retval = sdp->changed; - sdp->changed = 0; - -+ kfree(sshdr); - return retval; - - not_present: - set_media_not_present(sdkp); -+ kfree(sshdr); - return 1; - } - -Index: linux-2.6.24-gentoo/drivers/scsi/sr.c -=================================================================== ---- linux-2.6.24-gentoo.orig/drivers/scsi/sr.c -+++ linux-2.6.24-gentoo/drivers/scsi/sr.c -@@ -179,19 +179,26 @@ static int sr_media_change(struct cdrom_ - { - struct scsi_cd *cd = cdi->handle; - int retval; -+ struct scsi_sense_hdr *sshdr; - - if (CDSL_CURRENT != slot) { - /* no changer support */ - return -EINVAL; - } - -- retval = scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES); -- if (retval) { -- /* Unable to test, unit probably not ready. This usually -- * means there is no disc in the drive. Mark as changed, -- * and we will figure it out later once the drive is -- * available again. */ -+ sshdr = kzalloc(sizeof(*sshdr), GFP_KERNEL); -+ retval = scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, -+ sshdr); -+ if (retval || (scsi_sense_valid(sshdr) && -+ /* 0x3a is medium not present */ -+ sshdr->asc == 0x3a)) { -+ /* Media not present or unable to test, unit probably not -+ * ready. This usually means there is no disc in the drive. -+ * Mark as changed, and we will figure it out later once -+ * the drive is available again. -+ */ - cd->device->changed = 1; -+ kfree(sshdr); - return 1; /* This will force a flush, if called from - * check_disk_change */ - }; -@@ -206,6 +213,7 @@ static int sr_media_change(struct cdrom_ - - get_sectorsize(cd); - } -+ kfree(sshdr); - return retval; - } - -Index: linux-2.6.24-gentoo/include/scsi/scsi_device.h -=================================================================== ---- linux-2.6.24-gentoo.orig/include/scsi/scsi_device.h -+++ linux-2.6.24-gentoo/include/scsi/scsi_device.h -@@ -295,7 +295,7 @@ extern int scsi_mode_select(struct scsi_ - struct scsi_mode_data *data, - struct scsi_sense_hdr *); - extern int scsi_test_unit_ready(struct scsi_device *sdev, int timeout, -- int retries); -+ int retries, struct scsi_sense_hdr *sshdr); - extern int scsi_device_set_state(struct scsi_device *sdev, - enum scsi_device_state state); - extern struct scsi_event *sdev_evt_alloc(enum scsi_device_event evt_type, diff --git a/patches/2101_sr-follow-tray-status.patch b/patches/2101_sr-follow-tray-status.patch deleted file mode 100644 index 7c24314..0000000 --- a/patches/2101_sr-follow-tray-status.patch +++ /dev/null @@ -1,119 +0,0 @@ -From: James Bottomley <James.Bottomley@HansenPartnership.com> -Date: Sat, 5 Jan 2008 16:39:51 +0000 (-0600) -Subject: [SCSI] sr: update to follow tray status correctly -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=210ba1d1724f5c4ed87a2ab1a21ca861a915f734 - -[SCSI] sr: update to follow tray status correctly - -Based on an original patch from: David Martin <tasio@tasio.net> - -When trying to get the drive status via ioctl CDROM_DRIVE_STATUS, with -no disk it gives CDS_TRAY_OPEN even if the tray is closed. - -ioctl works as expected with ide-cd driver. - -Gentoo bug report: http://bugs.gentoo.org/show_bug.cgi?id=196879 - -Cc: Maarten Bressers <mbres@gentoo.org> -Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> ---- - -diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c -index 896be4a..1fcee16 100644 ---- a/drivers/scsi/sr.c -+++ b/drivers/scsi/sr.c -@@ -67,8 +67,6 @@ MODULE_ALIAS_SCSI_DEVICE(TYPE_WORM); - - #define SR_DISKS 256 - --#define MAX_RETRIES 3 --#define SR_TIMEOUT (30 * HZ) - #define SR_CAPABILITIES \ - (CDC_CLOSE_TRAY|CDC_OPEN_TRAY|CDC_LOCK|CDC_SELECT_SPEED| \ - CDC_SELECT_DISC|CDC_MULTI_SESSION|CDC_MCN|CDC_MEDIA_CHANGED| \ -diff --git a/drivers/scsi/sr.h b/drivers/scsi/sr.h -index 0d04e28..81fbc0b 100644 ---- a/drivers/scsi/sr.h -+++ b/drivers/scsi/sr.h -@@ -20,6 +20,9 @@ - #include <linux/genhd.h> - #include <linux/kref.h> - -+#define MAX_RETRIES 3 -+#define SR_TIMEOUT (30 * HZ) -+ - struct scsi_device; - - /* The CDROM is fairly slow, so we need a little extra time */ -diff --git a/drivers/scsi/sr_ioctl.c b/drivers/scsi/sr_ioctl.c -index e1589f9..d5cebff 100644 ---- a/drivers/scsi/sr_ioctl.c -+++ b/drivers/scsi/sr_ioctl.c -@@ -275,18 +275,6 @@ int sr_do_ioctl(Scsi_CD *cd, struct packet_command *cgc) - /* ---------------------------------------------------------------------- */ - /* interface to cdrom.c */ - --static int test_unit_ready(Scsi_CD *cd) --{ -- struct packet_command cgc; -- -- memset(&cgc, 0, sizeof(struct packet_command)); -- cgc.cmd[0] = GPCMD_TEST_UNIT_READY; -- cgc.quiet = 1; -- cgc.data_direction = DMA_NONE; -- cgc.timeout = IOCTL_TIMEOUT; -- return sr_do_ioctl(cd, &cgc); --} -- - int sr_tray_move(struct cdrom_device_info *cdi, int pos) - { - Scsi_CD *cd = cdi->handle; -@@ -310,14 +298,46 @@ int sr_lock_door(struct cdrom_device_info *cdi, int lock) - - int sr_drive_status(struct cdrom_device_info *cdi, int slot) - { -+ struct scsi_cd *cd = cdi->handle; -+ struct scsi_sense_hdr sshdr; -+ struct media_event_desc med; -+ - if (CDSL_CURRENT != slot) { - /* we have no changer support */ - return -EINVAL; - } -- if (0 == test_unit_ready(cdi->handle)) -+ if (0 == scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, -+ &sshdr)) - return CDS_DISC_OK; - -- return CDS_TRAY_OPEN; -+ if (!cdrom_get_media_event(cdi, &med)) { -+ if (med.media_present) -+ return CDS_DISC_OK; -+ else if (med.door_open) -+ return CDS_TRAY_OPEN; -+ else -+ return CDS_NO_DISC; -+ } -+ -+ /* -+ * 0x04 is format in progress .. but there must be a disc present! -+ */ -+ if (sshdr.sense_key == NOT_READY && sshdr.asc == 0x04) -+ return CDS_DISC_OK; -+ -+ /* -+ * If not using Mt Fuji extended media tray reports, -+ * just return TRAY_OPEN since ATAPI doesn't provide -+ * any other way to detect this... -+ */ -+ if (scsi_sense_valid(&sshdr) && -+ /* 0x3a is medium not present */ -+ sshdr.asc == 0x3a) -+ return CDS_NO_DISC; -+ else -+ return CDS_TRAY_OPEN; -+ -+ return CDS_DRIVE_NOT_READY; - } - - int sr_disk_status(struct cdrom_device_info *cdi) diff --git a/patches/2102_sr-test-unit-ready.patch b/patches/2102_sr-test-unit-ready.patch deleted file mode 100644 index 21c78ce..0000000 --- a/patches/2102_sr-test-unit-ready.patch +++ /dev/null @@ -1,126 +0,0 @@ -From: James Bottomley <James.Bottomley@HansenPartnership.com> -Date: Wed, 6 Feb 2008 19:01:58 +0000 (-0600) -Subject: [SCSI] sr: fix test unit ready responses -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fjejb%2Fscsi-misc-2.6.git;a=commitdiff_plain;h=a827a50b0a2efb11ebb22fa22759e516574c1b1a - -[SCSI] sr: fix test unit ready responses - -Commit 210ba1d1724f5c4ed87a2ab1a21ca861a915f734 updated sr.c to use -the scsi_test_unit_ready() function. Unfortunately, this has the -wrong characteristic of eating NOT_READY returns which sr.c relies on -for tray status. - -Fix by rolling an internal sr_test_unit_ready() that doesn't do this. - -Tested-by: Daniel Drake <dsd@gentoo.org> -Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> ---- - -diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c -index 50ba492..208565b 100644 ---- a/drivers/scsi/sr.c -+++ b/drivers/scsi/sr.c -@@ -163,6 +163,29 @@ static void scsi_cd_put(struct scsi_cd *cd) - mutex_unlock(&sr_ref_mutex); - } - -+/* identical to scsi_test_unit_ready except that it doesn't -+ * eat the NOT_READY returns for removable media */ -+int sr_test_unit_ready(struct scsi_device *sdev, struct scsi_sense_hdr *sshdr) -+{ -+ int retries = MAX_RETRIES; -+ int the_result; -+ u8 cmd[] = {TEST_UNIT_READY, 0, 0, 0, 0, 0 }; -+ -+ /* issue TEST_UNIT_READY until the initial startup UNIT_ATTENTION -+ * conditions are gone, or a timeout happens -+ */ -+ do { -+ the_result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, -+ 0, sshdr, SR_TIMEOUT, -+ retries--); -+ -+ } while (retries > 0 && -+ (!scsi_status_is_good(the_result) || -+ (scsi_sense_valid(sshdr) && -+ sshdr->sense_key == UNIT_ATTENTION))); -+ return the_result; -+} -+ - /* - * This function checks to see if the media has been changed in the - * CDROM drive. It is possible that we have already sensed a change, -@@ -185,8 +208,7 @@ static int sr_media_change(struct cdrom_device_info *cdi, int slot) - } - - sshdr = kzalloc(sizeof(*sshdr), GFP_KERNEL); -- retval = scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, -- sshdr); -+ retval = sr_test_unit_ready(cd->device, sshdr); - if (retval || (scsi_sense_valid(sshdr) && - /* 0x3a is medium not present */ - sshdr->asc == 0x3a)) { -@@ -733,10 +755,8 @@ static void get_capabilities(struct scsi_cd *cd) - { - unsigned char *buffer; - struct scsi_mode_data data; -- unsigned char cmd[MAX_COMMAND_SIZE]; - struct scsi_sense_hdr sshdr; -- unsigned int the_result; -- int retries, rc, n; -+ int rc, n; - - static const char *loadmech[] = - { -@@ -758,23 +778,8 @@ static void get_capabilities(struct scsi_cd *cd) - return; - } - -- /* issue TEST_UNIT_READY until the initial startup UNIT_ATTENTION -- * conditions are gone, or a timeout happens -- */ -- retries = 0; -- do { -- memset((void *)cmd, 0, MAX_COMMAND_SIZE); -- cmd[0] = TEST_UNIT_READY; -- -- the_result = scsi_execute_req (cd->device, cmd, DMA_NONE, NULL, -- 0, &sshdr, SR_TIMEOUT, -- MAX_RETRIES); -- -- retries++; -- } while (retries < 5 && -- (!scsi_status_is_good(the_result) || -- (scsi_sense_valid(&sshdr) && -- sshdr.sense_key == UNIT_ATTENTION))); -+ /* eat unit attentions */ -+ sr_test_unit_ready(cd->device, &sshdr); - - /* ask for mode page 0x2a */ - rc = scsi_mode_sense(cd->device, 0, 0x2a, buffer, 128, -diff --git a/drivers/scsi/sr.h b/drivers/scsi/sr.h -index 81fbc0b..1e144df 100644 ---- a/drivers/scsi/sr.h -+++ b/drivers/scsi/sr.h -@@ -61,6 +61,7 @@ int sr_select_speed(struct cdrom_device_info *cdi, int speed); - int sr_audio_ioctl(struct cdrom_device_info *, unsigned int, void *); - - int sr_is_xa(Scsi_CD *); -+int sr_test_unit_ready(struct scsi_device *sdev, struct scsi_sense_hdr *sshdr); - - /* sr_vendor.c */ - void sr_vendor_init(Scsi_CD *); -diff --git a/drivers/scsi/sr_ioctl.c b/drivers/scsi/sr_ioctl.c -index d5cebff..ae87d08 100644 ---- a/drivers/scsi/sr_ioctl.c -+++ b/drivers/scsi/sr_ioctl.c -@@ -306,8 +306,7 @@ int sr_drive_status(struct cdrom_device_info *cdi, int slot) - /* we have no changer support */ - return -EINVAL; - } -- if (0 == scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, -- &sshdr)) -+ if (0 == sr_test_unit_ready(cd->device, &sshdr)) - return CDS_DISC_OK; - - if (!cdrom_get_media_event(cdi, &med)) { diff --git a/patches/2405_sis190-eeprom-mac.patch b/patches/2405_sis190-eeprom-mac.patch deleted file mode 100644 index 989faa4..0000000 --- a/patches/2405_sis190-eeprom-mac.patch +++ /dev/null @@ -1,45 +0,0 @@ -From: Francois Romieu <romieu@fr.zoreil.com> -Date: Mon, 18 Feb 2008 20:20:32 +0000 (+0100) -Subject: sis190: read the mac address from the eeprom first -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fjgarzik%2Fnetdev-2.6.git;a=commitdiff_plain;h=563e0ae06ff18f0b280f11cf706ba0172255ce52 - -sis190: read the mac address from the eeprom first - -Reading a serie of zero from the cmos sram area do not work -well with is_valid_ether_addr(). Let's read the mac address -from the eeprom first as it seems more reliable. - -Fix for http://bugzilla.kernel.org/show_bug.cgi?id=9831 - -Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> -Signed-off-by: Jeff Garzik <jeff@garzik.org> ---- - -diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c -index 202fdf3..20745fd 100644 ---- a/drivers/net/sis190.c -+++ b/drivers/net/sis190.c -@@ -1633,13 +1633,18 @@ static inline void sis190_init_rxfilter(struct net_device *dev) - static int __devinit sis190_get_mac_addr(struct pci_dev *pdev, - struct net_device *dev) - { -- u8 from; -+ int rc; -+ -+ rc = sis190_get_mac_addr_from_eeprom(pdev, dev); -+ if (rc < 0) { -+ u8 reg; - -- pci_read_config_byte(pdev, 0x73, &from); -+ pci_read_config_byte(pdev, 0x73, ®); - -- return (from & 0x00000001) ? -- sis190_get_mac_addr_from_apc(pdev, dev) : -- sis190_get_mac_addr_from_eeprom(pdev, dev); -+ if (reg & 0x00000001) -+ rc = sis190_get_mac_addr_from_apc(pdev, dev); -+ } -+ return rc; - } - - static void sis190_set_speed_auto(struct net_device *dev) diff --git a/patches/2700_alsa-hda-lifebook-e8410.patch b/patches/2700_alsa-hda-lifebook-e8410.patch deleted file mode 100644 index 487496f..0000000 --- a/patches/2700_alsa-hda-lifebook-e8410.patch +++ /dev/null @@ -1,19 +0,0 @@ -hda-codec - Add Fujitsu Lifebook E8410 to quirk table - -From: Tony Vroon <chainsaw@gentoo.org> - -Add the proper model entry for Fujitsu Lifebook E8410 with ALC262 codec. -http://hg-mirror.alsa-project.org/alsa-kernel/rev/f86467a0bc3b - -Index: linux-2.6.24-gentoo-r3/sound/pci/hda/patch_realtek.c -=================================================================== ---- linux-2.6.24-gentoo-r3.orig/sound/pci/hda/patch_realtek.c -+++ linux-2.6.24-gentoo-r3/sound/pci/hda/patch_realtek.c -@@ -8510,6 +8510,7 @@ static struct snd_pci_quirk alc262_cfg_t - SND_PCI_QUIRK(0x103c, 0x2807, "HP D7000", ALC262_HP_BPC_D7000_WF), - SND_PCI_QUIRK(0x104d, 0x8203, "Sony UX-90", ALC262_HIPPO), - SND_PCI_QUIRK(0x10cf, 0x1397, "Fujitsu", ALC262_FUJITSU), -+ SND_PCI_QUIRK(0x10cf, 0x142d, "Fujitsu Lifebook E8410", ALC262_FUJITSU), - SND_PCI_QUIRK(0x17ff, 0x058f, "Benq Hippo", ALC262_HIPPO_1), - SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", ALC262_BENQ_ED8), - SND_PCI_QUIRK(0x17ff, 0x058d, "Benq T31-16", ALC262_BENQ_T31), diff --git a/patches/acpi-dsdt-initrd-v0.8.4-2.6.21.patch b/patches/acpi-dsdt-initrd-v0.8.4-2.6.21.patch deleted file mode 100644 index 98794ed..0000000 --- a/patches/acpi-dsdt-initrd-v0.8.4-2.6.21.patch +++ /dev/null @@ -1,275 +0,0 @@ -diff -urpN -X linux-2.6.21/Documentation/dontdiff linux-2.6.21-rc4.bak/Documentation/dsdt-initrd.txt linux-2.6.21/Documentation/dsdt-initrd.txt ---- linux-2.6.21-rc4.bak/Documentation/dsdt-initrd.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.21/Documentation/dsdt-initrd.txt 2007-03-03 23:06:58.000000000 +0100 -@@ -0,0 +1,98 @@ -+ACPI Custom DSDT read from initramfs -+ -+2003 by Markuss Gaugusch < dsdt at gaugusch dot org > -+Special thanks go to Thomas Renninger from SuSE, who updated the patch for -+2.6.0 and later modified it to read inside initramfs -+2004 - 2007 maintained by Eric Piel < eric dot piel at tremplin-utc dot net > -+ -+This option is intended for people who would like to hack their DSDT and don't want -+to recompile their kernel after every change. It can also be useful to distros -+which offers pre-compiled kernels and want to allow their users to use a -+modified DSDT. In the Kernel config, enable the initial RAM filesystem support -+(in Device Drivers|Block Devices) and enable ACPI_CUSTOM_DSDT_INITRD at the ACPI -+options (General Setup|ACPI Support|Read custom DSDT from initrd). -+ -+A custom DSDT (Differentiated System Description Table) is useful when your -+computer uses ACPI but problems occur due to broken implementation. Typically, -+your computer works but there are some troubles with the hardware detection or -+the power management. You can check that troubles come from errors in the DSDT by -+activating the ACPI debug option and reading the logs. This table is provided -+by the BIOS, therefore it might be a good idea to check for BIOS update on your -+vendor website before going any further. Errors are often caused by vendors -+testing their hardware only with Windows or because there is code which is -+executed only on a specific OS with a specific version and Linux hasn't been -+considered during the development. -+ -+Before you run away from customising your DSDT, you should note that already -+corrected tables are available for a fair amount of computers on this web-page: -+http://acpi.sf.net/dsdt . If you are part of the unluckies who cannot find -+their hardware in this database, you can modify your DSDT by yourself. This -+process is less painful than it sounds. Download the Intel ASL -+compiler/decompiler at http://www.intel.com/technology/IAPC/acpi/downloads.htm . -+As root, you then have to dump your DSDT and decompile it. By using the -+compiler messages as well as the kernel ACPI debug messages and the reference book -+(available at the Intel website and also at http://www.acpi.info), it is quite -+easy to obtain a fully working table. -+ -+Once your new DSDT is ready you'll have to add it to an initrd so that the -+kernel can read the table at the very beginning of the boot. As the file has -+to be accessed very early during the boot process the initrd has to be an -+initramfs. The file is contained into the initramfs under the name /DSDT.aml . -+To obtain such an initrd, you might have to modify your mkinitrd script or you -+can add it later to the initrd with the script appended to this document. The -+command will look like: -+initrd-add-dsdt initrd.img my-dsdt.aml -+ -+In case you don't use any initrd, the possibilities you have are to either start -+using one (try mkinitrd or yaird), or use the "Include Custom DSDT" configure -+option to directly include your DSDT inside the kernel. -+ -+The message "Looking for DSDT in initramfs..." will tell you if the DSDT was -+found or not. If you need to update your DSDT, generate a new initrd and -+perform the steps above. Don't forget that with Lilo, you'll have to re-run it. -+ -+ -+======================= Here starts initrd-add-dsdt =============================== -+#!/bin/bash -+# Adds a DSDT file to the initrd (if it's an initramfs) -+# first argument is the name of archive -+# second argurment is the name of the file to add -+# The file will be copied as /DSDT.aml -+ -+# 20060126: fix "Premature end of file" with some old cpio (Roland Robic) -+# 20060205: this time it should really work -+ -+# check the arguments -+if [ $# -ne 2 ]; then -+ program_name=$(basename $0) -+ echo "\ -+$program_name: too few arguments -+Usage: $program_name initrd-name.img DSDT-to-add.aml -+Adds a DSDT file to an initrd (in initramfs format) -+ -+ initrd-name.img: filename of the initrd in initramfs format -+ DSDT-to-add.aml: filename of the DSDT file to add -+ " 1>&2 -+ exit 1 -+fi -+ -+# we should check it's an initramfs -+ -+tempcpio=$(mktemp -d) -+# cleanup on exit, hangup, interrupt, quit, termination -+trap 'rm -rf $tempcpio' 0 1 2 3 15 -+ -+# extract the archive -+gunzip -c "$1" > "$tempcpio"/initramfs.cpio || exit 1 -+ -+# copy the DSDT file at the root of the directory so that we can call it "/DSDT.aml" -+cp -f "$2" "$tempcpio"/DSDT.aml -+ -+# add the file -+cd "$tempcpio" -+(echo DSDT.aml | cpio --quiet -H newc -o -A -O "$tempcpio"/initramfs.cpio) || exit 1 -+cd "$OLDPWD" -+ -+# re-compress the archive -+gzip -c "$tempcpio"/initramfs.cpio > "$1" -+ -diff -urpN -X linux-2.6.21/Documentation/dontdiff linux-2.6.21-rc4.bak/drivers/acpi/Kconfig linux-2.6.21/drivers/acpi/Kconfig ---- linux-2.6.21-rc4.bak/drivers/acpi/Kconfig 2007-03-18 12:58:03.000000000 +0100 -+++ linux-2.6.21/drivers/acpi/Kconfig 2007-03-17 01:28:53.000000000 +0100 -@@ -298,6 +298,23 @@ config ACPI_CUSTOM_DSDT_FILE - Enter the full path name to the file which includes the AmlCode - declaration. - -+config ACPI_CUSTOM_DSDT_INITRD -+ bool "Read Custom DSDT from initramfs" -+ depends on BLK_DEV_INITRD -+ default y -+ help -+ The DSDT (Differentiated System Description Table) often needs to be -+ overridden because of broken BIOS implementations. If this feature is -+ activated you will be able to provide a customized DSDT by adding it -+ to your initramfs. For now you need to use a special mkinitrd tool. -+ For more details see <file:Documentation/dsdt-initrd.txt> or -+ <http://gaugusch.at/kernel.shtml>. If there is no table found, it -+ will fallback to the custom DSDT in-kernel (if activated) or to the -+ DSDT from the BIOS. -+ -+ Even if you do not need a new one at the moment, you may want to use a -+ better implemented DSDT later. It is safe to say Y here. -+ - config ACPI_BLACKLIST_YEAR - int "Disable ACPI for systems before Jan 1st this year" if X86_32 - default 0 -diff -urpN -X linux-2.6.21/Documentation/dontdiff linux-2.6.21-rc4.bak/drivers/acpi/osl.c linux-2.6.21/drivers/acpi/osl.c ---- linux-2.6.21-rc4.bak/drivers/acpi/osl.c 2007-03-18 12:55:13.000000000 +0100 -+++ linux-2.6.21/drivers/acpi/osl.c 2007-03-17 10:26:06.000000000 +0100 -@@ -256,6 +256,67 @@ acpi_os_predefined_override(const struct - return AE_OK; - } - -+#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD -+struct acpi_table_header * acpi_find_dsdt_initrd(void) -+{ -+ struct file *firmware_file; -+ mm_segment_t oldfs; -+ unsigned long len, len2; -+ struct acpi_table_header *dsdt_buffer, *ret = NULL; -+ struct kstat stat; -+ /* maybe this could be an argument on the cmd line, but let's keep it simple for now */ -+ char *ramfs_dsdt_name = "/DSDT.aml"; -+ -+ printk(KERN_INFO PREFIX "Looking for DSDT in initramfs... "); -+ -+ /* -+ * Never do this at home, only the user-space is allowed to open a file. -+ * The clean way would be to use the firmware loader. But this code must be run -+ * before there is any userspace available. So we need a static/init firmware -+ * infrastructure, which doesn't exist yet... -+ */ -+ if (vfs_stat(ramfs_dsdt_name, &stat) < 0) { -+ printk("error, file %s not found.\n", ramfs_dsdt_name); -+ return ret; -+ } -+ -+ len = stat.size; -+ /* check especially against empty files */ -+ if (len <= 4) { -+ printk("error file is too small, only %lu bytes.\n", len); -+ return ret; -+ } -+ -+ firmware_file = filp_open(ramfs_dsdt_name, O_RDONLY, 0); -+ if (IS_ERR(firmware_file)) { -+ printk("error, could not open file %s.\n", ramfs_dsdt_name); -+ return ret; -+ } -+ -+ dsdt_buffer = ACPI_ALLOCATE(len); -+ if (!dsdt_buffer) { -+ printk("error when allocating %lu bytes of memory.\n", len); -+ goto err; -+ } -+ -+ oldfs = get_fs(); -+ set_fs(KERNEL_DS); -+ len2 = vfs_read(firmware_file, (char __user *)dsdt_buffer, len, &firmware_file->f_pos); -+ set_fs(oldfs); -+ if (len2 < len) { -+ printk("error trying to read %lu bytes from %s.\n", len, ramfs_dsdt_name); -+ ACPI_FREE(dsdt_buffer); -+ goto err; -+ } -+ -+ printk("successfully read %lu bytes from %s.\n", len, ramfs_dsdt_name); -+ ret = dsdt_buffer; -+err: -+ filp_close(firmware_file, NULL); -+ return ret; -+} -+#endif -+ - acpi_status - acpi_os_table_override(struct acpi_table_header * existing_table, - struct acpi_table_header ** new_table) -@@ -263,13 +324,18 @@ acpi_os_table_override(struct acpi_table - if (!existing_table || !new_table) - return AE_BAD_PARAMETER; - -+ *new_table = NULL; -+ - #ifdef CONFIG_ACPI_CUSTOM_DSDT - if (strncmp(existing_table->signature, "DSDT", 4) == 0) - *new_table = (struct acpi_table_header *)AmlCode; -- else -- *new_table = NULL; --#else -- *new_table = NULL; -+#endif -+#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD -+ if (strncmp(existing_table->signature, "DSDT", 4) == 0) { -+ struct acpi_table_header* initrd_table = acpi_find_dsdt_initrd(); -+ if (initrd_table) -+ *new_table = initrd_table; -+ } - #endif - return AE_OK; - } -diff -urpN -X linux-2.6.21/Documentation/dontdiff linux-2.6.21-rc4.bak/init/initramfs.c linux-2.6.21/init/initramfs.c ---- linux-2.6.21-rc4.bak/init/initramfs.c 2007-03-18 12:56:47.000000000 +0100 -+++ linux-2.6.21/init/initramfs.c 2007-03-03 23:07:05.000000000 +0100 -@@ -541,6 +541,26 @@ skip: - - #endif - -+/* Tries to read the initramfs if it's already there, for ACPI Table Overiding */ -+void __init early_populate_rootfs(void) -+{ -+ char *err = unpack_to_rootfs(__initramfs_start, -+ __initramfs_end - __initramfs_start, 0); -+ if (err) -+ return; -+#ifdef CONFIG_BLK_DEV_INITRD -+ if (initrd_start) { -+ printk(KERN_INFO "Early unpacking initramfs..."); -+ err = unpack_to_rootfs((char *)initrd_start, -+ initrd_end - initrd_start, 0); -+ if (err) -+ return; -+ printk(" done\n"); -+ } -+#endif -+ return; -+} -+ - static int __init populate_rootfs(void) - { - char *err = unpack_to_rootfs(__initramfs_start, -diff -urpN -X linux-2.6.21/Documentation/dontdiff linux-2.6.21-rc4.bak/init/main.c linux-2.6.21/init/main.c ---- linux-2.6.21-rc4.bak/init/main.c 2007-03-18 12:56:47.000000000 +0100 -+++ linux-2.6.21/init/main.c 2007-03-03 23:07:05.000000000 +0100 -@@ -97,8 +97,10 @@ extern void free_initmem(void); - extern void prepare_namespace(void); - #ifdef CONFIG_ACPI - extern void acpi_early_init(void); -+extern void early_populate_rootfs(void); - #else - static inline void acpi_early_init(void) { } -+static inline void early_populate_rootfs(void) { } - #endif - #ifndef CONFIG_DEBUG_RODATA - static inline void mark_rodata_ro(void) { } -@@ -635,6 +637,7 @@ asmlinkage void __init start_kernel(void - - check_bugs(); - -+ early_populate_rootfs(); /* For DSDT override from initramfs */ - acpi_early_init(); /* before LAPIC and SMP init */ - - /* Do the rest non-__init'ed, we're now alive */ diff --git a/patches/ata-2.6.24.patch b/patches/ata-2.6.24.patch deleted file mode 100644 index d97bb28..0000000 --- a/patches/ata-2.6.24.patch +++ /dev/null @@ -1,102 +0,0 @@ -diff --git a/linux-2.6.24-rc7/drivers/ata/libata-core.c -b/linux-2.6.24-rc7-twam/drivers/ata/libata-core.c -index 4753a18..ac5a0d4 100644 ---- a/linux-2.6.24-rc7/drivers/ata/libata-core.c -+++ b/linux-2.6.24-rc7-twam/drivers/ata/libata-core.c -@@ -119,6 +119,10 @@ int libata_noacpi = 0; - module_param_named(noacpi, libata_noacpi, int, 0444); - MODULE_PARM_DESC(noacpi, "Disables the use of ACPI in probe/suspend/resume when set"); - -+int libata_force_cbl = 0; -+module_param_named(force_cbl, libata_force_cbl, int, 0644); -+MODULE_PARM_DESC(force_cbl, "force PATA cable type (0=keep, 40=40c, 80=80c)"); -+ - MODULE_AUTHOR("Jeff Garzik"); - MODULE_DESCRIPTION("Library module for ATA devices"); - MODULE_LICENSE("GPL"); -@@ -4318,16 +4322,29 @@ static void ata_dev_xfermask(struct ata_device *dev) - * drive side as well. Cases where we know a 40wire cable - * is used safely for 80 are not checked here. - */ -- if (xfer_mask & (0xF8 << ATA_SHIFT_UDMA)) -- /* UDMA/44 or higher would be available */ -- if ((ap->cbl == ATA_CBL_PATA40) || -- (ata_is_40wire(dev) && -- (ap->cbl == ATA_CBL_PATA_UNK || -- ap->cbl == ATA_CBL_PATA80))) { -- ata_dev_printk(dev, KERN_WARNING, -- "limited to UDMA/33 due to 40-wire cable\n"); -- xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA); -+ if (xfer_mask & (0xF8 << ATA_SHIFT_UDMA)) { -+ switch (libata_force_cbl) { -+ case 40: -+ /* limit to UDMA/33 */ -+ ata_dev_printk(dev, KERN_INFO, "forcing 40c\n"); -+ xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA); -+ break; -+ case 80: -+ /* ignore cable checks */ -+ ata_dev_printk(dev, KERN_INFO, "forcing 80c\n"); -+ break; -+ default: -+ /* UDMA/44 or higher would be available */ -+ if ((ap->cbl == ATA_CBL_PATA40) || -+ (ata_is_40wire(dev) && -+ (ap->cbl == ATA_CBL_PATA_UNK || -+ ap->cbl == ATA_CBL_PATA80))) { -+ ata_dev_printk(dev, KERN_WARNING, -+ "limited to UDMA/33 due to 40-wire cable\n"); -+ xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA); -+ } - } -+ } - - ata_unpack_xfermask(xfer_mask, &dev->pio_mask, - &dev->mwdma_mask, &dev->udma_mask); -diff --git a/linux-2.6.24-rc7/drivers/ata/libata-eh.c -b/linux-2.6.24-rc7-twam/drivers/ata/libata-eh.c -index f0124a8..7c607e0 100644 ---- a/linux-2.6.24-rc7/drivers/ata/libata-eh.c -+++ b/linux-2.6.24-rc7-twam/drivers/ata/libata-eh.c -@@ -2288,9 +2288,27 @@ static int ata_eh_revalidate_and_attach(struct ata_link *link, - - /* PDIAG- should have been released, ask cable type if post-reset */ - if (ata_is_host_link(link) && ap->ops->cable_detect && -- (ehc->i.flags & ATA_EHI_DID_RESET)) -+ (ehc->i.flags & ATA_EHI_DID_RESET)) { - ap->cbl = ap->ops->cable_detect(ap); - -+ if (!(ap->flags & ATA_FLAG_SATA) && libata_force_cbl) { -+ switch (libata_force_cbl) { -+ case 40: -+ ata_port_printk(ap, KERN_INFO, "forcing 40c\n"); -+ ap->cbl = ATA_CBL_PATA40; -+ break; -+ case 80: -+ ata_port_printk(ap, KERN_INFO, "forcing 80c\n"); -+ ap->cbl = ATA_CBL_PATA80; -+ break; -+ default: -+ ata_port_printk(ap, KERN_WARNING, -+ "invalid force_cbl value %d\n", -+ libata_force_cbl); -+ } -+ } -+ } -+ - /* Configure new devices forward such that user doesn't see - * device detection messages backwards. - */ -diff --git a/linux-2.6.24-rc7/drivers/ata/libata.h -b/linux-2.6.24-rc7-twam/drivers/ata/libata.h -index bbe59c2..b990a8d 100644 ---- a/linux-2.6.24-rc7/drivers/ata/libata.h -+++ b/linux-2.6.24-rc7-twam/drivers/ata/libata.h -@@ -60,6 +60,7 @@ extern int atapi_dmadir; - extern int atapi_passthru16; - extern int libata_fua; - extern int libata_noacpi; -+extern int libata_force_cbl; - extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev); - extern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev, - u64 block, u32 n_block, unsigned int tf_flags, diff --git a/patches/drm-spinlock-fix.patch b/patches/drm-spinlock-fix.patch deleted file mode 100644 index 92993c3..0000000 --- a/patches/drm-spinlock-fix.patch +++ /dev/null @@ -1,196 +0,0 @@ - -drm: Fix spinlock race condition that can lockup the kernel - -From: Mike Isely <isely@pobox.com> - -The i915_vblank_swap() function schedules an automatic buffer swap -upon receipt of the vertical sync interrupt. Such an operation is -lengthy so it can't happen normal interrupt context, so the DRM -implements this by scheduling the work in a kernel softirq-scheduled -tasklet. In order for the buffer swap to work safely, the DRM's -central lock must be taken, via a call to drm_lock_take() in drm_irq.c -within the function drm_locked_tasklet_func(). The lock-taking logic -uses a non-interrupt-blocking spinlock to implement the manipulations -needed to take the lock. Note that a non-interrupt-blocking spinlock -blocks kernel pre-emption and atomically sets a flag, but interrupts -are still enabled. This semantic is safe if ALL attempts to use the -spinlock only happen from process context. However this buffer swap -happens from softirq context which is really a form of interrupt -context that WILL pre-empt execution even when normal thread -pre-emption is otherwise disabled. Thus we have an unsafe situation, -in that drm_locked_tasklet_func() can block on a spinlock already -taken by a thread in process context which will never get scheduled -again because of the blocked softirq tasklet. This wedges the kernel -hard. - -It's a very small race condition, but a race nonetheless with a very -undesirable potential outcome. To trigger this bug, run a dual-head -cloned mode configuration which uses the i915 drm, then execute an -opengl application which synchronizes buffer swaps against the -vertical sync interrupt. In my testing, a lockup always results after -running anywhere from 5 minutes to an hour and a half. I believe -dual-head is needed to really trigger the problem because then the -vertical sync interrupt handling is no longer predictable (due to -being interrupt-sourced from two different heads running at different -speeds). This raises the probability of a the tasklet trying to run -while the userspace DRI is doing things to the GPU (and manipulating -the DRM lock). - -The fix is to change the relevant spinlock semantics to be the -interrupt-blocking form. Thus all calls for this spinlock change from -spin_lock() to spin_lock_irqsave() and similarly calls to -spin_unlock() change to spin_unlock_irqrestore(). After this change I -am no longer able to trigger the lockup; the longest test run so far -was 6 hours (test stopped after that point). - -Signed-off-by: Mike Isely <isely@pobox.com> - ---- - - drivers/char/drm/drm_fops.c | 5 ++-- - drivers/char/drm/drm_lock.c | 35 +++++++++++++++++++--------------- - 2 files changed, 23 insertions(+), 17 deletions(-) - -diff -uprN -X linux-2.6.24.3/Documentation/dontdiff linux-2.6.24.3/drivers/char/drm/drm_fops.c linux-2.6.24.3-drm-spinlock-fix/drivers/char/drm/drm_fops.c ---- linux-2.6.24.3/drivers/char/drm/drm_fops.c 2008-02-25 18:20:20.000000000 -0600 -+++ linux-2.6.24.3-drm-spinlock-fix/drivers/char/drm/drm_fops.c 2008-03-06 15:23:26.000000000 -0600 -@@ -326,6 +326,7 @@ int drm_release(struct inode *inode, str - struct drm_file *file_priv = filp->private_data; - struct drm_device *dev = file_priv->head->dev; - int retcode = 0; -+ unsigned long irqflags; - - lock_kernel(); - -@@ -357,9 +358,9 @@ int drm_release(struct inode *inode, str - */ - - do{ -- spin_lock(&dev->lock.spinlock); -+ spin_lock_irqsave(&dev->lock.spinlock, irqflags); - locked = dev->lock.idle_has_lock; -- spin_unlock(&dev->lock.spinlock); -+ spin_unlock_irqrestore(&dev->lock.spinlock, irqflags); - if (locked) - break; - schedule(); -diff -uprN -X linux-2.6.24.3/Documentation/dontdiff linux-2.6.24.3/drivers/char/drm/drm_lock.c linux-2.6.24.3-drm-spinlock-fix/drivers/char/drm/drm_lock.c ---- linux-2.6.24.3/drivers/char/drm/drm_lock.c 2008-02-25 18:20:20.000000000 -0600 -+++ linux-2.6.24.3-drm-spinlock-fix/drivers/char/drm/drm_lock.c 2008-03-06 15:23:34.000000000 -0600 -@@ -53,6 +53,7 @@ int drm_lock(struct drm_device *dev, voi - DECLARE_WAITQUEUE(entry, current); - struct drm_lock *lock = data; - int ret = 0; -+ unsigned long irqflags; - - ++file_priv->lock_count; - -@@ -71,9 +72,9 @@ int drm_lock(struct drm_device *dev, voi - return -EINVAL; - - add_wait_queue(&dev->lock.lock_queue, &entry); -- spin_lock(&dev->lock.spinlock); -+ spin_lock_irqsave(&dev->lock.spinlock, irqflags); - dev->lock.user_waiters++; -- spin_unlock(&dev->lock.spinlock); -+ spin_unlock_irqrestore(&dev->lock.spinlock, irqflags); - for (;;) { - __set_current_state(TASK_INTERRUPTIBLE); - if (!dev->lock.hw_lock) { -@@ -95,9 +96,9 @@ int drm_lock(struct drm_device *dev, voi - break; - } - } -- spin_lock(&dev->lock.spinlock); -+ spin_lock_irqsave(&dev->lock.spinlock, irqflags); - dev->lock.user_waiters--; -- spin_unlock(&dev->lock.spinlock); -+ spin_unlock_irqrestore(&dev->lock.spinlock, irqflags); - __set_current_state(TASK_RUNNING); - remove_wait_queue(&dev->lock.lock_queue, &entry); - -@@ -198,8 +199,9 @@ int drm_lock_take(struct drm_lock_data * - { - unsigned int old, new, prev; - volatile unsigned int *lock = &lock_data->hw_lock->lock; -+ unsigned long irqflags; - -- spin_lock(&lock_data->spinlock); -+ spin_lock_irqsave(&lock_data->spinlock, irqflags); - do { - old = *lock; - if (old & _DRM_LOCK_HELD) -@@ -211,7 +213,7 @@ int drm_lock_take(struct drm_lock_data * - } - prev = cmpxchg(lock, old, new); - } while (prev != old); -- spin_unlock(&lock_data->spinlock); -+ spin_unlock_irqrestore(&lock_data->spinlock, irqflags); - - if (_DRM_LOCKING_CONTEXT(old) == context) { - if (old & _DRM_LOCK_HELD) { -@@ -272,15 +274,16 @@ int drm_lock_free(struct drm_lock_data * - { - unsigned int old, new, prev; - volatile unsigned int *lock = &lock_data->hw_lock->lock; -+ unsigned long irqflags; - -- spin_lock(&lock_data->spinlock); -+ spin_lock_irqsave(&lock_data->spinlock, irqflags); - if (lock_data->kernel_waiters != 0) { - drm_lock_transfer(lock_data, 0); - lock_data->idle_has_lock = 1; -- spin_unlock(&lock_data->spinlock); -+ spin_unlock_irqrestore(&lock_data->spinlock, irqflags); - return 1; - } -- spin_unlock(&lock_data->spinlock); -+ spin_unlock_irqrestore(&lock_data->spinlock, irqflags); - - do { - old = *lock; -@@ -344,19 +347,20 @@ static int drm_notifier(void *priv) - void drm_idlelock_take(struct drm_lock_data *lock_data) - { - int ret = 0; -+ unsigned long irqflags; - -- spin_lock(&lock_data->spinlock); -+ spin_lock_irqsave(&lock_data->spinlock, irqflags); - lock_data->kernel_waiters++; - if (!lock_data->idle_has_lock) { - -- spin_unlock(&lock_data->spinlock); -+ spin_unlock_irqrestore(&lock_data->spinlock, irqflags); - ret = drm_lock_take(lock_data, DRM_KERNEL_CONTEXT); -- spin_lock(&lock_data->spinlock); -+ spin_lock_irqsave(&lock_data->spinlock, irqflags); - - if (ret == 1) - lock_data->idle_has_lock = 1; - } -- spin_unlock(&lock_data->spinlock); -+ spin_unlock_irqrestore(&lock_data->spinlock, irqflags); - } - EXPORT_SYMBOL(drm_idlelock_take); - -@@ -364,8 +368,9 @@ void drm_idlelock_release(struct drm_loc - { - unsigned int old, prev; - volatile unsigned int *lock = &lock_data->hw_lock->lock; -+ unsigned long irqflags; - -- spin_lock(&lock_data->spinlock); -+ spin_lock_irqsave(&lock_data->spinlock, irqflags); - if (--lock_data->kernel_waiters == 0) { - if (lock_data->idle_has_lock) { - do { -@@ -376,7 +381,7 @@ void drm_idlelock_release(struct drm_loc - lock_data->idle_has_lock = 0; - } - } -- spin_unlock(&lock_data->spinlock); -+ spin_unlock_irqrestore(&lock_data->spinlock, irqflags); - } - EXPORT_SYMBOL(drm_idlelock_release); - diff --git a/patches/fix-capabilities.patch b/patches/fix-capabilities.patch deleted file mode 100644 index 2b01bb0..0000000 --- a/patches/fix-capabilities.patch +++ /dev/null @@ -1,65 +0,0 @@ -From: Serge Hallyn <serge@hallyn.com> -Date: Fri, 29 Feb 2008 15:14:57 +0000 (+0000) -Subject: file capabilities: remove cap_task_kill() -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=aedb60a67c10a0861af179725d060765262ba0fb - -file capabilities: remove cap_task_kill() - -The original justification for cap_task_kill() was as follows: - - check_kill_permission() does appropriate uid equivalence checks. - However with file capabilities it becomes possible for an - unprivileged user to execute a file with file capabilities - resulting in a more privileged task with the same uid. - -However now that cap_task_kill() always returns 0 (permission -granted) when p->uid==current->uid, the whole hook is worthless, -and only likely to create more subtle problems in the corner cases -where it might still be called but return -EPERM. Those cases -are basically when uids are different but euid/suid is equivalent -as per the check in check_kill_permission(). - -One example of a still-broken application is 'at' for non-root users. - -This patch removes cap_task_kill(). - -Signed-off-by: Serge Hallyn <serge@hallyn.com> -Acked-by: Andrew G. Morgan <morgan@kernel.org> -Earlier-version-tested-by: Luiz Fernando N. Capitulino <lcapitulino@mandriva.com.br> -Acked-by: Casey Schaufler <casey@schaufler-ca.com> -Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> ---- - -diff --git a/include/linux/security.h b/include/linux/security.h -index b07357c..c673dfd 100644 ---- a/include/linux/security.h -+++ b/include/linux/security.h -@@ -57,7 +57,6 @@ extern int cap_inode_need_killpriv(struct dentry *dentry); - extern int cap_inode_killpriv(struct dentry *dentry); - extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); - extern void cap_task_reparent_to_init (struct task_struct *p); --extern int cap_task_kill(struct task_struct *p, struct siginfo *info, int sig, u32 secid); - extern int cap_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp); - extern int cap_task_setioprio (struct task_struct *p, int ioprio); - extern int cap_task_setnice (struct task_struct *p, int nice); -@@ -2187,7 +2186,7 @@ static inline int security_task_kill (struct task_struct *p, - struct siginfo *info, int sig, - u32 secid) - { -- return cap_task_kill(p, info, sig, secid); -+ return 0; - } - - static inline int security_task_wait (struct task_struct *p) -diff --git a/security/capability.c b/security/capability.c -index 9e99f36..2c6e06d 100644 ---- a/security/capability.c -+++ b/security/capability.c -@@ -40,7 +40,6 @@ static struct security_operations capability_ops = { - .inode_need_killpriv = cap_inode_need_killpriv, - .inode_killpriv = cap_inode_killpriv, - -- .task_kill = cap_task_kill, - .task_setscheduler = cap_task_setscheduler, - .task_setioprio = cap_task_setioprio, - .task_setnice = cap_task_setnice, diff --git a/patches/fix-gcc43.patch b/patches/fix-gcc43.patch deleted file mode 100644 index 37ca018..0000000 --- a/patches/fix-gcc43.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-2.6.24.noarch.orig/include/linux/time.h -+++ linux-2.6.24.noarch/include/linux/time.h -@@ -169,7 +169,7 @@ extern struct timeval ns_to_timeval(cons - * @a: pointer to timespec to be incremented - * @ns: unsigned nanoseconds value to be added - */ --static inline void timespec_add_ns(struct timespec *a, u64 ns) -+static inline void timespec_add_ns(struct timespec *a, volatile u64 ns) - { - ns += a->tv_nsec; - while(unlikely(ns >= NSEC_PER_SEC)) { diff --git a/patches/hanftek.patch b/patches/hanftek.patch deleted file mode 100644 index 30831ab..0000000 --- a/patches/hanftek.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-2.6.24.pristine/drivers/media/dvb/dvb-usb/umt-010.c 2008-02-15 17:02:15.000000000 +0100 -+++ linux-2.6.24/drivers/media/dvb/dvb-usb/umt-010.c 2008-02-15 17:02:21.000000000 +0100 -@@ -104,7 +104,7 @@ - /* parameter for the MPEG2-data transfer */ - .stream = { - .type = USB_BULK, -- .count = 20, -+ .count = 10, - .endpoint = 0x06, - .u = { - .bulk = {
\ No newline at end of file diff --git a/patches/sis671-intelgly-2.6.24.patch b/patches/sis671-intelgly-2.6.24.patch deleted file mode 100644 index d137fa1..0000000 --- a/patches/sis671-intelgly-2.6.24.patch +++ /dev/null @@ -1,49 +0,0 @@ -diff -urN linux-2.6.23.1-orig/drivers/char/agp/sis-agp.c linux-2.6.23.1/drivers/char/agp/sis-agp.c ---- linux-2.6.23.1-orig/drivers/char/agp/sis-agp.c 2007-10-12 19:43:44.000000000 +0300 -+++ linux-2.6.23.1/drivers/char/agp/sis-agp.c 2007-11-07 10:46:49.000000000 +0200 -@@ -331,6 +331,22 @@ - .class = (PCI_CLASS_BRIDGE_HOST << 8), - .class_mask = ~0, - .vendor = PCI_VENDOR_ID_SI, -+ .device = PCI_DEVICE_ID_SI_662, -+ .subvendor = PCI_ANY_ID, -+ .subdevice = PCI_ANY_ID, -+ }, -+ { -+ .class = (PCI_CLASS_BRIDGE_HOST << 8), -+ .class_mask = ~0, -+ .vendor = PCI_VENDOR_ID_SI, -+ .device = PCI_DEVICE_ID_SI_671, -+ .subvendor = PCI_ANY_ID, -+ .subdevice = PCI_ANY_ID, -+ }, -+ { -+ .class = (PCI_CLASS_BRIDGE_HOST << 8), -+ .class_mask = ~0, -+ .vendor = PCI_VENDOR_ID_SI, - .device = PCI_DEVICE_ID_SI_730, - .subvendor = PCI_ANY_ID, - .subdevice = PCI_ANY_ID, -diff -urN linux-2.6.23.1-orig/drivers/char/drm/drm_pciids.h linux-2.6.23.1/drivers/char/drm/drm_pciids.h ---- linux-2.6.23.1-orig/drivers/char/drm/drm_pciids.h 2007-10-12 19:43:44.000000000 +0300 -+++ linux-2.6.23.1/drivers/char/drm/drm_pciids.h 2007-11-07 10:48:10.000000000 +0200 -@@ -218,6 +218,7 @@ - {0x1039, 0x5300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ - {0x1039, 0x6300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ - {0x1039, 0x6330, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \ -+ {0x1039, 0x6351, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, /* new add */ \ - {0x1039, 0x7300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ - {0x18CA, 0x0040, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \ - {0x18CA, 0x0042, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SIS_CHIP_315}, \ -diff -urN linux-2.6.23.1-orig/include/linux/pci_ids.h linux-2.6.23.1/include/linux/pci_ids.h ---- linux-2.6.23.1-orig/include/linux/pci_ids.h 2007-11-05 11:35:50.000000000 +0200 -+++ linux-2.6.23.1/include/linux/pci_ids.h 2007-11-07 10:49:16.000000000 +0200 -@@ -654,6 +654,8 @@ - #define PCI_DEVICE_ID_SI_651 0x0651 - #define PCI_DEVICE_ID_SI_655 0x0655 - #define PCI_DEVICE_ID_SI_661 0x0661 -+#define PCI_DEVICE_ID_SI_662 0x0662 /* new add */ -+#define PCI_DEVICE_ID_SI_671 0x0671 /* new add */ - #define PCI_DEVICE_ID_SI_730 0x0730 - #define PCI_DEVICE_ID_SI_733 0x0733 - #define PCI_DEVICE_ID_SI_630_VGA 0x6300 diff --git a/patches/usb-storage-unusual-devs.patch b/patches/usb-storage-unusual-devs.patch deleted file mode 100644 index 1d508ad..0000000 --- a/patches/usb-storage-unusual-devs.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- linux-2.6.20.orig/drivers/usb/storage/unusual_devs.h -+++ linux-2.6.20/drivers/usb/storage/unusual_devs.h -@@ -1332,6 +1332,16 @@ - US_SC_DEVICE, US_PR_DEVICE, NULL, - US_FL_IGNORE_RESIDUE ), - -+/* Reported by Thomas Baechler <thomas@archlinux.org> -+ * Fixes I/O errors with Teac HD-35PU devices -+ */ -+ -+UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201, -+ "Super Top", -+ "USB 2.0 IDE DEVICE", -+ US_SC_DEVICE, US_PR_DEVICE, NULL, -+ US_FL_IGNORE_RESIDUE), -+ - /* patch submitted by Davide Perini <perini.davide@dpsoftware.org> - * and Renato Perini <rperini@email.it> - */ diff --git a/patches/winfast-2000.patch b/patches/winfast-2000.patch deleted file mode 100644 index b43c961..0000000 --- a/patches/winfast-2000.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- drivers/media/video/bt8xx/bttv-input.c.orig 2006-10-15 18:57:11.000000000 +0300 -+++ drivers/media/video/bt8xx/bttv-input.c 2006-10-15 18:28:08.000000000 +0300 -@@ -65,6 +65,8 @@ - (ir->mask_keyup && (0 == (gpio & ir->mask_keyup)))) { - ir_input_keydown(ir->dev,&ir->ir,data,data); - } else { -+ -+ if (btv->c.type == BTTV_BOARD_WINFAST2000) ir_input_keydown(ir->dev,&ir->ir,data,data); - ir_input_nokey(ir->dev,&ir->ir); - } - -@@ -313,7 +315,7 @@ - - case BTTV_BOARD_WINFAST2000: - ir_codes = ir_codes_winfast; -- ir->mask_keycode = 0x1f8; -+ ir->mask_keycode = 0x8f8; - break; - case BTTV_BOARD_MAGICTVIEW061: - case BTTV_BOARD_MAGICTVIEW063: |