Alan Cox [Tue, 5 Jul 2011 14:43:40 +0000 (15:43 +0100)]
gma500: move the BIOS header
We can move this to patch up as well. Shuffle the relevant includes as we
go
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:43:21 +0000 (15:43 +0100)]
gma500: tidying up the power stuff a spot
In particular don't destroy static mutexes, it upsets things
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:43:07 +0000 (15:43 +0100)]
gma500: move the i2c code
This again is similar to upstream so give it a sensible name ready to look
at any merging or synchronization
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:42:53 +0000 (15:42 +0100)]
gma500: the MMU code is also generic
Move this over. In actual fact there are some underlying differences as
some devices have more MMU contexts, but for our 2D purposes we don't
actually care.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:42:36 +0000 (15:42 +0100)]
gma500: move opregion files
We've now sorted them out so they can go into the generic code. In actual
fact only the non MID devices use the functions but they are small and
having the name match i915 is going to help any future merging type work.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:42:23 +0000 (15:42 +0100)]
gma500: tidy up the opregion and lid code
This is leaking an io mapping and also referencing stuff directly that
should not be directly accessed. Sort it out
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:42:11 +0000 (15:42 +0100)]
gma500: Rename the psb_intel_bios code
This is generic for the PC class devices and also very similar to the i915
intel_bios.c so rename it. That way the commonality will be obvious and we
can look at merging them one day, or at least synching them up.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:41:56 +0000 (15:41 +0100)]
gma500: begin the config based split
We don't want to carry all the extra gunk around on every device so use the
splitting work so far to tidy this up. Poulsbo is still mandatory as it is
used in bits by the other drivers and not neatly modularised.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:41:43 +0000 (15:41 +0100)]
gma500: the GEM and GTT code is device independant
Rename the gem and gtt files accordingly.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:41:29 +0000 (15:41 +0100)]
gma500: The 2D code is now also device independent
Rename
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:41:11 +0000 (15:41 +0100)]
gma500: move framebuffer file
The framebuffer code is now clean of device specific code, and passes
checkpatch. Move it to its new name
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:40:56 +0000 (15:40 +0100)]
gma500: tidy the framebuffer fixme and oddments
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:40:43 +0000 (15:40 +0100)]
gma500: the 'mrst' BIOS is actually MID generic
Shuffle the naming so this reflects better and we can try and build some
sort of ordering to the naming scheme.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:40:30 +0000 (15:40 +0100)]
gma500: Add the beginnings of Cedarview support
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:40:16 +0000 (15:40 +0100)]
gma500: move configuration bits into the psb_ops structure
We can stuff things like the number of pipes and the SGX offset away in
here as well and clean up more conditional code.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:40:03 +0000 (15:40 +0100)]
gma500: remove an un-needed check
This is a Medfield only path
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:39:50 +0000 (15:39 +0100)]
gma500: add more ops
Split the 2d properties, name, and various function vectors out so that we
can get rid of more conditional gloop in favour of a per device structure.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:39:19 +0000 (15:39 +0100)]
gma500: enable Medfield CRTC support
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:39:06 +0000 (15:39 +0100)]
gma500: Read the GCT panel type information for Medfield
Missed in the original merge work
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:38:53 +0000 (15:38 +0100)]
gma500: Fix early Medfield crash
We need to initialise the DBI interface and the code for it got missed in
the original merge as it's in a daft place. This will need moving but lets
get it added first.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:38:40 +0000 (15:38 +0100)]
gma500: continue abstracting platform specific code
Next obvious target - backlight support
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:38:26 +0000 (15:38 +0100)]
gma500: being abstracting out devices a bit more
We really want to move towards a completely abstracted interface rather
than having tons of per chip junk in the same files.
Begin with the power code which is probably the worst offender. Add a set
of methods, initialise a dev_priv->ops pointer and rip the chip specifics
out of the power code. While we are it pick up the display init bits.
So we know it's now chip specifics clean remove the psb_ naming from it.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:38:11 +0000 (15:38 +0100)]
gma500: Only fiddle with clock gating on PSB
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:37:55 +0000 (15:37 +0100)]
gma500: Update the GEM todo
We also pull out the undo side of the mmap offset processing so we can later
push it into GEM where it belongs
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:37:41 +0000 (15:37 +0100)]
gma500: psb_fb tidy/cleanup pass
Eliminate unused stuff and clean up the code ordering.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:37:29 +0000 (15:37 +0100)]
gma500: Extract BIOSisy stuff from psb_drv
This is too big already so lets rip out more of the device specific crud. It
also means we pull the ugly stuff that needs work out of our main line of
cleanup.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:37:16 +0000 (15:37 +0100)]
gma500: Move our other GEM helper into the bits want to push into GEM
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:36:47 +0000 (15:36 +0100)]
gma500: Medfield support
This large patch adds all the basics for Medfield support. Lots of clean up
needed in this area still.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:36:32 +0000 (15:36 +0100)]
gma500: 2D polish
Tidy up the 2D bits. For the fill case the CPU seems to be able to
outperform the graphics engine for the cases we get, so don't bother
fixing it but throw it out.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:36:19 +0000 (15:36 +0100)]
gma500: CodingStyle pass
Start the style cleanup
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:36:07 +0000 (15:36 +0100)]
gma500: Use the GEM tweaks to provide a GEM frame buffer
We can now make our system frame buffer a GEM object.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:35:55 +0000 (15:35 +0100)]
gma500: GEM glue
Add this temporarily so we can keep making progress and also bundle all the
GEM bits we need together in our staging driver while we get them into GEM
itself.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:35:43 +0000 (15:35 +0100)]
gma500: Kill spare kref
We are using the underlying kref in the GEM object so we don't need our own
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:35:30 +0000 (15:35 +0100)]
gma500: nuke the PSB debug stuff
Lose all the PSB debug gunge. We can replace it with dev_dbg() like normal
drivers if and when we need debug on stuff.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:35:18 +0000 (15:35 +0100)]
gma500: nuke the last bits of TTM code
We don't seem to need this for our task.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:35:06 +0000 (15:35 +0100)]
gma500: 2D acceleration tidying
We have a FIXME to do the power management for which the framework now
exists, and we also need to deal with an erratum. Some operations exactly 8
pixels wide or high fail. The work around is to do two smaller ones (see
the Intel released X driver bits) but for console quite frankly if it's
8bits wide and/or high its not worth it so fall back.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:34:53 +0000 (15:34 +0100)]
gma500: polish for completion of this phase
Give the driver its own proper DRM name, clean up copyright headers and so
forth
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:34:41 +0000 (15:34 +0100)]
gma500: trim some of the debug
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:34:28 +0000 (15:34 +0100)]
gma500: Do sane FB cleanup
If we get a user frame buffer destroyed which is being displayed then clean
up the mess nicely. We can now run a slightly modified modetest including setting
modes, and handling crashes.
Modetest still blows up but this is because libdrm 2.4.25 is busted.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:34:15 +0000 (15:34 +0100)]
gma500: revamp frame buffer creation and handling
Restructure this to work the same way as the i915 frame buffer does. That
cleans up various chunks of code.
We can now set a mode in modetest but mode restore is a bit iffy
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Cox [Tue, 5 Jul 2011 14:34:03 +0000 (15:34 +0100)]
gma500: Ensure the frame buffer has a linear virtual mapping
We need this for the framebuffer in order to ensure that the kernel
framebuffer layer can handle it when using KMS. Except for the base
framebuffer this isn't a concern.
Add an npage field to the gtt as too many copies of the page calculation
are getting spread around the code.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Greg Kroah-Hartman [Tue, 5 Jul 2011 14:35:09 +0000 (07:35 -0700)]
Merge Linux 3.0-rc6 into staging-next
This handles the merge conflicts with the
drivers/staging/brcm80211/Kconfig file due to changes on the two
different branches.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Linus Torvalds [Mon, 4 Jul 2011 22:56:24 +0000 (15:56 -0700)]
Linux 3.0-rc6
Linus Torvalds [Mon, 4 Jul 2011 22:54:37 +0000 (15:54 -0700)]
Merge git://git./linux/kernel/git/jejb/scsi-rc-fixes-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6: (277 commits)
[SCSI] isci: fix checkpatch errors
isci: Device reset should request sas_phy_reset(phy, true)
isci: pare back error messsages
isci: cleanup silicon revision detection
isci: merge scu_unsolicited_frame.h into unsolicited_frame_control.h
isci: merge sata.[ch] into request.c
isci: kill 'get/set' macros
isci: retire scic_sds_ and scic_ prefixes
isci: unify isci_host and scic_sds_controller
isci: unify isci_remote_device and scic_sds_remote_device
isci: unify isci_port and scic_sds_port
isci: fix scic_sds_remote_device_terminate_requests
isci: unify isci_phy and scic_sds_phy
isci: unify isci_request and scic_sds_request
isci: rename / clean up scic_sds_stp_request
isci: preallocate requests
isci: combine request flags
isci: unify can_queue tracking on the tci_pool, uplevel tag assignment
isci: Terminate dev requests on FIS err bit rx in NCQ
isci: fix frame received locking
...
Linus Torvalds [Mon, 4 Jul 2011 22:54:18 +0000 (15:54 -0700)]
Merge branch 'at91/fixes' of git://git./linux/kernel/git/arm/linux-2.6-arm-soc
* 'at91/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-2.6-arm-soc:
AT91: Change nand buswidth logic to match hardware default configuration
at91: Use "pclk" as con_id on at91cap9 and at91rm9200
at91: fix udc, ehci and mmc clock device name for cap9/9g45/9rl
atmel_serial: fix internal port num
at91: fix at91_set_serial_console: use platform device id
Linus Torvalds [Mon, 4 Jul 2011 22:53:53 +0000 (15:53 -0700)]
Merge branch 'fbdev-fixes-for-linus' of git://git./linux/kernel/git/lethal/fbdev-3.x
* 'fbdev-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-3.x:
vesafb: fix memory leak
fbdev: amba: Link fb device to its parent
fsl-diu-fb: remove check for pixel clock ranges
udlfb: Correct sub-optimal resolution selection.
hecubafb: add module_put on error path in hecubafb_probe()
sm501fb: fix section mismatch warning
gx1fb: Fix section mismatch warnings
fbdev: sh_mobile_meram: Correct pointer check for YCbCr chroma plane
Goldwyn Rodrigues [Mon, 4 Jul 2011 16:26:57 +0000 (09:26 -0700)]
RDMA: Check for NULL mode in .devnode methods
Commits
71c29bd5c235 ("IB/uverbs: Add devnode method to set path/mode")
and
c3af0980ce01 ("IB: Add devnode methods to cm_class and umad_class")
added devnode methods that set the mode.
However, these methods don't check for a NULL mode, and so we get a
crash when unloading modules because devtmpfs_delete_node() calls
device_get_devnode() with mode == NULL.
Add the missing checks.
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.de>
[ Also fix cm.c. - Roland ]
Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Nicolas Ferre [Fri, 1 Jul 2011 10:25:24 +0000 (12:25 +0200)]
AT91: Change nand buswidth logic to match hardware default configuration
The recently modified nand buswitth configuration is not aligned with
board reality: the double footprint on boards is always populated with 8bits
buswidth nand flashes.
So we have to consider that without particular configuration the 8bits
buswidth is selected by default.
Moreover, the previous logic was always using !board_have_nand_8bit(), we
change it to a simpler: board_have_nand_16bit().
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Daniel J Blueman [Mon, 27 Jun 2011 23:08:53 +0000 (23:08 +0000)]
vesafb: fix memory leak
When releasing framebuffer, free colourmap allocations.
Signed-off-by: Daniel J Blueman <daniel.blueman@gmail.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Linus Torvalds [Sun, 3 Jul 2011 20:33:16 +0000 (13:33 -0700)]
Merge branch 'pm-fixes' of git://git./linux/kernel/git/rafael/suspend-2.6
* 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
PM / Runtime: Update documentation regarding driver removal
PM: Documentation: fix typo: pm_runtime_idle_sync() doesn't exist.
James Bottomley [Sun, 3 Jul 2011 19:14:45 +0000 (14:14 -0500)]
[SCSI] isci: fix checkpatch errors
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
James Bottomley [Sun, 3 Jul 2011 19:19:29 +0000 (14:19 -0500)]
Merge git://git./linux/kernel/git/djbw/isci
Linus Torvalds [Sun, 3 Jul 2011 18:12:21 +0000 (11:12 -0700)]
Merge git://git./linux/kernel/git/sfrench/cifs-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
cifs: set socket send and receive timeouts before attempting connect
Linus Torvalds [Sun, 3 Jul 2011 18:12:06 +0000 (11:12 -0700)]
Merge branch 'hwmon-for-linus' of git://git./linux/kernel/git/jdelvare/staging
* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
hwmon: (k10temp) Update documentation for Fam12h
hwmon-vid: Fix typo in VIA CPU name
hwmon: (f71882fg) Add support for the F71869A
hwmon: Use <> rather than () around my e-mail address
hwmon: (emc6w201) Properly handle all errors
Clemens Ladisch [Sun, 3 Jul 2011 11:32:54 +0000 (13:32 +0200)]
hwmon: (k10temp) Update documentation for Fam12h
Add some CPU series IDs and links to the Fam12h datasheets.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Jean Delvare [Sun, 3 Jul 2011 11:32:54 +0000 (13:32 +0200)]
hwmon-vid: Fix typo in VIA CPU name
It's Nehemiah, not Nemiah.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
Hans de Goede [Sun, 3 Jul 2011 11:32:53 +0000 (13:32 +0200)]
hwmon: (f71882fg) Add support for the F71869A
The F71869A is almost the same as the F71869F/E, except that it has
the normal number of temp and pwm zones for a F71882FG derived chip,
rather then the limited number of the F71869F/E.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Max Baldwin <archerseven@gmail.com>
Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Hans de Goede [Sun, 3 Jul 2011 11:32:53 +0000 (13:32 +0200)]
hwmon: Use <> rather than () around my e-mail address
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Jean Delvare [Sun, 3 Jul 2011 11:32:53 +0000 (13:32 +0200)]
hwmon: (emc6w201) Properly handle all errors
Handle errors on 8-bit register reads and writes too. Also use likely
and unlikely to make the functions faster on success.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
Jeff Skirvin [Fri, 1 Jul 2011 20:03:44 +0000 (13:03 -0700)]
isci: Device reset should request sas_phy_reset(phy, true)
The hard_reset parameter passed to the LLDD in the direct-attached
phy control case allows the LLDD to filter link failure events
while the direct-attached device reset is executing.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 1 Jul 2011 19:07:25 +0000 (12:07 -0700)]
isci: pare back error messsages
The messages emitted from task.c and some from request.c likely
duplicate (in a less undertandable way) what is reported by the
midlayer.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 1 Jul 2011 18:41:21 +0000 (11:41 -0700)]
isci: cleanup silicon revision detection
Perform checking per-pci device (even though all systems will only have
1 pci device in this generation), and delete support for silicon that
does not report a proper revision (i.e. A0).
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 1 Jul 2011 18:15:12 +0000 (11:15 -0700)]
isci: merge scu_unsolicited_frame.h into unsolicited_frame_control.h
Does not need its own file.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 1 Jul 2011 17:52:55 +0000 (10:52 -0700)]
isci: merge sata.[ch] into request.c
Undo some needless separation.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 1 Jul 2011 09:25:15 +0000 (02:25 -0700)]
isci: kill 'get/set' macros
Most of these simple dereference macros are longer than their open coded
equivalent. Deleting enum sci_controller_mode is thrown in for good
measure.
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 1 Jul 2011 02:14:33 +0000 (19:14 -0700)]
isci: retire scic_sds_ and scic_ prefixes
The distinction between scic_sds_ scic_ and sci_ are no longer relevant
so just unify the prefixes on sci_. The distinction between isci_ and
sci_ is historically significant, and useful for comparing the old
'core' to the current Linux driver. 'sci_' represents the former core as
well as the routines that are closer to the hardware and protocol than
their 'isci_' brethren. sci == sas controller interface.
Also unwind the 'sds1' out of the parameter structs.
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 1 Jul 2011 00:38:32 +0000 (17:38 -0700)]
isci: unify isci_host and scic_sds_controller
Remove the distinction between these two implementations and unify on
isci_host (local instances named ihost). Hmmm, we had two
'oem_parameters' instances, one was unused... nice.
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Thu, 30 Jun 2011 23:31:37 +0000 (16:31 -0700)]
isci: unify isci_remote_device and scic_sds_remote_device
Remove the distinction between these two implementations and unify on
isci_remote_device (local instances named idev).
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Wed, 29 Jun 2011 20:09:25 +0000 (13:09 -0700)]
isci: unify isci_port and scic_sds_port
Remove the distinction between these two implementations and unify on
isci_port (local instances named iport). The duplicate '->owning_port' and
'->isci_port' in both isci_phy and isci_remote_device will be fixed in a later
patch... this is just the straightforward rename/unification.
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Wed, 29 Jun 2011 16:45:48 +0000 (09:45 -0700)]
isci: fix scic_sds_remote_device_terminate_requests
Commit 0815632 "isci: unify remote_device stop_handlers" introduced the
possibility that not all requests get terminated if we reach the
request_count. Now that we properly reference count devices we don't
need this self-defense and can do the straightforward scan of all active
requests.
Reported-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Acked-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Tue, 28 Jun 2011 22:05:53 +0000 (15:05 -0700)]
isci: unify isci_phy and scic_sds_phy
They are one in the same object so remove the distinction. The near
duplicate fields (owning_port, and isci_port) will be cleaned up
after the scic_sds_port isci_port unification.
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Mon, 27 Jun 2011 21:57:03 +0000 (14:57 -0700)]
isci: unify isci_request and scic_sds_request
They are one in the same object so remove the distinction. The near
duplicate fields (owning_controller, and isci_host) will be cleaned up
after the scic_sds_contoller isci_host unification.
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Mon, 27 Jun 2011 18:56:41 +0000 (11:56 -0700)]
isci: rename / clean up scic_sds_stp_request
* Rename scic_sds_stp_request to isci_stp_request
* Remove the unused fields and union indirection
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 17 Jun 2011 21:18:39 +0000 (14:18 -0700)]
isci: preallocate requests
the dma_pool interface is optimized for object_size << page_size which
is not the case with isci_request objects and the dma_pool routines show
up in the top of the profile.
The old io_request_table which tracked whether tci slots were in-flight
or not is replaced with an IREQ_ACTIVE flag per request.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Thu, 23 Jun 2011 21:33:48 +0000 (14:33 -0700)]
isci: combine request flags
Combine three bools into one unsigned long 'flags'. Doesn't increase the
request size due to packing. (to do: optimize the structure layout).
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Tue, 28 Jun 2011 20:47:09 +0000 (13:47 -0700)]
isci: unify can_queue tracking on the tci_pool, uplevel tag assignment
The tci_pool tracks our outstanding command slots which are also the 'index'
portion of our tags. Grabbing the tag early in ->lldd_execute_task let's us
drop the isci_host_can_queue() and ->was_tag_assigned_by_user infrastructure.
->was_tag_assigned_by_user required the task context to be duplicated in
request-local buffer. With the tci established early we can build the
task_context directly into its final location and skip a memcpy.
With the task context buffer at a known address at request construction we
have the opportunity/obligation to also fix sgl handling. This rework feels
like it belongs in another patch but the sgl handling and task_context are too
intertwined.
1/ fix the 'ab' pair embedded in the task context to point to the 'cd' pair in
the task context (previously we were prematurely linking to the staging
buffer).
2/ fix the broken iteration of pio sgls that assumes all sgls are relative to
the request, and does a dangerous looking reverse lookup of physical
address to virtual address.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Fri, 24 Jun 2011 00:09:02 +0000 (17:09 -0700)]
isci: Terminate dev requests on FIS err bit rx in NCQ
When the remote device transitions to a not-ready state because of
an NCQ error condition, all outstanding requests to that device
are terminated and completed to libsas on the normal path. The
device then waits for a READ LOG EXT command to issue on the task
management path.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 24 Jun 2011 06:44:52 +0000 (23:44 -0700)]
isci: fix frame received locking
Updates to the frame_rcvd before need to be atomic with respect to when
they are evaluated by libsas.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Maciej Patelczyk [Tue, 21 Jun 2011 22:03:13 +0000 (22:03 +0000)]
isci: possible buffer overflow in isci_parse_oem_parameters fixed
scu_index is a parameter of isci_parse_eom_parameters and is an index
in controller table. There is a check: scu_index > SCI_MAX_CONTROLLERS
which is insufficient and should be: scu_index >= SCI_MAX_CONTROLLERS.
scu_index is used as an index in the table which size is
SCI_MAX_CONTROLLERS.
Signed-off-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Tue, 21 Jun 2011 23:23:03 +0000 (16:23 -0700)]
isci: fix isci_task_execute_tmf completion
1/ fix the timeout for wait_for_completion_timeout
2/ In the tmf timeout case we need to wait for our termination callback
3/ Once the request is successfully started it will be freed according to the
normal lifetime for requests.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Thu, 16 Jun 2011 23:59:56 +0000 (16:59 -0700)]
isci: fix support for arbitrarily large smp requests
Instead of duplicating the smp request buffer reuse the one provided by
libsas. This future proofs the driver to support arbitrarily large smp
requests, and shrinks the request structure size by ~700 bytes.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 17 Jun 2011 17:40:43 +0000 (10:40 -0700)]
isci: fix dma_unmap_sg usage
One bug and a cleanup:
1/ Fix cases where we were unmapping invalid addresses (smp requests were
being unmapped)
[ 604.662770] ------------[ cut here ]------------
[ 604.668026] WARNING: at lib/dma-debug.c:800 check_unmap+0x418/0x740()
[ 604.675315] Hardware name: SandyBridge Platform
[ 604.680465] isci 0000:03:00.0: DMA-API: device driver tries to free an invalid DMA memory address
2/ The unmap routine is too large to be an inline function, and
isci_request_io_request_get_next_sge is unused.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 17 Jun 2011 00:20:35 +0000 (17:20 -0700)]
isci: fix smp response frame overrun
Due to a typo we currently copy way too much when copying over the
response data, but since a request is likely backed by a full page
allocation we don't corrupt live data.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Fri, 17 Jun 2011 20:34:43 +0000 (13:34 -0700)]
isci: kill device_sequence
Now that we have upleveled device reassignment protection to the
isci_remote_device reference count we no longer need this level of
self-defense.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Thu, 16 Jun 2011 18:26:12 +0000 (11:26 -0700)]
isci: kill isci_remote_device_change_state()
Now that "stopping/stopped" are one in the same and signalled by a NULL device
pointer the rest of the device status infrastructure can be removed (->status
and ->state_lock). The "not ready for i/o state" is replaced with a state
flag, and is evaluated under scic_lock so that we don't see transients from
taking the device reference to submitting the i/o.
This also fixes a potential leakage of can_queue slots in the rare case that
SAS_TASK_ABORTED is set at submission.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Tue, 14 Jun 2011 00:39:44 +0000 (17:39 -0700)]
isci: atomic device lookup and reference counting
We have unsafe references to remote devices that are notified to
disappear at lldd_dev_gone. In order to clean this up we need a single
canonical source for device lookups and stable references once a lookup
succeeds. Towards that end guarantee that domain_device.lldd_dev is
NULL as soon as we start the process of stopping a device. Any code
path that wants to safely lookup a remote device must do so through
task->dev->lldd_dev (isci_lookup_device()).
For in-flight references outside of scic_lock we need reference counting
to ensure that the device is not recycled before we are done with it.
Simplify device back references to just scic_sds_request.target_device
which is now the only permissible internal reference that is maintained
relative to the reference count.
There were two occasions where we wanted new i/o's to be treated as
SAS_TASK_UNDELIVERED but where the domain_dev->lldd_dev link is still
intact. Introduce a 'gone' flag to prevent i/o while waiting for libsas
to take action on the port down event.
One 'core' leftover is that we currently call
scic_remote_device_destruct() from isci_remote_device_deconstruct()
which is called when the 'core' says the device is stopped. It would be
more natural for the final put to trigger
isci_remote_device_deconstruct() but this implementation is deferred as
it requires other changes.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Wed, 15 Jun 2011 18:11:03 +0000 (11:11 -0700)]
isci: fix ssp response iu buffer size in isci_tmf
In isci_task_request_complete() we save the response/sense data from the
command. Make sure isci_tmf has enough space to hold the full response.
[ it does not look like we actually use this data, and
response_data_len/sense_data_len should be specifying the byte count,
in any event do the simple fix first so we don't corrupt memory ]
Reported-by: Adam Gruchala <adam.gruchala@intel.com>
Tested-by: Edmund Nadolski <edmund.nadolski@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Mon, 13 Jun 2011 07:51:30 +0000 (00:51 -0700)]
isci: cleanup request allocation
Rather than return an error code and update a pointer that was passed by
reference just return the request object directly (or null if allocation
failed).
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Thu, 9 Jun 2011 23:04:28 +0000 (16:04 -0700)]
isci: cleanup/optimize queue increment macros
Every single i/o or event completion incurs a test and branch to see if
the cycle bit changed. For power-of-2 queue sizes the cycle bit can be
read directly from the rollover of the queue pointer.
Likely premature optimization, but the hidden if() and hidden
assignments / side-effects in the macros were already asking to be
cleaned up.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Thu, 9 Jun 2011 18:06:58 +0000 (11:06 -0700)]
isci: cleanup tag macros
A tag is a 16 bit number where the upper four bits is a sequence number
and the remainder is the task context index (tci). Sanitize the macro
names and shave 256-bytes out of scic_sds_controller by reducing the size of
io_request_sequence.
scic_sds_io_tag_construct --> ISCI_TAG
scic_sds_io_tag_get_sequence --> ISCI_TAG_SEQ
scic_sds_io_tag_get_index() --> ISCI_TAG_TCI
scic_sds_io_sequence_increment() [delete / open code]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Wed, 8 Jun 2011 01:50:55 +0000 (18:50 -0700)]
isci: cleanup/optimize pool implementation
The circ_buf macros are ~6% faster, as measured by perf, because they take
advantage of power-of-two math assumptions i.e. no test and branch for
rollover. Their semantics are clearer than the hidden side effects in pool.h
(like sci_pool_get() which hides an assignment).
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Mon, 20 Jun 2011 21:09:31 +0000 (14:09 -0700)]
isci: Disable link layer hang detection
Some targets exceed the hang detect timer. Use the OS timeout to
catch hung tasks.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Mon, 20 Jun 2011 21:09:26 +0000 (14:09 -0700)]
isci: Hard reset failure will link reset all phys in the port
In the case where the hard reset process fails, each link in
the port is put through a link reset sequence.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Mon, 20 Jun 2011 21:09:22 +0000 (14:09 -0700)]
isci: Explicitly decode remote node ready and suspended states
The remote node context should only signal a device reset condition
in a suspended state.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Dan Williams [Mon, 20 Jun 2011 22:11:22 +0000 (15:11 -0700)]
isci: fix isci_terminate_pending() list management
Walk through the list of pending requests being careful to consider that
multiple requests can be terminated when the lock is dropped (i.e.
invalidating the 'next' reference established by
list_for_each_entry_safe).
Also noticed that all callers to isci_terminate_pending_requests()
specifying terminating, so just drop the parameter.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Mon, 20 Jun 2011 21:09:16 +0000 (14:09 -0700)]
isci: Handle timed-out request terminations correctly
In the situation where a termination of an I/O times-out,
make sure that the linkage from the request to the task
is severed completely. Also make sure that the selection
of tasks to terminate occurs under scic_lock.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Mon, 20 Jun 2011 21:09:11 +0000 (14:09 -0700)]
isci: Requests that do not start must be set to "complete"
Requests that fail at start because of a reset pending condition
must be set to complete in order to allow for later cleanup.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Mon, 20 Jun 2011 21:09:06 +0000 (14:09 -0700)]
isci: Add decode for SMP request retry error condition
There are situations with slow expanders in which a first attempt
to execute an SMP request will fail with a timeout. Immediate
subsequent retries will generally succeed. This change makes sure
SMP I/O failures are immediately failed to libsas so that retries
happen with no discovery process timeout delay.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Tue, 21 Jun 2011 19:16:33 +0000 (12:16 -0700)]
isci: filter broadcast change notifications during SMP phy resets
When resetting a sata device in the domain we have seen occasions where
libsas prematurely marks a device gone in the time it takes for the
device to re-establish the link. This plays badly with software raid
arrays. Other libsas drivers have non-uniform delays in their reset
handlers to try to cover this condition, but not sufficient to close the
hole. Given that a sata device can take many seconds to recover we
filter bcns and poll for the device reattach state before notifying
libsas that the port needs the domain to be rediscovered. Once this has
been proven out at the lldd level we can think about uplevelling this
feature to a common implementation in libsas.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
[ use kzalloc instead of kmem_cache ]
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
[ use eventq and time macros ]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Jeff Skirvin [Mon, 20 Jun 2011 21:08:51 +0000 (14:08 -0700)]
isci: Move the reset delay after the remote node resumption.
Delay after bringing up the RNC to allow for resumption latency.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>