Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad360bbb authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'drm-patches' of ssh://master.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
  drm: make sure the drawable code doesn't call malloc(0).
  drm/radeon: add more IGP chipset pci ids
  drm: Spinlock initializer cleanup
parents bc8844ed c4814f90
Loading
Loading
Loading
Loading
+26 −15
Original line number Diff line number Diff line
@@ -172,28 +172,38 @@ int drm_rmdraw(DRM_IOCTL_ARGS)

		bitfield_length = idx + 1;

		if (idx != id / (8 * sizeof(*bitfield)))
		bitfield = NULL;

		if (bitfield_length) {
			if (bitfield_length != dev->drw_bitfield_length)
				bitfield = drm_alloc(bitfield_length *
					     sizeof(*bitfield), DRM_MEM_BUFS);
						     sizeof(*bitfield),
						     DRM_MEM_BUFS);

		if (!bitfield && bitfield_length) {
			if (!bitfield) {
				bitfield = dev->drw_bitfield;
				bitfield_length = dev->drw_bitfield_length;
			}
		}
	}

	if (bitfield != dev->drw_bitfield) {
		info_length = 8 * sizeof(*bitfield) * bitfield_length;

		info = drm_alloc(info_length * sizeof(*info), DRM_MEM_BUFS);
		if (info_length) {
			info = drm_alloc(info_length * sizeof(*info),
					 DRM_MEM_BUFS);

		if (!info && info_length) {
			if (!info) {
				info = dev->drw_info;
				info_length = dev->drw_info_length;
			}
		} else
			info = NULL;

		spin_lock_irqsave(&dev->drw_lock, irqflags);

		if (bitfield)
			memcpy(bitfield, dev->drw_bitfield, bitfield_length *
			       sizeof(*bitfield));
		drm_free(dev->drw_bitfield, sizeof(*bitfield) *
@@ -202,6 +212,7 @@ int drm_rmdraw(DRM_IOCTL_ARGS)
		dev->drw_bitfield_length = bitfield_length;

		if (info != dev->drw_info) {
			if (info)
				memcpy(info, dev->drw_info, info_length *
				       sizeof(*info));
			drm_free(dev->drw_info, sizeof(*info) *
+7 −0
Original line number Diff line number Diff line
@@ -102,13 +102,20 @@
	{0x1002, 0x5653, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV410|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
	{0x1002, 0x5834, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP}, \
	{0x1002, 0x5835, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_IS_MOBILITY}, \
	{0x1002, 0x5954, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
	{0x1002, 0x5955, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
	{0x1002, 0x5974, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
	{0x1002, 0x5975, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
	{0x1002, 0x5960, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
	{0x1002, 0x5961, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
	{0x1002, 0x5962, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
	{0x1002, 0x5964, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
	{0x1002, 0x5965, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280}, \
	{0x1002, 0x5969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV100}, \
	{0x1002, 0x5a41, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
	{0x1002, 0x5a42, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
	{0x1002, 0x5a61, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
	{0x1002, 0x5a62, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS400|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_IS_IGPGART}, \
	{0x1002, 0x5b60, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \
	{0x1002, 0x5b62, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \
	{0x1002, 0x5b63, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_NEW_MEMMAP}, \
+1 −1
Original line number Diff line number Diff line
@@ -582,7 +582,7 @@ void i915_driver_irq_postinstall(drm_device_t * dev)
{
	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;

	dev_priv->swaps_lock = SPIN_LOCK_UNLOCKED;
	spin_lock_init(&dev_priv->swaps_lock);
	INIT_LIST_HEAD(&dev_priv->vbl_swaps.head);
	dev_priv->swaps_pending = 0;