Magellan Linux

Contents of /trunk/kernel26-alx/patches-2.6.17-r7/0106-2.6.17.13-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 199 - (show annotations) (download)
Fri May 18 11:04:36 2007 UTC (16 years, 11 months ago) by niro
File size: 3403 byte(s)
-import

1 diff --git a/include/linux/idr.h b/include/linux/idr.h
2 index d37c8d8..f559a71 100644
3 --- a/include/linux/idr.h
4 +++ b/include/linux/idr.h
5 @@ -78,6 +78,7 @@ void *idr_find(struct idr *idp, int id);
6 int idr_pre_get(struct idr *idp, gfp_t gfp_mask);
7 int idr_get_new(struct idr *idp, void *ptr, int *id);
8 int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id);
9 +void *idr_replace(struct idr *idp, void *ptr, int id);
10 void idr_remove(struct idr *idp, int id);
11 void idr_destroy(struct idr *idp);
12 void idr_init(struct idr *idp);
13 diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
14 index 590dc6d..10d6759 100644
15 --- a/include/linux/pci_ids.h
16 +++ b/include/linux/pci_ids.h
17 @@ -1235,6 +1235,7 @@ #define PCI_DEVICE_ID_VIA_PT880ULTRA 0x0
18 #define PCI_DEVICE_ID_VIA_PX8X0_0 0x0259
19 #define PCI_DEVICE_ID_VIA_3269_0 0x0269
20 #define PCI_DEVICE_ID_VIA_K8T800PRO_0 0x0282
21 +#define PCI_DEVICE_ID_VIA_3296_0 0x0296
22 #define PCI_DEVICE_ID_VIA_8363_0 0x0305
23 #define PCI_DEVICE_ID_VIA_P4M800CE 0x0314
24 #define PCI_DEVICE_ID_VIA_8371_0 0x0391
25 @@ -1242,6 +1243,7 @@ #define PCI_DEVICE_ID_VIA_8501_0 0x0501
26 #define PCI_DEVICE_ID_VIA_82C561 0x0561
27 #define PCI_DEVICE_ID_VIA_82C586_1 0x0571
28 #define PCI_DEVICE_ID_VIA_82C576 0x0576
29 +#define PCI_DEVICE_ID_VIA_SATA_EIDE 0x0581
30 #define PCI_DEVICE_ID_VIA_82C586_0 0x0586
31 #define PCI_DEVICE_ID_VIA_82C596 0x0596
32 #define PCI_DEVICE_ID_VIA_82C597_0 0x0597
33 @@ -1282,10 +1284,11 @@ #define PCI_DEVICE_ID_VIA_8378_0 0x3205
34 #define PCI_DEVICE_ID_VIA_8783_0 0x3208
35 #define PCI_DEVICE_ID_VIA_8237 0x3227
36 #define PCI_DEVICE_ID_VIA_8251 0x3287
37 -#define PCI_DEVICE_ID_VIA_3296_0 0x0296
38 +#define PCI_DEVICE_ID_VIA_8237A 0x3337
39 #define PCI_DEVICE_ID_VIA_8231 0x8231
40 #define PCI_DEVICE_ID_VIA_8231_4 0x8235
41 #define PCI_DEVICE_ID_VIA_8365_1 0x8305
42 +#define PCI_DEVICE_ID_VIA_CX700 0x8324
43 #define PCI_DEVICE_ID_VIA_8371_1 0x8391
44 #define PCI_DEVICE_ID_VIA_82C598_1 0x8598
45 #define PCI_DEVICE_ID_VIA_838X_1 0xB188
46 diff --git a/lib/idr.c b/lib/idr.c
47 index de19030..4d09681 100644
48 --- a/lib/idr.c
49 +++ b/lib/idr.c
50 @@ -29,6 +29,7 @@ #include <linux/slab.h>
51 #include <linux/init.h>
52 #include <linux/module.h>
53 #endif
54 +#include <linux/err.h>
55 #include <linux/string.h>
56 #include <linux/idr.h>
57
58 @@ -398,6 +399,48 @@ void *idr_find(struct idr *idp, int id)
59 }
60 EXPORT_SYMBOL(idr_find);
61
62 +/**
63 + * idr_replace - replace pointer for given id
64 + * @idp: idr handle
65 + * @ptr: pointer you want associated with the id
66 + * @id: lookup key
67 + *
68 + * Replace the pointer registered with an id and return the old value.
69 + * A -ENOENT return indicates that @id was not found.
70 + * A -EINVAL return indicates that @id was not within valid constraints.
71 + *
72 + * The caller must serialize vs idr_find(), idr_get_new(), and idr_remove().
73 + */
74 +void *idr_replace(struct idr *idp, void *ptr, int id)
75 +{
76 + int n;
77 + struct idr_layer *p, *old_p;
78 +
79 + n = idp->layers * IDR_BITS;
80 + p = idp->top;
81 +
82 + id &= MAX_ID_MASK;
83 +
84 + if (id >= (1 << n))
85 + return ERR_PTR(-EINVAL);
86 +
87 + n -= IDR_BITS;
88 + while ((n > 0) && p) {
89 + p = p->ary[(id >> n) & IDR_MASK];
90 + n -= IDR_BITS;
91 + }
92 +
93 + n = id & IDR_MASK;
94 + if (unlikely(p == NULL || !test_bit(n, &p->bitmap)))
95 + return ERR_PTR(-ENOENT);
96 +
97 + old_p = p->ary[n];
98 + p->ary[n] = ptr;
99 +
100 + return old_p;
101 +}
102 +EXPORT_SYMBOL(idr_replace);
103 +
104 static void idr_cache_ctor(void * idr_layer, kmem_cache_t *idr_layer_cache,
105 unsigned long flags)
106 {