Add support for Apple latest laptops, add a warning when building
an SMP kernel (the core cpufreq doesn't scale loops_per_jiffies
properly on SMP kernels), cleanup some code.
Adapt to "macio" driver infrastructure, cleanup power management, make some
functions static, fix IO accessors, remove local list of commands/directions,
etc...
This driver could use more work & study of the interesting ASIC bugs
documented in Apple source code...
Note that I'm removing support for the CHRP machines using the MESH as
part of the "Hydra" ASIC. Nobody sane really uses that, but if one of
the 3 remaining Longtrail users want to fix that, then move Hydra to
use the "macio" model...
Adapt to the "macio" driver infrastructure, cleanup IO accessors,
remove local list of command/directions, uses infos provided by
the SCSI layer. This driver certainly could use some more work.
The cascaded northbridge MPIC is currently dealt with a special
modified version of open_pic.c (open_pic2.c). A better mecanism
will have to be found for 2.7
Create a low-level synchronous implementation suitable for use
by the early boot platform code or other places where the
asynchronous driver isn't useable. This also exports the locks
used by the real driver to avoid collisions.
Use this new implementation to properly setup the clock chip
at boot on Apple latest laptops
ppc32: Fix release_OF_resource() function.
It would fail to properly release the resource if taken over
by the macio device resource hierarchy. This could still use
some locking, but the io resource lock isn't exported
ppc32: fix a possible race in pte_free()
Another processor could be walking the page table in the middle of the
PTE page to be freeded. Synchronize with hash_page using the lock.
On G5 machines, we remap the AGP port to bus number 0xf0. XFree
contains a hack that is unfixable at the moment for getting the
IO base which is hard coded to bus number 0 (AGP on earlier machines).
We work around this by passing the IO base of bus 0xf0 when asked
for bus 0 in pciconfig_iobase on those machines. Bus 0 is the HT
root and has no IOs, so that is safe.
Move pmac-specific PCI quirks to pmac_pci.c, update cardbus one for new
TI controller, add some for fixing up ATA & SATA controllers (switch normal
ATA to fully native mode and disable unused function on G5 K2 SATA)
Andi Kleen [Thu, 5 Feb 2004 05:40:40 +0000 (21:40 -0800)]
[PATCH] put "kernel_thread_helper" in right linker segment
This fixes the "kernel_thread_helper" function so that it is in the
right segment (.text) regardless of any other code movement by the
compiler (eg "-funit-at-a-time").
Andrew Morton [Thu, 5 Feb 2004 05:20:06 +0000 (21:20 -0800)]
[PATCH] ppc64: Fix another numa bug
From: anton@samba.org
In some cases we can merge reserved regions with the next node. There was a
bug in the way we calculated the overlapping region which caused us to fail
during boot.
[PATCH] remove ide_dma_queued_* ops from ide_hwif_t
TCQ code is host independent so remove redundant ide_dma_queued_* ops from
ide_hwif_t. If we ever decide to bring back TCQ support this will fix OOPS
in ide-disk driver with CONFIG_BLK_DEV_IDE_TCQ_DEFAULT=y and icside/sgiioc4
host drivers (it will also enable TCQ support for these host drivers).
[PATCH] fix 'cat /proc/ide/<cd|dvd>/identify' hang (CONFIG_IDE_TASKFILE=y)
Some devices need more time to become non-busy after command completion,
so use the same timeout in wait_drive_not_busy() (called from task_in_intr()
if CONFIG_IDE_TASKFILE_IO=y) as in drive_cmd_intr().
Thanks to Mark Haverkamp <markh@osdl.org> for help in fixing this.
Alexander Viro [Thu, 5 Feb 2004 01:47:21 +0000 (17:47 -0800)]
[PATCH] scsi/ppa.c cleanup and fixes (6/9)
* fixed missing wakeups in ppa_pb_claim()/ppa_wakeup() - if the
former had been called just as current holder of port was giving it up,
we could set "I'm waiting" flag too late. Cleaned up the timeout logics.
Alexander Viro [Thu, 5 Feb 2004 01:47:09 +0000 (17:47 -0800)]
[PATCH] scsi/ppa.c cleanup and fixes (5/9)
* starting to kill ppa_detect - we move the "probe a single port"
logics into a separate function and shift scanning into ppa_driver_init().
Later that will give us a parport_driver ->attach().
Alexander Viro [Thu, 5 Feb 2004 01:46:34 +0000 (17:46 -0800)]
[PATCH] scsi/ppa.c cleanup and fixes (4/9)
* killed include of scsi_module.h and switched from scsi_register()
to scsi_alloc_host(). We still keep the old detect logics at that point,
it will be gone later.
Alexander Viro [Thu, 5 Feb 2004 01:40:55 +0000 (17:40 -0800)]
[PATCH] scsi/imm.c cleanup and fixes (6/8)
* fixed missing wakeups in imm_pb_claim()/imm_wakeup() - if the
former had been called just as current holder of port was giving it up,
we could set "I'm waiting" flag too late. Cleaned up the timeout logics.
Alexander Viro [Thu, 5 Feb 2004 01:39:40 +0000 (17:39 -0800)]
[PATCH] scsi/imm.c cleanup and fixes (5/8)
* starting to kill imm_detect - we move the "probe a single port"
logics into a separate function and shift scanning into imm_driver_init().
Later that will give us a parport_driver ->attach().
Alexander Viro [Thu, 5 Feb 2004 01:38:20 +0000 (17:38 -0800)]
[PATCH] scsi/imm.c cleanup and fixes (4/8)
* killed include of scsi_module.h and switched from scsi_register()
to scsi_alloc_host(). We still keep the old detect logics at that point,
it will be gone later.
Alexander Viro [Thu, 5 Feb 2004 01:32:24 +0000 (17:32 -0800)]
[PATCH] paride cleanup and fixes (25/25)
paride has a ->private field for use by low-level drivers. It's not
64bit-clean - it's int, but is used to store a pointer (bpck6).
Fix: replace with unsigned long, update typecasts in users.
Alexander Viro [Thu, 5 Feb 2004 01:27:09 +0000 (17:27 -0800)]
[PATCH] paride cleanup and fixes (22/25)
Now disk->present is not needed - we can always check for disk->gd.
Field removed, pd_probe_drive() became void(struct pd_unit *), pd_detect()
cleaned up,