[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] cdrom access patch
From: |
Bean |
Subject: |
Re: [PATCH] cdrom access patch |
Date: |
Mon, 10 Mar 2008 23:53:32 +0800 |
On Sun, Mar 9, 2008 at 11:33 PM, Bean <address@hidden> wrote:
> On Fri, Mar 7, 2008 at 11:37 PM, Vesa Jääskeläinen <address@hidden> wrote:
> >
> > Bean wrote:
> > > Hi,
> > >
> > > This patch use int 13 func 4B01 to detect cdrom. It also change the
> > > name of the cd device to (hdN), where N is the bios drive number.
> >
> > Hi Bean,
> >
> > Have you tried to use EDD's functions to query for type of device?
> > (references are to EDD3 spec)
> >
> > 8.24 Get Device Parameters (FN 48h)
> > 26 DWord Pointer to the Device Parameter Table Extension (DPTE)
> >
> > 8.24.3 Device Parameter Table Extension (DPTE)
> > 10-11 Word BIOS selected hardware specific option flags
> >
> > Bits 5 and 6; Removable device, ATAPI device.
> >
> > This FN 48h can also be used to filter out PCI cards from ATA driver in
> > case there is BIOS support for the device already. So use BIOS if there
> > is BIOS handler for it, otherwise fall back to ATA driver.
> >
> > I would prefer that CD's would be counted like (cd0) for first CD-ROM
> > device, (cd1) for second CD-ROM device, ... and so on. I think it is OK
> > to first allocate BIOS devices for CD's and after that use ATA driver
> > for rest of them. Ata driver can of course be accessed with ata name too.
>
> Hi,
>
> after some consideration, i think the best way to detect cdrom is to
> check the number of bytes per sector. The handling of cdrom assume
> sector size of 4096, cdrom that has other block size would not work.
> On the other hand, the device don't even needs to be cdrom, as long as
> it has 2048 sector size, the current handling works. Therefore,
> checking sector size should be sufficient.
>
> As for the device name, there are some drawbacks by using (cdN), in
> init.c, we need to get the root device from bios drive number.
> However, as Christian Franke discovers, the drive number can be:
>
> 0x82 (old Toshiba Laptop with unknown BIOS)
> 0x9f (PC with Phoenix-Award BIOS, VMware)
> 0xe0 (VirtualBox)
> 0xef (PC with AMI BIOS, VirtualPC)
>
> It' quite tricky to determine whether a drive is cdrom or harddisk.
>
> And in the multiboot loader, we need to do the oppisite, map the root
> device to bios drive number. As names like (cd0) doesn't suggests the
> number at all, we need to ask biosdisk for the number. Therefore,
> multiboot loader will be depended on biosdisk, which is not a good
> idea.
After some testing, i think the new version has some compatible issue,
i remember Christian Franke reports that some bios doesn't support int
42 for cdrom, so grub_biosdisk_check_int13_extensions will fail. Would
someone check if func 4b01 (the first patch cd.diff) works in such
situation ?
--
Bean
- [PATCH] cdrom access patch, Bean, 2008/03/05
- Re: [PATCH] cdrom access patch, Vesa Jääskeläinen, 2008/03/07
- Re: [PATCH] cdrom access patch, Bean, 2008/03/09
- Re: [PATCH] cdrom access patch,
Bean <=
- Re: [PATCH] cdrom access patch, Christian Franke, 2008/03/11
- Re: [PATCH] cdrom access patch, Bean, 2008/03/12
- Re: [PATCH] cdrom access patch, Christian Franke, 2008/03/12
- Re: [PATCH] cdrom access patch, Christian Franke, 2008/03/13
- Re: [PATCH] cdrom access patch, Bean, 2008/03/14
- Re: [PATCH] cdrom access patch, Pavel Roskin, 2008/03/14
- Re: [PATCH] cdrom access patch, Bean, 2008/03/14
- Re: [PATCH] cdrom access patch, Bean, 2008/03/14
- Re: [PATCH] cdrom access patch, Vesa Jääskeläinen, 2008/03/14
- Re: [PATCH] cdrom access patch, Bean, 2008/03/15