summaryrefslogtreecommitdiff
path: root/patches
diff options
context:
space:
mode:
authorThomas Bächler <thomas@archlinux.org>2008-04-05 22:44:35 +0200
committerThomas Bächler <thomas@archlinux.org>2008-04-05 22:44:35 +0200
commit8dff281fd663668e6d2895275c89d393ccd49321 (patch)
tree68fbd641f43bd5660483e0032c61600cf15f0aef /patches
parent32c8c733f296ea76d599c0c90aff7307d85a4eb3 (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.patch207
-rw-r--r--patches/2101_sr-follow-tray-status.patch119
-rw-r--r--patches/2102_sr-test-unit-ready.patch126
-rw-r--r--patches/2405_sis190-eeprom-mac.patch45
-rw-r--r--patches/2700_alsa-hda-lifebook-e8410.patch19
-rw-r--r--patches/acpi-dsdt-initrd-v0.8.4-2.6.21.patch275
-rw-r--r--patches/ata-2.6.24.patch102
-rw-r--r--patches/drm-spinlock-fix.patch196
-rw-r--r--patches/fix-capabilities.patch65
-rw-r--r--patches/fix-gcc43.patch11
-rw-r--r--patches/hanftek.patch11
-rw-r--r--patches/sis671-intelgly-2.6.24.patch49
-rw-r--r--patches/usb-storage-unusual-devs.patch19
-rw-r--r--patches/winfast-2000.patch20
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, &reg);
-
-- 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: